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.13 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
60 if test "x$ac_cv_prog_cc_c99" = "xno"; then
61 AC_MSG_ERROR(["C99 support is required"])
67 AC_CHECK_PROGS([DOXYGEN], [doxygen])
68 AC_CHECK_PROGS([DOXY2MAN], [doxy2man])
71 if test "x$DOXYGEN" = "x" || test "x$DOXY2MAN" = "x"; then
75 AM_CONDITIONAL([MANPAGEUPDATES], [test $manpageupdates -gt 0])
77 AC_CHECK_PROGS([VALGRIND_EXEC], [valgrind])
78 AM_CONDITIONAL([HAS_VALGRIND], [test x$VALGRIND_EXEC != "x"])
80 AC_ARG_ENABLE([libknet-sctp],
81 [ --disable-libknet-sctp : disable libknet SCTP support ],,
82 [ enable_libknet_sctp="yes" ])
83 AM_CONDITIONAL([BUILDSCTP], [test x$enable_libknet_sctp = xyes])
85 AC_ARG_ENABLE([crypto-all],
86 [ --disable-crypto-all : disable libknet all crypto modules support ],,
87 [ enable_crypto_all="yes" ])
89 AC_ARG_ENABLE([crypto-nss],
90 [ --disable-crypto-nss : disable libknet nss support ],,
91 [ enable_crypto_nss="$enable_crypto_all" ])
92 AM_CONDITIONAL([BUILDCRYPTONSS], [test x$enable_crypto_nss = xyes])
94 AC_ARG_ENABLE([crypto-openssl],
95 [ --disable-crypto-openssl : disable libknet openssl support ],,
96 [ enable_crypto_openssl="$enable_crypto_all" ])
97 AM_CONDITIONAL([BUILDCRYPTOOPENSSL], [test x$enable_crypto_openssl = xyes])
99 AC_ARG_ENABLE([compress-all],
100 [ --disable-compress-all : disable libknet all compress modules support ],,
101 [ enable_compress_all="yes" ])
103 AC_ARG_ENABLE([compress-zlib],
104 [ --disable-compress-zlib : disable libknet zlib support ],,
105 [ enable_compress_zlib="$enable_compress_all" ])
106 AM_CONDITIONAL([BUILDCOMPZLIB], [test x$enable_compress_zlib = xyes])
108 AC_ARG_ENABLE([compress-lz4],
109 [ --disable-compress-lz4 : disable libknet lz4 support ],,
110 [ enable_compress_lz4="$enable_compress_all" ])
111 AM_CONDITIONAL([BUILDCOMPLZ4], [test x$enable_compress_lz4 = xyes])
113 AC_ARG_ENABLE([compress-lzo2],
114 [ --disable-compress-lzo2 : disable libknet lzo2 support ],,
115 [ enable_compress_lzo2="$enable_compress_all" ])
116 AM_CONDITIONAL([BUILDCOMPLZO2], [test x$enable_compress_lzo2 = xyes])
118 AC_ARG_ENABLE([compress-lzma],
119 [ --disable-compress-lzma : disable libknet lzma support ],,
120 [ enable_compress_lzma="$enable_compress_all" ])
121 AM_CONDITIONAL([BUILDCOMPLZMA], [test x$enable_compress_lzma = xyes])
123 AC_ARG_ENABLE([compress-bzip2],
124 [ --disable-compress-bzip2 : disable libknet bzip2 support ],,
125 [ enable_compress_bzip2="$enable_compress_all" ])
126 AM_CONDITIONAL([BUILDCOMPBZIP2], [test x$enable_compress_bzip2 = xyes])
129 [ --enable-poc : enable building poc code ],,
131 AM_CONDITIONAL([BUILD_POC], [test x$enable_poc = xyes])
133 AC_ARG_ENABLE([kronosnetd],
134 [ --enable-kronosnetd : Kronosnetd support ],,
135 [ enable_kronosnetd="no" ])
136 AM_CONDITIONAL([BUILD_KRONOSNETD], [test x$enable_kronosnetd = xyes])
138 AC_ARG_ENABLE([runautogen],
139 [ --enable-runautogen : run autogen.sh ],,
140 [ enable_runautogen="no" ])
141 AM_CONDITIONAL([BUILD_RUNAUTOGEN], [test x$enable_runautogen = xyes])
143 AC_ARG_ENABLE([libtap],
144 [ --enable-libtap : libtap support ],,
145 [ enable_libtap="no" ])
147 if test "x$enable_kronosnetd" = xyes; then
150 AM_CONDITIONAL([BUILD_LIBTAP], [test x$enable_libtap = xyes])
152 ## local helper functions
153 # this function checks if CC support options passed as
154 # args. Global CFLAGS are ignored during this test.
156 saveCPPFLAGS="$CPPFLAGS"
158 if echo $CC | grep -q clang; then
159 CPPFLAGS="-Werror $CPPFLAGS"
161 AC_MSG_CHECKING([whether $CC supports "$@"])
162 AC_PREPROC_IFELSE([AC_LANG_PROGRAM([])],
163 [RC=0; AC_MSG_RESULT([yes])],
164 [RC=1; AC_MSG_RESULT([no])])
165 CPPFLAGS="$saveCPPFLAGS"
169 # helper macro to check libs without adding them to LIBS
170 check_lib_no_libs() {
176 AC_CHECK_LIB([$lib_no_libs_arg1],
177 [$lib_no_libs_arg2],,,
179 LIBS=$ac_check_lib_save_LIBS
182 # Checks for C features
185 # Checks for libraries.
186 AC_CHECK_LIB([pthread], [pthread_create], [AC_SUBST([pthread_LIBS], [-lpthread])], [AC_MSG_ERROR([kronosnet requires pthread library])])
187 AC_CHECK_LIB([m], [ceil], [AC_SUBST([m_LIBS], [-lm])], [AC_MSG_ERROR([kronosnet requires m library])])
188 AC_CHECK_LIB([rt], [clock_gettime], [AC_SUBST([rt_LIBS], [-lrt])], [AC_MSG_ERROR([kronosnet requires rt library])])
190 AC_SEARCH_LIBS([dlopen], [dl dld], [dllibs=$ac_res], [AC_MSG_ERROR([kronosnet requires dl library])])
192 if test "x$dllibs" != "xnone required"; then
193 AC_SUBST([dl_LIBS], [$dllibs])
198 AC_MSG_CHECKING([for os in ${host_os}])
201 AC_DEFINE_UNQUOTED([KNET_LINUX], [1], [Compiling for Linux platform])
202 AC_MSG_RESULT([Linux])
205 AC_DEFINE_UNQUOTED([KNET_BSD], [1], [Compiling for BSD platform])
207 if test "x$enable_libtap" = xyes; then
208 AC_MSG_ERROR([libtap is not currently supported on BSD platforms])
212 AC_MSG_ERROR([Unsupported OS? hmmmm])
216 # crypto libraries checks
217 if test "x$enable_crypto_nss" = xyes; then
218 PKG_CHECK_MODULES([nss],[nss])
219 AC_DEFINE_UNQUOTED([BUILDCRYPTONSS], [1], [Enable nss crypto])
222 if test "x$enable_crypto_openssl" = xyes; then
223 PKG_CHECK_MODULES([openssl],[openssl < 1.1],
224 [AC_DEFINE_UNQUOTED([BUILDCRYPTOOPENSSL10], [1], [openssl 1.0 crypto])],
225 [PKG_CHECK_MODULES([openssl],[openssl >= 1.1],
226 [AC_DEFINE_UNQUOTED([BUILDCRYPTOOPENSSL11], [1], [openssl 1.1 crypto])])])
227 AC_DEFINE_UNQUOTED([BUILDCRYPTOOPENSSL], [1], [Enable openssl crypto])
230 # compress libraries checks
231 if test "x$enable_compress_zlib" = xyes; then
232 PKG_CHECK_MODULES([zlib], [zlib])
233 AC_DEFINE_UNQUOTED([BUILDCOMPZLIB], [1], [Enable zlib compression])
235 if test "x$enable_compress_lz4" = xyes; then
236 PKG_CHECK_MODULES([liblz4], [liblz4])
237 AC_DEFINE_UNQUOTED([BUILDCOMPLZ4], [1], [Enable lz4 compress])
239 if test "x$enable_compress_lzo2" = xyes; then
240 PKG_CHECK_MODULES([lzo2], [lzo2],,
241 [AC_CHECK_HEADERS([lzo/lzo1x.h],
242 [AC_CHECK_LIB([lzo2], [lzo1x_decompress_safe],
243 [AC_SUBST([lzo2_LIBS], [-llzo2])])],
244 [AC_MSG_ERROR(["missing required lzo/lzo1x.h header"])])])
245 AC_DEFINE_UNQUOTED([BUILDCOMPLZO2], [1], [Enable lzo2 compress])
247 if test "x$enable_compress_lzma" = xyes; then
248 PKG_CHECK_MODULES([liblzma], [liblzma])
249 AC_DEFINE_UNQUOTED([BUILDCOMPLZMA], [1], [Enable lzma compress])
251 if test "x$enable_compress_bzip2" = xyes; then
252 PKG_CHECK_MODULES([bzip2], [bzip2],,
253 [AC_CHECK_HEADERS([bzlib.h],
254 [AC_CHECK_LIB([bz2], [BZ2_bzBuffToBuffCompress],
255 [AC_SUBST([bzip2_LIBS], [-lbz2])])],
256 [AC_MSG_ERROR(["missing required bzlib.h"])])])
257 AC_DEFINE_UNQUOTED([BUILDCOMPBZIP2], [1], [Enable bzip2 compress])
260 # Checks for header files.
261 AC_CHECK_HEADERS([fcntl.h])
262 AC_CHECK_HEADERS([stdlib.h])
263 AC_CHECK_HEADERS([string.h])
264 AC_CHECK_HEADERS([strings.h])
265 AC_CHECK_HEADERS([sys/ioctl.h])
266 AC_CHECK_HEADERS([syslog.h])
267 AC_CHECK_HEADERS([unistd.h])
268 AC_CHECK_HEADERS([netinet/in.h])
269 AC_CHECK_HEADERS([sys/socket.h])
270 AC_CHECK_HEADERS([arpa/inet.h])
271 AC_CHECK_HEADERS([netdb.h])
272 AC_CHECK_HEADERS([limits.h])
273 AC_CHECK_HEADERS([stdint.h])
274 AC_CHECK_HEADERS([sys/epoll.h])
276 if test "x$enable_libknet_sctp" = xyes; then
277 AC_CHECK_HEADERS([netinet/sctp.h],, [AC_MSG_ERROR(["missing required SCTP headers"])])
280 # Checks for typedefs, structures, and compiler characteristics.
291 # Checks for library functions.
296 AC_CHECK_FUNCS([memset])
297 AC_CHECK_FUNCS([strdup])
298 AC_CHECK_FUNCS([strerror])
299 AC_CHECK_FUNCS([dup2])
300 AC_CHECK_FUNCS([select])
301 AC_CHECK_FUNCS([socket])
302 AC_CHECK_FUNCS([inet_ntoa])
303 AC_CHECK_FUNCS([memmove])
304 AC_CHECK_FUNCS([strchr])
305 AC_CHECK_FUNCS([atexit])
306 AC_CHECK_FUNCS([ftruncate])
307 AC_CHECK_FUNCS([strrchr])
308 AC_CHECK_FUNCS([strstr])
309 AC_CHECK_FUNCS([clock_gettime])
310 AC_CHECK_FUNCS([strcasecmp])
311 AC_CHECK_FUNCS([kevent])
312 # if neither sys/epoll.h nor kevent are present, we should fail.
314 if test "x$ac_cv_header_sys_epoll_h" = xno && test "x$ac_cv_func_kevent" = xno; then
315 AC_MSG_ERROR([Both epoll and kevent unavailable on this OS])
318 if test "x$ac_cv_header_sys_epoll_h" = xyes && test "x$ac_cv_func_kevent" = xyes; then
319 AC_MSG_ERROR([Both epoll and kevent available on this OS, please contact the maintainers to fix the code])
322 # checks (for kronosnetd)
323 if test "x$enable_kronosnetd" = xyes; then
324 AC_CHECK_HEADERS([security/pam_appl.h],
325 [AC_CHECK_LIB([pam], [pam_start])],
326 [AC_MSG_ERROR([Unable to find LinuxPAM devel files])])
328 AC_CHECK_HEADERS([security/pam_misc.h],
329 [AC_CHECK_LIB([pam_misc], [misc_conv])],
330 [AC_MSG_ERROR([Unable to find LinuxPAM MISC devel files])])
332 PKG_CHECK_MODULES([libqb], [libqb])
334 AC_CHECK_LIB([qb], [qb_log_thread_priority_set],
335 [have_qb_log_thread_priority_set="yes"],
336 [have_qb_log_thread_priority_set="no"])
337 if test "x${have_qb_log_thread_priority_set}" = xyes; then
338 AC_DEFINE_UNQUOTED([HAVE_QB_LOG_THREAD_PRIORITY_SET], [1], [have qb_log_thread_priority_set])
343 AC_ARG_ENABLE([debug],
344 [ --enable-debug enable debug build. ],
347 AC_ARG_WITH([initdefaultdir],
348 [ --with-initdefaultdir : path to /etc/sysconfig/.. or /etc/default dir. ],
349 [ INITDEFAULTDIR="$withval" ],
350 [ INITDEFAULTDIR="$sysconfdir/default" ])
352 AC_ARG_WITH([initddir],
353 [ --with-initddir=DIR : path to init script directory. ],
354 [ INITDDIR="$withval" ],
355 [ INITDDIR="$sysconfdir/init.d" ])
357 AC_ARG_WITH([systemddir],
358 [ --with-systemddir=DIR : path to systemd unit files directory. ],
359 [ SYSTEMDDIR="$withval" ],
360 [ SYSTEMDDIR="$systemddir" ])
362 AC_ARG_WITH([syslogfacility],
363 [ --with-syslogfacility=FACILITY
364 default syslog facility. ],
365 [ SYSLOGFACILITY="$withval" ],
366 [ SYSLOGFACILITY="LOG_DAEMON" ])
368 AC_ARG_WITH([sysloglevel],
369 [ --with-sysloglevel=LEVEL
370 default syslog level. ],
371 [ SYSLOGLEVEL="$withval" ],
372 [ SYSLOGLEVEL="LOG_INFO" ])
374 AC_ARG_WITH([defaultadmgroup],
375 [ --with-defaultadmgroup=GROUP
376 define PAM group. Users part of this group will be
377 allowed to configure kronosnet. Others will only
378 receive read-only rights. ],
379 [ DEFAULTADMGROUP="$withval" ],
380 [ DEFAULTADMGROUP="kronosnetadm" ])
383 LOGDIR=${localstatedir}/log/
384 RUNDIR=${localstatedir}/run/
385 DEFAULT_CONFIG_DIR=${sysconfdir}/kronosnet
389 AM_CONDITIONAL([DEBUG], [test "x${enable_debug}" = xyes])
391 AC_SUBST([DEFAULT_CONFIG_DIR])
392 AC_SUBST([INITDEFAULTDIR])
394 AC_SUBST([SYSTEMDDIR])
396 AC_SUBST([DEFAULTADMGROUP])
398 AC_DEFINE_UNQUOTED([DEFAULT_CONFIG_DIR],
399 ["$(eval echo ${DEFAULT_CONFIG_DIR})"],
400 [Default config directory])
402 AC_DEFINE_UNQUOTED([DEFAULT_CONFIG_FILE],
403 ["$(eval echo ${DEFAULT_CONFIG_DIR}/kronosnetd.conf)"],
404 [Default config file])
406 AC_DEFINE_UNQUOTED([LOGDIR],
407 ["$(eval echo ${LOGDIR})"],
408 [Default logging directory])
410 AC_DEFINE_UNQUOTED([DEFAULT_LOG_FILE],
411 ["$(eval echo ${LOGDIR}/kronosnetd.log)"],
414 AC_DEFINE_UNQUOTED([RUNDIR],
415 ["$(eval echo ${RUNDIR})"],
416 [Default run directory])
418 AC_DEFINE_UNQUOTED([SYSLOGFACILITY],
419 [$(eval echo ${SYSLOGFACILITY})],
420 [Default syslog facility])
422 AC_DEFINE_UNQUOTED([SYSLOGLEVEL],
423 [$(eval echo ${SYSLOGLEVEL})],
424 [Default syslog level])
426 AC_DEFINE_UNQUOTED([DEFAULTADMGROUP],
427 ["$(eval echo ${DEFAULTADMGROUP})"],
428 [Default admin group])
432 ENV_CPPFLAGS="$CPPFLAGS"
433 ENV_LDFLAGS="$LDFLAGS"
436 if test "x${enable_debug}" = xyes; then
437 AC_DEFINE_UNQUOTED([DEBUG], [1], [Compiling Debugging code])
444 if test "x${GCC}" = xyes; then
460 suggest-attribute=noreturn
461 suggest-attribute=format
463 declaration-after-statement
468 missing-format-attribute
490 unused-but-set-variable
499 for j in $WARNLIST; do
500 if cc_supports_flag -W$j; then
501 EXTRA_WARNINGS="$EXTRA_WARNINGS -W$j";
505 CFLAGS="$ENV_CFLAGS $lt_prog_compiler_pic $OPT_CFLAGS $GDB_FLAGS \
506 $EXTRA_WARNINGS $WERROR_CFLAGS"
507 CPPFLAGS="$ENV_CPPFLAGS"
508 LDFLAGS="$ENV_LDFLAGS $lt_prog_compiler_pic -Wl,--as-needed"
516 kronosnetd/kronosnetd.logrotate
519 libknet/tests/Makefile
523 poc-code/iov-hash/Makefile
524 poc-code/access-list/Makefile