]> git.proxmox.com Git - mirror_kronosnet.git/blame - configure.ac
[libknet] exports only public API symbols
[mirror_kronosnet.git] / configure.ac
CommitLineData
ab4c538f 1#
5a59367f 2# Copyright (C) 2010-2015 Red Hat, Inc. All rights reserved.
ab4c538f
FDN
3#
4# Authors: Fabio M. Di Nitto <fabbione@kronosnet.org>
5# Federico Simoncelli <fsimon@kronosnet.org>
6#
7# This software licensed under GPL-2.0+, LGPL-2.0+
8#
9
99afbd6e
FDN
10# -*- Autoconf -*-
11# Process this file with autoconf to produce a configure script.
ab4c538f 12#
99afbd6e
FDN
13
14AC_PREREQ([2.63])
07072a06
FDN
15AC_INIT([kronosnet],
16 m4_esyscmd([build-aux/git-version-gen .tarball-version]),
17 [devel@lists.kronosnet.org])
4359cb72 18AC_USE_SYSTEM_EXTENSIONS
fab0d550 19AM_INIT_AUTOMAKE([1.11.1 dist-bzip2 dist-xz color-tests -Wno-portability subdir-objects])
99afbd6e
FDN
20LT_PREREQ([2.2.6])
21LT_INIT
22
23AC_CONFIG_MACRO_DIR([m4])
4aa63ad7 24AC_CONFIG_SRCDIR([kronosnetd/main.c])
99afbd6e
FDN
25AC_CONFIG_HEADERS([config.h])
26
27AC_CANONICAL_HOST
28AC_PROG_LIBTOOL
29
30AC_LANG([C])
31
32if test "$prefix" = "NONE"; then
33 prefix="/usr"
34 if test "$localstatedir" = "\${prefix}/var"; then
35 localstatedir="/var"
36 fi
37 if test "$sysconfdir" = "\${prefix}/etc"; then
38 sysconfdir="/etc"
39 fi
40fi
41
42# Checks for programs.
43if ! ${MAKE-make} --version /cannot/make/this >/dev/null 2>&1; then
ae9ebb47 44 AC_MSG_ERROR(["you don't seem to have GNU make; it is required"])
99afbd6e 45fi
ae9ebb47 46
5842a2f9
FDN
47AC_PROG_AWK
48AC_PROG_CPP
99afbd6e
FDN
49AC_PROG_CC
50AM_PROG_CC_C_O
51AC_PROG_LN_S
52AC_PROG_INSTALL
53AC_PROG_MAKE_SET
54AC_PROG_CXX
55AC_PROG_RANLIB
b8bf8c7f 56AC_CHECK_PROGS([PUBLICAN], [publican], [:])
99afbd6e
FDN
57AC_CHECK_PROGS([PKGCONFIG], [pkg-config])
58
59## local helper functions
60# this function checks if CC support options passed as
61# args. Global CFLAGS are ignored during this test.
62cc_supports_flag() {
ae9ebb47
FDN
63 saveCPPFLAGS="$CPPFLAGS"
64 CPPFLAGS="$@"
99afbd6e 65 AC_MSG_CHECKING([whether $CC supports "$@"])
ae9ebb47 66 AC_PREPROC_IFELSE([AC_LANG_PROGRAM([])],
99afbd6e
FDN
67 [RC=0; AC_MSG_RESULT([yes])],
68 [RC=1; AC_MSG_RESULT([no])])
ae9ebb47 69 CPPFLAGS="$saveCPPFLAGS"
99afbd6e
FDN
70 return $RC
71}
72
73# helper macro to check libs without adding them to LIBS
74check_lib_no_libs() {
75 lib_no_libs_arg1=$1
76 shift
77 lib_no_libs_arg2=$1
78 shift
79 lib_no_libs_args=$@
80 AC_CHECK_LIB([$lib_no_libs_arg1],
81 [$lib_no_libs_arg2],,,
82 [$lib_no_libs_args])
83 LIBS=$ac_check_lib_save_LIBS
84}
85
c3776828
FDN
86# Checks for C features
87AC_C_INLINE
88
99afbd6e 89# Checks for libraries.
a5d43036 90AC_CHECK_LIB([pthread], [pthread_create])
e9d8f3c2 91AC_CHECK_LIB([m], [ceil])
df5fcdba 92AC_CHECK_LIB([rt], [clock_gettime])
99afbd6e 93
56407f26 94PKG_CHECK_MODULES([nss],[nss])
6dfec840 95PKG_CHECK_MODULES([libqb], [libqb])
56407f26
FDN
96
97AC_CHECK_LIB([qb], [qb_log_thread_priority_set],
98 [have_qb_log_thread_priority_set="yes"],
99 [have_qb_log_thread_priority_set="no"])
100
101if test "x${have_qb_log_thread_priority_set}" = xyes; then
102 AC_DEFINE_UNQUOTED([HAVE_QB_LOG_THREAD_PRIORITY_SET], 1, [have qb_log_thread_priority_set])
103fi
104
99afbd6e 105# Checks for header files.
bba2a8d7
FDN
106AC_CHECK_HEADERS([fcntl.h])
107AC_CHECK_HEADERS([stdlib.h])
108AC_CHECK_HEADERS([string.h])
5842a2f9 109AC_CHECK_HEADERS([strings.h])
bba2a8d7
FDN
110AC_CHECK_HEADERS([sys/ioctl.h])
111AC_CHECK_HEADERS([syslog.h])
112AC_CHECK_HEADERS([unistd.h])
6d727d3c
FDN
113AC_CHECK_HEADERS([netinet/in.h])
114AC_CHECK_HEADERS([sys/socket.h])
c3776828 115AC_CHECK_HEADERS([arpa/inet.h])
521b047e 116AC_CHECK_HEADERS([netdb.h])
ba6bc349 117AC_CHECK_HEADERS([limits.h])
5842a2f9 118AC_CHECK_HEADERS([stdint.h])
99afbd6e
FDN
119
120# Checks for typedefs, structures, and compiler characteristics.
5842a2f9 121AC_C_INLINE
bba2a8d7 122AC_TYPE_SIZE_T
6d727d3c 123AC_TYPE_PID_T
c3776828 124AC_TYPE_SSIZE_T
31f37826 125AC_TYPE_UINT8_T
c3776828
FDN
126AC_TYPE_UINT16_T
127AC_TYPE_UINT32_T
efc95595
FDN
128AC_TYPE_UINT64_T
129AC_TYPE_INT32_T
99afbd6e
FDN
130
131# Checks for library functions.
6d727d3c
FDN
132AC_FUNC_ALLOCA
133AC_FUNC_FORK
134AC_FUNC_MALLOC
135AC_FUNC_REALLOC
bba2a8d7
FDN
136AC_CHECK_FUNCS([memset])
137AC_CHECK_FUNCS([strdup])
138AC_CHECK_FUNCS([strerror])
6d727d3c
FDN
139AC_CHECK_FUNCS([dup2])
140AC_CHECK_FUNCS([select])
141AC_CHECK_FUNCS([socket])
31f37826
FDN
142AC_CHECK_FUNCS([inet_ntoa])
143AC_CHECK_FUNCS([memmove])
144AC_CHECK_FUNCS([strchr])
bc5fdb83
FDN
145AC_CHECK_FUNCS([atexit])
146AC_CHECK_FUNCS([ftruncate])
7a00930f
FDN
147AC_CHECK_FUNCS([strrchr])
148AC_CHECK_FUNCS([strstr])
ba6bc349 149AC_CHECK_FUNCS([clock_gettime])
efc95595 150AC_CHECK_FUNCS([strcasecmp])
783e1ac8
FDN
151AC_CHECK_FUNCS([sendmmsg], AC_MSG_RESULT([]), AC_MSG_ERROR([kernel 3.0+ and glibc 2.14+ are required]))
152AC_CHECK_FUNCS([recvmmsg], AC_MSG_RESULT([]), AC_MSG_ERROR([kernel 2.6.33 and glibc 2.12+ are required]))
99afbd6e 153
38cb1bb7
FDN
154# PAM check
155AC_CHECK_HEADERS([security/pam_appl.h],
156 [AC_CHECK_LIB([pam], [pam_start])],
157 [AC_MSG_ERROR([Unable to find LinuxPAM devel files])])
158
159AC_CHECK_HEADERS([security/pam_misc.h],
160 [AC_CHECK_LIB([pam_misc], [misc_conv])],
161 [AC_MSG_ERROR([Unable to find LinuxPAM MISC devel files])])
162
99afbd6e
FDN
163# local options
164AC_ARG_ENABLE([debug],
165 [ --enable-debug enable debug build. ],
166 [ default="no" ])
167
c8ed20e0
FDN
168AC_ARG_ENABLE([publicandocs],
169 [ --enable-publicandocs enable docs build. ],
170 [ default="no" ])
171
2e687dd8
FDN
172AC_ARG_WITH([initdefaultdir],
173 [ --with-initdefaultdir : path to /etc/sysconfig/.. or /etc/default dir. ],
174 [ INITDEFAULTDIR="$withval" ],
175 [ INITDEFAULTDIR="$sysconfdir/default" ])
176
0472de45
FDN
177AC_ARG_WITH([initddir],
178 [ --with-initddir=DIR : path to init script directory. ],
179 [ INITDDIR="$withval" ],
180 [ INITDDIR="$sysconfdir/init.d" ])
181
182AC_ARG_WITH([systemddir],
183 [ --with-systemddir=DIR : path to systemd unit files directory. ],
184 [ SYSTEMDDIR="$withval" ],
185 [ SYSTEMDDIR="/lib/systemd/system" ])
186
99afbd6e 187AC_ARG_WITH([syslogfacility],
e3aa8728 188 [ --with-syslogfacility=FACILITY
99afbd6e
FDN
189 default syslog facility. ],
190 [ SYSLOGFACILITY="$withval" ],
2d022f7f 191 [ SYSLOGFACILITY="LOG_DAEMON" ])
99afbd6e
FDN
192
193AC_ARG_WITH([sysloglevel],
e3aa8728 194 [ --with-sysloglevel=LEVEL
99afbd6e
FDN
195 default syslog level. ],
196 [ SYSLOGLEVEL="$withval" ],
197 [ SYSLOGLEVEL="LOG_INFO" ])
198
e3aa8728
FDN
199AC_ARG_WITH([defaultadmgroup],
200 [ --with-defaultadmgroup=GROUP
201 define PAM group. Users part of this group will be
202 allowed to configure kronosnet. Others will only
203 receive read-only rights. ],
204 [ DEFAULTADMGROUP="$withval" ],
205 [ DEFAULTADMGROUP="kronosnetadm" ])
206
99afbd6e
FDN
207## random vars
208LOGDIR=${localstatedir}/log/
209RUNDIR=${localstatedir}/run/
afce19e1 210DEFAULT_CONFIG_DIR=${sysconfdir}/kronosnet
99afbd6e
FDN
211
212## do subst
213
4fc6106b 214AM_CONDITIONAL([BUILD_DOCS], [test "x${enable_publicandocs}" = xyes])
c8ed20e0 215
afce19e1 216AC_SUBST([DEFAULT_CONFIG_DIR])
2e687dd8 217AC_SUBST([INITDEFAULTDIR])
0472de45
FDN
218AC_SUBST([INITDDIR])
219AC_SUBST([SYSTEMDDIR])
b386f39b 220AC_SUBST([LOGDIR])
2e687dd8 221AC_SUBST([DEFAULTADMGROUP])
0472de45 222
4fc6106b
FDN
223AC_DEFINE_UNQUOTED([DEFAULT_CONFIG_DIR],
224 ["$(eval echo ${DEFAULT_CONFIG_DIR})"],
afce19e1
FDN
225 [Default config directory])
226
227AC_DEFINE_UNQUOTED([DEFAULT_CONFIG_FILE],
4fc6106b 228 ["$(eval echo ${DEFAULT_CONFIG_DIR}/kronosnetd.conf)"],
99afbd6e
FDN
229 [Default config file])
230
4fc6106b
FDN
231AC_DEFINE_UNQUOTED([LOGDIR],
232 ["$(eval echo ${LOGDIR})"],
99afbd6e
FDN
233 [Default logging directory])
234
2d022f7f 235AC_DEFINE_UNQUOTED([DEFAULT_LOG_FILE],
4fc6106b 236 ["$(eval echo ${LOGDIR}/kronosnetd.log)"],
2d022f7f
FDN
237 [Default log file])
238
4fc6106b
FDN
239AC_DEFINE_UNQUOTED([RUNDIR],
240 ["$(eval echo ${RUNDIR})"],
99afbd6e
FDN
241 [Default run directory])
242
4fc6106b
FDN
243AC_DEFINE_UNQUOTED([SYSLOGFACILITY],
244 [$(eval echo ${SYSLOGFACILITY})],
99afbd6e
FDN
245 [Default syslog facility])
246
4fc6106b
FDN
247AC_DEFINE_UNQUOTED([SYSLOGLEVEL],
248 [$(eval echo ${SYSLOGLEVEL})],
99afbd6e
FDN
249 [Default syslog level])
250
4fc6106b
FDN
251AC_DEFINE_UNQUOTED([DEFAULTADMGROUP],
252 ["$(eval echo ${DEFAULTADMGROUP})"],
e3aa8728
FDN
253 [Default admin group])
254
99afbd6e
FDN
255## *FLAGS handling
256ENV_CFLAGS="$CFLAGS"
257ENV_CPPFLAGS="$CPPFLAGS"
258ENV_LDFLAGS="$LDFLAGS"
259
260# debug build stuff
261if test "x${enable_debug}" = xyes; then
262 AC_DEFINE_UNQUOTED([DEBUG], [1], [Compiling Debugging code])
263 OPT_CFLAGS="-O0"
264else
265 OPT_CFLAGS="-O3"
266fi
267
268# gdb flags
269if test "x${GCC}" = xyes; then
270 GDB_FLAGS="-ggdb3"
271else
272 GDB_FLAGS="-g"
273fi
274
275# extra warnings
276EXTRA_WARNINGS=""
277
278WARNLIST="
279 all
280 shadow
281 missing-prototypes
282 missing-declarations
283 strict-prototypes
284 declaration-after-statement
285 pointer-arith
286 write-strings
287 cast-align
288 bad-function-cast
289 missing-format-attribute
290 format=2
291 format-security
292 format-nonliteral
293 no-long-long
294 unsigned-char
295 gnu89-inline
296 no-strict-aliasing
297 error
ade3159b
FDN
298 address
299 cpp
ade3159b
FDN
300 overflow
301 parentheses
302 sequence-point
303 switch
304 uninitialized
305 unused-but-set-variable
306 unused-function
307 unused-result
308 unused-value
309 unused-variable
99afbd6e
FDN
310 "
311
312for j in $WARNLIST; do
313 if cc_supports_flag -W$j; then
314 EXTRA_WARNINGS="$EXTRA_WARNINGS -W$j";
315 fi
316done
317
ae9ebb47 318CFLAGS="$ENV_CFLAGS $lt_prog_compiler_pic $OPT_CFLAGS $GDB_FLAGS \
99afbd6e
FDN
319 $EXTRA_WARNINGS $WERROR_CFLAGS"
320CPPFLAGS="$ENV_CPPFLAGS"
e3c019fd 321LDFLAGS="$ENV_LDFLAGS $lt_prog_compiler_pic -Wl,--as-needed"
99afbd6e 322
19ceca42
FDN
323AC_CONFIG_FILES([
324 Makefile
fab0d550 325 common/Makefile
0472de45 326 init/Makefile
5d4a4eec
FDN
327 libtap/Makefile
328 libtap/libtap.pc
4aa63ad7 329 kronosnetd/Makefile
b386f39b 330 kronosnetd/kronosnetd.logrotate
10244a3f
FS
331 libknet/Makefile
332 libknet/libknet.pc
a86247e6 333 libknet/tests/Makefile
19ceca42
FDN
334 docs/Makefile
335 ])
99afbd6e
FDN
336
337AC_OUTPUT