| |
| |
| $Id$ |
| |
| This is an agglomeration of notes about using autoconf and friends to create |
| the build environment (configure script, etc) that builds and installs |
| Rivet. It will probably go away eventually. |
| |
| WHERE IS THE CONFIGURE SCRIPT? |
| |
| If you've checked out the source tree from CVS, you'll notice there's no |
| configure script, and no configure.in, and no Makefile.in, etc. |
| |
| You get to fiddle the autoconf stuff to create all that. |
| |
| VERSIONS |
| |
| autoconf and stuff has evolved, and old versions won't work and will cause |
| weird problems. |
| |
| autoconf 2.59 |
| automake 1.9 |
| aclocal 1.9 |
| autoheader 2.59 |
| |
| BUILDING IT |
| |
| First you gotta run "aclocal" to create the aclocal.m4 file. |
| |
| Then you can run "automake" to create the Makefile.in files from |
| the Makefile.am automake source files. NOTE that even though automake |
| runs autoconf, you still have to run autoconf. |
| |
| Run "autoconf", make sure you're getting the right version by doing |
| autoconf --version |
| |
| Run "autoheader" to generate the config.h.in |
| |
| Once all that is complete, you can probably run configure. |
| |
| |
| AUTOMAKE |
| |
| Automake greatly simplifies the complexity of the Makefiles. With automake |
| we generate Makefile.am. Automake will create the Makefile.in, which |
| configure, as always, will use to generate the Makefile. |
| |
| Automake could be brought to TEA extensions to greatly simplify the |
| complexity of their build definitions (configure macros, Makefiles, etc) |
| |
| LIBTOOL |
| |
| libtool super simplifies and standardizes building shared and static |
| libraries across tons of variants in operating system architecture |
| around shared libraries, linking, etc. |
| |
| A libtool script is generated by running the configure script. The libtool |
| docs suggest shipping libtool.m4 in your package, else there's no guarantee |
| aclocal, etc, are going to be able to find one on the local system that |
| will work, should autoconf need to be run, etc. |
| |
| A recurring maintenance task for the Rivet team will be to freshen the |
| libtool.m4. |
| |
| Libtool also offers substantial simplification to Tcl extension writers |
| and maintainers. |
| |
| TCL.M4 |
| |
| There's a bunch of stuff Tcl extensions (and Tcl, etc) need to know about |
| systems and it's all set up to be handled by tcl.m4. |
| |
| We've hacked on tcl.m4 from the Tcl Extension Architecture (TEA 3.1) |
| version. Our changes should probably be folded back in. |
| |
| VERSIONS AND ENV VARS |
| |
| It appears that the autoconf tools are moving towards versions, where |
| aclocal 1.9 can be run as aclocal-1.9. This is good. |
| |
| FreeBSD ports, though, had already been doing this, so there this stuff |
| is called, for instance, aclocal19. |
| |
| You might need to set up environment variables to tell the autoconf tools |
| the names autoheader, autoconf, automake, and aclocal are installed under, |
| something like this: |
| |
| export AUTOHEADER=autoheader259 |
| export AUTOCONF=autoconf259 |
| export AUTOMAKE=automake19 |
| export ACLOCAL=aclocal19 |
| |
| |
| CONFIG.GUESS AND FRIENDS |
| |
| Ever wonder where config.guess, install-sh, and stuff come from? |
| (You see them in a lot of packages.) |
| |
| This stuff a lot can get pooped out there using libtoolize. |
| |
| libtoolize --force --copy to install config.guess, config.sub, ltmain.sh |
| |
| This stuff is in the tclconfig directory, which isn't really the best |
| name because it's grown to include a lot of autoconf-related stuff. |
| |