/** @page libtool Build with libtool @section libtoolBuild 4.4.0 introduces the dynamic library build option. It uses Gnu autotools and in particular libtool but is fully backward compatible. The Gnu autoreconf which is a driver for other autotools: it runs autoconf (building configure from configure.ac), autoheader (creating the AC_CONFIG_HEADERS file, includes/config.h for ISC DHC), aclocal (building aclocal.m4 script), automake (creating .in files from .am files), libtoolize (adding libtool support when enabled in configure.ac) and autopoint (for gettext which is not used by ISC DHCP). Static libraries are built using the same setup as in previous versions. This enforces strict backward compatibility and is the default option so users who do not want dynamic libraries have nothing different to do. (In other words changes for the support of dynamic libraries is invisible for legacy users). Dynamic libraries are handled by libtool, and therefore require a few extra steps before invoking configure. For users not reading the documentation but still wanting dynamic libraries "--enable-libtool" is accepted even without these extra steps (cp configure.ac+lt configure.ac; autoreconf -i) in a recovery procedure (invoking config+lt script) but not in a very robust way. Note libtool allows you to build static libraries: there is nothing to make this impossible but as the recommend way to build static libraries does not use libtool it is neither recommended nor supported. The autoreconf input file is configure.ac. There are four versions of this: - configure.ac-base which has code for legacy and libtool options - configure.ac-lt which has only the legacy option with recovery when --with-libtool is given. Note it is not included in the distribution as its configure.ac copy is - configure.ac+lt which has the libool code and defaults to --with-libtool - configure.ac which is either configure.ac-lt in the distribution and configure.ac+lt when copied by the user at the first step for dynamic libraries or by the config+lt recovery script Three scripts manage legacy and libtool options: - util/lt.pl which extracts configure.ac-lt and configure.ac+lt from configure.ac-base - util/regen.sh which invokes util/lt.pl and copies configure.ac-lt to configure.ac and run autoconf. The correct way for developers to update the configure system is to update configure.ac-base and to call util/regen.sh - config+lt which is the recovery script. As it can be called in place of configure it must be executable (i.e. -rwxr-xr-x rights) in the distribution. To perform the reverse recovery, i.e. from libtool to legacy options, the simplest (and most reliable) way is to simply clean the build directory and to restart from the initial step, i.e., to extract the distribution. Automake uses different names for library related variables if libtool is used or not for some Makefile's the procedure is a bit complex. Usually the source Makefile is Makefile.am. Automake is run before the distribution build to generate Makefile.in and at configuration time the config.status script is invoked at the end of ./configure on AC_CONFIG_FILES to substitute @xxx@ variables into Makefile. ISC DHCP uses an extra step with a postconfig phase at the end of ./configure which invokes automake and reruns config.status giving a chain with Makefile.am.in, Makefile.am, Makefile.in and Makefile */