]>
Commit | Line | Data |
---|---|---|
99afbd6e FDN |
1 | # -*- Autoconf -*- |
2 | # Process this file with autoconf to produce a configure script. | |
3 | ||
4 | AC_PREREQ([2.63]) | |
c8ed20e0 | 5 | AC_INIT([kronosnetd], [0.1], [fabbione@kronosnet.org]) |
02cdba56 | 6 | AM_INIT_AUTOMAKE([1.11.1 dist-bzip2 dist-xz color-tests -Wno-portability]) |
99afbd6e FDN |
7 | LT_PREREQ([2.2.6]) |
8 | LT_INIT | |
9 | ||
10 | AC_CONFIG_MACRO_DIR([m4]) | |
4aa63ad7 | 11 | AC_CONFIG_SRCDIR([kronosnetd/main.c]) |
99afbd6e FDN |
12 | AC_CONFIG_HEADERS([config.h]) |
13 | ||
14 | AC_CANONICAL_HOST | |
15 | AC_PROG_LIBTOOL | |
16 | ||
17 | AC_LANG([C]) | |
18 | ||
19 | if 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 | |
27 | fi | |
28 | ||
29 | # Checks for programs. | |
30 | if ! ${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 | 32 | fi |
ae9ebb47 | 33 | |
99afbd6e FDN |
34 | AC_PROG_CC |
35 | AM_PROG_CC_C_O | |
36 | AC_PROG_LN_S | |
37 | AC_PROG_INSTALL | |
38 | AC_PROG_MAKE_SET | |
39 | AC_PROG_CXX | |
40 | AC_PROG_RANLIB | |
b8bf8c7f | 41 | AC_CHECK_PROGS([PUBLICAN], [publican], [:]) |
99afbd6e FDN |
42 | AC_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. | |
47 | cc_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 | |
59 | check_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 |
72 | AC_C_INLINE | |
73 | ||
99afbd6e | 74 | # Checks for libraries. |
a5d43036 | 75 | AC_CHECK_LIB([pthread], [pthread_create]) |
df5fcdba | 76 | AC_CHECK_LIB([rt], [clock_gettime]) |
99afbd6e | 77 | |
56407f26 FDN |
78 | PKG_CHECK_MODULES([nss],[nss]) |
79 | PKG_CHECK_MODULES([LIBQB], [libqb]) | |
80 | ||
81 | AC_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 | ||
85 | if 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]) | |
87 | fi | |
88 | ||
99afbd6e | 89 | # Checks for header files. |
bba2a8d7 FDN |
90 | AC_CHECK_HEADERS([fcntl.h]) |
91 | AC_CHECK_HEADERS([stdlib.h]) | |
92 | AC_CHECK_HEADERS([string.h]) | |
93 | AC_CHECK_HEADERS([sys/ioctl.h]) | |
94 | AC_CHECK_HEADERS([syslog.h]) | |
95 | AC_CHECK_HEADERS([unistd.h]) | |
6d727d3c FDN |
96 | AC_CHECK_HEADERS([netinet/in.h]) |
97 | AC_CHECK_HEADERS([sys/socket.h]) | |
c3776828 | 98 | AC_CHECK_HEADERS([arpa/inet.h]) |
521b047e | 99 | AC_CHECK_HEADERS([netdb.h]) |
ba6bc349 | 100 | AC_CHECK_HEADERS([limits.h]) |
99afbd6e FDN |
101 | |
102 | # Checks for typedefs, structures, and compiler characteristics. | |
bba2a8d7 | 103 | AC_TYPE_SIZE_T |
6d727d3c | 104 | AC_TYPE_PID_T |
c3776828 | 105 | AC_TYPE_SSIZE_T |
31f37826 | 106 | AC_TYPE_UINT8_T |
c3776828 FDN |
107 | AC_TYPE_UINT16_T |
108 | AC_TYPE_UINT32_T | |
99afbd6e FDN |
109 | |
110 | # Checks for library functions. | |
6d727d3c FDN |
111 | AC_FUNC_ALLOCA |
112 | AC_FUNC_FORK | |
113 | AC_FUNC_MALLOC | |
114 | AC_FUNC_REALLOC | |
bba2a8d7 FDN |
115 | AC_CHECK_FUNCS([memset]) |
116 | AC_CHECK_FUNCS([strdup]) | |
117 | AC_CHECK_FUNCS([strerror]) | |
6d727d3c FDN |
118 | AC_CHECK_FUNCS([dup2]) |
119 | AC_CHECK_FUNCS([select]) | |
120 | AC_CHECK_FUNCS([socket]) | |
31f37826 FDN |
121 | AC_CHECK_FUNCS([inet_ntoa]) |
122 | AC_CHECK_FUNCS([memmove]) | |
123 | AC_CHECK_FUNCS([strchr]) | |
bc5fdb83 FDN |
124 | AC_CHECK_FUNCS([atexit]) |
125 | AC_CHECK_FUNCS([ftruncate]) | |
7a00930f FDN |
126 | AC_CHECK_FUNCS([strrchr]) |
127 | AC_CHECK_FUNCS([strstr]) | |
ba6bc349 | 128 | AC_CHECK_FUNCS([clock_gettime]) |
99afbd6e | 129 | |
38cb1bb7 FDN |
130 | # PAM check |
131 | AC_CHECK_HEADERS([security/pam_appl.h], | |
132 | [AC_CHECK_LIB([pam], [pam_start])], | |
133 | [AC_MSG_ERROR([Unable to find LinuxPAM devel files])]) | |
134 | ||
135 | AC_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 |
140 | AC_ARG_ENABLE([debug], | |
141 | [ --enable-debug enable debug build. ], | |
142 | [ default="no" ]) | |
143 | ||
c8ed20e0 FDN |
144 | AC_ARG_ENABLE([publicandocs], |
145 | [ --enable-publicandocs enable docs build. ], | |
146 | [ default="no" ]) | |
147 | ||
99afbd6e | 148 | AC_ARG_WITH([syslogfacility], |
e3aa8728 | 149 | [ --with-syslogfacility=FACILITY |
99afbd6e FDN |
150 | default syslog facility. ], |
151 | [ SYSLOGFACILITY="$withval" ], | |
152 | [ SYSLOGFACILITY="LOG_LOCAL4" ]) | |
153 | ||
154 | AC_ARG_WITH([sysloglevel], | |
e3aa8728 | 155 | [ --with-sysloglevel=LEVEL |
99afbd6e FDN |
156 | default syslog level. ], |
157 | [ SYSLOGLEVEL="$withval" ], | |
158 | [ SYSLOGLEVEL="LOG_INFO" ]) | |
159 | ||
e3aa8728 FDN |
160 | AC_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 |
169 | LOGDIR=${localstatedir}/log/ | |
170 | RUNDIR=${localstatedir}/run/ | |
afce19e1 | 171 | DEFAULT_CONFIG_DIR=${sysconfdir}/kronosnet |
99afbd6e FDN |
172 | |
173 | ## do subst | |
174 | ||
c8ed20e0 FDN |
175 | AM_CONDITIONAL(BUILD_DOCS, test "x${enable_publicandocs}" = xyes) |
176 | ||
afce19e1 FDN |
177 | AC_SUBST([DEFAULT_CONFIG_DIR]) |
178 | AC_DEFINE_UNQUOTED([DEFAULT_CONFIG_DIR], "$(eval echo ${DEFAULT_CONFIG_DIR})", | |
179 | [Default config directory]) | |
180 | ||
181 | AC_DEFINE_UNQUOTED([DEFAULT_CONFIG_FILE], | |
182 | "$(eval echo ${DEFAULT_CONFIG_DIR}/kronosnetd.conf)", | |
99afbd6e FDN |
183 | [Default config file]) |
184 | ||
185 | AC_DEFINE_UNQUOTED([LOGDIR], "$(eval echo ${LOGDIR})", | |
186 | [Default logging directory]) | |
187 | ||
188 | AC_DEFINE_UNQUOTED([RUNDIR], "$(eval echo ${RUNDIR})", | |
189 | [Default run directory]) | |
190 | ||
e3aa8728 | 191 | AC_DEFINE_UNQUOTED([SYSLOGFACILITY], "$(eval echo ${SYSLOGFACILITY})", |
99afbd6e FDN |
192 | [Default syslog facility]) |
193 | ||
e3aa8728 | 194 | AC_DEFINE_UNQUOTED([SYSLOGLEVEL], "$(eval echo ${SYSLOGLEVEL})", |
99afbd6e FDN |
195 | [Default syslog level]) |
196 | ||
e3aa8728 FDN |
197 | AC_DEFINE_UNQUOTED([DEFAULTADMGROUP], "$(eval echo ${DEFAULTADMGROUP})", |
198 | [Default admin group]) | |
199 | ||
99afbd6e FDN |
200 | ## *FLAGS handling |
201 | ENV_CFLAGS="$CFLAGS" | |
202 | ENV_CPPFLAGS="$CPPFLAGS" | |
203 | ENV_LDFLAGS="$LDFLAGS" | |
204 | ||
205 | # debug build stuff | |
206 | if test "x${enable_debug}" = xyes; then | |
207 | AC_DEFINE_UNQUOTED([DEBUG], [1], [Compiling Debugging code]) | |
208 | OPT_CFLAGS="-O0" | |
209 | else | |
210 | OPT_CFLAGS="-O3" | |
211 | fi | |
212 | ||
213 | # gdb flags | |
214 | if test "x${GCC}" = xyes; then | |
215 | GDB_FLAGS="-ggdb3" | |
216 | else | |
217 | GDB_FLAGS="-g" | |
218 | fi | |
219 | ||
220 | # extra warnings | |
221 | EXTRA_WARNINGS="" | |
222 | ||
223 | WARNLIST=" | |
224 | all | |
225 | shadow | |
226 | missing-prototypes | |
227 | missing-declarations | |
228 | strict-prototypes | |
229 | declaration-after-statement | |
230 | pointer-arith | |
231 | write-strings | |
232 | cast-align | |
233 | bad-function-cast | |
234 | missing-format-attribute | |
235 | format=2 | |
236 | format-security | |
237 | format-nonliteral | |
238 | no-long-long | |
239 | unsigned-char | |
240 | gnu89-inline | |
241 | no-strict-aliasing | |
242 | error | |
ade3159b FDN |
243 | address |
244 | cpp | |
245 | enum-compare | |
246 | overflow | |
247 | parentheses | |
248 | sequence-point | |
249 | switch | |
250 | uninitialized | |
251 | unused-but-set-variable | |
252 | unused-function | |
253 | unused-result | |
254 | unused-value | |
255 | unused-variable | |
99afbd6e FDN |
256 | " |
257 | ||
258 | for j in $WARNLIST; do | |
259 | if cc_supports_flag -W$j; then | |
260 | EXTRA_WARNINGS="$EXTRA_WARNINGS -W$j"; | |
261 | fi | |
262 | done | |
263 | ||
ae9ebb47 | 264 | CFLAGS="$ENV_CFLAGS $lt_prog_compiler_pic $OPT_CFLAGS $GDB_FLAGS \ |
99afbd6e FDN |
265 | $EXTRA_WARNINGS $WERROR_CFLAGS" |
266 | CPPFLAGS="$ENV_CPPFLAGS" | |
ae9ebb47 | 267 | LDFLAGS="$ENV_LDFLAGS $lt_prog_compiler_pic" |
99afbd6e | 268 | |
19ceca42 FDN |
269 | AC_CONFIG_FILES([ |
270 | Makefile | |
5d4a4eec FDN |
271 | libtap/Makefile |
272 | libtap/libtap.pc | |
4aa63ad7 | 273 | kronosnetd/Makefile |
10244a3f FS |
274 | libknet/Makefile |
275 | libknet/libknet.pc | |
9a62f43f FDN |
276 | libvty/Makefile |
277 | libvty/libvty.pc | |
19ceca42 | 278 | docs/Makefile |
84b47b85 | 279 | tests/Makefile |
19ceca42 | 280 | ]) |
99afbd6e FDN |
281 | |
282 | AC_OUTPUT |