]>
Commit | Line | Data |
---|---|---|
89c4ed63 A |
1 | # -*- Autoconf -*- |
2 | # Process this file with autoconf to produce a configure script. | |
3 | AC_PREREQ(2.56) | |
4 | sinclude(acx_nlnetlabs.m4) | |
5 | sinclude(ax_pthread.m4) | |
6 | sinclude(acx_python.m4) | |
7 | sinclude(ac_pkg_swig.m4) | |
8 | sinclude(dnstap/dnstap.m4) | |
9 | ||
10 | # must be numbers. ac_defun because of later processing | |
11 | m4_define([VERSION_MAJOR],[1]) | |
12 | m4_define([VERSION_MINOR],[5]) | |
13 | m4_define([VERSION_MICRO],[1]) | |
14 | AC_INIT(unbound, m4_defn([VERSION_MAJOR]).m4_defn([VERSION_MINOR]).m4_defn([VERSION_MICRO]), unbound-bugs@nlnetlabs.nl, unbound) | |
15 | AC_SUBST(UNBOUND_VERSION_MAJOR, [VERSION_MAJOR]) | |
16 | AC_SUBST(UNBOUND_VERSION_MINOR, [VERSION_MINOR]) | |
17 | AC_SUBST(UNBOUND_VERSION_MICRO, [VERSION_MICRO]) | |
18 | ||
19 | LIBUNBOUND_CURRENT=5 | |
20 | LIBUNBOUND_REVISION=3 | |
21 | LIBUNBOUND_AGE=3 | |
22 | # 1.0.0 had 0:12:0 | |
23 | # 1.0.1 had 0:13:0 | |
24 | # 1.0.2 had 0:14:0 | |
25 | # 1.1.0 had 0:15:0 | |
26 | # 1.1.1 had 0:16:0 | |
27 | # 1.2.0 had 0:17:0 | |
28 | # 1.2.1 had 0:18:0 | |
29 | # 1.3.0 had 1:0:0 # ub_cancel and -export-symbols. | |
30 | # 1.3.1 had 1:1:0 | |
31 | # 1.3.2 had 1:2:0 | |
32 | # 1.3.3 had 1:3:0 | |
33 | # 1.3.4 had 1:4:0 | |
34 | # 1.4.0-snapshots had 1:5:0 | |
35 | # 1.4.0 had 1:5:0 (not 2:0:0) # ub_result.why_bogus | |
36 | # 1.4.1 had 2:1:0 | |
37 | # 1.4.2 had 2:2:0 | |
38 | # 1.4.3 had 2:3:0 | |
39 | # 1.4.4 had 2:4:0 | |
40 | # 1.4.5 had 2:5:0 | |
41 | # 1.4.6 had 2:6:0 | |
42 | # 1.4.7 had 2:7:0 | |
43 | # 1.4.8 had 2:8:0 | |
44 | # 1.4.9 had 2:9:0 | |
45 | # 1.4.10 had 2:10:0 | |
46 | # 1.4.11 had 2:11:0 | |
47 | # 1.4.12 had 2:12:0 | |
48 | # 1.4.13 had 2:13:0 | |
49 | # and 1.4.13p1 and 1.4.13.p2 | |
50 | # 1.4.14 had 2:14:0 | |
51 | # 1.4.15 had 3:0:1 # adds ub_version() | |
52 | # 1.4.16 had 3:1:1 | |
53 | # 1.4.17 had 3:2:1 | |
54 | # 1.4.18 had 3:3:1 | |
55 | # 1.4.19 had 3:4:1 | |
56 | # 1.4.20 had 4:0:2 # adds libunbound.ttl # but shipped 3:5:1 | |
57 | # 1.4.21 had 4:1:2 | |
58 | # 1.4.22 had 4:1:2 | |
59 | # 1.5.0 had 5:3:3 # adds ub_ctx_add_ta_autr | |
60 | # 1.5.1 had 5:4:3 | |
61 | ||
62 | # Current -- the number of the binary API that we're implementing | |
63 | # Revision -- which iteration of the implementation of the binary | |
64 | # API are we supplying? | |
65 | # Age -- How many previous binary API versions do we also | |
66 | # support? | |
67 | # | |
68 | # If we release a new version that does not change the binary API, | |
69 | # increment Revision. | |
70 | # | |
71 | # If we release a new version that changes the binary API, but does | |
72 | # not break programs compiled against the old binary API, increment | |
73 | # Current and Age. Set Revision to 0, since this is the first | |
74 | # implementation of the new API. | |
75 | # | |
76 | # Otherwise, we're changing the binary API and breaking bakward | |
77 | # compatibility with old binaries. Increment Current. Set Age to 0, | |
78 | # since we're backward compatible with no previous APIs. Set Revision | |
79 | # to 0 too. | |
80 | AC_SUBST(LIBUNBOUND_CURRENT) | |
81 | AC_SUBST(LIBUNBOUND_REVISION) | |
82 | AC_SUBST(LIBUNBOUND_AGE) | |
83 | ||
84 | CFLAGS="$CFLAGS" | |
85 | AC_AIX | |
86 | if test "$ac_cv_header_minix_config_h" = "yes"; then | |
87 | AC_DEFINE(_NETBSD_SOURCE,1, [Enable for compile on Minix]) | |
88 | fi | |
89 | ||
90 | dnl | |
91 | dnl By default set prefix to /usr/local | |
92 | dnl | |
93 | case "$prefix" in | |
94 | NONE) | |
95 | prefix="/usr/local" | |
96 | ;; | |
97 | esac | |
98 | ||
99 | # are we on MinGW? | |
100 | if uname -s 2>&1 | grep MINGW32 >/dev/null; then on_mingw="yes" | |
101 | else | |
102 | if echo $target | grep mingw32 >/dev/null; then on_mingw="yes" | |
103 | else on_mingw="no"; fi | |
104 | fi | |
105 | ||
106 | # | |
107 | # Determine configuration file | |
108 | # the eval is to evaluate shell expansion twice | |
109 | if test $on_mingw = "no"; then | |
110 | ub_conf_file=`eval echo "${sysconfdir}/unbound/unbound.conf"` | |
111 | else | |
112 | ub_conf_file="C:\\Program Files\\Unbound\\service.conf" | |
113 | fi | |
114 | AC_ARG_WITH([conf_file], | |
115 | AC_HELP_STRING([--with-conf-file=path], | |
116 | [Pathname to the Unbound configuration file]), | |
117 | [ub_conf_file="$withval"]) | |
118 | AC_SUBST(ub_conf_file) | |
119 | ACX_ESCAPE_BACKSLASH($ub_conf_file, hdr_config) | |
120 | AC_DEFINE_UNQUOTED(CONFIGFILE, ["$hdr_config"], [Pathname to the Unbound configuration file]) | |
121 | ||
122 | # Determine run, chroot directory and pidfile locations | |
123 | AC_ARG_WITH(run-dir, | |
124 | AC_HELP_STRING([--with-run-dir=path], | |
125 | [set default directory to chdir to (by default dir part of cfg file)]), | |
126 | UNBOUND_RUN_DIR="$withval", | |
127 | if test $on_mingw = no; then | |
128 | UNBOUND_RUN_DIR=`dirname "$ub_conf_file"` | |
129 | else | |
130 | UNBOUND_RUN_DIR="" | |
131 | fi | |
132 | ) | |
133 | AC_SUBST(UNBOUND_RUN_DIR) | |
134 | ACX_ESCAPE_BACKSLASH($UNBOUND_RUN_DIR, hdr_run) | |
135 | AC_DEFINE_UNQUOTED(RUN_DIR, ["$hdr_run"], [Directory to chdir to]) | |
136 | ||
137 | AC_ARG_WITH(chroot-dir, | |
138 | AC_HELP_STRING([--with-chroot-dir=path], | |
139 | [set default directory to chroot to (by default same as run-dir)]), | |
140 | UNBOUND_CHROOT_DIR="$withval", | |
141 | if test $on_mingw = no; then | |
142 | UNBOUND_CHROOT_DIR="$UNBOUND_RUN_DIR" | |
143 | else | |
144 | UNBOUND_CHROOT_DIR="" | |
145 | fi | |
146 | ) | |
147 | AC_SUBST(UNBOUND_CHROOT_DIR) | |
148 | ACX_ESCAPE_BACKSLASH($UNBOUND_CHROOT_DIR, hdr_chroot) | |
149 | AC_DEFINE_UNQUOTED(CHROOT_DIR, ["$hdr_chroot"], [Directory to chroot to]) | |
150 | ||
151 | AC_ARG_WITH(share-dir, | |
152 | AC_HELP_STRING([--with-share-dir=path], | |
153 | [set default directory with shared data (by default same as share/unbound)]), | |
154 | UNBOUND_SHARE_DIR="$withval", | |
155 | UNBOUND_SHARE_DIR="$UNBOUND_RUN_DIR") | |
156 | AC_SUBST(UNBOUND_SHARE_DIR) | |
157 | AC_DEFINE_UNQUOTED(SHARE_DIR, ["$UNBOUND_SHARE_DIR"], [Shared data]) | |
158 | ||
159 | AC_ARG_WITH(pidfile, | |
160 | AC_HELP_STRING([--with-pidfile=filename], | |
161 | [set default pathname to unbound pidfile (default run-dir/unbound.pid)]), | |
162 | UNBOUND_PIDFILE="$withval", | |
163 | if test $on_mingw = no; then | |
164 | UNBOUND_PIDFILE="$UNBOUND_RUN_DIR/unbound.pid" | |
165 | else | |
166 | UNBOUND_PIDFILE="" | |
167 | fi | |
168 | ) | |
169 | AC_SUBST(UNBOUND_PIDFILE) | |
170 | ACX_ESCAPE_BACKSLASH($UNBOUND_PIDFILE, hdr_pid) | |
171 | AC_DEFINE_UNQUOTED(PIDFILE, ["$hdr_pid"], [default pidfile location]) | |
172 | ||
173 | AC_ARG_WITH(rootkey-file, | |
174 | AC_HELP_STRING([--with-rootkey-file=filename], | |
175 | [set default pathname to root key file (default run-dir/root.key). This file is read and written.]), | |
176 | UNBOUND_ROOTKEY_FILE="$withval", | |
177 | if test $on_mingw = no; then | |
178 | UNBOUND_ROOTKEY_FILE="$UNBOUND_RUN_DIR/root.key" | |
179 | else | |
180 | UNBOUND_ROOTKEY_FILE="C:\\Program Files\\Unbound\\root.key" | |
181 | fi | |
182 | ) | |
183 | AC_SUBST(UNBOUND_ROOTKEY_FILE) | |
184 | ACX_ESCAPE_BACKSLASH($UNBOUND_ROOTKEY_FILE, hdr_rkey) | |
185 | AC_DEFINE_UNQUOTED(ROOT_ANCHOR_FILE, ["$hdr_rkey"], [default rootkey location]) | |
186 | ||
187 | AC_ARG_WITH(rootcert-file, | |
188 | AC_HELP_STRING([--with-rootcert-file=filename], | |
189 | [set default pathname to root update certificate file (default run-dir/icannbundle.pem). This file need not exist if you are content with the builtin.]), | |
190 | UNBOUND_ROOTCERT_FILE="$withval", | |
191 | if test $on_mingw = no; then | |
192 | UNBOUND_ROOTCERT_FILE="$UNBOUND_RUN_DIR/icannbundle.pem" | |
193 | else | |
194 | UNBOUND_ROOTCERT_FILE="C:\\Program Files\\Unbound\\icannbundle.pem" | |
195 | fi | |
196 | ) | |
197 | AC_SUBST(UNBOUND_ROOTCERT_FILE) | |
198 | ACX_ESCAPE_BACKSLASH($UNBOUND_ROOTCERT_FILE, hdr_rpem) | |
199 | AC_DEFINE_UNQUOTED(ROOT_CERT_FILE, ["$hdr_rpem"], [default rootcert location]) | |
200 | ||
201 | AC_ARG_WITH(username, | |
202 | AC_HELP_STRING([--with-username=user], | |
203 | [set default user that unbound changes to (default user is unbound)]), | |
204 | UNBOUND_USERNAME="$withval", | |
205 | UNBOUND_USERNAME="unbound") | |
206 | AC_SUBST(UNBOUND_USERNAME) | |
207 | AC_DEFINE_UNQUOTED(UB_USERNAME, ["$UNBOUND_USERNAME"], [default username]) | |
208 | ||
209 | AC_DEFINE(WINVER, 0x0502, [the version of the windows API enabled]) | |
210 | ACX_RSRC_VERSION(wnvs) | |
211 | AC_DEFINE_UNQUOTED(RSRC_PACKAGE_VERSION, [$wnvs], [version number for resource files]) | |
212 | ||
213 | # Checks for typedefs, structures, and compiler characteristics. | |
214 | AC_C_CONST | |
215 | AC_LANG_C | |
216 | # allow user to override the -g -O2 flags. | |
217 | if test "x$CFLAGS" = "x" ; then | |
218 | ACX_CHECK_COMPILER_FLAG(g, [CFLAGS="$CFLAGS -g"]) | |
219 | ACX_CHECK_COMPILER_FLAG(O2, [CFLAGS="$CFLAGS -O2"]) | |
220 | fi | |
221 | AC_PROG_CC | |
222 | ACX_DEPFLAG | |
223 | ACX_DETERMINE_EXT_FLAGS_UNBOUND | |
224 | ||
225 | # debug mode flags warnings | |
226 | AC_ARG_ENABLE(checking, AC_HELP_STRING([--enable-checking], [Enable warnings, asserts, makefile-dependencies])) | |
227 | AC_ARG_ENABLE(debug, AC_HELP_STRING([--enable-debug], [same as enable-checking])) | |
228 | if test "$enable_debug" = "yes"; then debug_enabled="$enable_debug"; | |
229 | else debug_enabled="$enable_checking"; fi | |
230 | AC_SUBST(debug_enabled) | |
231 | case "$debug_enabled" in | |
232 | yes) | |
233 | ACX_CHECK_COMPILER_FLAG(W, [CFLAGS="$CFLAGS -W"]) | |
234 | ACX_CHECK_COMPILER_FLAG(Wall, [CFLAGS="$CFLAGS -Wall"]) | |
235 | ACX_CHECK_COMPILER_FLAG(Wextra, [CFLAGS="$CFLAGS -Wextra"]) | |
236 | ACX_CHECK_COMPILER_FLAG(Wdeclaration-after-statement, [CFLAGS="$CFLAGS -Wdeclaration-after-statement"]) | |
237 | AC_DEFINE([UNBOUND_DEBUG], [], [define this to enable debug checks.]) | |
238 | ;; | |
239 | no|*) | |
240 | # nothing to do. | |
241 | ;; | |
242 | esac | |
243 | ACX_CHECK_FLTO | |
244 | ||
245 | AC_C_INLINE | |
246 | ACX_CHECK_FORMAT_ATTRIBUTE | |
247 | ACX_CHECK_UNUSED_ATTRIBUTE | |
248 | ||
249 | if test "$srcdir" != "."; then | |
250 | CPPFLAGS="$CPPFLAGS -I$srcdir" | |
251 | fi | |
252 | ||
253 | AC_DEFUN([ACX_YYLEX_DESTROY], [ | |
254 | AC_MSG_CHECKING([for yylex_destroy]) | |
255 | if echo %% | $LEX -t 2>&1 | grep yylex_destroy >/dev/null 2>&1; then | |
256 | AC_DEFINE(LEX_HAS_YYLEX_DESTROY, 1, [if lex has yylex_destroy]) | |
257 | AC_MSG_RESULT(yes) | |
258 | else AC_MSG_RESULT(no); fi | |
259 | ]) | |
260 | ||
261 | AC_PROG_LEX | |
262 | ACX_YYLEX_DESTROY | |
263 | AC_PROG_YACC | |
264 | AC_CHECK_PROG(doxygen, doxygen, doxygen) | |
265 | AC_CHECK_TOOL(STRIP, strip) | |
266 | ACX_LIBTOOL_C_ONLY | |
267 | ||
268 | # Checks for header files. | |
269 | AC_CHECK_HEADERS([stdarg.h stdbool.h netinet/in.h sys/param.h sys/socket.h sys/uio.h sys/resource.h arpa/inet.h syslog.h netdb.h sys/wait.h pwd.h glob.h grp.h login_cap.h winsock2.h ws2tcpip.h endian.h],,, [AC_INCLUDES_DEFAULT]) | |
270 | ||
271 | # check for types. | |
272 | # Using own tests for int64* because autoconf builtin only give 32bit. | |
273 | AC_CHECK_TYPE(int8_t, signed char) | |
274 | AC_CHECK_TYPE(int16_t, short) | |
275 | AC_CHECK_TYPE(int32_t, int) | |
276 | AC_CHECK_TYPE(int64_t, long long) | |
277 | AC_CHECK_TYPE(uint8_t, unsigned char) | |
278 | AC_CHECK_TYPE(uint16_t, unsigned short) | |
279 | AC_CHECK_TYPE(uint32_t, unsigned int) | |
280 | AC_CHECK_TYPE(uint64_t, unsigned long long) | |
281 | AC_TYPE_SIZE_T | |
282 | AC_CHECK_TYPE(ssize_t, int) | |
283 | AC_TYPE_UID_T | |
284 | AC_TYPE_PID_T | |
285 | AC_TYPE_OFF_T | |
286 | ACX_TYPE_U_CHAR | |
287 | ACX_TYPE_RLIM_T | |
288 | ACX_TYPE_SOCKLEN_T | |
289 | ACX_TYPE_IN_ADDR_T | |
290 | ACX_TYPE_IN_PORT_T | |
291 | ACX_CHECK_MEMCMP_SIGNED | |
292 | ||
293 | AC_CHECK_SIZEOF(time_t,,[ | |
294 | AC_INCLUDES_DEFAULT | |
295 | #ifdef TIME_WITH_SYS_TIME | |
296 | # include <sys/time.h> | |
297 | # include <time.h> | |
298 | #else | |
299 | # ifdef HAVE_SYS_TIME_H | |
300 | # include <sys/time.h> | |
301 | # else | |
302 | # include <time.h> | |
303 | # endif | |
304 | #endif | |
305 | ]) | |
306 | ||
307 | # add option to disable the evil rpath | |
308 | ACX_ARG_RPATH | |
309 | AC_SUBST(RUNTIME_PATH) | |
310 | ||
311 | # check to see if libraries are needed for these functions. | |
312 | AC_SEARCH_LIBS([inet_pton], [nsl]) | |
313 | AC_SEARCH_LIBS([socket], [socket]) | |
314 | ||
315 | # check wether strptime also works | |
316 | AC_DEFUN([AC_CHECK_STRPTIME_WORKS], | |
317 | [AC_REQUIRE([AC_PROG_CC]) | |
318 | AC_MSG_CHECKING(whether strptime works) | |
319 | if test c${cross_compiling} = cno; then | |
320 | AC_RUN_IFELSE([AC_LANG_SOURCE([[ | |
321 | #define _XOPEN_SOURCE 600 | |
322 | #include <time.h> | |
323 | int main(void) { struct tm tm; char *res; | |
324 | res = strptime("2010-07-15T00:00:00+00:00", "%t%Y%t-%t%m%t-%t%d%tT%t%H%t:%t%M%t:%t%S%t", &tm); | |
325 | if (!res) return 2; | |
326 | res = strptime("20070207111842", "%Y%m%d%H%M%S", &tm); | |
327 | if (!res) return 1; return 0; } | |
328 | ]])] , [eval "ac_cv_c_strptime_works=yes"], [eval "ac_cv_c_strptime_works=no"]) | |
329 | else | |
330 | eval "ac_cv_c_strptime_works=maybe" | |
331 | fi | |
332 | AC_MSG_RESULT($ac_cv_c_strptime_works) | |
333 | if test $ac_cv_c_strptime_works = no; then | |
334 | AC_LIBOBJ(strptime) | |
335 | else | |
336 | AC_DEFINE_UNQUOTED([STRPTIME_WORKS], 1, [use default strptime.]) | |
337 | fi | |
338 | ])dnl | |
339 | ||
340 | # check some functions of the OS before linking libs (while still runnable). | |
341 | AC_FUNC_CHOWN | |
342 | AC_FUNC_FORK | |
343 | AC_TYPE_SIGNAL | |
344 | AC_FUNC_FSEEKO | |
345 | ACX_SYS_LARGEFILE | |
346 | ACX_CHECK_NONBLOCKING_BROKEN | |
347 | ACX_MKDIR_ONE_ARG | |
348 | AC_CHECK_FUNCS([strptime],[AC_CHECK_STRPTIME_WORKS],[AC_LIBOBJ([strptime])]) | |
349 | ||
350 | # set memory allocation checking if requested | |
351 | AC_ARG_ENABLE(alloc-checks, AC_HELP_STRING([--enable-alloc-checks], | |
352 | [ enable to memory allocation statistics, for debug purposes ]), | |
353 | , ) | |
354 | AC_ARG_ENABLE(alloc-lite, AC_HELP_STRING([--enable-alloc-lite], | |
355 | [ enable for lightweight alloc assertions, for debug purposes ]), | |
356 | , ) | |
357 | AC_ARG_ENABLE(alloc-nonregional, AC_HELP_STRING([--enable-alloc-nonregional], | |
358 | [ enable nonregional allocs, slow but exposes regional allocations to other memory purifiers, for debug purposes ]), | |
359 | , ) | |
360 | if test x_$enable_alloc_nonregional = x_yes; then | |
361 | AC_DEFINE(UNBOUND_ALLOC_NONREGIONAL, 1, [use malloc not regions, for debug use]) | |
362 | fi | |
363 | if test x_$enable_alloc_checks = x_yes; then | |
364 | AC_DEFINE(UNBOUND_ALLOC_STATS, 1, [use statistics for allocs and frees, for debug use]) | |
365 | else | |
366 | if test x_$enable_alloc_lite = x_yes; then | |
367 | AC_DEFINE(UNBOUND_ALLOC_LITE, 1, [use to enable lightweight alloc assertions, for debug use]) | |
368 | else | |
369 | ACX_FUNC_MALLOC([unbound]) | |
370 | fi | |
371 | fi | |
372 | ||
373 | # check windows threads (we use them, not pthreads, on windows). | |
374 | if test "$on_mingw" = "yes"; then | |
375 | # check windows threads | |
376 | AC_CHECK_HEADERS([windows.h],,, [AC_INCLUDES_DEFAULT]) | |
377 | AC_MSG_CHECKING([for CreateThread]) | |
378 | AC_COMPILE_IFELSE([AC_LANG_PROGRAM([ | |
379 | #ifdef HAVE_WINDOWS_H | |
380 | #include <windows.h> | |
381 | #endif | |
382 | ], [ | |
383 | HANDLE t = CreateThread(NULL, 0, NULL, NULL, 0, NULL); | |
384 | ])], | |
385 | AC_MSG_RESULT(yes) | |
386 | AC_DEFINE(HAVE_WINDOWS_THREADS, 1, [Using Windows threads]) | |
387 | , | |
388 | AC_MSG_RESULT(no) | |
389 | ) | |
390 | ||
391 | else | |
392 | # not on mingw, check thread libraries. | |
393 | ||
394 | # check for thread library. | |
395 | # check this first, so that the pthread lib does not get linked in via | |
396 | # libssl or libpython, and thus distorts the tests, and we end up using | |
397 | # the non-threadsafe C libraries. | |
398 | AC_ARG_WITH(pthreads, AC_HELP_STRING([--with-pthreads], | |
399 | [use pthreads library, or --without-pthreads to disable threading support.]), | |
400 | [ ],[ withval="yes" ]) | |
401 | ub_have_pthreads=no | |
402 | if test x_$withval != x_no; then | |
403 | AX_PTHREAD([ | |
404 | AC_DEFINE(HAVE_PTHREAD,1,[Define if you have POSIX threads libraries and header files.]) | |
405 | LIBS="$PTHREAD_LIBS $LIBS" | |
406 | CFLAGS="$CFLAGS $PTHREAD_CFLAGS" | |
407 | CC="$PTHREAD_CC" | |
408 | ub_have_pthreads=yes | |
409 | AC_CHECK_TYPES([pthread_spinlock_t, pthread_rwlock_t],,,[#include <pthread.h>]) | |
410 | ]) | |
411 | fi | |
412 | ||
413 | # check solaris thread library | |
414 | AC_ARG_WITH(solaris-threads, AC_HELP_STRING([--with-solaris-threads], | |
415 | [use solaris native thread library.]), [ ],[ withval="no" ]) | |
416 | ub_have_sol_threads=no | |
417 | if test x_$withval != x_no; then | |
418 | if test x_$ub_have_pthreads != x_no; then | |
419 | AC_WARN([Have pthreads already, ignoring --with-solaris-threads]) | |
420 | else | |
421 | AC_SEARCH_LIBS(thr_create, [thread], | |
422 | [ | |
423 | AC_DEFINE(HAVE_SOLARIS_THREADS, 1, [Using Solaris threads]) | |
424 | ||
425 | ACX_CHECK_COMPILER_FLAG(mt, [CFLAGS="$CFLAGS -mt"], | |
426 | [CFLAGS="$CFLAGS -D_REENTRANT"]) | |
427 | ub_have_sol_threads=yes | |
428 | ] , [ | |
429 | AC_ERROR([no solaris threads found.]) | |
430 | ]) | |
431 | fi | |
432 | fi | |
433 | ||
434 | fi # end of non-mingw check of thread libraries | |
435 | ||
436 | # Check for PyUnbound | |
437 | AC_ARG_WITH(pyunbound, | |
438 | AC_HELP_STRING([--with-pyunbound], | |
439 | [build PyUnbound, or --without-pyunbound to skip it. (default=no)]), | |
440 | [], [ withval="no" ]) | |
441 | ||
442 | ub_test_python=no | |
443 | ub_with_pyunbound=no | |
444 | if test x_$withval != x_no; then | |
445 | ub_with_pyunbound=yes | |
446 | ub_test_python=yes | |
447 | fi | |
448 | ||
449 | # Check for Python module | |
450 | AC_ARG_WITH(pythonmodule, | |
451 | AC_HELP_STRING([--with-pythonmodule], | |
452 | [build Python module, or --without-pythonmodule to disable script engine. (default=no)]), | |
453 | [], [ withval="no" ]) | |
454 | ||
455 | ub_with_pythonmod=no | |
456 | if test x_$withval != x_no; then | |
457 | ub_with_pythonmod=yes | |
458 | ub_test_python=yes | |
459 | fi | |
460 | ||
461 | # Check for Python & SWIG only on PyUnbound or PyModule | |
462 | if test x_$ub_test_python != x_no; then | |
463 | ||
464 | # Check for Python | |
465 | ub_have_python=no | |
466 | ac_save_LIBS="$LIBS" dnl otherwise AC_PYTHON_DEVEL thrashes $LIBS | |
467 | AC_PYTHON_DEVEL | |
468 | if test ! -z "$PYTHON_VERSION"; then | |
469 | if test `$PYTHON -c "print('$PYTHON_VERSION' >= '2.4.0')"` = "False"; then | |
470 | AC_ERROR([Python version >= 2.4.0 is required]) | |
471 | fi | |
472 | ||
473 | # Have Python | |
474 | AC_DEFINE(HAVE_PYTHON,1,[Define if you have Python libraries and header files.]) | |
475 | LIBS="$PYTHON_LDFLAGS $LIBS" | |
476 | CPPFLAGS="$CPPFLAGS $PYTHON_CPPFLAGS" | |
477 | ub_have_python=yes | |
478 | ||
479 | # Check for SWIG | |
480 | ub_have_swig=no | |
481 | AC_PROG_SWIG | |
482 | AC_MSG_CHECKING(SWIG) | |
483 | if test ! -x "$SWIG"; then | |
484 | AC_ERROR([failed to find swig tool, install it, or do not build Python module and PyUnbound]) | |
485 | else | |
486 | AC_DEFINE(HAVE_SWIG, 1, [Define if you have Swig libraries and header files.]) | |
487 | AC_SUBST(swig, "$SWIG") | |
488 | AC_MSG_RESULT(present) | |
489 | ||
490 | # If have Python & SWIG | |
491 | # Declare PythonMod | |
492 | if test x_$ub_with_pythonmod != x_no; then | |
493 | AC_DEFINE(WITH_PYTHONMODULE, 1, [Define if you want Python module.]) | |
494 | WITH_PYTHONMODULE=yes | |
495 | AC_SUBST(WITH_PYTHONMODULE) | |
496 | PYTHONMOD_OBJ="pythonmod.lo pythonmod_utils.lo" | |
497 | AC_SUBST(PYTHONMOD_OBJ) | |
498 | PYTHONMOD_HEADER='$(srcdir)/pythonmod/pythonmod.h' | |
499 | AC_SUBST(PYTHONMOD_HEADER) | |
500 | PYTHONMOD_INSTALL=pythonmod-install | |
501 | AC_SUBST(PYTHONMOD_INSTALL) | |
502 | PYTHONMOD_UNINSTALL=pythonmod-uninstall | |
503 | AC_SUBST(PYTHONMOD_UNINSTALL) | |
504 | fi | |
505 | ||
506 | # Declare PyUnbound | |
507 | if test x_$ub_with_pyunbound != x_no; then | |
508 | AC_DEFINE(WITH_PYUNBOUND, 1, [Define if you want PyUnbound.]) | |
509 | WITH_PYUNBOUND=yes | |
510 | AC_SUBST(WITH_PYUNBOUND) | |
511 | PYUNBOUND_OBJ="libunbound_wrap.lo" | |
512 | AC_SUBST(PYUNBOUND_OBJ) | |
513 | PYUNBOUND_TARGET="_unbound.la" | |
514 | AC_SUBST(PYUNBOUND_TARGET) | |
515 | PYUNBOUND_INSTALL=pyunbound-install | |
516 | AC_SUBST(PYUNBOUND_INSTALL) | |
517 | PYUNBOUND_UNINSTALL=pyunbound-uninstall | |
518 | AC_SUBST(PYUNBOUND_UNINSTALL) | |
519 | fi | |
520 | fi | |
521 | else | |
522 | AC_MSG_RESULT([*** Python libraries not found, won't build PythonMod or PyUnbound ***]) | |
523 | ub_with_pyunbound=no | |
524 | ub_with_pythonmod=no | |
525 | fi | |
526 | fi | |
527 | ||
528 | if test "`uname`" = "NetBSD"; then | |
529 | NETBSD_LINTFLAGS='"-D__RENAME(x)=" -D_NETINET_IN_H_' | |
530 | AC_SUBST(NETBSD_LINTFLAGS) | |
531 | fi | |
532 | CONFIG_DATE=`date +%Y%m%d` | |
533 | AC_SUBST(CONFIG_DATE) | |
534 | ||
535 | # Checks for libraries. | |
536 | ||
537 | # libnss | |
538 | USE_NSS="no" | |
539 | AC_ARG_WITH([nss], AC_HELP_STRING([--with-nss=path], | |
540 | [use libnss instead of openssl, installed at path.]), | |
541 | [ | |
542 | USE_NSS="yes" | |
543 | AC_DEFINE(HAVE_NSS, 1, [Use libnss for crypto]) | |
544 | if test "$withval" != "" -a "$withval" != "yes"; then | |
545 | CPPFLAGS="$CPPFLAGS -I$withval/include/nss3" | |
546 | LDFLAGS="$LDFLAGS -L$withval/lib" | |
547 | ACX_RUNTIME_PATH_ADD([$withval/lib]) | |
548 | CPPFLAGS="-I$withval/include/nspr4 $CPPFLAGS" | |
549 | else | |
550 | CPPFLAGS="$CPPFLAGS -I/usr/include/nss3" | |
551 | CPPFLAGS="-I/usr/include/nspr4 $CPPFLAGS" | |
552 | fi | |
553 | LIBS="$LIBS -lnss3 -lnspr4" | |
554 | ] | |
555 | ) | |
556 | ||
557 | # openssl | |
558 | if test $USE_NSS = "no"; then | |
559 | ACX_WITH_SSL | |
560 | ACX_LIB_SSL | |
561 | AC_MSG_CHECKING([for LibreSSL]) | |
562 | if grep OPENSSL_VERSION_TEXT $ssldir/include/openssl/opensslv.h | grep "LibreSSL" >/dev/null; then | |
563 | AC_MSG_RESULT([yes]) | |
564 | AC_DEFINE([HAVE_LIBRESSL], [1], [Define if we have LibreSSL]) | |
565 | # libressl provides these compat functions, but they may also be | |
566 | # declared by the OS in libc. See if they have been declared. | |
567 | AC_CHECK_DECLS([strlcpy,strlcat,arc4random,arc4random_uniform]) | |
568 | else | |
569 | AC_MSG_RESULT([no]) | |
570 | fi | |
571 | AC_CHECK_HEADERS([openssl/conf.h],,, [AC_INCLUDES_DEFAULT]) | |
572 | AC_CHECK_HEADERS([openssl/engine.h],,, [AC_INCLUDES_DEFAULT]) | |
573 | AC_CHECK_FUNCS([OPENSSL_config EVP_sha1 EVP_sha256 EVP_sha512 FIPS_mode]) | |
574 | AC_CHECK_DECLS([SSL_COMP_get_compression_methods,sk_SSL_COMP_pop_free], [], [], [ | |
575 | AC_INCLUDES_DEFAULT | |
576 | #ifdef HAVE_OPENSSL_ERR_H | |
577 | #include <openssl/err.h> | |
578 | #endif | |
579 | ||
580 | #ifdef HAVE_OPENSSL_RAND_H | |
581 | #include <openssl/rand.h> | |
582 | #endif | |
583 | ||
584 | #ifdef HAVE_OPENSSL_CONF_H | |
585 | #include <openssl/conf.h> | |
586 | #endif | |
587 | ||
588 | #ifdef HAVE_OPENSSL_ENGINE_H | |
589 | #include <openssl/engine.h> | |
590 | #endif | |
591 | #include <openssl/ssl.h> | |
592 | #include <openssl/evp.h> | |
593 | ]) | |
594 | fi | |
595 | ||
596 | ||
597 | AC_ARG_ENABLE(sha2, AC_HELP_STRING([--disable-sha2], [Disable SHA256 and SHA512 RRSIG support])) | |
598 | case "$enable_sha2" in | |
599 | no) | |
600 | ;; | |
601 | yes|*) | |
602 | AC_DEFINE([USE_SHA2], [1], [Define this to enable SHA256 and SHA512 support.]) | |
603 | ;; | |
604 | esac | |
605 | ||
606 | # check wether gost also works | |
607 | AC_DEFUN([AC_CHECK_GOST_WORKS], | |
608 | [AC_REQUIRE([AC_PROG_CC]) | |
609 | AC_MSG_CHECKING([if GOST works]) | |
610 | if test c${cross_compiling} = cno; then | |
611 | BAKCFLAGS="$CFLAGS" | |
612 | if test -n "$ssldir"; then | |
613 | CFLAGS="$CFLAGS -Wl,-rpath,$ssldir/lib" | |
614 | fi | |
615 | AC_RUN_IFELSE([AC_LANG_SOURCE([[ | |
616 | #include <string.h> | |
617 | #include <openssl/ssl.h> | |
618 | #include <openssl/evp.h> | |
619 | #include <openssl/engine.h> | |
620 | #include <openssl/conf.h> | |
621 | /* routine to load gost (from sldns) */ | |
622 | int load_gost_id(void) | |
623 | { | |
624 | static int gost_id = 0; | |
625 | const EVP_PKEY_ASN1_METHOD* meth; | |
626 | ENGINE* e; | |
627 | ||
628 | if(gost_id) return gost_id; | |
629 | ||
630 | /* see if configuration loaded gost implementation from other engine*/ | |
631 | meth = EVP_PKEY_asn1_find_str(NULL, "gost2001", -1); | |
632 | if(meth) { | |
633 | EVP_PKEY_asn1_get0_info(&gost_id, NULL, NULL, NULL, NULL, meth); | |
634 | return gost_id; | |
635 | } | |
636 | ||
637 | /* see if engine can be loaded already */ | |
638 | e = ENGINE_by_id("gost"); | |
639 | if(!e) { | |
640 | /* load it ourself, in case statically linked */ | |
641 | ENGINE_load_builtin_engines(); | |
642 | ENGINE_load_dynamic(); | |
643 | e = ENGINE_by_id("gost"); | |
644 | } | |
645 | if(!e) { | |
646 | /* no gost engine in openssl */ | |
647 | return 0; | |
648 | } | |
649 | if(!ENGINE_set_default(e, ENGINE_METHOD_ALL)) { | |
650 | ENGINE_finish(e); | |
651 | ENGINE_free(e); | |
652 | return 0; | |
653 | } | |
654 | ||
655 | meth = EVP_PKEY_asn1_find_str(&e, "gost2001", -1); | |
656 | if(!meth) { | |
657 | /* algo not found */ | |
658 | ENGINE_finish(e); | |
659 | ENGINE_free(e); | |
660 | return 0; | |
661 | } | |
662 | EVP_PKEY_asn1_get0_info(&gost_id, NULL, NULL, NULL, NULL, meth); | |
663 | return gost_id; | |
664 | } | |
665 | int main(void) { | |
666 | EVP_MD_CTX* ctx; | |
667 | const EVP_MD* md; | |
668 | unsigned char digest[64]; /* its a 256-bit digest, so uses 32 bytes */ | |
669 | const char* str = "Hello world"; | |
670 | const unsigned char check[] = { | |
671 | 0x40 , 0xed , 0xf8 , 0x56 , 0x5a , 0xc5 , 0x36 , 0xe1 , | |
672 | 0x33 , 0x7c , 0x7e , 0x87 , 0x62 , 0x1c , 0x42 , 0xe0 , | |
673 | 0x17 , 0x1b , 0x5e , 0xce , 0xa8 , 0x46 , 0x65 , 0x4d , | |
674 | 0x8d , 0x3e , 0x22 , 0x9b , 0xe1 , 0x30 , 0x19 , 0x9d | |
675 | }; | |
676 | OPENSSL_config(NULL); | |
677 | (void)load_gost_id(); | |
678 | md = EVP_get_digestbyname("md_gost94"); | |
679 | if(!md) return 1; | |
680 | memset(digest, 0, sizeof(digest)); | |
681 | ctx = EVP_MD_CTX_create(); | |
682 | if(!ctx) return 2; | |
683 | if(!EVP_DigestInit_ex(ctx, md, NULL)) return 3; | |
684 | if(!EVP_DigestUpdate(ctx, str, 10)) return 4; | |
685 | if(!EVP_DigestFinal_ex(ctx, digest, NULL)) return 5; | |
686 | /* uncomment to see the hash calculated. | |
687 | {int i; | |
688 | for(i=0; i<32; i++) | |
689 | printf(" %2.2x", (int)digest[i]); | |
690 | printf("\n");} | |
691 | */ | |
692 | if(memcmp(digest, check, sizeof(check)) != 0) | |
693 | return 6; | |
694 | return 0; | |
695 | } | |
696 | ]])] , [eval "ac_cv_c_gost_works=yes"], [eval "ac_cv_c_gost_works=no"]) | |
697 | CFLAGS="$BAKCFLAGS" | |
698 | else | |
699 | eval "ac_cv_c_gost_works=maybe" | |
700 | fi | |
701 | AC_MSG_RESULT($ac_cv_c_gost_works) | |
702 | ])dnl | |
703 | ||
704 | AC_ARG_ENABLE(gost, AC_HELP_STRING([--disable-gost], [Disable GOST support])) | |
705 | use_gost="no" | |
706 | if test $USE_NSS = "no"; then | |
707 | case "$enable_gost" in | |
708 | no) | |
709 | ;; | |
710 | *) | |
711 | AC_CHECK_FUNC(EVP_PKEY_set_type_str, [:],[AC_MSG_ERROR([OpenSSL 1.0.0 is needed for GOST support])]) | |
712 | AC_CHECK_FUNC(EC_KEY_new, [], [AC_MSG_ERROR([OpenSSL does not support ECC, needed for GOST support])]) | |
713 | AC_CHECK_GOST_WORKS | |
714 | if test "$ac_cv_c_gost_works" != no; then | |
715 | use_gost="yes" | |
716 | AC_DEFINE([USE_GOST], [1], [Define this to enable GOST support.]) | |
717 | fi | |
718 | ;; | |
719 | esac | |
720 | fi dnl !USE_NSS | |
721 | ||
722 | AC_ARG_ENABLE(ecdsa, AC_HELP_STRING([--disable-ecdsa], [Disable ECDSA support])) | |
723 | use_ecdsa="no" | |
724 | case "$enable_ecdsa" in | |
725 | no) | |
726 | ;; | |
727 | *) | |
728 | if test $USE_NSS = "no"; then | |
729 | AC_CHECK_FUNC(ECDSA_sign, [], [AC_MSG_ERROR([OpenSSL does not support ECDSA: please upgrade or rerun with --disable-ecdsa])]) | |
730 | AC_CHECK_FUNC(SHA384_Init, [], [AC_MSG_ERROR([OpenSSL does not support SHA384: please upgrade or rerun with --disable-ecdsa])]) | |
731 | AC_CHECK_DECLS([NID_X9_62_prime256v1, NID_secp384r1], [], [AC_MSG_ERROR([OpenSSL does not support the ECDSA curves: please upgrade or rerun with --disable-ecdsa])], [AC_INCLUDES_DEFAULT | |
732 | #include <openssl/evp.h> | |
733 | ]) | |
734 | # see if OPENSSL 1.0.0 or later (has EVP MD and Verify independency) | |
735 | AC_MSG_CHECKING([if openssl supports SHA2 and ECDSA with EVP]) | |
736 | if grep OPENSSL_VERSION_TEXT $ssldir/include/openssl/opensslv.h | grep "OpenSSL" >/dev/null; then | |
737 | if grep OPENSSL_VERSION_NUMBER $ssldir/include/openssl/opensslv.h | grep 0x0 >/dev/null; then | |
738 | AC_MSG_RESULT([no]) | |
739 | AC_DEFINE_UNQUOTED([USE_ECDSA_EVP_WORKAROUND], [1], [Define this to enable an EVP workaround for older openssl]) | |
740 | else | |
741 | AC_MSG_RESULT([yes]) | |
742 | fi | |
743 | else | |
744 | # not OpenSSL, thus likely LibreSSL, which supports it | |
745 | AC_MSG_RESULT([yes]) | |
746 | fi | |
747 | fi | |
748 | # we now know we have ECDSA and the required curves. | |
749 | AC_DEFINE_UNQUOTED([USE_ECDSA], [1], [Define this to enable ECDSA support.]) | |
750 | use_ecdsa="yes" | |
751 | ;; | |
752 | esac | |
753 | ||
754 | AC_ARG_ENABLE(event-api, AC_HELP_STRING([--enable-event-api], [Enable (experimental) libevent-based libunbound API installed to unbound-event.h])) | |
755 | use_unbound_event="no" | |
756 | case "$enable_event_api" in | |
757 | yes) | |
758 | use_unbound_event="yes" | |
759 | ;; | |
760 | *) | |
761 | ;; | |
762 | esac | |
763 | ||
764 | # check for libevent | |
765 | AC_ARG_WITH(libevent, AC_HELP_STRING([--with-libevent=pathname], | |
766 | [use libevent (will check /usr/local /opt/local /usr/lib /usr/pkg /usr/sfw /usr or you can specify an explicit path). Slower, but allows use of large outgoing port ranges.]), | |
767 | [ ],[ withval="no" ]) | |
768 | if test x_$withval = x_yes -o x_$withval != x_no; then | |
769 | AC_MSG_CHECKING(for libevent) | |
770 | if test x_$withval = x_ -o x_$withval = x_yes; then | |
771 | withval="/usr/local /opt/local /usr/lib /usr/pkg /usr/sfw /usr" | |
772 | fi | |
773 | for dir in $withval; do | |
774 | thedir="$dir" | |
775 | if test -f "$dir/include/event.h" -o -f "$dir/include/event2/event.h"; then | |
776 | found_libevent="yes" | |
777 | dnl assume /usr is in default path. | |
778 | if test "$thedir" != "/usr"; then | |
779 | CPPFLAGS="$CPPFLAGS -I$thedir/include" | |
780 | fi | |
781 | break; | |
782 | fi | |
783 | done | |
784 | if test x_$found_libevent != x_yes; then | |
785 | if test -f "$dir/event.h" -a \( -f "$dir/libevent.la" -o -f "$dir/libev.la" \) ; then | |
786 | # libevent source directory | |
787 | AC_MSG_RESULT(found in $thedir) | |
788 | CPPFLAGS="$CPPFLAGS -I$thedir -I$thedir/include" | |
789 | BAK_LDFLAGS_SET="1" | |
790 | BAK_LDFLAGS="$LDFLAGS" | |
791 | # remove evdns from linking | |
792 | mkdir build >/dev/null 2>&1 | |
793 | mkdir build/libevent >/dev/null 2>&1 | |
794 | mkdir build/libevent/.libs >/dev/null 2>&1 | |
795 | ev_files_o=`ls $thedir/*.o | grep -v evdns\.o | grep -v bufferevent_openssl\.o` | |
796 | ev_files_lo=`ls $thedir/*.lo | grep -v evdns\.lo | grep -v bufferevent_openssl\.lo` | |
797 | ev_files_libso=`ls $thedir/.libs/*.o | grep -v evdns\.o | grep -v bufferevent_openssl\.o` | |
798 | cp $ev_files_o build/libevent | |
799 | cp $ev_files_lo build/libevent | |
800 | cp $ev_files_libso build/libevent/.libs | |
801 | LATE_LDFLAGS="build/libevent/*.lo -lm" | |
802 | LDFLAGS="build/libevent/*.o $LDFLAGS -lm" | |
803 | else | |
804 | AC_MSG_ERROR([Cannot find the libevent library in $withval | |
805 | You can restart ./configure --with-libevent=no to use a builtin alternative. | |
806 | Please note that this alternative is not as capable as libevent when using | |
807 | large outgoing port ranges. ]) | |
808 | fi | |
809 | else | |
810 | AC_MSG_RESULT(found in $thedir) | |
811 | dnl if event2 exists and no event lib in dir itself, use subdir | |
812 | if test ! -f $thedir/lib/libevent.a -a ! -f $thedir/lib/libevent.so -a -d "$thedir/lib/event2"; then | |
813 | LDFLAGS="$LDFLAGS -L$thedir/lib/event2" | |
814 | ACX_RUNTIME_PATH_ADD([$thedir/lib/event2]) | |
815 | else | |
816 | dnl assume /usr is in default path, do not add "". | |
817 | if test "$thedir" != "/usr" -a "$thedir" != ""; then | |
818 | LDFLAGS="$LDFLAGS -L$thedir/lib" | |
819 | ACX_RUNTIME_PATH_ADD([$thedir/lib]) | |
820 | fi | |
821 | fi | |
822 | fi | |
823 | # check for library used by libevent after 1.3c | |
824 | AC_SEARCH_LIBS([clock_gettime], [rt]) | |
825 | ||
826 | # is the event.h header libev or libevent? | |
827 | AC_CHECK_HEADERS([event.h],,, [AC_INCLUDES_DEFAULT]) | |
828 | AC_CHECK_DECL(EV_VERSION_MAJOR, [ | |
829 | AC_SEARCH_LIBS(event_set, [ev]) | |
830 | ],[ | |
831 | AC_SEARCH_LIBS(event_set, [event]) | |
832 | ],[AC_INCLUDES_DEFAULT | |
833 | #include <event.h> | |
834 | ]) | |
835 | AC_CHECK_FUNCS([event_base_free]) # only in libevent 1.2 and later | |
836 | AC_CHECK_FUNCS([event_base_once]) # only in libevent 1.4.1 and later | |
837 | AC_CHECK_FUNCS([event_base_new]) # only in libevent 1.4.1 and later | |
838 | AC_CHECK_FUNCS([event_base_get_method]) # only in libevent 1.4.3 and later | |
839 | AC_CHECK_FUNCS([ev_loop]) # only in libev. (tested on 3.51) | |
840 | AC_CHECK_FUNCS([ev_default_loop]) # only in libev. (tested on 4.00) | |
841 | if test -n "$BAK_LDFLAGS_SET"; then | |
842 | LDFLAGS="$BAK_LDFLAGS" | |
843 | fi | |
844 | if test "$use_unbound_event" = "yes"; then | |
845 | AC_SUBST(UNBOUND_EVENT_INSTALL, [unbound-event-install]) | |
846 | AC_SUBST(UNBOUND_EVENT_UNINSTALL, [unbound-event-uninstall]) | |
847 | fi | |
848 | else | |
849 | AC_DEFINE(USE_MINI_EVENT, 1, [Define if you want to use internal select based events]) | |
850 | fi | |
851 | ||
852 | # check for libexpat | |
853 | AC_ARG_WITH(libexpat, AC_HELP_STRING([--with-libexpat=path], | |
854 | [specify explicit path for libexpat.]), | |
855 | [ ],[ withval="/usr/local /opt/local /usr/lib /usr/pkg /usr/sfw /usr" ]) | |
856 | AC_MSG_CHECKING(for libexpat) | |
857 | found_libexpat="no" | |
858 | for dir in $withval ; do | |
859 | if test -f "$dir/include/expat.h"; then | |
860 | found_libexpat="yes" | |
861 | dnl assume /usr is in default path. | |
862 | if test "$dir" != "/usr"; then | |
863 | CPPFLAGS="$CPPFLAGS -I$dir/include" | |
864 | LDFLAGS="$LDFLAGS -L$dir/lib" | |
865 | fi | |
866 | AC_MSG_RESULT(found in $dir) | |
867 | break; | |
868 | fi | |
869 | done | |
870 | if test x_$found_libexpat != x_yes; then | |
871 | AC_ERROR([Could not find libexpat, expat.h]) | |
872 | fi | |
873 | AC_CHECK_HEADERS([expat.h],,, [AC_INCLUDES_DEFAULT]) | |
874 | ||
875 | # set static linking if requested | |
876 | AC_SUBST(staticexe) | |
877 | staticexe="" | |
878 | AC_ARG_ENABLE(static-exe, AC_HELP_STRING([--enable-static-exe], | |
879 | [ enable to compile executables statically against (event) libs, for debug purposes ]), | |
880 | , ) | |
881 | if test x_$enable_static_exe = x_yes; then | |
882 | staticexe="-static" | |
883 | if test "$on_mingw" = yes; then | |
884 | staticexe="-all-static" | |
885 | # for static crosscompile, include gdi32 and zlib here. | |
886 | if test "`uname`" = "Linux"; then | |
887 | LIBS="$LIBS -lgdi32 -lz" | |
888 | fi | |
889 | fi | |
890 | fi | |
891 | ||
892 | # set lock checking if requested | |
893 | AC_ARG_ENABLE(lock_checks, AC_HELP_STRING([--enable-lock-checks], | |
894 | [ enable to check lock and unlock calls, for debug purposes ]), | |
895 | , ) | |
896 | if test x_$enable_lock_checks = x_yes; then | |
897 | AC_DEFINE(ENABLE_LOCK_CHECKS, 1, [Define if you want to use debug lock checking (slow).]) | |
898 | CHECKLOCK_OBJ="checklocks.lo" | |
899 | AC_SUBST(CHECKLOCK_OBJ) | |
900 | fi | |
901 | ||
902 | ACX_CHECK_GETADDRINFO_WITH_INCLUDES | |
903 | if test "$USE_WINSOCK" = 1; then | |
904 | AC_DEFINE(UB_ON_WINDOWS, 1, [Use win32 resources and API]) | |
905 | AC_CHECK_HEADERS([iphlpapi.h],,, [AC_INCLUDES_DEFAULT | |
906 | #include <windows.h> | |
907 | ]) | |
908 | AC_CHECK_TOOL(WINDRES, windres) | |
909 | LIBS="$LIBS -liphlpapi" | |
910 | WINAPPS="unbound-service-install.exe unbound-service-remove.exe anchor-update.exe" | |
911 | AC_SUBST(WINAPPS) | |
912 | WIN_DAEMON_SRC="winrc/win_svc.c winrc/w_inst.c" | |
913 | AC_SUBST(WIN_DAEMON_SRC) | |
914 | WIN_DAEMON_OBJ="win_svc.lo w_inst.lo" | |
915 | AC_SUBST(WIN_DAEMON_OBJ) | |
916 | WIN_DAEMON_OBJ_LINK="rsrc_unbound.o" | |
917 | AC_SUBST(WIN_DAEMON_OBJ_LINK) | |
918 | WIN_HOST_OBJ_LINK="rsrc_unbound_host.o" | |
919 | AC_SUBST(WIN_HOST_OBJ_LINK) | |
920 | WIN_UBANCHOR_OBJ_LINK="rsrc_unbound_anchor.o log.lo locks.lo" | |
921 | AC_SUBST(WIN_UBANCHOR_OBJ_LINK) | |
922 | WIN_CONTROL_OBJ_LINK="rsrc_unbound_control.o" | |
923 | AC_SUBST(WIN_CONTROL_OBJ_LINK) | |
924 | WIN_CHECKCONF_OBJ_LINK="rsrc_unbound_checkconf.o" | |
925 | AC_SUBST(WIN_CHECKCONF_OBJ_LINK) | |
926 | fi | |
927 | if test $ac_cv_func_getaddrinfo = no; then | |
928 | AC_LIBOBJ([fake-rfc2553]) | |
929 | fi | |
930 | # check after getaddrinfo for its libraries | |
931 | ACX_FUNC_IOCTLSOCKET | |
932 | ||
933 | # see if daemon(3) exists, and if it is deprecated. | |
934 | AC_CHECK_FUNCS([daemon]) | |
935 | if test $ac_cv_func_daemon = yes; then | |
936 | ACX_FUNC_DEPRECATED([daemon], [(void)daemon(0, 0);], [ | |
937 | #include <stdlib.h> | |
938 | ]) | |
939 | fi | |
940 | ||
941 | AC_CHECK_MEMBERS([struct in_pktinfo.ipi_spec_dst],,,[ | |
942 | AC_INCLUDES_DEFAULT | |
943 | #if HAVE_SYS_PARAM_H | |
944 | #include <sys/param.h> | |
945 | #endif | |
946 | ||
947 | #ifdef HAVE_SYS_SOCKET_H | |
948 | #include <sys/socket.h> | |
949 | #endif | |
950 | ||
951 | #ifdef HAVE_SYS_UIO_H | |
952 | #include <sys/uio.h> | |
953 | #endif | |
954 | ||
955 | #ifdef HAVE_NETINET_IN_H | |
956 | #include <netinet/in.h> | |
957 | #endif | |
958 | ||
959 | #ifdef HAVE_ARPA_INET_H | |
960 | #include <arpa/inet.h> | |
961 | #endif | |
962 | ||
963 | #ifdef HAVE_WINSOCK2_H | |
964 | #include <winsock2.h> | |
965 | #endif | |
966 | ||
967 | #ifdef HAVE_WS2TCPIP_H | |
968 | #include <ws2tcpip.h> | |
969 | #endif | |
970 | ]) | |
971 | AC_SEARCH_LIBS([setusercontext], [util]) | |
972 | AC_CHECK_FUNCS([tzset sigprocmask fcntl getpwnam getrlimit setrlimit setsid sbrk chroot kill sleep usleep random srandom recvmsg sendmsg writev socketpair glob initgroups strftime localtime_r setusercontext _beginthreadex endservent endprotoent]) | |
973 | AC_CHECK_FUNCS([setresuid],,[AC_CHECK_FUNCS([setreuid])]) | |
974 | AC_CHECK_FUNCS([setresgid],,[AC_CHECK_FUNCS([setregid])]) | |
975 | ||
976 | # check if setreuid en setregid fail, on MacOSX10.4(darwin8). | |
977 | if echo $build_os | grep darwin8 > /dev/null; then | |
978 | AC_DEFINE(DARWIN_BROKEN_SETREUID, 1, [Define this if on macOSX10.4-darwin8 and setreuid and setregid do not work]) | |
979 | fi | |
980 | AC_REPLACE_FUNCS(inet_aton) | |
981 | AC_REPLACE_FUNCS(inet_pton) | |
982 | AC_REPLACE_FUNCS(inet_ntop) | |
983 | AC_REPLACE_FUNCS(snprintf) | |
984 | AC_REPLACE_FUNCS(strlcat) | |
985 | AC_REPLACE_FUNCS(strlcpy) | |
986 | AC_REPLACE_FUNCS(memmove) | |
987 | AC_REPLACE_FUNCS(gmtime_r) | |
988 | LIBOBJ_WITHOUT_CTIMEARC4="$LIBOBJS" | |
989 | AC_SUBST(LIBOBJ_WITHOUT_CTIMEARC4) | |
990 | if test "$USE_NSS" = "no"; then | |
991 | AC_REPLACE_FUNCS(arc4random) | |
992 | AC_REPLACE_FUNCS(arc4random_uniform) | |
993 | if test "$ac_cv_func_arc4random" = "no"; then | |
994 | AC_LIBOBJ(explicit_bzero) | |
995 | AC_LIBOBJ(arc4_lock) | |
996 | AC_CHECK_FUNCS([getentropy],,[ | |
997 | if test "$USE_WINSOCK" = 1; then | |
998 | AC_LIBOBJ(getentropy_win) | |
999 | else | |
1000 | case `uname` in | |
1001 | Darwin) | |
1002 | AC_LIBOBJ(getentropy_osx) | |
1003 | ;; | |
1004 | SunOS) | |
1005 | AC_LIBOBJ(getentropy_solaris) | |
1006 | AC_CHECK_HEADERS([sys/sha2.h],, [ | |
1007 | AC_CHECK_FUNCS([SHA512_Update],,[ | |
1008 | AC_LIBOBJ(sha512) | |
1009 | ]) | |
1010 | ], [AC_INCLUDES_DEFAULT]) | |
1011 | if test "$ac_cv_header_sys_sha2_h" = "yes"; then | |
1012 | # this lib needed for sha2 on solaris | |
1013 | LIBS="$LIBS -lmd" | |
1014 | fi | |
1015 | ;; | |
1016 | Linux|*) | |
1017 | AC_LIBOBJ(getentropy_linux) | |
1018 | AC_CHECK_FUNCS([SHA512_Update],,[ | |
1019 | AC_DEFINE([COMPAT_SHA512], [1], [Do sha512 definitions in config.h]) | |
1020 | AC_LIBOBJ(sha512) | |
1021 | ]) | |
1022 | AC_CHECK_HEADERS([sys/sysctl.h],,, [AC_INCLUDES_DEFAULT]) | |
1023 | AC_SEARCH_LIBS([clock_gettime], [rt]) | |
1024 | ;; | |
1025 | esac | |
1026 | fi | |
1027 | ]) | |
1028 | fi | |
1029 | fi | |
1030 | LIBOBJ_WITHOUT_CTIME="$LIBOBJS" | |
1031 | AC_SUBST(LIBOBJ_WITHOUT_CTIME) | |
1032 | AC_REPLACE_FUNCS(ctime_r) | |
1033 | ||
1034 | AC_ARG_ENABLE(allsymbols, AC_HELP_STRING([--enable-allsymbols], [export all symbols from libunbound and link binaries to it, smaller install size but libunbound export table is polluted by internal symbols])) | |
1035 | case "$enable_allsymbols" in | |
1036 | yes) | |
1037 | COMMON_OBJ_ALL_SYMBOLS="" | |
1038 | UBSYMS="" | |
1039 | EXTRALINK="-L. -L.libs -lunbound" | |
1040 | AC_DEFINE(EXPORT_ALL_SYMBOLS, 1, [Define this if you enabled-allsymbols from libunbound to link binaries to it for smaller install size, but the libunbound export table is polluted by internal symbols]) | |
1041 | ;; | |
1042 | no|*) | |
1043 | COMMON_OBJ_ALL_SYMBOLS='$(COMMON_OBJ)' | |
1044 | UBSYMS='-export-symbols $(srcdir)/libunbound/ubsyms.def' | |
1045 | EXTRALINK="" | |
1046 | ;; | |
1047 | esac | |
1048 | AC_SUBST(COMMON_OBJ_ALL_SYMBOLS) | |
1049 | AC_SUBST(EXTRALINK) | |
1050 | AC_SUBST(UBSYMS) | |
1051 | if test x_$enable_lock_checks = x_yes; then | |
1052 | UBSYMS="-export-symbols clubsyms.def" | |
1053 | cp ${srcdir}/libunbound/ubsyms.def clubsyms.def | |
1054 | echo lock_protect >> clubsyms.def | |
1055 | echo lock_unprotect >> clubsyms.def | |
1056 | echo lock_get_mem >> clubsyms.def | |
1057 | echo checklock_start >> clubsyms.def | |
1058 | echo checklock_stop >> clubsyms.def | |
1059 | echo checklock_lock >> clubsyms.def | |
1060 | echo checklock_unlock >> clubsyms.def | |
1061 | echo checklock_init >> clubsyms.def | |
1062 | echo checklock_thrcreate >> clubsyms.def | |
1063 | echo checklock_thrjoin >> clubsyms.def | |
1064 | fi | |
1065 | ||
1066 | # check for dnstap if requested | |
1067 | dt_DNSTAP([$UNBOUND_RUN_DIR/dnstap.sock], | |
1068 | [ | |
1069 | AC_DEFINE([USE_DNSTAP], [1], [Define to 1 to enable dnstap support]) | |
1070 | AC_SUBST([ENABLE_DNSTAP], [1]) | |
1071 | ||
1072 | AC_SUBST([opt_dnstap_socket_path]) | |
1073 | ACX_ESCAPE_BACKSLASH($opt_dnstap_socket_path, hdr_dnstap_socket_path) | |
1074 | AC_DEFINE_UNQUOTED(DNSTAP_SOCKET_PATH, | |
1075 | ["$hdr_dnstap_socket_path"], [default dnstap socket path]) | |
1076 | ||
1077 | AC_SUBST([DNSTAP_SRC], ["dnstap/dnstap.c dnstap/dnstap.pb-c.c"]) | |
1078 | AC_SUBST([DNSTAP_OBJ], ["dnstap.lo dnstap.pb-c.lo"]) | |
1079 | ], | |
1080 | [ | |
1081 | AC_SUBST([ENABLE_DNSTAP], [0]) | |
1082 | ] | |
1083 | ) | |
1084 | ||
1085 | AC_MSG_CHECKING([if ${MAKE:-make} supports $< with implicit rule in scope]) | |
1086 | # on openBSD, the implicit rule make $< work. | |
1087 | # on Solaris, it does not work ($? is changed sources, $^ lists dependencies). | |
1088 | # gmake works. | |
1089 | cat >conftest.make <<EOF | |
1090 | all: conftest.lo | |
1091 | ||
1092 | conftest.lo foo.lo bla.lo: | |
1093 | if test -f "\$<"; then touch \$@; fi | |
1094 | ||
1095 | .SUFFIXES: .lo | |
1096 | .c.lo: | |
1097 | if test -f "\$<"; then touch \$@; fi | |
1098 | ||
1099 | conftest.lo: conftest.dir/conftest.c | |
1100 | EOF | |
1101 | mkdir conftest.dir | |
1102 | touch conftest.dir/conftest.c | |
1103 | rm -f conftest.lo conftest.c | |
1104 | ${MAKE:-make} -f conftest.make >/dev/null | |
1105 | rm -f conftest.make conftest.c conftest.dir/conftest.c | |
1106 | rm -rf conftest.dir | |
1107 | if test ! -f conftest.lo; then | |
1108 | AC_MSG_RESULT(no) | |
1109 | SOURCEDETERMINE='echo "$^" | awk "-F " "{print \$$1;}" > .source' | |
1110 | SOURCEFILE='`cat .source`' | |
1111 | else | |
1112 | AC_MSG_RESULT(yes) | |
1113 | SOURCEDETERMINE=':' | |
1114 | SOURCEFILE='$<' | |
1115 | fi | |
1116 | rm -f conftest.lo | |
1117 | AC_SUBST(SOURCEDETERMINE) | |
1118 | AC_SUBST(SOURCEFILE) | |
1119 | ||
1120 | # see if we want to build the library or everything | |
1121 | ALLTARGET="alltargets" | |
1122 | INSTALLTARGET="install-all" | |
1123 | AC_ARG_WITH(libunbound-only, AC_HELP_STRING([--with-libunbound-only], | |
1124 | [do not build daemon and tool programs]), | |
1125 | [ | |
1126 | if test "$withval" = "yes"; then | |
1127 | ALLTARGET="lib" | |
1128 | INSTALLTARGET="install-lib" | |
1129 | fi | |
1130 | ]) | |
1131 | AC_SUBST(ALLTARGET) | |
1132 | AC_SUBST(INSTALLTARGET) | |
1133 | ||
1134 | ACX_STRIP_EXT_FLAGS | |
1135 | LDFLAGS="$LATE_LDFLAGS $LDFLAGS" | |
1136 | ||
1137 | AC_DEFINE_UNQUOTED([MAXSYSLOGMSGLEN], [10240], [Define to the maximum message length to pass to syslog.]) | |
1138 | ||
1139 | AH_BOTTOM( | |
1140 | dnl this must be first AH_CONFIG, to define the flags before any includes. | |
1141 | AHX_CONFIG_EXT_FLAGS | |
1142 | ||
1143 | dnl includes | |
1144 | [ | |
1145 | #ifndef UNBOUND_DEBUG | |
1146 | # define NDEBUG | |
1147 | #endif | |
1148 | ||
1149 | /** Use small-ldns codebase */ | |
1150 | #define USE_SLDNS 1 | |
1151 | #ifdef HAVE_SSL | |
1152 | # define LDNS_BUILD_CONFIG_HAVE_SSL 1 | |
1153 | #endif | |
1154 | ||
1155 | #include <stdio.h> | |
1156 | #include <string.h> | |
1157 | #include <unistd.h> | |
1158 | #include <assert.h> | |
1159 | ||
1160 | #if STDC_HEADERS | |
1161 | #include <stdlib.h> | |
1162 | #include <stddef.h> | |
1163 | #endif | |
1164 | ||
1165 | #ifdef HAVE_STDARG_H | |
1166 | #include <stdarg.h> | |
1167 | #endif | |
1168 | ||
1169 | #ifdef HAVE_STDINT_H | |
1170 | #include <stdint.h> | |
1171 | #endif | |
1172 | ||
1173 | #include <errno.h> | |
1174 | ||
1175 | #if HAVE_SYS_PARAM_H | |
1176 | #include <sys/param.h> | |
1177 | #endif | |
1178 | ||
1179 | #ifdef HAVE_SYS_SOCKET_H | |
1180 | #include <sys/socket.h> | |
1181 | #endif | |
1182 | ||
1183 | #ifdef HAVE_SYS_UIO_H | |
1184 | #include <sys/uio.h> | |
1185 | #endif | |
1186 | ||
1187 | #ifdef HAVE_NETINET_IN_H | |
1188 | #include <netinet/in.h> | |
1189 | #endif | |
1190 | ||
1191 | #ifdef HAVE_ARPA_INET_H | |
1192 | #include <arpa/inet.h> | |
1193 | #endif | |
1194 | ||
1195 | #ifdef HAVE_WINSOCK2_H | |
1196 | #include <winsock2.h> | |
1197 | #endif | |
1198 | ||
1199 | #ifdef HAVE_WS2TCPIP_H | |
1200 | #include <ws2tcpip.h> | |
1201 | #endif | |
1202 | ||
1203 | #ifndef USE_WINSOCK | |
1204 | #define ARG_LL "%ll" | |
1205 | #else | |
1206 | #define ARG_LL "%I64" | |
1207 | #endif | |
1208 | ] | |
1209 | ||
1210 | AHX_CONFIG_FORMAT_ATTRIBUTE | |
1211 | AHX_CONFIG_UNUSED_ATTRIBUTE | |
1212 | AHX_CONFIG_FSEEKO | |
1213 | AHX_CONFIG_MAXHOSTNAMELEN | |
1214 | AHX_CONFIG_SNPRINTF(unbound) | |
1215 | AHX_CONFIG_INET_PTON(unbound) | |
1216 | AHX_CONFIG_INET_NTOP(unbound) | |
1217 | AHX_CONFIG_INET_ATON(unbound) | |
1218 | AHX_CONFIG_MEMMOVE(unbound) | |
1219 | AHX_CONFIG_STRLCAT(unbound) | |
1220 | AHX_CONFIG_STRLCPY(unbound) | |
1221 | AHX_CONFIG_GMTIME_R(unbound) | |
1222 | AHX_CONFIG_W32_SLEEP | |
1223 | AHX_CONFIG_W32_USLEEP | |
1224 | AHX_CONFIG_W32_RANDOM | |
1225 | AHX_CONFIG_W32_SRANDOM | |
1226 | AHX_CONFIG_W32_FD_SET_T | |
1227 | AHX_CONFIG_IPV6_MIN_MTU | |
1228 | AHX_MEMCMP_BROKEN(unbound) | |
1229 | ||
1230 | [ | |
1231 | #ifndef HAVE_CTIME_R | |
1232 | #define ctime_r unbound_ctime_r | |
1233 | char *ctime_r(const time_t *timep, char *buf); | |
1234 | #endif | |
1235 | ||
1236 | #if !defined(HAVE_STRPTIME) || !defined(STRPTIME_WORKS) | |
1237 | #define strptime unbound_strptime | |
1238 | struct tm; | |
1239 | char *strptime(const char *s, const char *format, struct tm *tm); | |
1240 | #endif | |
1241 | ||
1242 | #ifdef HAVE_LIBRESSL | |
1243 | # if !HAVE_DECL_STRLCPY | |
1244 | size_t strlcpy(char *dst, const char *src, size_t siz); | |
1245 | # endif | |
1246 | # if !HAVE_DECL_STRLCAT | |
1247 | size_t strlcat(char *dst, const char *src, size_t siz); | |
1248 | # endif | |
1249 | # if !HAVE_DECL_ARC4RANDOM && defined(HAVE_ARC4RANDOM) | |
1250 | uint32_t arc4random(void); | |
1251 | # endif | |
1252 | # if !HAVE_DECL_ARC4RANDOM_UNIFORM && defined(HAVE_ARC4RANDOM_UNIFORM) | |
1253 | uint32_t arc4random_uniform(uint32_t upper_bound); | |
1254 | # endif | |
1255 | #endif /* HAVE_LIBRESSL */ | |
1256 | #ifndef HAVE_ARC4RANDOM | |
1257 | void explicit_bzero(void* buf, size_t len); | |
1258 | int getentropy(void* buf, size_t len); | |
1259 | uint32_t arc4random(void); | |
1260 | void arc4random_buf(void* buf, size_t n); | |
1261 | void _ARC4_LOCK(void); | |
1262 | void _ARC4_UNLOCK(void); | |
1263 | #endif | |
1264 | #ifndef HAVE_ARC4RANDOM_UNIFORM | |
1265 | uint32_t arc4random_uniform(uint32_t upper_bound); | |
1266 | #endif | |
1267 | #ifdef COMPAT_SHA512 | |
1268 | #ifndef SHA512_DIGEST_LENGTH | |
1269 | #define SHA512_BLOCK_LENGTH 128 | |
1270 | #define SHA512_DIGEST_LENGTH 64 | |
1271 | #define SHA512_DIGEST_STRING_LENGTH (SHA512_DIGEST_LENGTH * 2 + 1) | |
1272 | typedef struct _SHA512_CTX { | |
1273 | uint64_t state[8]; | |
1274 | uint64_t bitcount[2]; | |
1275 | uint8_t buffer[SHA512_BLOCK_LENGTH]; | |
1276 | } SHA512_CTX; | |
1277 | #endif /* SHA512_DIGEST_LENGTH */ | |
1278 | void SHA512_Init(SHA512_CTX*); | |
1279 | void SHA512_Update(SHA512_CTX*, void*, size_t); | |
1280 | void SHA512_Final(uint8_t[SHA512_DIGEST_LENGTH], SHA512_CTX*); | |
1281 | unsigned char *SHA512(void* data, unsigned int data_len, unsigned char *digest); | |
1282 | #endif /* COMPAT_SHA512 */ | |
1283 | ||
1284 | ||
1285 | ||
1286 | #if defined(HAVE_EVENT_H) && !defined(HAVE_EVENT_BASE_ONCE) && !(defined(HAVE_EV_LOOP) || defined(HAVE_EV_DEFAULT_LOOP)) && (defined(HAVE_PTHREAD) || defined(HAVE_SOLARIS_THREADS)) | |
1287 | /* using version of libevent that is not threadsafe. */ | |
1288 | # define LIBEVENT_SIGNAL_PROBLEM 1 | |
1289 | #endif | |
1290 | ||
1291 | #ifndef CHECKED_INET6 | |
1292 | # define CHECKED_INET6 | |
1293 | # ifdef AF_INET6 | |
1294 | # define INET6 | |
1295 | # else | |
1296 | # define AF_INET6 28 | |
1297 | # endif | |
1298 | #endif /* CHECKED_INET6 */ | |
1299 | ||
1300 | #ifndef HAVE_GETADDRINFO | |
1301 | struct sockaddr_storage; | |
1302 | #include "compat/fake-rfc2553.h" | |
1303 | #endif | |
1304 | ||
1305 | #ifdef UNBOUND_ALLOC_STATS | |
1306 | # define malloc(s) unbound_stat_malloc_log(s, __FILE__, __LINE__, __func__) | |
1307 | # define calloc(n,s) unbound_stat_calloc_log(n, s, __FILE__, __LINE__, __func__) | |
1308 | # define free(p) unbound_stat_free_log(p, __FILE__, __LINE__, __func__) | |
1309 | # define realloc(p,s) unbound_stat_realloc_log(p, s, __FILE__, __LINE__, __func__) | |
1310 | void *unbound_stat_malloc(size_t size); | |
1311 | void *unbound_stat_calloc(size_t nmemb, size_t size); | |
1312 | void unbound_stat_free(void *ptr); | |
1313 | void *unbound_stat_realloc(void *ptr, size_t size); | |
1314 | void *unbound_stat_malloc_log(size_t size, const char* file, int line, | |
1315 | const char* func); | |
1316 | void *unbound_stat_calloc_log(size_t nmemb, size_t size, const char* file, | |
1317 | int line, const char* func); | |
1318 | void unbound_stat_free_log(void *ptr, const char* file, int line, | |
1319 | const char* func); | |
1320 | void *unbound_stat_realloc_log(void *ptr, size_t size, const char* file, | |
1321 | int line, const char* func); | |
1322 | #elif defined(UNBOUND_ALLOC_LITE) | |
1323 | # include "util/alloc.h" | |
1324 | #endif /* UNBOUND_ALLOC_LITE and UNBOUND_ALLOC_STATS */ | |
1325 | ||
1326 | /** default port for DNS traffic. */ | |
1327 | #define UNBOUND_DNS_PORT 53 | |
1328 | /** default port for unbound control traffic, registered port with IANA, | |
1329 | ub-dns-control 8953/tcp unbound dns nameserver control */ | |
1330 | #define UNBOUND_CONTROL_PORT 8953 | |
1331 | /** the version of unbound-control that this software implements */ | |
1332 | #define UNBOUND_CONTROL_VERSION 1 | |
1333 | ||
1334 | ]) | |
1335 | ||
1336 | dnl if we build from source tree, the man pages need @date@ and @version@ | |
1337 | dnl if this is a distro tarball, that was already done by makedist.sh | |
1338 | AC_SUBST(version, [VERSION_MAJOR.VERSION_MINOR.VERSION_MICRO]) | |
1339 | AC_SUBST(date, [`date +'%b %e, %Y'`]) | |
1340 | ||
1341 | AC_CONFIG_FILES([Makefile doc/example.conf doc/libunbound.3 doc/unbound.8 doc/unbound-anchor.8 doc/unbound-checkconf.8 doc/unbound.conf.5 doc/unbound-control.8 doc/unbound-host.1 smallapp/unbound-control-setup.sh dnstap/dnstap_config.h]) | |
1342 | AC_CONFIG_HEADER([config.h]) | |
1343 | AC_OUTPUT |