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