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=-Dtest
Makefile
CFLAGS ?= -g -O0
most like C-preprocessor (CPP)
#!/bin/sh
autoreconf --install
automake --add-missing --copy >/dev/null 2>&1
AC_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