]> granicus.if.org Git - libnl/blob - configure.ac
libnl-3.5.0 release
[libnl] / configure.ac
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
14 m4_define([libnl_major_version], [3])
15 m4_define([libnl_minor_version], [5])
16 m4_define([libnl_micro_version], [0])
17 m4_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
38 m4_define([libnl_lt_current],    [226])
39 m4_define([libnl_lt_revision],   [0])
40 m4_define([libnl_lt_age],        [26])
41
42 m4_define([libnl_version],
43           [libnl_major_version.libnl_minor_version.libnl_micro_version])
44
45 AC_INIT(libnl, [libnl_version], [], [], [http://www.infradead.org/~tgr/libnl/])
46 AC_CONFIG_HEADERS([lib/defs.h])
47 AC_CONFIG_AUX_DIR([build-aux])
48 AC_CONFIG_MACRO_DIR([m4])
49 AM_INIT_AUTOMAKE([-Wall foreign subdir-objects])
50 m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES(yes)], [])
51 m4_ifdef([AM_PROG_AR], [AM_PROG_AR])
52
53 MAJ_VERSION=libnl_major_version
54 AC_SUBST(MAJ_VERSION)
55 MIN_VERSION=libnl_minor_version
56 AC_SUBST(MIN_VERSION)
57 MIC_VERSION=libnl_micro_version
58 AC_SUBST(MIC_VERSION)
59 LIBNL_GIT_SHA=libnl_git_sha
60 LIBNL_VERSION=libnl_version
61 AC_SUBST(LIBNL_VERSION)
62
63 LT_CURRENT=libnl_lt_current
64 AC_SUBST(LT_CURRENT)
65 LT_REVISION=libnl_lt_revision
66 AC_SUBST(LT_REVISION)
67 LT_AGE=libnl_lt_age
68 AC_SUBST(LT_AGE)
69
70 AC_PROG_CC
71 AM_PROG_CC_C_O
72 AC_PROG_INSTALL
73 AM_PROG_LIBTOOL
74 AC_PROG_MKDIR_P
75 AC_CHECK_PROGS(FLEX, 'flex')
76 AC_CHECK_PROGS(YACC, 'bison -y')
77
78 AC_C_CONST
79 AC_C_INLINE
80
81 PKG_CHECK_MODULES([CHECK], [check >= 0.9.0],
82         [has_check="yes"],
83         [AC_MSG_WARN([*** Disabling building of unit tests])
84          has_check="no"])
85 AM_CONDITIONAL(WITH_CHECK, [test "$has_check" = 'yes'])
86
87 AC_ARG_WITH([pkgconfigdir], AS_HELP_STRING([--with-pkgconfigdir=PATH],
88         [Path to the pkgconfig directory [[LIBDIR/pkgconfig]]]),
89         [pkgconfigdir="$withval"], [pkgconfigdir='${libdir}/pkgconfig'])
90 AC_SUBST([pkgconfigdir])
91
92 AC_ARG_ENABLE([cli],
93         AS_HELP_STRING([--enable-cli=yes|no|no-inst|bin|sbin], [Whether to build command line interface utils. Defaults to 'yes' which is a synonym for 'bin'. 'no-inst' means only build, not installing. 'bin'/'sbin' means installing to bin/sbin directory]),
94         [enable_cli="$enableval"], [enable_cli="yes"])
95 if test "$enable_cli" != "no" &&
96    test "$enable_cli" != "no-inst" &&
97    test "$enable_cli" != "sbin"; then
98         enable_cli="bin"
99 fi
100 AM_CONDITIONAL([ENABLE_CLI], [test "$enable_cli" != "no"])
101 AM_CONDITIONAL([ENABLE_CLI_INSTALL_BIN], [test "$enable_cli" = "bin"])
102 AM_CONDITIONAL([ENABLE_CLI_INSTALL_SBIN], [test "$enable_cli" = "sbin"])
103
104 AC_CHECK_HEADERS(dlfcn.h, [], [])
105
106 AC_ARG_ENABLE([pthreads],
107         AS_HELP_STRING([--disable-pthreads], [Disable pthreads support]),
108         [enable_pthreads="$enableval"], [enable_pthreads="yes"])
109 AM_CONDITIONAL([DISABLE_PTHREADS], [test "$enable_pthreads" = "no"])
110 if test "x$enable_pthreads" = "xno"; then
111     AC_DEFINE([DISABLE_PTHREADS], [1], [Define to 1 to disable pthreads])
112 else
113     AC_CHECK_LIB([pthread], [pthread_mutex_lock], [], AC_MSG_ERROR([libpthread is required]))
114 fi
115
116 AC_ARG_ENABLE([debug],
117         AS_HELP_STRING([--disable-debug], [Do not include debugging statements]),
118         [enable_debug="$enableval"], [enable_debug="yes"])
119 if test "x$enable_debug" = "xyes"; then
120     AC_DEFINE([NL_DEBUG], [1], [Define to 1 to enable debugging])
121 fi
122
123 AC_CONFIG_SUBDIRS([doc])
124
125 AC_CHECK_FUNCS([strerror_l])
126
127 AC_CONFIG_FILES([
128 Makefile
129 libnl-3.0.pc
130 libnl-route-3.0.pc
131 libnl-genl-3.0.pc
132 libnl-nf-3.0.pc
133 libnl-cli-3.0.pc
134 libnl-xfrm-3.0.pc
135 libnl-idiag-3.0.pc
136 python/setup.py
137 include/netlink/version.h
138 ])
139
140 ac_errcount=0
141 if test -z "$YACC"; then
142     AC_MSG_WARN(bison not found. Please install before continuing.)
143     ac_errcount=$((ac_errcount + 1))
144 fi
145 if test -z "$FLEX"; then
146     AC_MSG_WARN(flex not found. Please install before continuing.)
147     ac_errcount=$((ac_errcount + 1))
148 fi
149 if test $ac_errcount -gt 0; then
150     AC_MSG_ERROR(Required packages are missing. Please install them and rerun ./configure)
151 fi
152
153 AC_OUTPUT
154
155 echo "-------------------------------------------------------------------------------"
156 echo "                                  NOTE"
157 echo ""
158 echo " There have been some changes starting with 3.2 regarding where and how libnl"
159 echo " is being installed on the system in order to allow multiple libnl versions"
160 echo " to be installed in parallel:"
161 echo ""
162 echo "    - Headers will be installed in ${includedir}/libnl${MAJ_VERSION}, therefore"
163 echo "      you will need to add \"-I/usr/include/libnl${MAJ_VERSION}\" to CFLAGS"
164 echo ""
165 echo "    - The library basename was renamed to libnl-${MAJ_VERSION}, i.e. the SO names become"
166 echo "      libnl-${MAJ_VERSION}.so., libnl-route-${MAJ_VERSION}.so, etc."
167 echo ""
168 echo "    - libtool versioning was assumed, to ease detection of compatible library"
169 echo "      versions."
170 echo ""
171 echo " If you are using pkg-config for detecting and linking against the library "
172 echo " things will continue magically as if nothing every happened. If you are "
173 echo " linking manually you need to adapt your Makefiles or switch to using "
174 echo " pkg-config files."
175 echo ""
176 echo "-------------------------------------------------------------------------------"
177