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