1#
2# configure.in
3#
4# 	This library is free software; you can redistribute it and/or
5#	modify it under the terms of the GNU Lesser General Public
6#	License as published by the Free Software Foundation version 2.1
7#	of the License.
8#
9# Copyright (c) 2003-2013 Thomas Graf <tgraf@suug.ch>
10#
11
12
13# copied from glib
14m4_define([libnl_major_version], [3])
15m4_define([libnl_minor_version], [2])
16m4_define([libnl_micro_version], [25])
17m4_define([libnl_git_sha], [m4_esyscmd([ ( [ -d ./.git/ ] && [ "$(readlink -f ./.git/)" = "$(readlink -f "$(git rev-parse --git-dir 2>/dev/null)" 2>/dev/null)" ] && git rev-parse --verify -q HEAD 2>/dev/null ) || true ])])
18
19
20# The following explanation may help to understand the above rules a bit
21# better: consider that there are three possible kinds of reactions from
22# users of your library to changes in a shared library:
23#
24# 1. Programs using the previous version may use the new version as drop-in
25#    replacement, and programs using the new version can also work with the
26#    previous one. In other words, no recompiling nor relinking is needed.
27#    In this case, bump revision only, don't touch current nor age.
28#
29# 2. Programs using the previous version may use the new version as drop-in
30#    replacement, but programs using the new version may use APIs not
31#    present in the previous one. In other words, a program linking against
32#    the new version may fail with “unresolved symbols” if linking against
33#    the old version at runtime: set revision to 0, bump current and age.
34#
35# 3. Programs may need to be changed, recompiled, relinked in order to use
36#    the new version. Bump current, set revision and age to 0.
37
38m4_define([libnl_lt_current],    [220])
39m4_define([libnl_lt_revision],	 [0])
40m4_define([libnl_lt_age],        [20])
41
42m4_define([libnl_version],
43	  [libnl_major_version.libnl_minor_version.libnl_micro_version])
44
45AC_INIT(libnl, [libnl_version], [], [], [http://www.infradead.org/~tgr/libnl/])
46AC_CONFIG_HEADERS([lib/defs.h])
47AC_CONFIG_AUX_DIR([build-aux])
48AC_CONFIG_MACRO_DIR([m4])
49AM_INIT_AUTOMAKE([-Wall foreign subdir-objects])
50m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES(yes)], [])
51m4_ifdef([AM_PROG_AR], [AM_PROG_AR])
52
53MAJ_VERSION=libnl_major_version
54AC_SUBST(MAJ_VERSION)
55MIN_VERSION=libnl_minor_version
56AC_SUBST(MIN_VERSION)
57MIC_VERSION=libnl_micro_version
58AC_SUBST(MIC_VERSION)
59LIBNL_GIT_SHA=libnl_git_sha
60LIBNL_VERSION=libnl_version
61AC_SUBST(LIBNL_VERSION)
62
63LT_CURRENT=libnl_lt_current
64AC_SUBST(LT_CURRENT)
65LT_REVISION=libnl_lt_revision
66AC_SUBST(LT_REVISION)
67LT_AGE=libnl_lt_age
68AC_SUBST(LT_AGE)
69
70AC_PROG_CC
71AM_PROG_CC_C_O
72AC_PROG_INSTALL
73AM_PROG_LIBTOOL
74AC_PROG_MKDIR_P
75AC_CHECK_PROGS(FLEX, 'flex')
76AC_CHECK_PROGS(YACC, 'bison -y')
77
78AC_C_CONST
79AC_C_INLINE
80
81PKG_CHECK_MODULES([CHECK], [check >= 0.9.0],
82	[enable_unit_tests="yes"],
83	[AC_MSG_WARN([*** Disabling building of unit tests])
84	 enable_unit_tests="no"])
85
86AM_CONDITIONAL([ENABLE_UNIT_TESTS], [test "$enable_unit_tests" = "yes"])
87
88AC_ARG_WITH([pkgconfigdir], AS_HELP_STRING([--with-pkgconfigdir=PATH],
89	[Path to the pkgconfig directory [[LIBDIR/pkgconfig]]]),
90	[pkgconfigdir="$withval"], [pkgconfigdir='${libdir}/pkgconfig'])
91AC_SUBST([pkgconfigdir])
92
93AC_ARG_ENABLE([cli],
94	AS_HELP_STRING([--disable-cli], [Do not build command line interface utils]),
95	[enable_cli="$enableval"], [enable_cli="yes"])
96AM_CONDITIONAL([ENABLE_CLI], [test "$enable_cli" = "yes"])
97
98AC_ARG_ENABLE([pthreads],
99	AS_HELP_STRING([--disable-pthreads], [Disable pthreads support]),
100	[enable_pthreads="$enableval"], [enable_pthreads="yes"])
101AM_CONDITIONAL([DISABLE_PTHREADS], [test "$enable_pthreads" = "no"])
102
103AC_ARG_ENABLE([debug],
104	AS_HELP_STRING([--disable-debug], [Do not include debugging statements]),
105	[enable_debug="$enableval"], [enable_debug="yes"])
106AM_CONDITIONAL([ENABLE_DEBUG], [test "$enable_debug" = "no" ])
107
108AC_CHECK_LIB([m], [pow], [], AC_MSG_ERROR([libm is required]))
109
110if test "x$enable_pthreads" = "xno"; then
111    AC_DEFINE([DISABLE_PTHREADS], [1], [Define to 1 to disable pthreads])
112else
113    AC_CHECK_LIB([pthread], [pthread_mutex_lock], [], AC_MSG_ERROR([libpthread is required]))
114fi
115
116if test "x$enable_debug" = "xyes"; then
117    AC_DEFINE([NL_DEBUG], [1], [Define to 1 to enable debugging])
118fi
119
120AC_CONFIG_SUBDIRS([doc])
121
122AC_CONFIG_FILES([
123Makefile
124libnl.sym
125libnl-3.0.pc
126libnl-route-3.0.pc
127libnl-genl-3.0.pc
128libnl-nf-3.0.pc
129libnl-cli-3.0.pc
130lib/Makefile
131include/Makefile
132src/Makefile
133src/lib/Makefile
134tests/Makefile
135man/Makefile
136python/Makefile
137python/setup.py
138python/doc/Makefile
139python/examples/Makefile
140python/netlink/Makefile
141python/netlink/genl/Makefile
142python/netlink/route/Makefile
143python/tests/Makefile
144include/netlink/version.h
145])
146
147ac_errcount=0
148if test -z "$YACC"; then
149    AC_MSG_WARN(bison not found. Please install before continuing.)
150    ac_errcount=$((ac_errcount + 1))
151fi
152if test -z "$FLEX"; then
153    AC_MSG_WARN(flex not found. Please install before continuing.)
154    ac_errcount=$((ac_errcount + 1))
155fi
156if test $ac_errcount -gt 0; then
157    AC_MSG_ERROR(Required packages are missing. Please install them and rerun ./configure)
158fi
159
160AC_OUTPUT
161
162echo "-------------------------------------------------------------------------------"
163echo "                                  NOTE"
164echo ""
165echo " There have been some changes starting with 3.2 regarding where and how libnl"
166echo " is being installed on the system in order to allow multiple libnl versions"
167echo " to be installed in parallel:"
168echo ""
169echo "    - Headers will be installed in ${includedir}/libnl${MAJ_VERSION}, therefore"
170echo "      you will need to add \"-I/usr/include/libnl${MAJ_VERSION}\" to CFLAGS"
171echo ""
172echo "    - The library basename was renamed to libnl-${MAJ_VERSION}, i.e. the SO names become"
173echo "      libnl-${MAJ_VERSION}.so., libnl-route-${MAJ_VERSION}.so, etc."
174echo ""
175echo "    - libtool versioning was assumed, to ease detection of compatible library"
176echo "      versions."
177echo ""
178echo " If you are using pkg-config for detecting and linking against the library "
179echo " things will continue magically as if nothing every happened. If you are "
180echo " linking manually you need to adapt your Makefiles or switch to using "
181echo " pkg-config files."
182echo ""
183echo "-------------------------------------------------------------------------------"
184
185