AutotoolsBuild

From reSIProcate
Jump to: navigation, search

Current autotools support[edit]

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[edit]

  • 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[edit]

Some tips for developers[edit]

  • 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[edit]

  • you can tweak things in various ways:
$ ./configure CXXFLAGS="-DUSE_CARES" && make

$ ./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[edit]


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


[Go into the 'sip' directory]

$ 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