Difference between revisions of "Build System"
(Added 'Patches' section and the -fstack-protector* libtool-2.4 patch) |
(→Tool Versions) |
||
Line 68: | Line 68: | ||
| autoconf [ftp://ftp.gnu.org/gnu/autoconf/autoconf-2.59.tar.bz2 2.59] | | autoconf [ftp://ftp.gnu.org/gnu/autoconf/autoconf-2.59.tar.bz2 2.59] | ||
| automake (which version ?) | | automake (which version ?) | ||
− | | libtool [ftp://ftp.gnu.org/gnu/libtool/libtool-1. | + | | libtool [ftp://ftp.gnu.org/gnu/libtool/libtool-1.4.3.tar.gz 1.4.3] |
|} | |} | ||
Revision as of 12:18, 10 November 2010
Contents
For Users
Unix
./configure [options, see "configure --help" for a list] make make test su make install
The same procedure applies to builds with Cygwin on Windows.
See README.* for important notes for particular platforms.
Windows
There are several ways to build on Windows:
- MS Visual C++
- MinGW / MSYS
- Cygwin (see "Unix" above)
See Build_System/Windows for the status of compiling with the various Windows environments.
See Build_System/Windows_features for a comparison of the features implemented in each of the Windows build environments.
See README.win32 for further details.
For Coders
Tool Versions
Versions | Autoconf | Automake | Libtool |
---|---|---|---|
Trunk (5.7-to-be) | autoconf 2.68 | automake 1.11 | libtool 2.4 + patch (see below) |
5.6 | autoconf 2.63 | automake 1.11 | libtool 2.2.6a |
5.5 | autoconf 2.63 | automake 1.10.1 | libtool 2.2.6a |
5.4.2+ | autoconf 2.59 | automake 1.10.1 | libtool 1.5.26 |
5.4/5.4.1 | autoconf 2.59 | automake (which version ?) | libtool 1.5.24 |
earlier | autoconf 2.59 | automake (which version ?) | libtool 1.4.3 |
Files
- configure: auto-generated by autoconf from configure.in and acinclude.m4 (branches) or configure.ac, configure.d/* and m4/* (trunk)
- configure.in (5.4.x and earlier) or configure.ac and configure.d/* (trunk): major source file to implement configure magic. Run autoconf and autoheader after any change. New definitions may need to be copied to win32/net-snmp/net-snmp-config.h[.in].
- acconfig.h: autoconf variable definitions, descriptions and default values. Deprecated (for new definitions) in favor of AC_DEFINE() in configure.in / configure.d/*. Run autoheader after any change. New definitions may need to be copied to win32/net-snmp/net-snmp-config.h[.in].
- acinclude.m4 (branches) or m4/ac* and m4/netsnmp* (trunk): Net-SNMP specific autoconf macros. Run autoconf after any change.
- include/net-snmp/net-snmp-config.h: auto-generated by autoheader from configure.in/configure.ac and acconfig.h
- ltmain.sh: copied from libtool (created/updated by libtoolize --copy --force)
- aclocal.m4: contains includes of all used files in m4/*(created/updated by aclocal)
- config.guess, config.sub: platform detection shell script (created/updated by libtoolize --copy --force; from GNU config project)
- win32/net-snmp/net-snmp-config.h.in: used by win32/Configure to create win32/net-snmp/net-snmp-config.h
- win32/net-snmp/net-snmp-config.h: definitions for Win32 (non-Cygwin) builds
- win32/lib*/lib*.def: public/exported symbols/functions from Net-SNMP libraries for Win32 builds. If you introduce new public functions, please also add them here!
- Makefile.in (also in most sub-directories): source for Makefile (the latter being generated by configure by substituting autoconf definitions and concatenating with Makefile.top and Makefile.rules)
- net-snmp-config.in: source for net-snmp-config (the latter being generated by configure)
- sedscript.in: source for sedscript (the latter being generated by configure)
Updating
Assuming that you have changed any of the above and have the right tool versions installed - in order to update all the generated files you can do either
aclocal -I m4 libtoolize --copy autoconf autoheader
or
autoreconf -i
but in the later case you must make sure that the tool versions that autoreconf calls are the correct ones.
Patches
When using libtool 2.4, you will need the following patch (see also [1]):
diff -u -r orig/libtool-2.4/libltdl/config/ltmain.m4sh libtool-2.4/libltdl/config/ltmain.m4sh --- orig/libtool-2.4/libltdl/config/ltmain.m4sh 2010-09-22 16:45:18.000000000 +0200 +++ libtool-2.4/libltdl/config/ltmain.m4sh 2010-10-22 08:30:21.000000000 +0200 @@ -5045,13 +5045,14 @@ # -m*, -t[45]*, -txscale* architecture-specific flags for GCC # -F/path path to uninstalled frameworks, gcc on darwin # -p, -pg, --coverage, -fprofile-* profiling flags for GCC + # -fstack-protector* stack protector flags for GCC # @file GCC response files # -tp=* Portland pgcc target processor selection # --sysroot=* for sysroot support # -O*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \ -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \ - -O*|-flto*|-fwhopr*|-fuse-linker-plugin) + -O*|-flto*|-fwhopr*|-fuse-linker-plugin|-fstack-protector*) func_quote_for_eval "$arg" arg="$func_quote_for_eval_result" func_append compile_command " $arg" diff -u -r orig/libtool-2.4/libltdl/config/ltmain.sh libtool-2.4/libltdl/config/ltmain.sh --- orig/libtool-2.4/libltdl/config/ltmain.sh 2010-09-22 16:45:43.000000000 +0200 +++ libtool-2.4/libltdl/config/ltmain.sh 2010-10-22 08:37:07.000000000 +0200 @@ -5834,13 +5834,14 @@ # -m*, -t[45]*, -txscale* architecture-specific flags for GCC # -F/path path to uninstalled frameworks, gcc on darwin # -p, -pg, --coverage, -fprofile-* profiling flags for GCC + # -fstack-protector* stack protector flags for GCC # @file GCC response files # -tp=* Portland pgcc target processor selection # --sysroot=* for sysroot support # -O*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \ -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \ - -O*|-flto*|-fwhopr*|-fuse-linker-plugin) + -O*|-flto*|-fwhopr*|-fuse-linker-plugin|-fstack-protector*) func_quote_for_eval "$arg" arg="$func_quote_for_eval_result" func_append compile_command " $arg"