
image.png
A dataflow diagram for the autoreconf utility
./bootstrap or ./autogen.sh do?usually: call autotools commands to copy and generate a number of files. Often just autoreconf -vi.
gnulib provides a very elaborate bootstrap script, see VCS Issues, see Modified imports.
The name bootstrap is preferred over ‘autogen.sh’ as there also exists an independent software package named AutoGen.

image.png
A data flow diagram for autoconf and autoheader
$@ refers to the full target name of the current target or the archive filename part of a library archive target. This variable is valid in both explicit and implicit rules.$% refers to a member of an archive and is valid only when the current target is an archive member—that is, an object file that is a member of a static library. This variable is valid in both explicit and implicit rules.$? refers to the list of dependencies that are newer than the current target. This variable is valid in both explicit and implicit rules.$< refers to the member of the dependency list whose existence allowed the rule to be chosen for the target. This variable is only valid in implicit rules.$* refers to the current target name with its suffix deleted. This variable is guaranteed by POSIX to be valid only in implicit rules.
image.png
A data flow diagram for the compile and link processes
Variable | Default Value |
|---|---|
prefix | /usr/local |
exec_prefix | $(prefix) |
bindir | $(exec_prefix)/bin |
sbindir | $(exec_prefix)/sbin |
libexecdir | $(exec_prefix)/libexec |
datarootdir | $(prefix)/share |
datadir | $(datarootdir) |
sysconfdir | $(prefix)/etc |
sharedstatedir | $(prefix)/com |
localstatedir | $(prefix)/var |
includedir | $(prefix)/include |
oldincludedir | /usr/include |
docdir | $(datarootdir)/doc/$(package) |
infodir | $(datarootdir)/info |
htmldir | $(docdir) |
dvidir | $(docdir) |
pdfdir | $(docdir) |
psdir | $(docdir) |
libdir | $(exec_prefix)/lib |
lispdir | $(datarootdir)/emacs/site-lisp |
localedir | $(datarootdir)/locale |
mandir | $(datarootdir)/man |
manNdir | $(mandir)/manN (N = 1..9) |
manext | .1 |
manNext | .N (N = 1..9) |
srcdir | The source-tree directory corresponding to the current directory in the build tree |
Variables | Purpose |
|---|---|
CC | A reference to the system C compiler |
CFLAGS | Desired C compiler flags |
CXX | A reference to the system C++ compiler |
CXXFLAGS | Desired C++ compiler flags |
LDFLAGS | Desired linker flags |
CPPFLAGS | Desired C/C++ preprocessor flags |
Makefile
CFLAGS = -g -O0
main: main.c
$(CC) $(CPPFLAGS) $(CFLAGS) -o $@ $<bash
make CC=ccache CFLAGS='-g -O2' CPPFLAGS=-DtestMakefile
CFLAGS ?= -g -O0most like C-preprocessor (CPP)
#!/bin/sh
autoreconf --install
automake --add-missing --copy >/dev/null 2>&1AC_INIT
AC_INIT(package, version, [bug-report], [tarname], [url])@PACKAGE_NAME@ @PACKAGE_VERSION@ @PACKAGE_TARNAME@ @PACKAGE_STRING@ @PACKAGE_BUGREPORT@ @PACKAGE_URL@
AC_CONFIG_SRCDIR
AC_CONFIG_SRCDIR(unique-file-in-source-dir)AC_CONFIG_HEADERS
AC_CONFIG_XXXS(tag..., [commands], [init-cmds])
image.png
Data flow from maintainer-written input files to the testsuite program