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