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