]> git.proxmox.com Git - mirror_kronosnet.git/blame - configure.ac
rpm: fix systemd integration with spec file
[mirror_kronosnet.git] / configure.ac
CommitLineData
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
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
02cdba56 19AM_INIT_AUTOMAKE([1.11.1 dist-bzip2 dist-xz color-tests -Wno-portability])
99afbd6e
FDN
20LT_PREREQ([2.2.6])
21LT_INIT
22
23AC_CONFIG_MACRO_DIR([m4])
4aa63ad7 24AC_CONFIG_SRCDIR([kronosnetd/main.c])
99afbd6e
FDN
25AC_CONFIG_HEADERS([config.h])
26
27AC_CANONICAL_HOST
28AC_PROG_LIBTOOL
29
30AC_LANG([C])
31
32if 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
40fi
41
42# Checks for programs.
43if ! ${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 45fi
ae9ebb47 46
99afbd6e
FDN
47AC_PROG_CC
48AM_PROG_CC_C_O
49AC_PROG_LN_S
50AC_PROG_INSTALL
51AC_PROG_MAKE_SET
52AC_PROG_CXX
53AC_PROG_RANLIB
b8bf8c7f 54AC_CHECK_PROGS([PUBLICAN], [publican], [:])
99afbd6e
FDN
55AC_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.
60cc_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
72check_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
85AC_C_INLINE
86
99afbd6e 87# Checks for libraries.
a5d43036 88AC_CHECK_LIB([pthread], [pthread_create])
df5fcdba 89AC_CHECK_LIB([rt], [clock_gettime])
99afbd6e 90
56407f26 91PKG_CHECK_MODULES([nss],[nss])
6dfec840 92PKG_CHECK_MODULES([libqb], [libqb])
56407f26
FDN
93
94AC_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
98if 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])
100fi
101
99afbd6e 102# Checks for header files.
bba2a8d7
FDN
103AC_CHECK_HEADERS([fcntl.h])
104AC_CHECK_HEADERS([stdlib.h])
105AC_CHECK_HEADERS([string.h])
106AC_CHECK_HEADERS([sys/ioctl.h])
107AC_CHECK_HEADERS([syslog.h])
108AC_CHECK_HEADERS([unistd.h])
6d727d3c
FDN
109AC_CHECK_HEADERS([netinet/in.h])
110AC_CHECK_HEADERS([sys/socket.h])
c3776828 111AC_CHECK_HEADERS([arpa/inet.h])
521b047e 112AC_CHECK_HEADERS([netdb.h])
ba6bc349 113AC_CHECK_HEADERS([limits.h])
99afbd6e
FDN
114
115# Checks for typedefs, structures, and compiler characteristics.
bba2a8d7 116AC_TYPE_SIZE_T
6d727d3c 117AC_TYPE_PID_T
c3776828 118AC_TYPE_SSIZE_T
31f37826 119AC_TYPE_UINT8_T
c3776828
FDN
120AC_TYPE_UINT16_T
121AC_TYPE_UINT32_T
efc95595
FDN
122AC_TYPE_UINT64_T
123AC_TYPE_INT32_T
99afbd6e
FDN
124
125# Checks for library functions.
6d727d3c
FDN
126AC_FUNC_ALLOCA
127AC_FUNC_FORK
128AC_FUNC_MALLOC
129AC_FUNC_REALLOC
bba2a8d7
FDN
130AC_CHECK_FUNCS([memset])
131AC_CHECK_FUNCS([strdup])
132AC_CHECK_FUNCS([strerror])
6d727d3c
FDN
133AC_CHECK_FUNCS([dup2])
134AC_CHECK_FUNCS([select])
135AC_CHECK_FUNCS([socket])
31f37826
FDN
136AC_CHECK_FUNCS([inet_ntoa])
137AC_CHECK_FUNCS([memmove])
138AC_CHECK_FUNCS([strchr])
bc5fdb83
FDN
139AC_CHECK_FUNCS([atexit])
140AC_CHECK_FUNCS([ftruncate])
7a00930f
FDN
141AC_CHECK_FUNCS([strrchr])
142AC_CHECK_FUNCS([strstr])
ba6bc349 143AC_CHECK_FUNCS([clock_gettime])
efc95595 144AC_CHECK_FUNCS([strcasecmp])
99afbd6e 145
38cb1bb7
FDN
146# PAM check
147AC_CHECK_HEADERS([security/pam_appl.h],
148 [AC_CHECK_LIB([pam], [pam_start])],
149 [AC_MSG_ERROR([Unable to find LinuxPAM devel files])])
150
151AC_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
156AC_ARG_ENABLE([debug],
157 [ --enable-debug enable debug build. ],
158 [ default="no" ])
159
c8ed20e0
FDN
160AC_ARG_ENABLE([publicandocs],
161 [ --enable-publicandocs enable docs build. ],
162 [ default="no" ])
163
0472de45
FDN
164AC_ARG_WITH([initddir],
165 [ --with-initddir=DIR : path to init script directory. ],
166 [ INITDDIR="$withval" ],
167 [ INITDDIR="$sysconfdir/init.d" ])
168
169AC_ARG_WITH([systemddir],
170 [ --with-systemddir=DIR : path to systemd unit files directory. ],
171 [ SYSTEMDDIR="$withval" ],
172 [ SYSTEMDDIR="/lib/systemd/system" ])
173
99afbd6e 174AC_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
180AC_ARG_WITH([sysloglevel],
e3aa8728 181 [ --with-sysloglevel=LEVEL
99afbd6e
FDN
182 default syslog level. ],
183 [ SYSLOGLEVEL="$withval" ],
184 [ SYSLOGLEVEL="LOG_INFO" ])
185
e3aa8728
FDN
186AC_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
195LOGDIR=${localstatedir}/log/
196RUNDIR=${localstatedir}/run/
afce19e1 197DEFAULT_CONFIG_DIR=${sysconfdir}/kronosnet
99afbd6e
FDN
198
199## do subst
200
4fc6106b 201AM_CONDITIONAL([BUILD_DOCS], [test "x${enable_publicandocs}" = xyes])
c8ed20e0 202
afce19e1 203AC_SUBST([DEFAULT_CONFIG_DIR])
0472de45
FDN
204AC_SUBST([INITDDIR])
205AC_SUBST([SYSTEMDDIR])
b386f39b 206AC_SUBST([LOGDIR])
0472de45 207
4fc6106b
FDN
208AC_DEFINE_UNQUOTED([DEFAULT_CONFIG_DIR],
209 ["$(eval echo ${DEFAULT_CONFIG_DIR})"],
afce19e1
FDN
210 [Default config directory])
211
212AC_DEFINE_UNQUOTED([DEFAULT_CONFIG_FILE],
4fc6106b 213 ["$(eval echo ${DEFAULT_CONFIG_DIR}/kronosnetd.conf)"],
99afbd6e
FDN
214 [Default config file])
215
4fc6106b
FDN
216AC_DEFINE_UNQUOTED([LOGDIR],
217 ["$(eval echo ${LOGDIR})"],
99afbd6e
FDN
218 [Default logging directory])
219
2d022f7f 220AC_DEFINE_UNQUOTED([DEFAULT_LOG_FILE],
4fc6106b 221 ["$(eval echo ${LOGDIR}/kronosnetd.log)"],
2d022f7f
FDN
222 [Default log file])
223
4fc6106b
FDN
224AC_DEFINE_UNQUOTED([RUNDIR],
225 ["$(eval echo ${RUNDIR})"],
99afbd6e
FDN
226 [Default run directory])
227
4fc6106b
FDN
228AC_DEFINE_UNQUOTED([SYSLOGFACILITY],
229 [$(eval echo ${SYSLOGFACILITY})],
99afbd6e
FDN
230 [Default syslog facility])
231
4fc6106b
FDN
232AC_DEFINE_UNQUOTED([SYSLOGLEVEL],
233 [$(eval echo ${SYSLOGLEVEL})],
99afbd6e
FDN
234 [Default syslog level])
235
4fc6106b
FDN
236AC_DEFINE_UNQUOTED([DEFAULTADMGROUP],
237 ["$(eval echo ${DEFAULTADMGROUP})"],
e3aa8728
FDN
238 [Default admin group])
239
99afbd6e
FDN
240## *FLAGS handling
241ENV_CFLAGS="$CFLAGS"
242ENV_CPPFLAGS="$CPPFLAGS"
243ENV_LDFLAGS="$LDFLAGS"
244
245# debug build stuff
246if test "x${enable_debug}" = xyes; then
247 AC_DEFINE_UNQUOTED([DEBUG], [1], [Compiling Debugging code])
248 OPT_CFLAGS="-O0"
249else
250 OPT_CFLAGS="-O3"
251fi
252
253# gdb flags
254if test "x${GCC}" = xyes; then
255 GDB_FLAGS="-ggdb3"
256else
257 GDB_FLAGS="-g"
258fi
259
260# extra warnings
261EXTRA_WARNINGS=""
262
263WARNLIST="
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
297for j in $WARNLIST; do
298 if cc_supports_flag -W$j; then
299 EXTRA_WARNINGS="$EXTRA_WARNINGS -W$j";
300 fi
301done
302
ae9ebb47 303CFLAGS="$ENV_CFLAGS $lt_prog_compiler_pic $OPT_CFLAGS $GDB_FLAGS \
99afbd6e
FDN
304 $EXTRA_WARNINGS $WERROR_CFLAGS"
305CPPFLAGS="$ENV_CPPFLAGS"
e3c019fd 306LDFLAGS="$ENV_LDFLAGS $lt_prog_compiler_pic -Wl,--as-needed"
99afbd6e 307
19ceca42
FDN
308AC_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
320AC_OUTPUT