]> git.proxmox.com Git - mirror_kronosnet.git/blame - configure.ac
ring: fix node_id endianness, use ping/pong packet mask
[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])
11AC_CONFIG_SRCDIR([main.c])
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
31 AC_MSG_ERROR([you don't seem to have GNU make; it is required])
32fi
33AC_PROG_CC
34AM_PROG_CC_C_O
35AC_PROG_LN_S
36AC_PROG_INSTALL
37AC_PROG_MAKE_SET
38AC_PROG_CXX
39AC_PROG_RANLIB
b8bf8c7f 40AC_CHECK_PROGS([PUBLICAN], [publican], [:])
99afbd6e
FDN
41AC_CHECK_PROGS([PKGCONFIG], [pkg-config])
42
43## local helper functions
44# this function checks if CC support options passed as
45# args. Global CFLAGS are ignored during this test.
46cc_supports_flag() {
47 local CFLAGS="$@"
48 AC_MSG_CHECKING([whether $CC supports "$@"])
49 AC_COMPILE_IFELSE([int main(){return 0;}] ,
50 [RC=0; AC_MSG_RESULT([yes])],
51 [RC=1; AC_MSG_RESULT([no])])
52 return $RC
53}
54
55# helper macro to check libs without adding them to LIBS
56check_lib_no_libs() {
57 lib_no_libs_arg1=$1
58 shift
59 lib_no_libs_arg2=$1
60 shift
61 lib_no_libs_args=$@
62 AC_CHECK_LIB([$lib_no_libs_arg1],
63 [$lib_no_libs_arg2],,,
64 [$lib_no_libs_args])
65 LIBS=$ac_check_lib_save_LIBS
66}
67
c3776828
FDN
68# Checks for C features
69AC_C_INLINE
70
99afbd6e 71# Checks for libraries.
a5d43036 72AC_CHECK_LIB([pthread], [pthread_create])
df5fcdba 73AC_CHECK_LIB([rt], [clock_gettime])
99afbd6e
FDN
74
75# Checks for header files.
bba2a8d7
FDN
76AC_CHECK_HEADERS([fcntl.h])
77AC_CHECK_HEADERS([stdlib.h])
78AC_CHECK_HEADERS([string.h])
79AC_CHECK_HEADERS([sys/ioctl.h])
80AC_CHECK_HEADERS([syslog.h])
81AC_CHECK_HEADERS([unistd.h])
6d727d3c
FDN
82AC_CHECK_HEADERS([netinet/in.h])
83AC_CHECK_HEADERS([sys/socket.h])
c3776828 84AC_CHECK_HEADERS([arpa/inet.h])
521b047e 85AC_CHECK_HEADERS([netdb.h])
ba6bc349 86AC_CHECK_HEADERS([limits.h])
99afbd6e
FDN
87
88# Checks for typedefs, structures, and compiler characteristics.
bba2a8d7 89AC_TYPE_SIZE_T
6d727d3c 90AC_TYPE_PID_T
c3776828 91AC_TYPE_SSIZE_T
31f37826 92AC_TYPE_UINT8_T
c3776828
FDN
93AC_TYPE_UINT16_T
94AC_TYPE_UINT32_T
99afbd6e
FDN
95
96# Checks for library functions.
6d727d3c
FDN
97AC_FUNC_ALLOCA
98AC_FUNC_FORK
99AC_FUNC_MALLOC
100AC_FUNC_REALLOC
bba2a8d7
FDN
101AC_CHECK_FUNCS([memset])
102AC_CHECK_FUNCS([strdup])
103AC_CHECK_FUNCS([strerror])
6d727d3c
FDN
104AC_CHECK_FUNCS([dup2])
105AC_CHECK_FUNCS([select])
106AC_CHECK_FUNCS([socket])
31f37826
FDN
107AC_CHECK_FUNCS([inet_ntoa])
108AC_CHECK_FUNCS([memmove])
109AC_CHECK_FUNCS([strchr])
bc5fdb83
FDN
110AC_CHECK_FUNCS([atexit])
111AC_CHECK_FUNCS([ftruncate])
7a00930f
FDN
112AC_CHECK_FUNCS([strrchr])
113AC_CHECK_FUNCS([strstr])
ba6bc349 114AC_CHECK_FUNCS([clock_gettime])
99afbd6e 115
38cb1bb7
FDN
116# PAM check
117AC_CHECK_HEADERS([security/pam_appl.h],
118 [AC_CHECK_LIB([pam], [pam_start])],
119 [AC_MSG_ERROR([Unable to find LinuxPAM devel files])])
120
121AC_CHECK_HEADERS([security/pam_misc.h],
122 [AC_CHECK_LIB([pam_misc], [misc_conv])],
123 [AC_MSG_ERROR([Unable to find LinuxPAM MISC devel files])])
124
99afbd6e
FDN
125# local options
126AC_ARG_ENABLE([debug],
127 [ --enable-debug enable debug build. ],
128 [ default="no" ])
129
c8ed20e0
FDN
130AC_ARG_ENABLE([publicandocs],
131 [ --enable-publicandocs enable docs build. ],
132 [ default="no" ])
133
99afbd6e 134AC_ARG_WITH([syslogfacility],
e3aa8728 135 [ --with-syslogfacility=FACILITY
99afbd6e
FDN
136 default syslog facility. ],
137 [ SYSLOGFACILITY="$withval" ],
138 [ SYSLOGFACILITY="LOG_LOCAL4" ])
139
140AC_ARG_WITH([sysloglevel],
e3aa8728 141 [ --with-sysloglevel=LEVEL
99afbd6e
FDN
142 default syslog level. ],
143 [ SYSLOGLEVEL="$withval" ],
144 [ SYSLOGLEVEL="LOG_INFO" ])
145
e3aa8728
FDN
146AC_ARG_WITH([defaultadmgroup],
147 [ --with-defaultadmgroup=GROUP
148 define PAM group. Users part of this group will be
149 allowed to configure kronosnet. Others will only
150 receive read-only rights. ],
151 [ DEFAULTADMGROUP="$withval" ],
152 [ DEFAULTADMGROUP="kronosnetadm" ])
153
99afbd6e
FDN
154## random vars
155LOGDIR=${localstatedir}/log/
156RUNDIR=${localstatedir}/run/
afce19e1 157DEFAULT_CONFIG_DIR=${sysconfdir}/kronosnet
99afbd6e
FDN
158
159## do subst
160
c8ed20e0
FDN
161AM_CONDITIONAL(BUILD_DOCS, test "x${enable_publicandocs}" = xyes)
162
afce19e1
FDN
163AC_SUBST([DEFAULT_CONFIG_DIR])
164AC_DEFINE_UNQUOTED([DEFAULT_CONFIG_DIR], "$(eval echo ${DEFAULT_CONFIG_DIR})",
165 [Default config directory])
166
167AC_DEFINE_UNQUOTED([DEFAULT_CONFIG_FILE],
168 "$(eval echo ${DEFAULT_CONFIG_DIR}/kronosnetd.conf)",
99afbd6e
FDN
169 [Default config file])
170
171AC_DEFINE_UNQUOTED([LOGDIR], "$(eval echo ${LOGDIR})",
172 [Default logging directory])
173
174AC_DEFINE_UNQUOTED([RUNDIR], "$(eval echo ${RUNDIR})",
175 [Default run directory])
176
e3aa8728 177AC_DEFINE_UNQUOTED([SYSLOGFACILITY], "$(eval echo ${SYSLOGFACILITY})",
99afbd6e
FDN
178 [Default syslog facility])
179
e3aa8728 180AC_DEFINE_UNQUOTED([SYSLOGLEVEL], "$(eval echo ${SYSLOGLEVEL})",
99afbd6e
FDN
181 [Default syslog level])
182
e3aa8728
FDN
183AC_DEFINE_UNQUOTED([DEFAULTADMGROUP], "$(eval echo ${DEFAULTADMGROUP})",
184 [Default admin group])
185
99afbd6e
FDN
186## *FLAGS handling
187ENV_CFLAGS="$CFLAGS"
188ENV_CPPFLAGS="$CPPFLAGS"
189ENV_LDFLAGS="$LDFLAGS"
190
191# debug build stuff
192if test "x${enable_debug}" = xyes; then
193 AC_DEFINE_UNQUOTED([DEBUG], [1], [Compiling Debugging code])
194 OPT_CFLAGS="-O0"
195else
196 OPT_CFLAGS="-O3"
197fi
198
199# gdb flags
200if test "x${GCC}" = xyes; then
201 GDB_FLAGS="-ggdb3"
202else
203 GDB_FLAGS="-g"
204fi
205
206# extra warnings
207EXTRA_WARNINGS=""
208
209WARNLIST="
210 all
211 shadow
212 missing-prototypes
213 missing-declarations
214 strict-prototypes
215 declaration-after-statement
216 pointer-arith
217 write-strings
218 cast-align
219 bad-function-cast
220 missing-format-attribute
221 format=2
222 format-security
223 format-nonliteral
224 no-long-long
225 unsigned-char
226 gnu89-inline
227 no-strict-aliasing
228 error
229 "
230
231for j in $WARNLIST; do
232 if cc_supports_flag -W$j; then
233 EXTRA_WARNINGS="$EXTRA_WARNINGS -W$j";
234 fi
235done
236
237CFLAGS="$ENV_CFLAGS $OPT_CFLAGS $GDB_FLAGS \
238 $EXTRA_WARNINGS $WERROR_CFLAGS"
239CPPFLAGS="$ENV_CPPFLAGS"
240LDFLAGS="$ENV_LDFLAGS"
241
19ceca42
FDN
242AC_CONFIG_FILES([
243 Makefile
5d4a4eec
FDN
244 libtap/Makefile
245 libtap/libtap.pc
19ceca42 246 docs/Makefile
84b47b85 247 tests/Makefile
19ceca42 248 ])
99afbd6e
FDN
249
250AC_OUTPUT