2 # Copyright (C) 2010-2017 Red Hat, Inc. All rights reserved.
4 # Authors: Fabio M. Di Nitto <fabbione@kronosnet.org>
5 # Federico Simoncelli <fsimon@kronosnet.org>
7 # This software licensed under GPL-2.0+, LGPL-2.0+
11 # Process this file with autoconf to produce a configure script.
16 m4_esyscmd([build-aux/git-version-gen .tarball-version]),
17 [devel@lists.kronosnet.org])
18 AC_USE_SYSTEM_EXTENSIONS
19 AM_INIT_AUTOMAKE([1.11.1 dist-bzip2 dist-xz color-tests -Wno-portability subdir-objects])
23 AC_CONFIG_MACRO_DIR([m4])
24 AC_CONFIG_SRCDIR([kronosnetd/main.c])
25 AC_CONFIG_HEADERS([config.h])
32 systemddir=${prefix}/lib/systemd/system
34 if test "$prefix" = "NONE"; then
36 if test "$localstatedir" = "\${prefix}/var"; then
39 if test "$sysconfdir" = "\${prefix}/etc"; then
42 if test "$systemddir" = "NONE/lib/systemd/system"; then
43 systemddir=/lib/systemd/system
45 if test "$libdir" = "\${exec_prefix}/lib"; then
46 if test -e /usr/lib64; then
54 # Checks for programs.
55 if ! ${MAKE-make} --version /cannot/make/this >/dev/null 2>&1; then
56 AC_MSG_ERROR(["you don't seem to have GNU make; it is required"])
65 if test "x$ac_cv_prog_cc_c99" = "xno"; then
66 AC_MSG_ERROR(["C99 support is required"])
73 AC_CHECK_PROGS([PUBLICAN], [publican], [:])
74 AC_CHECK_PROGS([PKGCONFIG], [pkg-config])
76 AC_ARG_ENABLE([libknet-sctp],
77 [ --disable-libknet-sctp : disable libknet SCTP support ],,
78 [ enable_libknet_sctp="yes" ])
79 AM_CONDITIONAL([BUILDSCTP], [test x$enable_libknet_sctp = xyes])
81 AC_ARG_ENABLE([crypto-all],
82 [ --disable-crypto-all : disable libknet all crypto modules support ],,
83 [ enable_crypto_all="yes" ])
85 AC_ARG_ENABLE([crypto-nss],
86 [ --disable-crypto-nss : disable libknet nss support ],,
87 [ enable_crypto_nss="$enable_crypto_all" ])
88 AM_CONDITIONAL([BUILDCRYPTONSS], [test x$enable_crypto_nss = xyes])
90 AC_ARG_ENABLE([crypto-openssl],
91 [ --disable-crypto-openssl : disable libknet openssl support ],,
92 [ enable_crypto_openssl="$enable_crypto_all" ])
93 AM_CONDITIONAL([BUILDCRYPTOOPENSSL], [test x$enable_crypto_openssl = xyes])
95 AC_ARG_ENABLE([compress-all],
96 [ --disable-compress-all : disable libknet all compress modules support ],,
97 [ enable_compress_all="yes" ])
99 AC_ARG_ENABLE([compress-zlib],
100 [ --disable-compress-zlib : disable libknet zlib support ],,
101 [ enable_compress_zlib="$enable_compress_all" ])
102 AM_CONDITIONAL([BUILDCOMPZLIB], [test x$enable_compress_zlib = xyes])
104 AC_ARG_ENABLE([compress-lz4],
105 [ --disable-compress-lz4 : disable libknet lz4 support ],,
106 [ enable_compress_lz4="$enable_compress_all" ])
107 AM_CONDITIONAL([BUILDCOMPLZ4], [test x$enable_compress_lz4 = xyes])
109 AC_ARG_ENABLE([compress-lzo2],
110 [ --disable-compress-lzo2 : disable libknet lzo2 support ],,
111 [ enable_compress_lzo2="$enable_compress_all" ])
112 AM_CONDITIONAL([BUILDCOMPLZO2], [test x$enable_compress_lzo2 = xyes])
114 AC_ARG_ENABLE([compress-lzma],
115 [ --disable-compress-lzma : disable libknet lzma support ],,
116 [ enable_compress_lzma="$enable_compress_all" ])
117 AM_CONDITIONAL([BUILDCOMPLZMA], [test x$enable_compress_lzma = xyes])
119 AC_ARG_ENABLE([compress-bzip2],
120 [ --disable-compress-bzip2 : disable libknet bzip2 support ],,
121 [ enable_compress_bzip2="$enable_compress_all" ])
122 AM_CONDITIONAL([BUILDCOMPBZIP2], [test x$enable_compress_bzip2 = xyes])
125 [ --disable-poc : disable building poc code ],,
126 [ enable_poc="yes" ])
127 AM_CONDITIONAL([BUILD_POC], [test x$enable_poc = xyes])
129 AC_ARG_ENABLE([kronosnetd],
130 [ --enable-kronosnetd : Kronosnetd support ],,
131 [ enable_kronosnetd="no" ])
132 AM_CONDITIONAL([BUILD_KRONOSNETD], [test x$enable_kronosnetd = xyes])
134 AC_ARG_ENABLE([libtap],
135 [ --enable-libtap : libtap support ],,
136 [ enable_libtap="no" ])
138 if test "x$enable_kronosnetd" = xyes; then
141 AM_CONDITIONAL([BUILD_LIBTAP], [test x$enable_libtap = xyes])
143 ## local helper functions
144 # this function checks if CC support options passed as
145 # args. Global CFLAGS are ignored during this test.
147 saveCPPFLAGS="$CPPFLAGS"
149 if echo $CC | grep -q clang; then
150 CPPFLAGS="-Werror $CPPFLAGS"
152 AC_MSG_CHECKING([whether $CC supports "$@"])
153 AC_PREPROC_IFELSE([AC_LANG_PROGRAM([])],
154 [RC=0; AC_MSG_RESULT([yes])],
155 [RC=1; AC_MSG_RESULT([no])])
156 CPPFLAGS="$saveCPPFLAGS"
160 # helper macro to check libs without adding them to LIBS
161 check_lib_no_libs() {
167 AC_CHECK_LIB([$lib_no_libs_arg1],
168 [$lib_no_libs_arg2],,,
170 LIBS=$ac_check_lib_save_LIBS
173 # Checks for C features
176 # Checks for libraries.
177 AC_CHECK_LIB([pthread], [pthread_create], [AC_SUBST([pthread_LIBS], [-lpthread])], [AC_MSG_ERROR([kronosnet requires pthread library])])
178 AC_CHECK_LIB([m], [ceil], [AC_SUBST([m_LIBS], [-lm])], [AC_MSG_ERROR([kronosnet requires m library])])
179 AC_CHECK_LIB([rt], [clock_gettime], [AC_SUBST([rt_LIBS], [-lrt])], [AC_MSG_ERROR([kronosnet requires rt library])])
181 AC_SEARCH_LIBS([dlopen], [dl dld], [AC_SUBST([dl_LIBS], [$ac_res])], [AC_MSG_ERROR([kronosnet requires dl library])])
183 # workaround pkg-config bootstrapping
184 PKG_CHECK_MODULES([foobarbaz],[foobarbaz], [AC_MSG_NOTICE([bootstrapping pkg-config])], [AC_MSG_NOTICE([bootstrapping pkg-config])])
186 # crypto libraries checks
187 if test "x$enable_crypto_nss" = xyes; then
188 PKG_CHECK_MODULES([nss],[nss])
189 AC_DEFINE_UNQUOTED([BUILDCRYPTONSS], [1], [Enable nss crypto])
192 if test "x$enable_crypto_openssl" = xyes; then
193 PKG_CHECK_MODULES([openssl],[openssl])
194 AC_DEFINE_UNQUOTED([BUILDCRYPTOOPENSSL], [1], [Enable openssl crypto])
197 # compress libraries checks
198 if test "x$enable_compress_zlib" = xyes; then
199 PKG_CHECK_MODULES([zlib], [zlib])
200 AC_DEFINE_UNQUOTED([BUILDCOMPZLIB], [1], [Enable zlib compression])
202 if test "x$enable_compress_lz4" = xyes; then
203 PKG_CHECK_MODULES([liblz4], [liblz4])
204 AC_DEFINE_UNQUOTED([BUILDCOMPLZ4], [1], [Enable lz4 compress])
206 if test "x$enable_compress_lzo2" = xyes; then
207 PKG_CHECK_MODULES([lzo2], [lzo2],,
208 [AC_CHECK_HEADERS([lzo/lzo1x.h],
209 [AC_CHECK_LIB([lzo2], [lzo1x_decompress_safe],
210 [AC_SUBST([lzo2_LIBS], [-llzo2])])],
211 [AC_MSG_ERROR(["missing required lzo/lzo1x.h header"])])])
212 AC_DEFINE_UNQUOTED([BUILDCOMPLZO2], [1], [Enable lzo2 compress])
214 if test "x$enable_compress_lzma" = xyes; then
215 PKG_CHECK_MODULES([liblzma], [liblzma])
216 AC_DEFINE_UNQUOTED([BUILDCOMPLZMA], [1], [Enable lzma compress])
218 if test "x$enable_compress_bzip2" = xyes; then
219 PKG_CHECK_MODULES([bzip2], [bzip2],,
220 [AC_CHECK_HEADERS([bzlib.h],
221 [AC_CHECK_LIB([bz2], [BZ2_bzBuffToBuffCompress],
222 [AC_SUBST([bzip2_LIBS], [-lbz2])])],
223 [AC_MSG_ERROR(["missing required bzlib.h"])])])
224 AC_DEFINE_UNQUOTED([BUILDCOMPBZIP2], [1], [Enable bzip2 compress])
227 # Checks for header files.
228 AC_CHECK_HEADERS([fcntl.h])
229 AC_CHECK_HEADERS([stdlib.h])
230 AC_CHECK_HEADERS([string.h])
231 AC_CHECK_HEADERS([strings.h])
232 AC_CHECK_HEADERS([sys/ioctl.h])
233 AC_CHECK_HEADERS([syslog.h])
234 AC_CHECK_HEADERS([unistd.h])
235 AC_CHECK_HEADERS([netinet/in.h])
236 AC_CHECK_HEADERS([sys/socket.h])
237 AC_CHECK_HEADERS([arpa/inet.h])
238 AC_CHECK_HEADERS([netdb.h])
239 AC_CHECK_HEADERS([limits.h])
240 AC_CHECK_HEADERS([stdint.h])
241 AC_CHECK_HEADERS([sys/epoll.h])
243 if test "x$enable_libknet_sctp" = xyes; then
244 AC_CHECK_HEADERS([netinet/sctp.h],, [AC_MSG_ERROR(["missing required SCTP headers"])])
247 # Checks for typedefs, structures, and compiler characteristics.
258 # Checks for library functions.
263 AC_CHECK_FUNCS([memset])
264 AC_CHECK_FUNCS([strdup])
265 AC_CHECK_FUNCS([strerror])
266 AC_CHECK_FUNCS([dup2])
267 AC_CHECK_FUNCS([select])
268 AC_CHECK_FUNCS([socket])
269 AC_CHECK_FUNCS([inet_ntoa])
270 AC_CHECK_FUNCS([memmove])
271 AC_CHECK_FUNCS([strchr])
272 AC_CHECK_FUNCS([atexit])
273 AC_CHECK_FUNCS([ftruncate])
274 AC_CHECK_FUNCS([strrchr])
275 AC_CHECK_FUNCS([strstr])
276 AC_CHECK_FUNCS([clock_gettime])
277 AC_CHECK_FUNCS([strcasecmp])
278 AC_CHECK_FUNCS([kevent])
279 # if neither sys/epoll.h nor kevent are present, we should fail.
281 if test "x$ac_cv_header_sys_epoll_h" = xno && test "x$ac_cv_func_kevent" = xno; then
282 AC_MSG_ERROR([Both epoll and kevent unavailable on this OS])
285 if test "x$ac_cv_header_sys_epoll_h" = xyes && test "x$ac_cv_func_kevent" = xyes; then
286 AC_MSG_ERROR([Both epoll and kevent available on this OS, please contact the maintainers to fix the code])
289 # checks (for kronosnetd)
290 if test "x$enable_kronosnetd" = xyes; then
291 AC_CHECK_HEADERS([security/pam_appl.h],
292 [AC_CHECK_LIB([pam], [pam_start])],
293 [AC_MSG_ERROR([Unable to find LinuxPAM devel files])])
295 AC_CHECK_HEADERS([security/pam_misc.h],
296 [AC_CHECK_LIB([pam_misc], [misc_conv])],
297 [AC_MSG_ERROR([Unable to find LinuxPAM MISC devel files])])
299 PKG_CHECK_MODULES([libqb], [libqb])
301 AC_CHECK_LIB([qb], [qb_log_thread_priority_set],
302 [have_qb_log_thread_priority_set="yes"],
303 [have_qb_log_thread_priority_set="no"])
304 if test "x${have_qb_log_thread_priority_set}" = xyes; then
305 AC_DEFINE_UNQUOTED([HAVE_QB_LOG_THREAD_PRIORITY_SET], [1], [have qb_log_thread_priority_set])
310 AC_ARG_ENABLE([debug],
311 [ --enable-debug enable debug build. ],
314 AC_ARG_ENABLE([publicandocs],
315 [ --enable-publicandocs enable docs build. ],
318 AC_ARG_WITH([initdefaultdir],
319 [ --with-initdefaultdir : path to /etc/sysconfig/.. or /etc/default dir. ],
320 [ INITDEFAULTDIR="$withval" ],
321 [ INITDEFAULTDIR="$sysconfdir/default" ])
323 AC_ARG_WITH([initddir],
324 [ --with-initddir=DIR : path to init script directory. ],
325 [ INITDDIR="$withval" ],
326 [ INITDDIR="$sysconfdir/init.d" ])
328 AC_ARG_WITH([systemddir],
329 [ --with-systemddir=DIR : path to systemd unit files directory. ],
330 [ SYSTEMDDIR="$withval" ],
331 [ SYSTEMDDIR="$systemddir" ])
333 AC_ARG_WITH([syslogfacility],
334 [ --with-syslogfacility=FACILITY
335 default syslog facility. ],
336 [ SYSLOGFACILITY="$withval" ],
337 [ SYSLOGFACILITY="LOG_DAEMON" ])
339 AC_ARG_WITH([sysloglevel],
340 [ --with-sysloglevel=LEVEL
341 default syslog level. ],
342 [ SYSLOGLEVEL="$withval" ],
343 [ SYSLOGLEVEL="LOG_INFO" ])
345 AC_ARG_WITH([defaultadmgroup],
346 [ --with-defaultadmgroup=GROUP
347 define PAM group. Users part of this group will be
348 allowed to configure kronosnet. Others will only
349 receive read-only rights. ],
350 [ DEFAULTADMGROUP="$withval" ],
351 [ DEFAULTADMGROUP="kronosnetadm" ])
354 LOGDIR=${localstatedir}/log/
355 RUNDIR=${localstatedir}/run/
356 DEFAULT_CONFIG_DIR=${sysconfdir}/kronosnet
360 AM_CONDITIONAL([BUILD_DOCS], [test "x${enable_publicandocs}" = xyes])
361 AM_CONDITIONAL([DEBUG], [test "x${enable_debug}" = xyes])
363 AC_SUBST([DEFAULT_CONFIG_DIR])
364 AC_SUBST([INITDEFAULTDIR])
366 AC_SUBST([SYSTEMDDIR])
368 AC_SUBST([DEFAULTADMGROUP])
370 AC_DEFINE_UNQUOTED([DEFAULT_CONFIG_DIR],
371 ["$(eval echo ${DEFAULT_CONFIG_DIR})"],
372 [Default config directory])
374 AC_DEFINE_UNQUOTED([DEFAULT_CONFIG_FILE],
375 ["$(eval echo ${DEFAULT_CONFIG_DIR}/kronosnetd.conf)"],
376 [Default config file])
378 AC_DEFINE_UNQUOTED([LOGDIR],
379 ["$(eval echo ${LOGDIR})"],
380 [Default logging directory])
382 AC_DEFINE_UNQUOTED([DEFAULT_LOG_FILE],
383 ["$(eval echo ${LOGDIR}/kronosnetd.log)"],
386 AC_DEFINE_UNQUOTED([RUNDIR],
387 ["$(eval echo ${RUNDIR})"],
388 [Default run directory])
390 AC_DEFINE_UNQUOTED([SYSLOGFACILITY],
391 [$(eval echo ${SYSLOGFACILITY})],
392 [Default syslog facility])
394 AC_DEFINE_UNQUOTED([SYSLOGLEVEL],
395 [$(eval echo ${SYSLOGLEVEL})],
396 [Default syslog level])
398 AC_DEFINE_UNQUOTED([DEFAULTADMGROUP],
399 ["$(eval echo ${DEFAULTADMGROUP})"],
400 [Default admin group])
404 ENV_CPPFLAGS="$CPPFLAGS"
405 ENV_LDFLAGS="$LDFLAGS"
408 if test "x${enable_debug}" = xyes; then
409 AC_DEFINE_UNQUOTED([DEBUG], [1], [Compiling Debugging code])
416 if test "x${GCC}" = xyes; then
432 suggest-attribute=noreturn
433 suggest-attribute=format
435 declaration-after-statement
440 missing-format-attribute
462 unused-but-set-variable
471 for j in $WARNLIST; do
472 if cc_supports_flag -W$j; then
473 EXTRA_WARNINGS="$EXTRA_WARNINGS -W$j";
477 CFLAGS="$ENV_CFLAGS $lt_prog_compiler_pic $OPT_CFLAGS $GDB_FLAGS \
478 $EXTRA_WARNINGS $WERROR_CFLAGS"
479 CPPFLAGS="$ENV_CPPFLAGS"
480 LDFLAGS="$ENV_LDFLAGS $lt_prog_compiler_pic -Wl,--as-needed"
488 kronosnetd/kronosnetd.logrotate
491 libknet/tests/Makefile
494 poc-code/iov-hash/Makefile
495 poc-code/access-list/Makefile