mirror of
https://gitlab.isc.org/isc-projects/dhcp
synced 2025-08-22 18:07:25 +00:00
78 lines
3.4 KiB
Plaintext
78 lines
3.4 KiB
Plaintext
/**
|
|
@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
|
|
|
|
*/
|