]>
Commit | Line | Data |
---|---|---|
ab4c538f | 1 | # |
ec84794b | 2 | # Copyright (C) 2010-2019 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 | # | |
312ef273 | 7 | # This software licensed under GPL-2.0+ |
ab4c538f FDN |
8 | # |
9 | ||
99afbd6e FDN |
10 | # -*- Autoconf -*- |
11 | # Process this file with autoconf to produce a configure script. | |
ab4c538f | 12 | # |
99afbd6e FDN |
13 | |
14 | AC_PREREQ([2.63]) | |
07072a06 | 15 | AC_INIT([kronosnet], |
fa892602 | 16 | m4_esyscmd([build-aux/git-version-gen .tarball-version .gitarchivever]), |
07072a06 | 17 | [devel@lists.kronosnet.org]) |
242124c9 FW |
18 | # Don't let AC_PROC_CC (invoked by AC_USE_SYSTEM_EXTENSIONS) replace |
19 | # undefined CFLAGS with -g -O2, overriding our special OPT_CFLAGS. | |
20 | : ${CFLAGS=""} | |
4359cb72 | 21 | AC_USE_SYSTEM_EXTENSIONS |
9f9883b1 | 22 | AM_INIT_AUTOMAKE([1.13 dist-bzip2 dist-xz color-tests -Wno-portability subdir-objects]) |
dba12205 | 23 | |
99afbd6e | 24 | LT_PREREQ([2.2.6]) |
cc5199a6 FW |
25 | # --enable-new-dtags: Use RUNPATH instead of RPATH. |
26 | # It is necessary to have this done before libtool does linker detection. | |
27 | # See also: https://github.com/kronosnet/kronosnet/issues/107 | |
afb7bf53 FW |
28 | # --as-needed: Modern systems have builtin ceil() making -lm superfluous but |
29 | # AC_SEARCH_LIBS can't detect this because it tests with a false prototype | |
0df0ea47 FDN |
30 | AX_CHECK_LINK_FLAG([-Wl,--enable-new-dtags], |
31 | [AM_LDFLAGS=-Wl,--enable-new-dtags], | |
32 | [AC_MSG_ERROR(["Linker support for --enable-new-dtags is required"])]) | |
33 | AX_CHECK_LINK_FLAG([-Wl,--as-needed], [AM_LDFLAGS="$AM_LDFLAGS -Wl,--as-needed"]) | |
34 | ||
af7bb5fd | 35 | AC_SUBST([AM_LDFLAGS]) |
cc5199a6 FW |
36 | saved_LDFLAGS="$LDFLAGS" |
37 | LDFLAGS="$AM_LDFLAGS $LDFLAGS" | |
99afbd6e | 38 | LT_INIT |
cc5199a6 | 39 | LDFLAGS="$saved_LDFLAGS" |
99afbd6e FDN |
40 | |
41 | AC_CONFIG_MACRO_DIR([m4]) | |
4aa63ad7 | 42 | AC_CONFIG_SRCDIR([kronosnetd/main.c]) |
99afbd6e FDN |
43 | AC_CONFIG_HEADERS([config.h]) |
44 | ||
45 | AC_CANONICAL_HOST | |
99afbd6e FDN |
46 | |
47 | AC_LANG([C]) | |
48 | ||
905cb809 FDN |
49 | systemddir=${prefix}/lib/systemd/system |
50 | ||
99afbd6e FDN |
51 | if test "$prefix" = "NONE"; then |
52 | prefix="/usr" | |
53 | if test "$localstatedir" = "\${prefix}/var"; then | |
54 | localstatedir="/var" | |
55 | fi | |
56 | if test "$sysconfdir" = "\${prefix}/etc"; then | |
57 | sysconfdir="/etc" | |
58 | fi | |
905cb809 FDN |
59 | if test "$systemddir" = "NONE/lib/systemd/system"; then |
60 | systemddir=/lib/systemd/system | |
61 | fi | |
e8b52625 JF |
62 | if test "$libdir" = "\${exec_prefix}/lib"; then |
63 | if test -e /usr/lib64; then | |
64 | libdir="/usr/lib64" | |
65 | else | |
66 | libdir="/usr/lib" | |
67 | fi | |
68 | fi | |
99afbd6e FDN |
69 | fi |
70 | ||
5842a2f9 | 71 | AC_PROG_AWK |
e3683ec7 FDN |
72 | AC_PROG_GREP |
73 | AC_PROG_SED | |
5842a2f9 | 74 | AC_PROG_CPP |
99afbd6e | 75 | AC_PROG_CC |
dd8bbbde FDN |
76 | AC_PROG_CC_C99 |
77 | if test "x$ac_cv_prog_cc_c99" = "xno"; then | |
78 | AC_MSG_ERROR(["C99 support is required"]) | |
79 | fi | |
99afbd6e FDN |
80 | AC_PROG_LN_S |
81 | AC_PROG_INSTALL | |
82 | AC_PROG_MAKE_SET | |
9e569a13 | 83 | PKG_PROG_PKG_CONFIG |
8f114254 | 84 | |
3e776e82 FDN |
85 | AC_CHECK_PROGS([VALGRIND_EXEC], [valgrind]) |
86 | AM_CONDITIONAL([HAS_VALGRIND], [test x$VALGRIND_EXEC != "x"]) | |
99afbd6e | 87 | |
38349d88 FDN |
88 | AC_CHECK_PROGS([COVBUILD_EXEC], [cov-build]) |
89 | AM_CONDITIONAL([HAS_COVBUILD], [test x$COVBUILD_EXEC != "x"]) | |
90 | ||
91 | AC_CHECK_PROGS([COVANALYZE_EXEC], [cov-analyze]) | |
92 | AM_CONDITIONAL([HAS_COVANALYZE], [test x$COVANALYZE_EXEC != "x"]) | |
93 | ||
94 | AC_CHECK_PROGS([COVFORMATERRORS_EXEC], [cov-format-errors]) | |
95 | AM_CONDITIONAL([HAS_COVFORMATERRORS], [test x$COVFORMATERRORS_EXEC != "x"]) | |
96 | ||
f3396d98 FW |
97 | # KNET_OPTION_DEFINES(stem,type,detection code) |
98 | # stem: enters name of option, Automake conditional and preprocessor define | |
99 | # type: compress or crypto, determines where the default comes from | |
100 | AC_DEFUN([KNET_OPTION_DEFINES],[ | |
101 | AC_ARG_ENABLE([$2-$1],[AS_HELP_STRING([--disable-$2-$1],[disable libknet $1 support])],, | |
102 | [enable_$2_$1="$enable_$2_all"]) | |
103 | AM_CONDITIONAL([BUILD_]m4_toupper([$2_$1]),[test "x$enable_$2_$1" = xyes]) | |
104 | if test "x$enable_$2_$1" = xyes; then | |
105 | $3 | |
106 | fi | |
107 | AC_DEFINE_UNQUOTED([WITH_]m4_toupper([$2_$1]), [`test "x$enable_$2_$1" != xyes; echo $?`], $1 $2 [built in]) | |
108 | ]) | |
109 | ||
2414bd86 FDN |
110 | AC_ARG_ENABLE([man], |
111 | [AS_HELP_STRING([--disable-man],[disable man page creation])],, | |
112 | [ enable_man="yes" ]) | |
113 | AM_CONDITIONAL([BUILD_MAN], [test x$enable_man = xyes]) | |
114 | ||
43bd160d | 115 | AC_ARG_ENABLE([libknet-sctp], |
f58d6934 | 116 | [AS_HELP_STRING([--disable-libknet-sctp],[disable libknet SCTP support])],, |
43bd160d | 117 | [ enable_libknet_sctp="yes" ]) |
50df9cde | 118 | AM_CONDITIONAL([BUILD_SCTP], [test x$enable_libknet_sctp = xyes]) |
43bd160d | 119 | |
c59268f2 | 120 | AC_ARG_ENABLE([crypto-all], |
f58d6934 | 121 | [AS_HELP_STRING([--disable-crypto-all],[disable libknet all crypto modules support])],, |
c59268f2 FDN |
122 | [ enable_crypto_all="yes" ]) |
123 | ||
f3396d98 FW |
124 | KNET_OPTION_DEFINES([nss],[crypto],[PKG_CHECK_MODULES([nss], [nss])]) |
125 | KNET_OPTION_DEFINES([openssl],[crypto],[ | |
126 | PKG_CHECK_MODULES([openssl],[libcrypto < 1.1], | |
127 | [AC_DEFINE_UNQUOTED([BUILDCRYPTOOPENSSL10], [1], [openssl 1.0 crypto])], | |
128 | [PKG_CHECK_MODULES([openssl],[libcrypto >= 1.1], | |
129 | [AC_DEFINE_UNQUOTED([BUILDCRYPTOOPENSSL11], [1], [openssl 1.1 crypto])])]) | |
130 | ]) | |
131 | ||
7322344c | 132 | AC_ARG_ENABLE([compress-all], |
f58d6934 | 133 | [AS_HELP_STRING([--disable-compress-all],[disable libknet all compress modules support])],, |
7322344c FDN |
134 | [ enable_compress_all="yes" ]) |
135 | ||
2754268f FDN |
136 | KNET_OPTION_DEFINES([zstd],[compress],[PKG_CHECK_MODULES([libzstd], [libzstd])]) |
137 | ||
f3396d98 FW |
138 | KNET_OPTION_DEFINES([zlib],[compress],[PKG_CHECK_MODULES([zlib], [zlib])]) |
139 | KNET_OPTION_DEFINES([lz4],[compress],[PKG_CHECK_MODULES([liblz4], [liblz4])]) | |
140 | KNET_OPTION_DEFINES([lzo2],[compress],[ | |
718c0ae7 FW |
141 | PKG_CHECK_MODULES([lzo2], [lzo2], |
142 | [# work around broken pkg-config file in v2.10 | |
143 | AC_SUBST([lzo2_CFLAGS],[`echo $lzo2_CFLAGS | sed 's,/lzo *, ,'`])], | |
f3396d98 FW |
144 | [AC_CHECK_HEADERS([lzo/lzo1x.h], |
145 | [AC_CHECK_LIB([lzo2], [lzo1x_decompress_safe], | |
146 | [AC_SUBST([lzo2_LIBS], [-llzo2])])], | |
147 | [AC_MSG_ERROR(["missing required lzo/lzo1x.h header"])])]) | |
148 | ]) | |
149 | KNET_OPTION_DEFINES([lzma],[compress],[PKG_CHECK_MODULES([liblzma], [liblzma])]) | |
150 | KNET_OPTION_DEFINES([bzip2],[compress],[ | |
151 | PKG_CHECK_MODULES([bzip2], [bzip2],, | |
152 | [AC_CHECK_HEADERS([bzlib.h], | |
153 | [AC_CHECK_LIB([bz2], [BZ2_bzBuffToBuffCompress], | |
154 | [AC_SUBST([bzip2_LIBS], [-lbz2])])], | |
155 | [AC_MSG_ERROR(["missing required bzlib.h"])])]) | |
156 | ]) | |
157 | ||
ccf9dee1 FDN |
158 | AC_ARG_ENABLE([install-tests], |
159 | [AS_HELP_STRING([--enable-install-tests],[install tests])],, | |
160 | [ enable_install_tests="no" ]) | |
161 | AM_CONDITIONAL([INSTALL_TESTS], [test x$enable_install_tests = xyes]) | |
162 | ||
1c75eb10 | 163 | AC_ARG_ENABLE([poc], |
f58d6934 | 164 | [AS_HELP_STRING([--enable-poc],[enable building poc code])],, |
89c58e91 | 165 | [ enable_poc="no" ]) |
5449d795 | 166 | AM_CONDITIONAL([BUILD_POC], [test x$enable_poc = xyes]) |
1c75eb10 | 167 | |
ace7cd0e | 168 | AC_ARG_ENABLE([kronosnetd], |
f58d6934 | 169 | [AS_HELP_STRING([--enable-kronosnetd],[Kronosnetd support])],, |
226e5109 | 170 | [ enable_kronosnetd="no" ]) |
5449d795 | 171 | AM_CONDITIONAL([BUILD_KRONOSNETD], [test x$enable_kronosnetd = xyes]) |
ace7cd0e | 172 | |
8f8384a0 | 173 | AC_ARG_ENABLE([runautogen], |
f58d6934 | 174 | [AS_HELP_STRING([--enable-runautogen],[run autogen.sh])],, |
8f8384a0 BL |
175 | [ enable_runautogen="no" ]) |
176 | AM_CONDITIONAL([BUILD_RUNAUTOGEN], [test x$enable_runautogen = xyes]) | |
177 | ||
73677ca3 BL |
178 | override_rpm_debuginfo_option="yes" |
179 | AC_ARG_ENABLE([rpm-debuginfo], | |
180 | [AS_HELP_STRING([--enable-rpm-debuginfo],[build debuginfo packages])],, | |
181 | [ enable_rpm_debuginfo="no", override_rpm_debuginfo_option="no" ]) | |
182 | AM_CONDITIONAL([BUILD_RPM_DEBUGINFO], [test x$enable_rpm_debuginfo = xyes]) | |
183 | AM_CONDITIONAL([OVERRIDE_RPM_DEBUGINFO], [test x$override_rpm_debuginfo_option = xyes]) | |
184 | ||
de3d1e09 FDN |
185 | AC_ARG_ENABLE([libnozzle], |
186 | [AS_HELP_STRING([--enable-libnozzle],[libnozzle support])],, | |
7faf85fd | 187 | [ enable_libnozzle="yes" ]) |
58b997ce CC |
188 | |
189 | if test "x$enable_kronosnetd" = xyes; then | |
de3d1e09 | 190 | enable_libnozzle=yes |
58b997ce | 191 | fi |
de3d1e09 | 192 | AM_CONDITIONAL([BUILD_LIBNOZZLE], [test x$enable_libnozzle = xyes]) |
ace7cd0e | 193 | |
99afbd6e | 194 | # Checks for libraries. |
2b1072db | 195 | AX_PTHREAD(,[AC_MSG_ERROR([POSIX threads support is required])]) |
c1effb8a FW |
196 | saved_LIBS="$LIBS" |
197 | LIBS= | |
9412ec18 FW |
198 | AC_SEARCH_LIBS([ceil], [m], , [AC_MSG_ERROR([ceil not found])]) |
199 | AC_SUBST([m_LIBS], [$LIBS]) | |
200 | LIBS= | |
c1effb8a FW |
201 | AC_SEARCH_LIBS([clock_gettime], [rt], , [AC_MSG_ERROR([clock_gettime not found])]) |
202 | AC_SUBST([rt_LIBS], [$LIBS]) | |
3cc6b180 FW |
203 | LIBS= |
204 | AC_SEARCH_LIBS([dlopen], [dl dld], , [AC_MSG_ERROR([dlopen not found])]) | |
205 | AC_SUBST([dl_LIBS], [$LIBS]) | |
c1effb8a | 206 | LIBS="$saved_LIBS" |
99afbd6e | 207 | |
c296433f FDN |
208 | # OS detection |
209 | ||
210 | AC_MSG_CHECKING([for os in ${host_os}]) | |
211 | case "$host_os" in | |
212 | *linux*) | |
213 | AC_DEFINE_UNQUOTED([KNET_LINUX], [1], [Compiling for Linux platform]) | |
214 | AC_MSG_RESULT([Linux]) | |
215 | ;; | |
216 | *bsd*) | |
217 | AC_DEFINE_UNQUOTED([KNET_BSD], [1], [Compiling for BSD platform]) | |
218 | AC_MSG_RESULT([BSD]) | |
c296433f FDN |
219 | ;; |
220 | *) | |
221 | AC_MSG_ERROR([Unsupported OS? hmmmm]) | |
222 | ;; | |
223 | esac | |
224 | ||
99afbd6e | 225 | # Checks for header files. |
3a50d466 | 226 | AC_CHECK_HEADERS([sys/epoll.h]) |
14c1e736 FDN |
227 | AC_CHECK_FUNCS([kevent]) |
228 | # if neither sys/epoll.h nor kevent are present, we should fail. | |
229 | ||
230 | if test "x$ac_cv_header_sys_epoll_h" = xno && test "x$ac_cv_func_kevent" = xno; then | |
231 | AC_MSG_ERROR([Both epoll and kevent unavailable on this OS]) | |
232 | fi | |
233 | ||
234 | if test "x$ac_cv_header_sys_epoll_h" = xyes && test "x$ac_cv_func_kevent" = xyes; then | |
235 | AC_MSG_ERROR([Both epoll and kevent available on this OS, please contact the maintainers to fix the code]) | |
236 | fi | |
d75f2295 FDN |
237 | |
238 | if test "x$enable_libknet_sctp" = xyes; then | |
fd28a29f | 239 | AC_CHECK_HEADERS([netinet/sctp.h],, [AC_MSG_ERROR(["missing required SCTP headers"])]) |
d75f2295 | 240 | fi |
99afbd6e FDN |
241 | |
242 | # Checks for typedefs, structures, and compiler characteristics. | |
5842a2f9 | 243 | AC_C_INLINE |
6d727d3c | 244 | AC_TYPE_PID_T |
9f391b08 | 245 | AC_TYPE_SIZE_T |
c3776828 | 246 | AC_TYPE_SSIZE_T |
31f37826 | 247 | AC_TYPE_UINT8_T |
c3776828 FDN |
248 | AC_TYPE_UINT16_T |
249 | AC_TYPE_UINT32_T | |
efc95595 | 250 | AC_TYPE_UINT64_T |
9f391b08 FDN |
251 | AC_TYPE_INT8_T |
252 | AC_TYPE_INT16_T | |
efc95595 | 253 | AC_TYPE_INT32_T |
9f391b08 | 254 | AC_TYPE_INT64_T |
99afbd6e | 255 | |
2414bd86 | 256 | if test "x$enable_man" = "xyes"; then |
1fd4bb05 FDN |
257 | AC_ARG_VAR([DOXYGEN], [override doxygen executable]) |
258 | AC_CHECK_PROGS([DOXYGEN], [doxygen], [no]) | |
2414bd86 FDN |
259 | if test "x$DOXYGEN" = xno; then |
260 | AC_MSG_ERROR(["Doxygen command not found"]) | |
261 | fi | |
262 | # required by doxyxml to build man pages dynamically | |
263 | # Don't let AC_PROC_CC (invoked by AX_PROG_CC_FOR_BUILD) replace | |
264 | # undefined CFLAGS_FOR_BUILD with -g -O2, overriding our special OPT_CFLAGS. | |
265 | : ${CFLAGS_FOR_BUILD=""} | |
266 | AX_PROG_CC_FOR_BUILD | |
267 | saved_PKG_CONFIG="$PKG_CONFIG" | |
268 | saved_ac_cv_path_PKG_CONFIG="$ac_cv_path_PKG_CONFIG" | |
269 | unset PKG_CONFIG ac_cv_path_PKG_CONFIG | |
270 | AC_PATH_PROG([PKG_CONFIG], [pkg-config]) | |
271 | PKG_CHECK_MODULES([libqb_BUILD], [libqb]) | |
272 | PKG_CHECK_MODULES([libxml_BUILD], [libxml-2.0]) | |
273 | PKG_CONFIG="$saved_PKG_CONFIG" | |
274 | ac_cv_path_PKG_CONFIG="$saved_ac_cv_path_PKG_CONFIG" | |
275 | fi | |
ad333231 | 276 | |
504b0aa7 FDN |
277 | # checks for libnozzle |
278 | if test "x$enable_libnozzle" = xyes; then | |
279 | if `echo $host_os | grep -q linux`; then | |
280 | PKG_CHECK_MODULES([libnl], [libnl-3.0]) | |
3ac77f24 FDN |
281 | PKG_CHECK_MODULES([libnlroute], [libnl-route-3.0 >= 3.3], [], |
282 | [PKG_CHECK_MODULES([libnlroute], [libnl-route-3.0 < 3.3], | |
283 | [AC_DEFINE_UNQUOTED([LIBNL3_WORKAROUND], [1], [Enable libnl < 3.3 build workaround])], [])]) | |
504b0aa7 FDN |
284 | fi |
285 | fi | |
286 | ||
287 | # checks for kronosnetd | |
ace7cd0e | 288 | if test "x$enable_kronosnetd" = xyes; then |
226e5109 | 289 | AC_CHECK_HEADERS([security/pam_appl.h], |
26fe18aa FW |
290 | [AC_CHECK_LIB([pam], [pam_start], |
291 | [AC_SUBST([pam_LIBS], [-lpam])], | |
292 | [AC_MSG_ERROR([Unable to find LinuxPAM devel files])])]) | |
e311acaa | 293 | |
226e5109 | 294 | AC_CHECK_HEADERS([security/pam_misc.h], |
26fe18aa FW |
295 | [AC_CHECK_LIB([pam_misc], [misc_conv], |
296 | [AC_SUBST([pam_misc_LIBS], [-lpam_misc])], | |
297 | [AC_MSG_ERROR([Unable to find LinuxPAM MISC devel files])])]) | |
38cb1bb7 | 298 | |
a57ad365 FW |
299 | PKG_CHECK_MODULES([libqb], [libqb]) |
300 | ||
226e5109 FDN |
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]) | |
306 | fi | |
ace7cd0e | 307 | fi |
38cb1bb7 | 308 | |
99afbd6e FDN |
309 | # local options |
310 | AC_ARG_ENABLE([debug], | |
967ee0b3 | 311 | [AS_HELP_STRING([--enable-debug],[enable debug build])]) |
99afbd6e | 312 | |
ccf9dee1 FDN |
313 | AC_ARG_WITH([testdir], |
314 | [AS_HELP_STRING([--with-testdir=DIR],[path to /usr/lib../kronosnet/tests/ dir where to install the test suite])], | |
315 | [ TESTDIR="$withval" ], | |
316 | [ TESTDIR="$libdir/kronosnet/tests" ]) | |
317 | ||
2e687dd8 | 318 | AC_ARG_WITH([initdefaultdir], |
f58d6934 | 319 | [AS_HELP_STRING([--with-initdefaultdir=DIR],[path to /etc/sysconfig or /etc/default dir])], |
2e687dd8 FDN |
320 | [ INITDEFAULTDIR="$withval" ], |
321 | [ INITDEFAULTDIR="$sysconfdir/default" ]) | |
322 | ||
0472de45 | 323 | AC_ARG_WITH([initddir], |
f58d6934 | 324 | [AS_HELP_STRING([--with-initddir=DIR],[path to init script directory])], |
0472de45 FDN |
325 | [ INITDDIR="$withval" ], |
326 | [ INITDDIR="$sysconfdir/init.d" ]) | |
327 | ||
328 | AC_ARG_WITH([systemddir], | |
f58d6934 | 329 | [AS_HELP_STRING([--with-systemddir=DIR],[path to systemd unit files directory])], |
0472de45 | 330 | [ SYSTEMDDIR="$withval" ], |
905cb809 | 331 | [ SYSTEMDDIR="$systemddir" ]) |
0472de45 | 332 | |
99afbd6e | 333 | AC_ARG_WITH([syslogfacility], |
f58d6934 | 334 | [AS_HELP_STRING([--with-syslogfacility=FACILITY],[default syslog facility])], |
99afbd6e | 335 | [ SYSLOGFACILITY="$withval" ], |
2d022f7f | 336 | [ SYSLOGFACILITY="LOG_DAEMON" ]) |
99afbd6e FDN |
337 | |
338 | AC_ARG_WITH([sysloglevel], | |
f58d6934 | 339 | [AS_HELP_STRING([--with-sysloglevel=LEVEL],[default syslog level])], |
99afbd6e FDN |
340 | [ SYSLOGLEVEL="$withval" ], |
341 | [ SYSLOGLEVEL="LOG_INFO" ]) | |
342 | ||
e3aa8728 | 343 | AC_ARG_WITH([defaultadmgroup], |
f58d6934 FW |
344 | [AS_HELP_STRING([--with-defaultadmgroup=GROUP], |
345 | [define PAM group. Users part of this group will be allowed to configure | |
346 | kronosnet. Others will only receive read-only rights.])], | |
e3aa8728 FDN |
347 | [ DEFAULTADMGROUP="$withval" ], |
348 | [ DEFAULTADMGROUP="kronosnetadm" ]) | |
349 | ||
99afbd6e FDN |
350 | ## random vars |
351 | LOGDIR=${localstatedir}/log/ | |
352 | RUNDIR=${localstatedir}/run/ | |
afce19e1 | 353 | DEFAULT_CONFIG_DIR=${sysconfdir}/kronosnet |
99afbd6e FDN |
354 | |
355 | ## do subst | |
356 | ||
ccf9dee1 | 357 | AC_SUBST([TESTDIR]) |
afce19e1 | 358 | AC_SUBST([DEFAULT_CONFIG_DIR]) |
2e687dd8 | 359 | AC_SUBST([INITDEFAULTDIR]) |
0472de45 FDN |
360 | AC_SUBST([INITDDIR]) |
361 | AC_SUBST([SYSTEMDDIR]) | |
b386f39b | 362 | AC_SUBST([LOGDIR]) |
2e687dd8 | 363 | AC_SUBST([DEFAULTADMGROUP]) |
0472de45 | 364 | |
4fc6106b FDN |
365 | AC_DEFINE_UNQUOTED([DEFAULT_CONFIG_DIR], |
366 | ["$(eval echo ${DEFAULT_CONFIG_DIR})"], | |
afce19e1 FDN |
367 | [Default config directory]) |
368 | ||
369 | AC_DEFINE_UNQUOTED([DEFAULT_CONFIG_FILE], | |
4fc6106b | 370 | ["$(eval echo ${DEFAULT_CONFIG_DIR}/kronosnetd.conf)"], |
99afbd6e FDN |
371 | [Default config file]) |
372 | ||
4fc6106b FDN |
373 | AC_DEFINE_UNQUOTED([LOGDIR], |
374 | ["$(eval echo ${LOGDIR})"], | |
99afbd6e FDN |
375 | [Default logging directory]) |
376 | ||
2d022f7f | 377 | AC_DEFINE_UNQUOTED([DEFAULT_LOG_FILE], |
4fc6106b | 378 | ["$(eval echo ${LOGDIR}/kronosnetd.log)"], |
2d022f7f FDN |
379 | [Default log file]) |
380 | ||
4fc6106b FDN |
381 | AC_DEFINE_UNQUOTED([RUNDIR], |
382 | ["$(eval echo ${RUNDIR})"], | |
99afbd6e FDN |
383 | [Default run directory]) |
384 | ||
4fc6106b FDN |
385 | AC_DEFINE_UNQUOTED([SYSLOGFACILITY], |
386 | [$(eval echo ${SYSLOGFACILITY})], | |
99afbd6e FDN |
387 | [Default syslog facility]) |
388 | ||
4fc6106b FDN |
389 | AC_DEFINE_UNQUOTED([SYSLOGLEVEL], |
390 | [$(eval echo ${SYSLOGLEVEL})], | |
99afbd6e FDN |
391 | [Default syslog level]) |
392 | ||
4fc6106b FDN |
393 | AC_DEFINE_UNQUOTED([DEFAULTADMGROUP], |
394 | ["$(eval echo ${DEFAULTADMGROUP})"], | |
e3aa8728 FDN |
395 | [Default admin group]) |
396 | ||
99afbd6e FDN |
397 | # debug build stuff |
398 | if test "x${enable_debug}" = xyes; then | |
399 | AC_DEFINE_UNQUOTED([DEBUG], [1], [Compiling Debugging code]) | |
400 | OPT_CFLAGS="-O0" | |
401 | else | |
402 | OPT_CFLAGS="-O3" | |
403 | fi | |
404 | ||
405 | # gdb flags | |
406 | if test "x${GCC}" = xyes; then | |
407 | GDB_FLAGS="-ggdb3" | |
408 | else | |
409 | GDB_FLAGS="-g" | |
410 | fi | |
411 | ||
5d50c465 FDN |
412 | DEFAULT_CFLAGS="-Werror -Wall -Wextra" |
413 | ||
414 | # manual overrides | |
415 | # generates too much noise for stub APIs | |
416 | UNWANTED_CFLAGS="-Wno-unused-parameter" | |
99afbd6e | 417 | |
5d50c465 | 418 | AC_SUBST([AM_CFLAGS],["$OPT_CFLAGS $GDB_FLAGS $DEFAULT_CFLAGS $UNWANTED_CFLAGS"]) |
99afbd6e | 419 | |
3e837299 FW |
420 | AX_PROG_DATE |
421 | AS_IF([test "$ax_cv_prog_date_gnu_date:$ax_cv_prog_date_gnu_utc" = yes:yes], | |
422 | [UTC_DATE_AT="date -u -d@"], | |
423 | [AS_IF([test "x$ax_cv_prog_date_bsd_date" = xyes], | |
424 | [UTC_DATE_AT="date -u -r"], | |
425 | [AC_MSG_ERROR([date utility unable to convert epoch to UTC])])]) | |
426 | AC_SUBST([UTC_DATE_AT]) | |
427 | ||
75a35f02 FW |
428 | AC_ARG_VAR([SOURCE_EPOCH],[last modification date of the source]) |
429 | AC_MSG_NOTICE([trying to determine source epoch]) | |
430 | AC_MSG_CHECKING([for source epoch in \$SOURCE_EPOCH]) | |
431 | AS_IF([test -n "$SOURCE_EPOCH"], | |
432 | [AC_MSG_RESULT([yes])], | |
433 | [AC_MSG_RESULT([no]) | |
434 | AC_MSG_CHECKING([for source epoch in source_epoch file]) | |
fbc2c39f FW |
435 | AS_IF([test -e "$srcdir/source_epoch"], |
436 | [read SOURCE_EPOCH <"$srcdir/source_epoch" | |
75a35f02 FW |
437 | AC_MSG_RESULT([yes])], |
438 | [AC_MSG_RESULT([no]) | |
439 | AC_MSG_CHECKING([for source epoch baked in by gitattributes export-subst]) | |
440 | SOURCE_EPOCH='$Format:%at$' # template for rewriting by git-archive | |
441 | AS_CASE([$SOURCE_EPOCH], | |
442 | [?Format:*], # was not rewritten | |
443 | [AC_MSG_RESULT([no]) | |
4f0376ff FW |
444 | AC_MSG_CHECKING([for source epoch in \$SOURCE_DATE_EPOCH]) |
445 | AS_IF([test "x$SOURCE_DATE_EPOCH" != x], | |
446 | [SOURCE_EPOCH="$SOURCE_DATE_EPOCH" | |
447 | AC_MSG_RESULT([yes])], | |
448 | [AC_MSG_RESULT([no]) | |
449 | AC_MSG_CHECKING([whether git log can provide a source epoch]) | |
450 | SOURCE_EPOCH=f${SOURCE_EPOCH#\$F} # convert into git log --pretty format | |
451 | SOURCE_EPOCH=$(cd "$srcdir" && git log -1 --pretty=${SOURCE_EPOCH%$} 2>/dev/null) | |
452 | AS_IF([test -n "$SOURCE_EPOCH"], | |
453 | [AC_MSG_RESULT([yes])], | |
454 | [AC_MSG_RESULT([no, using current time and breaking reproducibility]) | |
455 | SOURCE_EPOCH=$(date +%s)])])], | |
75a35f02 FW |
456 | [AC_MSG_RESULT([yes])] |
457 | )]) | |
458 | ]) | |
3e837299 | 459 | AC_MSG_NOTICE([using source epoch $($UTC_DATE_AT$SOURCE_EPOCH +'%F %T %Z')]) |
75a35f02 | 460 | |
19ceca42 FDN |
461 | AC_CONFIG_FILES([ |
462 | Makefile | |
0472de45 | 463 | init/Makefile |
de3d1e09 FDN |
464 | libnozzle/Makefile |
465 | libnozzle/libnozzle.pc | |
15eb3c46 | 466 | libnozzle/tests/Makefile |
4aa63ad7 | 467 | kronosnetd/Makefile |
b386f39b | 468 | kronosnetd/kronosnetd.logrotate |
10244a3f FS |
469 | libknet/Makefile |
470 | libknet/libknet.pc | |
a86247e6 | 471 | libknet/tests/Makefile |
31945b18 FDN |
472 | man/Makefile |
473 | man/Doxyfile-knet | |
6e3e091c | 474 | man/Doxyfile-nozzle |
7368d54c | 475 | poc-code/Makefile |
77213908 | 476 | poc-code/iov-hash/Makefile |
19ceca42 | 477 | ]) |
99afbd6e | 478 | |
cd60b0d9 FDN |
479 | if test "x$VERSION" = "xUNKNOWN"; then |
480 | AC_MSG_ERROR([m4_text_wrap([ | |
481 | configure was unable to determine the source tree's current version. This | |
482 | generally happens when using git archive (or the github download button) | |
483 | generated tarball/zip file. In order to workaround this issue, either use git | |
484 | clone https://github.com/kronosnet/kronosnet.git or use an official release | |
485 | tarball, available at https://kronosnet.org/releases/. Alternatively you | |
486 | can add a compatible version in a .tarball-version file at the top of the | |
487 | source tree, wipe your autom4te.cache dir and generated configure, and rerun | |
488 | autogen.sh. | |
489 | ], [ ], [ ], [76])]) | |
490 | fi | |
491 | ||
99afbd6e | 492 | AC_OUTPUT |