1. unpack the source tarball and cd to the resulting dir 2. # autoconf this reads configure.in and generates the ./configure script 3. # ./configure this probes your system and then, for each "file" named in the AC_OUTPUT() macro near the end of configure.in, read "file".in and generate "file". Variables named @somevariable@ will be substituted with literal values. 4. step (3) produces several files. These files are generated by configure from their respective .in file in the same directory. You should have a read of these generated files and diff them against their respective .in files to see what was substituted by configure. src/include/builddefs common definitions for the build environment. This is included by all Makefiles, in conjunction with src/include/buildrules. Note that most autoconf/configure build environments generate Makefile (from Makefile.in) in every src dir. Instead, we generate builddefs, and then include it in every Makefile. src/include/platform_defs.h header containing conditional macros defining the C run-time environment discovered by the configure script. 5. read some or all of the GNU tool chain documentation GNU make : http://www.delorie.com/gnu/docs/make/make_toc.html autoconf : http://www.delorie.com/gnu/docs/autoconf/autoconf_toc.html libtool : http://www.delorie.com/gnu/docs/libtool/libtool_toc.html gcc/g++ : http://www.delorie.com/gnu/docs/gcc/gcc_toc.html 6. Makefiles and build environment First have a look at some Makefiles example using SUBDIRS : acl/Makefile example static library: acl/libacl/Makefile example command : acl/getfacl/Makefile All Makefiles must define TOPDIR as the root of the project. This allows other stuff to be found relative to $(TOPDIR). All Makefiles should have the following structure, which is much like commondefs and commonrules in the IRIX build environment, e.g. # ---------------------------------------------------------------------- # TOPDIR must point to the root of the project # The builddefs file defines lots of things. Read it. TOPDIR = .. include $(TOPDIR)/include/builddefs # first rule should always be "default" default : sometarget commands to build targets, if necessary # $(BUILDRULES) is defined in builddefs and includes rules for # descending subdirs, building targets and installation rules include $(BUILDRULES) install : default $(INSTALL) sometargets somewhere # ---------------------------------------------------------------------- 7. packaging # ./Makepkgs this script generates all of the packages supported - each has a subdirectory below acl/package where knowledge specific to each package type is maintained. The script produces logs of each stage of the build (this info is also echoed to the screen when the "verbose" option is provided): acl/Logs/configure - `autoconf; ./configure' output acl/Logs/default - `make default' output acl/Logs/dist - `make package dist' output On successful completion, the script echoes the names of packages successfully generated.