Skip to content

AutotoolsBuild

Scott Godin edited this page Jan 7, 2022 · 1 revision

Table of Contents

Current autotools support

Autotools support has been implemented for the following reasons:

  • build system works well with Debian and Red Hat packaging systems
  • works well for a wide range of platforms
  • good support for cross compiling
  • actively supported

History

  • Pre-2006, there was an attempt to support autotools on a branch
  • Up to April 2012, the official UNIX builds were done using a custom build system based on ordinary Makefiles
    • (this system had some limitations, for example, not making SONAMEs in the shared libraries)
  • From April 2012, autotools has been introduced for trunk
  • for the 1.8 release of reSIProcate (and beyond), the release tarball will be prepared using autotools `make dist'

Where to get more information

Some tips for developers

  • When adding new files to the repository, they must be declared in Makefile.am:
    • cxx: put it in the SOURCES entry
    • hxx: put it in HEADERS, or autotools will NOT include it in the release tarball created by `make dist'
    • this can be troublesome, because the code will build fine in the SVN working directory, but someone using a tarball will complain about missing headers
    • documentation, shell scripts, other artefacts:
      • autotools will not automatically distribute such things in the tarball unless they are declared in Makefile.am
        • see EXTRA_DIST as a catch-all for things like shell scripts
      • dedicated variables like man_MANS will help too
      • when the proper variables are used (e.g. man_MANS), then you will get proper results from both `make dist' and `make install'
  • After changing any Makefile.am or configure.ac
    • you must run the following from the top-level directory:
 $ autoreconf --install && ./configure
  • see configure.ac for various examples of how to create custom config options

Some tips for building and installing

  • you can tweak things in various ways:
 $ ./configure && make CXXFLAGS="-DUSE_CARES"
  • in the first case, CXXFLAGS will be used every time you run make
    • in the second case, the CXXFLAGS value is only used for one execution of make
  • some other useful targets
 $ make check   (run test cases)
 $ make DESTDIR=/tmp/my-resip install    (install the binaries, man pages, docs, headers, etc)
 $ make dist        (create a tarball for distribution)

For many more possible options, please see the Configuration Options page

Old version of autotools support


To build reSIProcate using the 'autotools' build system, build reSIProcate as follows:

[Go]

$ sh ./use-autotools.sh
$ sh ./autogen.sh
$ mkdir compile
$ cd compile
$ ../configure {config options}

# OR (for example)

$ ../configure -C --enable-shared --enable-ipv6 --enable-data-local-size=16 --disable-elog
$ make

Note: there are usually errors in the test subdirectories when compiling. These do not affect the building of the library, but they have not been fixed just yet. Note: there may be problems building DUM since DUM development has been outpacing autotools maintenance of the DUM subdir.

This method builds the libraries in sip/compile/resiprocate/.libs

This autotools installation is *not* yet suited for doing a *make install* target.

If the machine your're building on has several versions of autotools, set the following environment variables first:

export WANT_AUTOCONF=2.5
export WANT_AUTOMAKE=1.8
Clone this wiki locally