-
Notifications
You must be signed in to change notification settings - Fork 0
Home
Please navigate the wiki via the Page List to the right.
This project produces a helper script for AutoTools projects. It has two main goals; to reduce repetitive typing of some AutoTools commands, and, to afford a more standard interface for the programmer across AutoTools projects.
At the command line level the script offers it's own options and option pass-through, the latter passes arguments unparsed and untouched straight to the configure command line. For example:-
acmbuild.sh --config .. -- --prefix=/usr
In this case --config is an acmbuild.sh option to configure the project and anything after the " -- " is passed untouched to configure, invoking:-
configure --prefix=/usr
The acmbuild.sh options come in two flavours; action options and enabling options.
b, c, C, D, F, g and T are action options. -b, for instance will run make, whereas -D will run make dist.
The rest, (apart from help and version), are enabling options. Invariably these are implemented merely by passing an enable argument to configure. For example
acmbuild.sh --config --debug ..
will run
configure --enable-debug=yes
That is all. For it to be meaningful the developer must process this argument in configure. The script does not know if the option is sensible, or indeed, if it is supported by configure, so, in the above example, if the developer had not written code in configure to process this argument, configure will issue a warning and then just ignore the option.
The project functionality is implemented as two scripts; acmbuild.sh and bootstrap.sh. acmbuild.sh does nothing more than invoke bootstrap.sh with the same arguments. This means that all the functionality is in bootstrap.sh. On project install both scripts are installed but only acmbuild.sh is installed in the PATH. So all usage is via acmbuild.sh. The reason for this is that it enables a secondary usage of bootstrap.sh. bootstrap.sh can be copied and pasted into the project-root of all AutoTools project to provide a simplified and standardised build bootstrap as is generally recommended. This eliminates any possible confusion as to which version of bootstrap.sh is being used whilst also obviating any dependency on this project.
The script offers the following options:-
-a, --at-only
during testing and for an AutoTools-only install, some build
changes are required. e.g. You may reference an external Java
jar in datadir but in AT builds and installations this may
expand to /usr/local/share... So a substitution is required for
this scenario.
-b, --build
make the project.
-c, --config
configure the project.
-C, --distcheck
perform a normal make distcheck.
-d, --debug
build with appropriate debug flags.
-D, --dist
perform a make dist.
-F, --distcheckfake
run a make distcheck using a fake AT standard directory as a
substitute for an absolute path which distcheck does not
support.
-g, --gnulib
run gnulib-tool --update. Checks for the existence of the cache
file proj-root/m4/gnulib-cache.m4. If it does not exist the
update is not run.
-h, --help
prints usage information.
-H, --header-check
show include stack depth
-s, --sparse
pass --enable-sparse=yes to configure.
-t, --testing-hacks
some build changes may be required for testing purposes. e.g. A
script may invoke a project jar file which when installed will
be somewhere under datadir, but during testing it is in the
project tree.
-T, --source-tarball
perform a make srctarball to build a source tarball.
-v, --verbose
emit extra information
-V, --version
prints version information
Options b build, C distcheck, D dist, F distcheckfake and T source-tarball are mutually exclusive.
Options a at-only, d debug, F distcheckfake, H header-check, s sparse, t testing-hacks and v verbose are enabled by configure so require option c config.