4 ms·
> GNU Autotools is too complicated, unnecessary, and stupid ... m4 is horrible ... Nobody has the time to review the mess these tools generate These tools are
by Rochus 3y ago
> GNU Autotools is too complicated, unnecessary, and stupid ... m4 is horrible ... Nobody has the time to review the mess these tools generate
These tools are generally much too complex. I don't think that e.g. CMake builds are easier to understand and analyze. From a certain size it's almost impossible to fully understand and check such a system.
One could argue that this is the case with any type of system. This is true, but you have to bear in mind that important findings and principles of software engineering from the last fifty years seem to have passed by without a trace, especially when it comes to build systems. For example, most of these systems still use dynamically typed scripting languages to specify the build, even though these are increasingly being replaced by better languages due to their well-known disadvantages, e.g. languages that are accessible to a static check at compile time using suitable tools, or that do not leave the discovery of errors and backdoors to chance discovery at runtime.
Autotools, CMake, Qmake and even newer developments such as Meson or GN suffer from the same problems.
> There’s better build systems like CMake or meson (at least that’s what I’m told), but in fact plain Makefiles are superior.
There is no reason for this assumption. Non of these tools supports e.g. static analysis.
- 3v1n0 3y agoI don't agree... Meson has constraints that make it very easy to write and review.
- Rochus 3y agoWhich require runtime to check, isn't it? Anyway, such constraints are also available in GN, and in CMake or Autotools you can implement them yourself, but they suffer from the same restriction I mentioned (not amenable to static analysis, limited verifiability at runtime due to combinatorial explosion of possible system states, etc.).
- felipec 3y agoNo, not all build systems are the same. CMake doesn't rely on generated scripts like autotools does.
- Rochus 3y agoCMake - as autotools - is a meta build system; it e.g. generates make files, which are essentially scripts. Also CMake itself is essentially a VM with a scripting language. Both CMake and Make are Turing complete (and dynamically typed, as mentioned). And yes, not all build systems are the same; e.g. https://github.com/rochus-keller/BUSY https://github.com/rochus-keller/BUSY has a statically typed specification language and intentionally avoids a Turing complete language.
- felipec 3y agoThe Makefiles CMake generates are not distributed in the tarball. So no, we are not talking about apples to apples.
- hulitu 3y agoThe OP was talking about complexity: > These tools are generally much too complex. I don't think that e.g. CMake builds are easier to understand and analyze From my experience (as a non programmer) CMake is much hearder to debug than autotools.