[pub.comp.autoconf] from Dan Egnor It lets you tweak configuration files pretty thoroughly, really. The real problem is that there's no standard autoconf way to look for terminfo; every configure.in author will have to invent their own rules for doing so, and they'll choose their own variable names and so on. --- My biggest problem with autoconf/automake is that they don't define clean interfaces or hide the implementation. In many cases, the interface is the implementation. A good example is that site configuration file, which is a bunch of shell script that gets sourced by the configure script. To do anything meaningful, you have to know exactly what variables to tweak, and what side effects those tweaks will have. Likewise, people who write configure.in macros have to know how "configure" scripts are written internally, and people who write Makefile.am files have to know about "make" and how it interacts with automake. There's no consistent documentation that says "here is an exact specification of the input to this tool"; instead, the "tool" is a grab-bag of hacks that you can put together in various ways. --- I shouldn't have to describe why that's bad (fragility, opacity, ...). When people complain about "complexity" I think it's really this that they're complaining about. When something goes wrong, it's hard to fix it, because it's hard to know what's supposed to be happenning in the first place. It's possible to build complex systems that don't have this problem; that's what hiding is for. My second biggest problem with autoconf is that, while it seems that the original authors made some attempt to allow the creation of modular rulesets, nobody ever made a "comprehensive autoconf archive network" where people could borrow modules for, e.g. detecting curses versions. Instead, every autoconf-using developer must create their own rules, which of course means that they have an opportunity to screw it up (or simply fail to support certain platforms), and system administrators have to deal with each package on its own, rather than defining global preferences.