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