-
Notifications
You must be signed in to change notification settings - Fork 303
AutotoolsBuild
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
- 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'
- For plenty of build options common on most platforms:
- How to build reSIProcate:
- How to prepare a release tarball using autotools:
- 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'
- autotools will not automatically distribute such things in the tarball unless they are declared in Makefile.am
- 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
- 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
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
- Navigation
- Developers
- Packages
- Community