Copyright (C) 2000-2012 |
GNU Info (autoconf.info)ExodusExodus ====== As I got feedback from users, I incorporated many improvements, using Emacs to search and replace, cut and paste, similar changes in each of the scripts. As I adapted more GNU utilities packages to use `configure' scripts, updating them all by hand became impractical. Rich Murphey, the maintainer of the GNU graphics utilities, sent me mail saying that the `configure' scripts were great, and asking if I had a tool for generating them that I could send him. No, I thought, but I should! So I started to work out how to generate them. And the journey from the slavery of hand-written `configure' scripts to the abundance and ease of Autoconf began. Cygnus `configure', which was being developed at around that time, is table driven; it is meant to deal mainly with a discrete number of system types with a small number of mainly unguessable features (such as details of the object file format). The automatic configuration system that Brian Fox had developed for Bash takes a similar approach. For general use, it seems to me a hopeless cause to try to maintain an up-to-date database of which features each variant of each operating system has. It's easier and more reliable to check for most features on the fly--especially on hybrid systems that people have hacked on locally or that have patches from vendors installed. I considered using an architecture similar to that of Cygnus `configure', where there is a single `configure' script that reads pieces of `configure.in' when run. But I didn't want to have to distribute all of the feature tests with every package, so I settled on having a different `configure' made from each `configure.in' by a preprocessor. That approach also offered more control and flexibility. I looked briefly into using the Metaconfig package, by Larry Wall, Harlan Stenn, and Raphael Manfredi, but I decided not to for several reasons. The `Configure' scripts it produces are interactive, which I find quite inconvenient; I didn't like the ways it checked for some features (such as library functions); I didn't know that it was still being maintained, and the `Configure' scripts I had seen didn't work on many modern systems (such as System V R4 and NeXT); it wasn't very flexible in what it could do in response to a feature's presence or absence; I found it confusing to learn; and it was too big and complex for my needs (I didn't realize then how much Autoconf would eventually have to grow). I considered using Perl to generate my style of `configure' scripts, but decided that `m4' was better suited to the job of simple textual substitutions: it gets in the way less, because output is implicit. Plus, everyone already has it. (Initially I didn't rely on the GNU extensions to `m4'.) Also, some of my friends at the University of Maryland had recently been putting `m4' front ends on several programs, including `tvtwm', and I was interested in trying out a new language. automatically generated by info2www version 1.2.2.9 |