configure.ac revision 285206
1238106Sdes# -*- Autoconf -*- 2238106Sdes# Process this file with autoconf to produce a configure script. 3238106SdesAC_PREREQ(2.56) 4238106Sdessinclude(acx_nlnetlabs.m4) 5269257Sdessinclude(ax_pthread.m4) 6238106Sdessinclude(acx_python.m4) 7238106Sdessinclude(ac_pkg_swig.m4) 8285206Sdessinclude(dnstap/dnstap.m4) 9238106Sdes 10269257Sdes# must be numbers. ac_defun because of later processing 11269257Sdesm4_define([VERSION_MAJOR],[1]) 12285206Sdesm4_define([VERSION_MINOR],[5]) 13285206Sdesm4_define([VERSION_MICRO],[3]) 14269257SdesAC_INIT(unbound, m4_defn([VERSION_MAJOR]).m4_defn([VERSION_MINOR]).m4_defn([VERSION_MICRO]), unbound-bugs@nlnetlabs.nl, unbound) 15269257SdesAC_SUBST(UNBOUND_VERSION_MAJOR, [VERSION_MAJOR]) 16269257SdesAC_SUBST(UNBOUND_VERSION_MINOR, [VERSION_MINOR]) 17269257SdesAC_SUBST(UNBOUND_VERSION_MICRO, [VERSION_MICRO]) 18238106Sdes 19285206SdesLIBUNBOUND_CURRENT=5 20285206SdesLIBUNBOUND_REVISION=6 21285206SdesLIBUNBOUND_AGE=3 22238106Sdes# 1.0.0 had 0:12:0 23238106Sdes# 1.0.1 had 0:13:0 24238106Sdes# 1.0.2 had 0:14:0 25238106Sdes# 1.1.0 had 0:15:0 26238106Sdes# 1.1.1 had 0:16:0 27238106Sdes# 1.2.0 had 0:17:0 28238106Sdes# 1.2.1 had 0:18:0 29238106Sdes# 1.3.0 had 1:0:0 # ub_cancel and -export-symbols. 30238106Sdes# 1.3.1 had 1:1:0 31238106Sdes# 1.3.2 had 1:2:0 32238106Sdes# 1.3.3 had 1:3:0 33238106Sdes# 1.3.4 had 1:4:0 34238106Sdes# 1.4.0-snapshots had 1:5:0 35238106Sdes# 1.4.0 had 1:5:0 (not 2:0:0) # ub_result.why_bogus 36238106Sdes# 1.4.1 had 2:1:0 37238106Sdes# 1.4.2 had 2:2:0 38238106Sdes# 1.4.3 had 2:3:0 39238106Sdes# 1.4.4 had 2:4:0 40238106Sdes# 1.4.5 had 2:5:0 41238106Sdes# 1.4.6 had 2:6:0 42238106Sdes# 1.4.7 had 2:7:0 43238106Sdes# 1.4.8 had 2:8:0 44238106Sdes# 1.4.9 had 2:9:0 45238106Sdes# 1.4.10 had 2:10:0 46238106Sdes# 1.4.11 had 2:11:0 47238106Sdes# 1.4.12 had 2:12:0 48238106Sdes# 1.4.13 had 2:13:0 49238106Sdes# and 1.4.13p1 and 1.4.13.p2 50238106Sdes# 1.4.14 had 2:14:0 51238106Sdes# 1.4.15 had 3:0:1 # adds ub_version() 52238106Sdes# 1.4.16 had 3:1:1 53238106Sdes# 1.4.17 had 3:2:1 54249141Sdes# 1.4.18 had 3:3:1 55249141Sdes# 1.4.19 had 3:4:1 56269257Sdes# 1.4.20 had 4:0:2 # adds libunbound.ttl # but shipped 3:5:1 57269257Sdes# 1.4.21 had 4:1:2 58285206Sdes# 1.4.22 had 4:1:2 59285206Sdes# 1.5.0 had 5:3:3 # adds ub_ctx_add_ta_autr 60285206Sdes# 1.5.1 had 5:3:3 61285206Sdes# 1.5.2 had 5:5:3 62285206Sdes# 1.5.3 had 5:6:3 63238106Sdes 64238106Sdes# Current -- the number of the binary API that we're implementing 65238106Sdes# Revision -- which iteration of the implementation of the binary 66238106Sdes# API are we supplying? 67238106Sdes# Age -- How many previous binary API versions do we also 68238106Sdes# support? 69238106Sdes# 70238106Sdes# If we release a new version that does not change the binary API, 71238106Sdes# increment Revision. 72238106Sdes# 73238106Sdes# If we release a new version that changes the binary API, but does 74238106Sdes# not break programs compiled against the old binary API, increment 75238106Sdes# Current and Age. Set Revision to 0, since this is the first 76238106Sdes# implementation of the new API. 77238106Sdes# 78238106Sdes# Otherwise, we're changing the binary API and breaking bakward 79238106Sdes# compatibility with old binaries. Increment Current. Set Age to 0, 80238106Sdes# since we're backward compatible with no previous APIs. Set Revision 81238106Sdes# to 0 too. 82238106SdesAC_SUBST(LIBUNBOUND_CURRENT) 83238106SdesAC_SUBST(LIBUNBOUND_REVISION) 84238106SdesAC_SUBST(LIBUNBOUND_AGE) 85238106Sdes 86238106SdesCFLAGS="$CFLAGS" 87238106SdesAC_AIX 88269257Sdesif test "$ac_cv_header_minix_config_h" = "yes"; then 89269257Sdes AC_DEFINE(_NETBSD_SOURCE,1, [Enable for compile on Minix]) 90269257Sdesfi 91238106Sdes 92238106Sdesdnl 93238106Sdesdnl By default set prefix to /usr/local 94238106Sdesdnl 95238106Sdescase "$prefix" in 96238106Sdes NONE) 97238106Sdes prefix="/usr/local" 98238106Sdes ;; 99238106Sdesesac 100238106Sdes 101238106Sdes# are we on MinGW? 102238106Sdesif uname -s 2>&1 | grep MINGW32 >/dev/null; then on_mingw="yes" 103238106Sdeselse 104238106Sdes if echo $target | grep mingw32 >/dev/null; then on_mingw="yes" 105238106Sdes else on_mingw="no"; fi 106238106Sdesfi 107238106Sdes 108238106Sdes# 109238106Sdes# Determine configuration file 110238106Sdes# the eval is to evaluate shell expansion twice 111238106Sdesif test $on_mingw = "no"; then 112238106Sdes ub_conf_file=`eval echo "${sysconfdir}/unbound/unbound.conf"` 113238106Sdeselse 114238106Sdes ub_conf_file="C:\\Program Files\\Unbound\\service.conf" 115238106Sdesfi 116238106SdesAC_ARG_WITH([conf_file], 117238106Sdes AC_HELP_STRING([--with-conf-file=path], 118238106Sdes [Pathname to the Unbound configuration file]), 119238106Sdes [ub_conf_file="$withval"]) 120238106SdesAC_SUBST(ub_conf_file) 121238106SdesACX_ESCAPE_BACKSLASH($ub_conf_file, hdr_config) 122238106SdesAC_DEFINE_UNQUOTED(CONFIGFILE, ["$hdr_config"], [Pathname to the Unbound configuration file]) 123285206Sdesub_conf_dir=`AS_DIRNAME(["$ub_conf_file"])` 124285206SdesAC_SUBST(ub_conf_dir) 125238106Sdes 126238106Sdes# Determine run, chroot directory and pidfile locations 127238106SdesAC_ARG_WITH(run-dir, 128238106Sdes AC_HELP_STRING([--with-run-dir=path], 129238106Sdes [set default directory to chdir to (by default dir part of cfg file)]), 130238106Sdes UNBOUND_RUN_DIR="$withval", 131238106Sdesif test $on_mingw = no; then 132238106Sdes UNBOUND_RUN_DIR=`dirname "$ub_conf_file"` 133238106Sdeselse 134238106Sdes UNBOUND_RUN_DIR="" 135238106Sdesfi 136238106Sdes) 137238106SdesAC_SUBST(UNBOUND_RUN_DIR) 138238106SdesACX_ESCAPE_BACKSLASH($UNBOUND_RUN_DIR, hdr_run) 139238106SdesAC_DEFINE_UNQUOTED(RUN_DIR, ["$hdr_run"], [Directory to chdir to]) 140238106Sdes 141238106SdesAC_ARG_WITH(chroot-dir, 142238106Sdes AC_HELP_STRING([--with-chroot-dir=path], 143238106Sdes [set default directory to chroot to (by default same as run-dir)]), 144238106Sdes UNBOUND_CHROOT_DIR="$withval", 145238106Sdesif test $on_mingw = no; then 146238106Sdes UNBOUND_CHROOT_DIR="$UNBOUND_RUN_DIR" 147238106Sdeselse 148238106Sdes UNBOUND_CHROOT_DIR="" 149238106Sdesfi 150238106Sdes) 151238106SdesAC_SUBST(UNBOUND_CHROOT_DIR) 152238106SdesACX_ESCAPE_BACKSLASH($UNBOUND_CHROOT_DIR, hdr_chroot) 153238106SdesAC_DEFINE_UNQUOTED(CHROOT_DIR, ["$hdr_chroot"], [Directory to chroot to]) 154238106Sdes 155238106SdesAC_ARG_WITH(share-dir, 156238106Sdes AC_HELP_STRING([--with-share-dir=path], 157238106Sdes [set default directory with shared data (by default same as share/unbound)]), 158238106Sdes UNBOUND_SHARE_DIR="$withval", 159238106Sdes UNBOUND_SHARE_DIR="$UNBOUND_RUN_DIR") 160238106SdesAC_SUBST(UNBOUND_SHARE_DIR) 161238106SdesAC_DEFINE_UNQUOTED(SHARE_DIR, ["$UNBOUND_SHARE_DIR"], [Shared data]) 162238106Sdes 163238106SdesAC_ARG_WITH(pidfile, 164238106Sdes AC_HELP_STRING([--with-pidfile=filename], 165238106Sdes [set default pathname to unbound pidfile (default run-dir/unbound.pid)]), 166238106Sdes UNBOUND_PIDFILE="$withval", 167238106Sdesif test $on_mingw = no; then 168238106Sdes UNBOUND_PIDFILE="$UNBOUND_RUN_DIR/unbound.pid" 169238106Sdeselse 170238106Sdes UNBOUND_PIDFILE="" 171238106Sdesfi 172238106Sdes) 173238106SdesAC_SUBST(UNBOUND_PIDFILE) 174238106SdesACX_ESCAPE_BACKSLASH($UNBOUND_PIDFILE, hdr_pid) 175238106SdesAC_DEFINE_UNQUOTED(PIDFILE, ["$hdr_pid"], [default pidfile location]) 176238106Sdes 177238106SdesAC_ARG_WITH(rootkey-file, 178238106Sdes AC_HELP_STRING([--with-rootkey-file=filename], 179238106Sdes [set default pathname to root key file (default run-dir/root.key). This file is read and written.]), 180238106Sdes UNBOUND_ROOTKEY_FILE="$withval", 181238106Sdesif test $on_mingw = no; then 182238106Sdes UNBOUND_ROOTKEY_FILE="$UNBOUND_RUN_DIR/root.key" 183238106Sdeselse 184238106Sdes UNBOUND_ROOTKEY_FILE="C:\\Program Files\\Unbound\\root.key" 185238106Sdesfi 186238106Sdes) 187238106SdesAC_SUBST(UNBOUND_ROOTKEY_FILE) 188238106SdesACX_ESCAPE_BACKSLASH($UNBOUND_ROOTKEY_FILE, hdr_rkey) 189238106SdesAC_DEFINE_UNQUOTED(ROOT_ANCHOR_FILE, ["$hdr_rkey"], [default rootkey location]) 190238106Sdes 191238106SdesAC_ARG_WITH(rootcert-file, 192238106Sdes AC_HELP_STRING([--with-rootcert-file=filename], 193238106Sdes [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.]), 194238106Sdes UNBOUND_ROOTCERT_FILE="$withval", 195238106Sdesif test $on_mingw = no; then 196238106Sdes UNBOUND_ROOTCERT_FILE="$UNBOUND_RUN_DIR/icannbundle.pem" 197238106Sdeselse 198238106Sdes UNBOUND_ROOTCERT_FILE="C:\\Program Files\\Unbound\\icannbundle.pem" 199238106Sdesfi 200238106Sdes) 201238106SdesAC_SUBST(UNBOUND_ROOTCERT_FILE) 202238106SdesACX_ESCAPE_BACKSLASH($UNBOUND_ROOTCERT_FILE, hdr_rpem) 203238106SdesAC_DEFINE_UNQUOTED(ROOT_CERT_FILE, ["$hdr_rpem"], [default rootcert location]) 204238106Sdes 205238106SdesAC_ARG_WITH(username, 206238106Sdes AC_HELP_STRING([--with-username=user], 207238106Sdes [set default user that unbound changes to (default user is unbound)]), 208238106Sdes UNBOUND_USERNAME="$withval", 209238106Sdes UNBOUND_USERNAME="unbound") 210238106SdesAC_SUBST(UNBOUND_USERNAME) 211238106SdesAC_DEFINE_UNQUOTED(UB_USERNAME, ["$UNBOUND_USERNAME"], [default username]) 212238106Sdes 213238106SdesAC_DEFINE(WINVER, 0x0502, [the version of the windows API enabled]) 214238106SdesACX_RSRC_VERSION(wnvs) 215238106SdesAC_DEFINE_UNQUOTED(RSRC_PACKAGE_VERSION, [$wnvs], [version number for resource files]) 216238106Sdes 217238106Sdes# Checks for typedefs, structures, and compiler characteristics. 218238106SdesAC_C_CONST 219238106SdesAC_LANG_C 220249141Sdes# allow user to override the -g -O2 flags. 221249141Sdesif test "x$CFLAGS" = "x" ; then 222238106SdesACX_CHECK_COMPILER_FLAG(g, [CFLAGS="$CFLAGS -g"]) 223238106SdesACX_CHECK_COMPILER_FLAG(O2, [CFLAGS="$CFLAGS -O2"]) 224249141Sdesfi 225238106SdesAC_PROG_CC 226238106SdesACX_DEPFLAG 227238106SdesACX_DETERMINE_EXT_FLAGS_UNBOUND 228238106Sdes 229238106Sdes# debug mode flags warnings 230238106SdesAC_ARG_ENABLE(checking, AC_HELP_STRING([--enable-checking], [Enable warnings, asserts, makefile-dependencies])) 231238106SdesAC_ARG_ENABLE(debug, AC_HELP_STRING([--enable-debug], [same as enable-checking])) 232238106Sdesif test "$enable_debug" = "yes"; then debug_enabled="$enable_debug"; 233238106Sdeselse debug_enabled="$enable_checking"; fi 234238106SdesAC_SUBST(debug_enabled) 235238106Sdescase "$debug_enabled" in 236238106Sdes yes) 237238106Sdes ACX_CHECK_COMPILER_FLAG(W, [CFLAGS="$CFLAGS -W"]) 238238106Sdes ACX_CHECK_COMPILER_FLAG(Wall, [CFLAGS="$CFLAGS -Wall"]) 239238106Sdes ACX_CHECK_COMPILER_FLAG(Wextra, [CFLAGS="$CFLAGS -Wextra"]) 240238106Sdes ACX_CHECK_COMPILER_FLAG(Wdeclaration-after-statement, [CFLAGS="$CFLAGS -Wdeclaration-after-statement"]) 241238106Sdes AC_DEFINE([UNBOUND_DEBUG], [], [define this to enable debug checks.]) 242238106Sdes ;; 243238106Sdes no|*) 244238106Sdes # nothing to do. 245238106Sdes ;; 246238106Sdesesac 247238106SdesACX_CHECK_FLTO 248238106Sdes 249238106SdesAC_C_INLINE 250238106SdesACX_CHECK_FORMAT_ATTRIBUTE 251238106SdesACX_CHECK_UNUSED_ATTRIBUTE 252238106Sdes 253238106Sdesif test "$srcdir" != "."; then 254238106Sdes CPPFLAGS="$CPPFLAGS -I$srcdir" 255238106Sdesfi 256238106Sdes 257238106SdesAC_DEFUN([ACX_YYLEX_DESTROY], [ 258238106Sdes AC_MSG_CHECKING([for yylex_destroy]) 259238106Sdes if echo %% | $LEX -t 2>&1 | grep yylex_destroy >/dev/null 2>&1; then 260238106Sdes AC_DEFINE(LEX_HAS_YYLEX_DESTROY, 1, [if lex has yylex_destroy]) 261238106Sdes AC_MSG_RESULT(yes) 262238106Sdes else AC_MSG_RESULT(no); fi 263238106Sdes]) 264238106Sdes 265238106SdesAC_PROG_LEX 266238106SdesACX_YYLEX_DESTROY 267238106SdesAC_PROG_YACC 268238106SdesAC_CHECK_PROG(doxygen, doxygen, doxygen) 269238106SdesAC_CHECK_TOOL(STRIP, strip) 270238106SdesACX_LIBTOOL_C_ONLY 271238106Sdes 272238106Sdes# Checks for header files. 273285206SdesAC_CHECK_HEADERS([stdarg.h stdbool.h netinet/in.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]) 274238106Sdes 275238106Sdes# check for types. 276238106Sdes# Using own tests for int64* because autoconf builtin only give 32bit. 277238106SdesAC_CHECK_TYPE(int8_t, signed char) 278238106SdesAC_CHECK_TYPE(int16_t, short) 279238106SdesAC_CHECK_TYPE(int32_t, int) 280238106SdesAC_CHECK_TYPE(int64_t, long long) 281238106SdesAC_CHECK_TYPE(uint8_t, unsigned char) 282238106SdesAC_CHECK_TYPE(uint16_t, unsigned short) 283238106SdesAC_CHECK_TYPE(uint32_t, unsigned int) 284238106SdesAC_CHECK_TYPE(uint64_t, unsigned long long) 285238106SdesAC_TYPE_SIZE_T 286238106SdesAC_CHECK_TYPE(ssize_t, int) 287238106SdesAC_TYPE_UID_T 288238106SdesAC_TYPE_PID_T 289238106SdesAC_TYPE_OFF_T 290238106SdesACX_TYPE_U_CHAR 291238106SdesACX_TYPE_RLIM_T 292238106SdesACX_TYPE_SOCKLEN_T 293238106SdesACX_TYPE_IN_ADDR_T 294238106SdesACX_TYPE_IN_PORT_T 295238106SdesACX_CHECK_MEMCMP_SIGNED 296238106Sdes 297269257SdesAC_CHECK_SIZEOF(time_t,,[ 298269257SdesAC_INCLUDES_DEFAULT 299269257Sdes#ifdef TIME_WITH_SYS_TIME 300269257Sdes# include <sys/time.h> 301269257Sdes# include <time.h> 302269257Sdes#else 303269257Sdes# ifdef HAVE_SYS_TIME_H 304269257Sdes# include <sys/time.h> 305269257Sdes# else 306269257Sdes# include <time.h> 307269257Sdes# endif 308269257Sdes#endif 309269257Sdes]) 310269257Sdes 311238106Sdes# add option to disable the evil rpath 312238106SdesACX_ARG_RPATH 313238106SdesAC_SUBST(RUNTIME_PATH) 314238106Sdes 315238106Sdes# check to see if libraries are needed for these functions. 316238106SdesAC_SEARCH_LIBS([inet_pton], [nsl]) 317238106SdesAC_SEARCH_LIBS([socket], [socket]) 318238106Sdes 319238106Sdes# check wether strptime also works 320238106SdesAC_DEFUN([AC_CHECK_STRPTIME_WORKS], 321238106Sdes[AC_REQUIRE([AC_PROG_CC]) 322238106SdesAC_MSG_CHECKING(whether strptime works) 323238106Sdesif test c${cross_compiling} = cno; then 324238106SdesAC_RUN_IFELSE([AC_LANG_SOURCE([[ 325285206Sdes#define _XOPEN_SOURCE 600 326238106Sdes#include <time.h> 327238106Sdesint main(void) { struct tm tm; char *res; 328238106Sdesres = 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); 329238106Sdesif (!res) return 2; 330238106Sdesres = strptime("20070207111842", "%Y%m%d%H%M%S", &tm); 331238106Sdesif (!res) return 1; return 0; } 332238106Sdes]])] , [eval "ac_cv_c_strptime_works=yes"], [eval "ac_cv_c_strptime_works=no"]) 333238106Sdeselse 334238106Sdeseval "ac_cv_c_strptime_works=maybe" 335238106Sdesfi 336238106SdesAC_MSG_RESULT($ac_cv_c_strptime_works) 337238106Sdesif test $ac_cv_c_strptime_works = no; then 338238106SdesAC_LIBOBJ(strptime) 339238106Sdeselse 340238106SdesAC_DEFINE_UNQUOTED([STRPTIME_WORKS], 1, [use default strptime.]) 341238106Sdesfi 342238106Sdes])dnl 343238106Sdes 344238106Sdes# check some functions of the OS before linking libs (while still runnable). 345238106SdesAC_FUNC_CHOWN 346238106SdesAC_FUNC_FORK 347238106SdesAC_TYPE_SIGNAL 348238106SdesAC_FUNC_FSEEKO 349238106SdesACX_SYS_LARGEFILE 350238106SdesACX_CHECK_NONBLOCKING_BROKEN 351238106SdesACX_MKDIR_ONE_ARG 352238106SdesAC_CHECK_FUNCS([strptime],[AC_CHECK_STRPTIME_WORKS],[AC_LIBOBJ([strptime])]) 353238106Sdes 354238106Sdes# set memory allocation checking if requested 355238106SdesAC_ARG_ENABLE(alloc-checks, AC_HELP_STRING([--enable-alloc-checks], 356238106Sdes [ enable to memory allocation statistics, for debug purposes ]), 357238106Sdes , ) 358238106SdesAC_ARG_ENABLE(alloc-lite, AC_HELP_STRING([--enable-alloc-lite], 359238106Sdes [ enable for lightweight alloc assertions, for debug purposes ]), 360238106Sdes , ) 361238106SdesAC_ARG_ENABLE(alloc-nonregional, AC_HELP_STRING([--enable-alloc-nonregional], 362238106Sdes [ enable nonregional allocs, slow but exposes regional allocations to other memory purifiers, for debug purposes ]), 363238106Sdes , ) 364238106Sdesif test x_$enable_alloc_nonregional = x_yes; then 365238106Sdes AC_DEFINE(UNBOUND_ALLOC_NONREGIONAL, 1, [use malloc not regions, for debug use]) 366238106Sdesfi 367238106Sdesif test x_$enable_alloc_checks = x_yes; then 368238106Sdes AC_DEFINE(UNBOUND_ALLOC_STATS, 1, [use statistics for allocs and frees, for debug use]) 369238106Sdeselse 370238106Sdes if test x_$enable_alloc_lite = x_yes; then 371238106Sdes AC_DEFINE(UNBOUND_ALLOC_LITE, 1, [use to enable lightweight alloc assertions, for debug use]) 372238106Sdes else 373238106Sdes ACX_FUNC_MALLOC([unbound]) 374238106Sdes fi 375238106Sdesfi 376238106Sdes 377238106Sdes# check windows threads (we use them, not pthreads, on windows). 378238106Sdesif test "$on_mingw" = "yes"; then 379238106Sdes# check windows threads 380238106Sdes AC_CHECK_HEADERS([windows.h],,, [AC_INCLUDES_DEFAULT]) 381238106Sdes AC_MSG_CHECKING([for CreateThread]) 382238106Sdes AC_COMPILE_IFELSE([AC_LANG_PROGRAM([ 383238106Sdes#ifdef HAVE_WINDOWS_H 384238106Sdes#include <windows.h> 385238106Sdes#endif 386238106Sdes], [ 387238106Sdes HANDLE t = CreateThread(NULL, 0, NULL, NULL, 0, NULL); 388238106Sdes])], 389238106Sdes AC_MSG_RESULT(yes) 390238106Sdes AC_DEFINE(HAVE_WINDOWS_THREADS, 1, [Using Windows threads]) 391238106Sdes, 392238106Sdes AC_MSG_RESULT(no) 393238106Sdes) 394238106Sdes 395238106Sdeselse 396238106Sdes# not on mingw, check thread libraries. 397238106Sdes 398238106Sdes# check for thread library. 399238106Sdes# check this first, so that the pthread lib does not get linked in via 400238106Sdes# libssl or libpython, and thus distorts the tests, and we end up using 401238106Sdes# the non-threadsafe C libraries. 402238106SdesAC_ARG_WITH(pthreads, AC_HELP_STRING([--with-pthreads], 403238106Sdes [use pthreads library, or --without-pthreads to disable threading support.]), 404238106Sdes [ ],[ withval="yes" ]) 405238106Sdesub_have_pthreads=no 406238106Sdesif test x_$withval != x_no; then 407269257Sdes AX_PTHREAD([ 408238106Sdes AC_DEFINE(HAVE_PTHREAD,1,[Define if you have POSIX threads libraries and header files.]) 409238106Sdes LIBS="$PTHREAD_LIBS $LIBS" 410238106Sdes CFLAGS="$CFLAGS $PTHREAD_CFLAGS" 411238106Sdes CC="$PTHREAD_CC" 412238106Sdes ub_have_pthreads=yes 413238106Sdes AC_CHECK_TYPES([pthread_spinlock_t, pthread_rwlock_t],,,[#include <pthread.h>]) 414238106Sdes ]) 415238106Sdesfi 416238106Sdes 417238106Sdes# check solaris thread library 418238106SdesAC_ARG_WITH(solaris-threads, AC_HELP_STRING([--with-solaris-threads], 419238106Sdes [use solaris native thread library.]), [ ],[ withval="no" ]) 420238106Sdesub_have_sol_threads=no 421238106Sdesif test x_$withval != x_no; then 422238106Sdes if test x_$ub_have_pthreads != x_no; then 423238106Sdes AC_WARN([Have pthreads already, ignoring --with-solaris-threads]) 424238106Sdes else 425238106Sdes AC_SEARCH_LIBS(thr_create, [thread], 426238106Sdes [ 427238106Sdes AC_DEFINE(HAVE_SOLARIS_THREADS, 1, [Using Solaris threads]) 428238106Sdes 429238106Sdes ACX_CHECK_COMPILER_FLAG(mt, [CFLAGS="$CFLAGS -mt"], 430238106Sdes [CFLAGS="$CFLAGS -D_REENTRANT"]) 431238106Sdes ub_have_sol_threads=yes 432238106Sdes ] , [ 433238106Sdes AC_ERROR([no solaris threads found.]) 434238106Sdes ]) 435238106Sdes fi 436238106Sdesfi 437238106Sdes 438238106Sdesfi # end of non-mingw check of thread libraries 439238106Sdes 440238106Sdes# Check for PyUnbound 441238106SdesAC_ARG_WITH(pyunbound, 442238106Sdes AC_HELP_STRING([--with-pyunbound], 443238106Sdes [build PyUnbound, or --without-pyunbound to skip it. (default=no)]), 444238106Sdes [], [ withval="no" ]) 445238106Sdes 446238106Sdesub_test_python=no 447238106Sdesub_with_pyunbound=no 448238106Sdesif test x_$withval != x_no; then 449238106Sdes ub_with_pyunbound=yes 450238106Sdes ub_test_python=yes 451238106Sdesfi 452238106Sdes 453238106Sdes# Check for Python module 454238106SdesAC_ARG_WITH(pythonmodule, 455238106Sdes AC_HELP_STRING([--with-pythonmodule], 456238106Sdes [build Python module, or --without-pythonmodule to disable script engine. (default=no)]), 457238106Sdes [], [ withval="no" ]) 458238106Sdes 459238106Sdesub_with_pythonmod=no 460238106Sdesif test x_$withval != x_no; then 461238106Sdes ub_with_pythonmod=yes 462238106Sdes ub_test_python=yes 463238106Sdesfi 464238106Sdes 465238106Sdes# Check for Python & SWIG only on PyUnbound or PyModule 466238106Sdesif test x_$ub_test_python != x_no; then 467238106Sdes 468238106Sdes # Check for Python 469238106Sdes ub_have_python=no 470238106Sdes ac_save_LIBS="$LIBS" dnl otherwise AC_PYTHON_DEVEL thrashes $LIBS 471238106Sdes AC_PYTHON_DEVEL 472238106Sdes if test ! -z "$PYTHON_VERSION"; then 473285206Sdes if test `$PYTHON -c "print('$PYTHON_VERSION' >= '2.4.0')"` = "False"; then 474238106Sdes AC_ERROR([Python version >= 2.4.0 is required]) 475238106Sdes fi 476238106Sdes 477238106Sdes # Have Python 478238106Sdes AC_DEFINE(HAVE_PYTHON,1,[Define if you have Python libraries and header files.]) 479238106Sdes LIBS="$PYTHON_LDFLAGS $LIBS" 480238106Sdes CPPFLAGS="$CPPFLAGS $PYTHON_CPPFLAGS" 481238106Sdes ub_have_python=yes 482238106Sdes 483238106Sdes # Check for SWIG 484238106Sdes ub_have_swig=no 485238106Sdes AC_PROG_SWIG 486238106Sdes AC_MSG_CHECKING(SWIG) 487238106Sdes if test ! -x "$SWIG"; then 488238106Sdes AC_ERROR([failed to find swig tool, install it, or do not build Python module and PyUnbound]) 489238106Sdes else 490238106Sdes AC_DEFINE(HAVE_SWIG, 1, [Define if you have Swig libraries and header files.]) 491238106Sdes AC_SUBST(swig, "$SWIG") 492238106Sdes AC_MSG_RESULT(present) 493238106Sdes 494238106Sdes # If have Python & SWIG 495238106Sdes # Declare PythonMod 496238106Sdes if test x_$ub_with_pythonmod != x_no; then 497238106Sdes AC_DEFINE(WITH_PYTHONMODULE, 1, [Define if you want Python module.]) 498238106Sdes WITH_PYTHONMODULE=yes 499238106Sdes AC_SUBST(WITH_PYTHONMODULE) 500238106Sdes PYTHONMOD_OBJ="pythonmod.lo pythonmod_utils.lo" 501238106Sdes AC_SUBST(PYTHONMOD_OBJ) 502238106Sdes PYTHONMOD_HEADER='$(srcdir)/pythonmod/pythonmod.h' 503238106Sdes AC_SUBST(PYTHONMOD_HEADER) 504238106Sdes PYTHONMOD_INSTALL=pythonmod-install 505238106Sdes AC_SUBST(PYTHONMOD_INSTALL) 506238106Sdes PYTHONMOD_UNINSTALL=pythonmod-uninstall 507238106Sdes AC_SUBST(PYTHONMOD_UNINSTALL) 508238106Sdes fi 509238106Sdes 510238106Sdes # Declare PyUnbound 511238106Sdes if test x_$ub_with_pyunbound != x_no; then 512238106Sdes AC_DEFINE(WITH_PYUNBOUND, 1, [Define if you want PyUnbound.]) 513238106Sdes WITH_PYUNBOUND=yes 514238106Sdes AC_SUBST(WITH_PYUNBOUND) 515238106Sdes PYUNBOUND_OBJ="libunbound_wrap.lo" 516238106Sdes AC_SUBST(PYUNBOUND_OBJ) 517238106Sdes PYUNBOUND_TARGET="_unbound.la" 518238106Sdes AC_SUBST(PYUNBOUND_TARGET) 519238106Sdes PYUNBOUND_INSTALL=pyunbound-install 520238106Sdes AC_SUBST(PYUNBOUND_INSTALL) 521238106Sdes PYUNBOUND_UNINSTALL=pyunbound-uninstall 522238106Sdes AC_SUBST(PYUNBOUND_UNINSTALL) 523238106Sdes fi 524238106Sdes fi 525238106Sdes else 526238106Sdes AC_MSG_RESULT([*** Python libraries not found, won't build PythonMod or PyUnbound ***]) 527238106Sdes ub_with_pyunbound=no 528238106Sdes ub_with_pythonmod=no 529238106Sdes fi 530238106Sdesfi 531238106Sdes 532238106Sdesif test "`uname`" = "NetBSD"; then 533238106Sdes NETBSD_LINTFLAGS='"-D__RENAME(x)=" -D_NETINET_IN_H_' 534238106Sdes AC_SUBST(NETBSD_LINTFLAGS) 535238106Sdesfi 536238106SdesCONFIG_DATE=`date +%Y%m%d` 537238106SdesAC_SUBST(CONFIG_DATE) 538238106Sdes 539238106Sdes# Checks for libraries. 540249141Sdes 541249141Sdes# libnss 542249141SdesUSE_NSS="no" 543249141SdesAC_ARG_WITH([nss], AC_HELP_STRING([--with-nss=path], 544249141Sdes [use libnss instead of openssl, installed at path.]), 545249141Sdes [ 546249141Sdes USE_NSS="yes" 547249141Sdes AC_DEFINE(HAVE_NSS, 1, [Use libnss for crypto]) 548249141Sdes if test "$withval" != "" -a "$withval" != "yes"; then 549249141Sdes CPPFLAGS="$CPPFLAGS -I$withval/include/nss3" 550249141Sdes LDFLAGS="$LDFLAGS -L$withval/lib" 551249141Sdes ACX_RUNTIME_PATH_ADD([$withval/lib]) 552249141Sdes CPPFLAGS="-I$withval/include/nspr4 $CPPFLAGS" 553249141Sdes else 554249141Sdes CPPFLAGS="$CPPFLAGS -I/usr/include/nss3" 555249141Sdes CPPFLAGS="-I/usr/include/nspr4 $CPPFLAGS" 556249141Sdes fi 557249141Sdes LIBS="$LIBS -lnss3 -lnspr4" 558249141Sdes ] 559249141Sdes) 560249141Sdes 561249141Sdes# openssl 562249141Sdesif test $USE_NSS = "no"; then 563238106SdesACX_WITH_SSL 564238106SdesACX_LIB_SSL 565285206SdesAC_MSG_CHECKING([for LibreSSL]) 566285206Sdesif grep OPENSSL_VERSION_TEXT $ssldir/include/openssl/opensslv.h | grep "LibreSSL" >/dev/null; then 567285206Sdes AC_MSG_RESULT([yes]) 568285206Sdes AC_DEFINE([HAVE_LIBRESSL], [1], [Define if we have LibreSSL]) 569285206Sdes # libressl provides these compat functions, but they may also be 570285206Sdes # declared by the OS in libc. See if they have been declared. 571285206Sdes AC_CHECK_DECLS([strlcpy,strlcat,arc4random,arc4random_uniform]) 572285206Sdeselse 573285206Sdes AC_MSG_RESULT([no]) 574285206Sdesfi 575238106SdesAC_CHECK_HEADERS([openssl/conf.h],,, [AC_INCLUDES_DEFAULT]) 576238106SdesAC_CHECK_HEADERS([openssl/engine.h],,, [AC_INCLUDES_DEFAULT]) 577249141SdesAC_CHECK_FUNCS([OPENSSL_config EVP_sha1 EVP_sha256 EVP_sha512 FIPS_mode]) 578238106SdesAC_CHECK_DECLS([SSL_COMP_get_compression_methods,sk_SSL_COMP_pop_free], [], [], [ 579238106SdesAC_INCLUDES_DEFAULT 580238106Sdes#ifdef HAVE_OPENSSL_ERR_H 581238106Sdes#include <openssl/err.h> 582238106Sdes#endif 583238106Sdes 584238106Sdes#ifdef HAVE_OPENSSL_RAND_H 585238106Sdes#include <openssl/rand.h> 586238106Sdes#endif 587238106Sdes 588238106Sdes#ifdef HAVE_OPENSSL_CONF_H 589238106Sdes#include <openssl/conf.h> 590238106Sdes#endif 591238106Sdes 592238106Sdes#ifdef HAVE_OPENSSL_ENGINE_H 593238106Sdes#include <openssl/engine.h> 594238106Sdes#endif 595238106Sdes#include <openssl/ssl.h> 596238106Sdes#include <openssl/evp.h> 597238106Sdes]) 598249141Sdesfi 599238106Sdes 600249141Sdes 601238106SdesAC_ARG_ENABLE(sha2, AC_HELP_STRING([--disable-sha2], [Disable SHA256 and SHA512 RRSIG support])) 602238106Sdescase "$enable_sha2" in 603238106Sdes no) 604238106Sdes ;; 605238106Sdes yes|*) 606238106Sdes AC_DEFINE([USE_SHA2], [1], [Define this to enable SHA256 and SHA512 support.]) 607238106Sdes ;; 608238106Sdesesac 609238106Sdes 610238106Sdes# check wether gost also works 611238106SdesAC_DEFUN([AC_CHECK_GOST_WORKS], 612238106Sdes[AC_REQUIRE([AC_PROG_CC]) 613238106SdesAC_MSG_CHECKING([if GOST works]) 614238106Sdesif test c${cross_compiling} = cno; then 615238106SdesBAKCFLAGS="$CFLAGS" 616238106Sdesif test -n "$ssldir"; then 617238106Sdes CFLAGS="$CFLAGS -Wl,-rpath,$ssldir/lib" 618238106Sdesfi 619238106SdesAC_RUN_IFELSE([AC_LANG_SOURCE([[ 620238106Sdes#include <string.h> 621238106Sdes#include <openssl/ssl.h> 622238106Sdes#include <openssl/evp.h> 623238106Sdes#include <openssl/engine.h> 624238106Sdes#include <openssl/conf.h> 625269257Sdes/* routine to load gost (from sldns) */ 626238106Sdesint load_gost_id(void) 627238106Sdes{ 628238106Sdes static int gost_id = 0; 629238106Sdes const EVP_PKEY_ASN1_METHOD* meth; 630238106Sdes ENGINE* e; 631238106Sdes 632238106Sdes if(gost_id) return gost_id; 633238106Sdes 634238106Sdes /* see if configuration loaded gost implementation from other engine*/ 635238106Sdes meth = EVP_PKEY_asn1_find_str(NULL, "gost2001", -1); 636238106Sdes if(meth) { 637238106Sdes EVP_PKEY_asn1_get0_info(&gost_id, NULL, NULL, NULL, NULL, meth); 638238106Sdes return gost_id; 639238106Sdes } 640238106Sdes 641238106Sdes /* see if engine can be loaded already */ 642238106Sdes e = ENGINE_by_id("gost"); 643238106Sdes if(!e) { 644238106Sdes /* load it ourself, in case statically linked */ 645238106Sdes ENGINE_load_builtin_engines(); 646238106Sdes ENGINE_load_dynamic(); 647238106Sdes e = ENGINE_by_id("gost"); 648238106Sdes } 649238106Sdes if(!e) { 650238106Sdes /* no gost engine in openssl */ 651238106Sdes return 0; 652238106Sdes } 653238106Sdes if(!ENGINE_set_default(e, ENGINE_METHOD_ALL)) { 654238106Sdes ENGINE_finish(e); 655238106Sdes ENGINE_free(e); 656238106Sdes return 0; 657238106Sdes } 658238106Sdes 659238106Sdes meth = EVP_PKEY_asn1_find_str(&e, "gost2001", -1); 660238106Sdes if(!meth) { 661238106Sdes /* algo not found */ 662238106Sdes ENGINE_finish(e); 663238106Sdes ENGINE_free(e); 664238106Sdes return 0; 665238106Sdes } 666238106Sdes EVP_PKEY_asn1_get0_info(&gost_id, NULL, NULL, NULL, NULL, meth); 667238106Sdes return gost_id; 668238106Sdes} 669238106Sdesint main(void) { 670238106Sdes EVP_MD_CTX* ctx; 671238106Sdes const EVP_MD* md; 672238106Sdes unsigned char digest[64]; /* its a 256-bit digest, so uses 32 bytes */ 673238106Sdes const char* str = "Hello world"; 674238106Sdes const unsigned char check[] = { 675238106Sdes 0x40 , 0xed , 0xf8 , 0x56 , 0x5a , 0xc5 , 0x36 , 0xe1 , 676238106Sdes 0x33 , 0x7c , 0x7e , 0x87 , 0x62 , 0x1c , 0x42 , 0xe0 , 677238106Sdes 0x17 , 0x1b , 0x5e , 0xce , 0xa8 , 0x46 , 0x65 , 0x4d , 678238106Sdes 0x8d , 0x3e , 0x22 , 0x9b , 0xe1 , 0x30 , 0x19 , 0x9d 679238106Sdes }; 680238106Sdes OPENSSL_config(NULL); 681238106Sdes (void)load_gost_id(); 682238106Sdes md = EVP_get_digestbyname("md_gost94"); 683238106Sdes if(!md) return 1; 684238106Sdes memset(digest, 0, sizeof(digest)); 685238106Sdes ctx = EVP_MD_CTX_create(); 686238106Sdes if(!ctx) return 2; 687238106Sdes if(!EVP_DigestInit_ex(ctx, md, NULL)) return 3; 688238106Sdes if(!EVP_DigestUpdate(ctx, str, 10)) return 4; 689238106Sdes if(!EVP_DigestFinal_ex(ctx, digest, NULL)) return 5; 690238106Sdes /* uncomment to see the hash calculated. 691238106Sdes {int i; 692238106Sdes for(i=0; i<32; i++) 693238106Sdes printf(" %2.2x", (int)digest[i]); 694238106Sdes printf("\n");} 695238106Sdes */ 696238106Sdes if(memcmp(digest, check, sizeof(check)) != 0) 697238106Sdes return 6; 698238106Sdes return 0; 699238106Sdes} 700238106Sdes]])] , [eval "ac_cv_c_gost_works=yes"], [eval "ac_cv_c_gost_works=no"]) 701238106SdesCFLAGS="$BAKCFLAGS" 702238106Sdeselse 703238106Sdeseval "ac_cv_c_gost_works=maybe" 704238106Sdesfi 705238106SdesAC_MSG_RESULT($ac_cv_c_gost_works) 706238106Sdes])dnl 707238106Sdes 708238106SdesAC_ARG_ENABLE(gost, AC_HELP_STRING([--disable-gost], [Disable GOST support])) 709238106Sdesuse_gost="no" 710249141Sdesif test $USE_NSS = "no"; then 711238106Sdescase "$enable_gost" in 712238106Sdes no) 713238106Sdes ;; 714238106Sdes *) 715238106Sdes AC_CHECK_FUNC(EVP_PKEY_set_type_str, [:],[AC_MSG_ERROR([OpenSSL 1.0.0 is needed for GOST support])]) 716249141Sdes AC_CHECK_FUNC(EC_KEY_new, [], [AC_MSG_ERROR([OpenSSL does not support ECC, needed for GOST support])]) 717238106Sdes AC_CHECK_GOST_WORKS 718249141Sdes if test "$ac_cv_c_gost_works" != no; then 719238106Sdes use_gost="yes" 720238106Sdes AC_DEFINE([USE_GOST], [1], [Define this to enable GOST support.]) 721238106Sdes fi 722238106Sdes ;; 723238106Sdesesac 724249141Sdesfi dnl !USE_NSS 725238106Sdes 726238106SdesAC_ARG_ENABLE(ecdsa, AC_HELP_STRING([--disable-ecdsa], [Disable ECDSA support])) 727238106Sdesuse_ecdsa="no" 728238106Sdescase "$enable_ecdsa" in 729238106Sdes no) 730238106Sdes ;; 731238106Sdes *) 732249141Sdes if test $USE_NSS = "no"; then 733249141Sdes AC_CHECK_FUNC(ECDSA_sign, [], [AC_MSG_ERROR([OpenSSL does not support ECDSA: please upgrade or rerun with --disable-ecdsa])]) 734249141Sdes AC_CHECK_FUNC(SHA384_Init, [], [AC_MSG_ERROR([OpenSSL does not support SHA384: please upgrade or rerun with --disable-ecdsa])]) 735249141Sdes 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 736238106Sdes#include <openssl/evp.h> 737249141Sdes ]) 738249141Sdes # see if OPENSSL 1.0.0 or later (has EVP MD and Verify independency) 739249141Sdes AC_MSG_CHECKING([if openssl supports SHA2 and ECDSA with EVP]) 740285206Sdes if grep OPENSSL_VERSION_TEXT $ssldir/include/openssl/opensslv.h | grep "OpenSSL" >/dev/null; then 741285206Sdes if grep OPENSSL_VERSION_NUMBER $ssldir/include/openssl/opensslv.h | grep 0x0 >/dev/null; then 742285206Sdes AC_MSG_RESULT([no]) 743285206Sdes AC_DEFINE_UNQUOTED([USE_ECDSA_EVP_WORKAROUND], [1], [Define this to enable an EVP workaround for older openssl]) 744285206Sdes else 745285206Sdes AC_MSG_RESULT([yes]) 746285206Sdes fi 747249141Sdes else 748285206Sdes # not OpenSSL, thus likely LibreSSL, which supports it 749249141Sdes AC_MSG_RESULT([yes]) 750249141Sdes fi 751238106Sdes fi 752238106Sdes # we now know we have ECDSA and the required curves. 753238106Sdes AC_DEFINE_UNQUOTED([USE_ECDSA], [1], [Define this to enable ECDSA support.]) 754238106Sdes use_ecdsa="yes" 755238106Sdes ;; 756238106Sdesesac 757238106Sdes 758269257SdesAC_ARG_ENABLE(event-api, AC_HELP_STRING([--enable-event-api], [Enable (experimental) libevent-based libunbound API installed to unbound-event.h])) 759269257Sdesuse_unbound_event="no" 760269257Sdescase "$enable_event_api" in 761269257Sdes yes) 762269257Sdes use_unbound_event="yes" 763269257Sdes ;; 764269257Sdes *) 765269257Sdes ;; 766269257Sdesesac 767269257Sdes 768238106Sdes# check for libevent 769238106SdesAC_ARG_WITH(libevent, AC_HELP_STRING([--with-libevent=pathname], 770238106Sdes [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.]), 771238106Sdes [ ],[ withval="no" ]) 772238106Sdesif test x_$withval = x_yes -o x_$withval != x_no; then 773238106Sdes AC_MSG_CHECKING(for libevent) 774238106Sdes if test x_$withval = x_ -o x_$withval = x_yes; then 775238106Sdes withval="/usr/local /opt/local /usr/lib /usr/pkg /usr/sfw /usr" 776238106Sdes fi 777238106Sdes for dir in $withval; do 778238106Sdes thedir="$dir" 779269257Sdes if test -f "$dir/include/event.h" -o -f "$dir/include/event2/event.h"; then 780238106Sdes found_libevent="yes" 781238106Sdes dnl assume /usr is in default path. 782238106Sdes if test "$thedir" != "/usr"; then 783238106Sdes CPPFLAGS="$CPPFLAGS -I$thedir/include" 784238106Sdes fi 785238106Sdes break; 786238106Sdes fi 787238106Sdes done 788238106Sdes if test x_$found_libevent != x_yes; then 789238106Sdes if test -f "$dir/event.h" -a \( -f "$dir/libevent.la" -o -f "$dir/libev.la" \) ; then 790238106Sdes # libevent source directory 791238106Sdes AC_MSG_RESULT(found in $thedir) 792238106Sdes CPPFLAGS="$CPPFLAGS -I$thedir -I$thedir/include" 793238106Sdes BAK_LDFLAGS_SET="1" 794238106Sdes BAK_LDFLAGS="$LDFLAGS" 795238106Sdes # remove evdns from linking 796238106Sdes mkdir build >/dev/null 2>&1 797238106Sdes mkdir build/libevent >/dev/null 2>&1 798238106Sdes mkdir build/libevent/.libs >/dev/null 2>&1 799238106Sdes ev_files_o=`ls $thedir/*.o | grep -v evdns\.o | grep -v bufferevent_openssl\.o` 800238106Sdes ev_files_lo=`ls $thedir/*.lo | grep -v evdns\.lo | grep -v bufferevent_openssl\.lo` 801238106Sdes ev_files_libso=`ls $thedir/.libs/*.o | grep -v evdns\.o | grep -v bufferevent_openssl\.o` 802238106Sdes cp $ev_files_o build/libevent 803238106Sdes cp $ev_files_lo build/libevent 804238106Sdes cp $ev_files_libso build/libevent/.libs 805238106Sdes LATE_LDFLAGS="build/libevent/*.lo -lm" 806238106Sdes LDFLAGS="build/libevent/*.o $LDFLAGS -lm" 807238106Sdes else 808238106Sdes AC_MSG_ERROR([Cannot find the libevent library in $withval 809238106SdesYou can restart ./configure --with-libevent=no to use a builtin alternative. 810238106SdesPlease note that this alternative is not as capable as libevent when using 811238106Sdeslarge outgoing port ranges. ]) 812238106Sdes fi 813238106Sdes else 814238106Sdes AC_MSG_RESULT(found in $thedir) 815269257Sdes dnl if event2 exists and no event lib in dir itself, use subdir 816269257Sdes if test ! -f $thedir/lib/libevent.a -a ! -f $thedir/lib/libevent.so -a -d "$thedir/lib/event2"; then 817269257Sdes LDFLAGS="$LDFLAGS -L$thedir/lib/event2" 818269257Sdes ACX_RUNTIME_PATH_ADD([$thedir/lib/event2]) 819269257Sdes else 820269257Sdes dnl assume /usr is in default path, do not add "". 821269257Sdes if test "$thedir" != "/usr" -a "$thedir" != ""; then 822269257Sdes LDFLAGS="$LDFLAGS -L$thedir/lib" 823269257Sdes ACX_RUNTIME_PATH_ADD([$thedir/lib]) 824269257Sdes fi 825238106Sdes fi 826238106Sdes fi 827238106Sdes # check for library used by libevent after 1.3c 828238106Sdes AC_SEARCH_LIBS([clock_gettime], [rt]) 829238106Sdes 830238106Sdes # is the event.h header libev or libevent? 831238106Sdes AC_CHECK_HEADERS([event.h],,, [AC_INCLUDES_DEFAULT]) 832238106Sdes AC_CHECK_DECL(EV_VERSION_MAJOR, [ 833238106Sdes AC_SEARCH_LIBS(event_set, [ev]) 834238106Sdes ],[ 835238106Sdes AC_SEARCH_LIBS(event_set, [event]) 836238106Sdes ],[AC_INCLUDES_DEFAULT 837238106Sdes#include <event.h> 838238106Sdes ]) 839238106Sdes AC_CHECK_FUNCS([event_base_free]) # only in libevent 1.2 and later 840238106Sdes AC_CHECK_FUNCS([event_base_once]) # only in libevent 1.4.1 and later 841238106Sdes AC_CHECK_FUNCS([event_base_new]) # only in libevent 1.4.1 and later 842238106Sdes AC_CHECK_FUNCS([event_base_get_method]) # only in libevent 1.4.3 and later 843238106Sdes AC_CHECK_FUNCS([ev_loop]) # only in libev. (tested on 3.51) 844238106Sdes AC_CHECK_FUNCS([ev_default_loop]) # only in libev. (tested on 4.00) 845238106Sdes if test -n "$BAK_LDFLAGS_SET"; then 846238106Sdes LDFLAGS="$BAK_LDFLAGS" 847238106Sdes fi 848269257Sdes if test "$use_unbound_event" = "yes"; then 849269257Sdes AC_SUBST(UNBOUND_EVENT_INSTALL, [unbound-event-install]) 850269257Sdes AC_SUBST(UNBOUND_EVENT_UNINSTALL, [unbound-event-uninstall]) 851269257Sdes fi 852238106Sdeselse 853238106Sdes AC_DEFINE(USE_MINI_EVENT, 1, [Define if you want to use internal select based events]) 854238106Sdesfi 855238106Sdes 856238106Sdes# check for libexpat 857238106SdesAC_ARG_WITH(libexpat, AC_HELP_STRING([--with-libexpat=path], 858238106Sdes [specify explicit path for libexpat.]), 859238106Sdes [ ],[ withval="/usr/local /opt/local /usr/lib /usr/pkg /usr/sfw /usr" ]) 860238106SdesAC_MSG_CHECKING(for libexpat) 861238106Sdesfound_libexpat="no" 862238106Sdesfor dir in $withval ; do 863238106Sdes if test -f "$dir/include/expat.h"; then 864238106Sdes found_libexpat="yes" 865238106Sdes dnl assume /usr is in default path. 866238106Sdes if test "$dir" != "/usr"; then 867238106Sdes CPPFLAGS="$CPPFLAGS -I$dir/include" 868238106Sdes LDFLAGS="$LDFLAGS -L$dir/lib" 869238106Sdes fi 870238106Sdes AC_MSG_RESULT(found in $dir) 871238106Sdes break; 872238106Sdes fi 873238106Sdesdone 874238106Sdesif test x_$found_libexpat != x_yes; then 875238106Sdes AC_ERROR([Could not find libexpat, expat.h]) 876238106Sdesfi 877238106SdesAC_CHECK_HEADERS([expat.h],,, [AC_INCLUDES_DEFAULT]) 878238106Sdes 879238106Sdes# set static linking if requested 880238106SdesAC_SUBST(staticexe) 881238106Sdesstaticexe="" 882238106SdesAC_ARG_ENABLE(static-exe, AC_HELP_STRING([--enable-static-exe], 883269257Sdes [ enable to compile executables statically against (event) libs, for debug purposes ]), 884238106Sdes , ) 885238106Sdesif test x_$enable_static_exe = x_yes; then 886238106Sdes staticexe="-static" 887238106Sdes if test "$on_mingw" = yes; then 888238106Sdes staticexe="-all-static" 889238106Sdes # for static crosscompile, include gdi32 and zlib here. 890238106Sdes if test "`uname`" = "Linux"; then 891238106Sdes LIBS="$LIBS -lgdi32 -lz" 892238106Sdes fi 893238106Sdes fi 894238106Sdesfi 895238106Sdes 896238106Sdes# set lock checking if requested 897238106SdesAC_ARG_ENABLE(lock_checks, AC_HELP_STRING([--enable-lock-checks], 898238106Sdes [ enable to check lock and unlock calls, for debug purposes ]), 899238106Sdes , ) 900238106Sdesif test x_$enable_lock_checks = x_yes; then 901238106Sdes AC_DEFINE(ENABLE_LOCK_CHECKS, 1, [Define if you want to use debug lock checking (slow).]) 902238106Sdes CHECKLOCK_OBJ="checklocks.lo" 903238106Sdes AC_SUBST(CHECKLOCK_OBJ) 904238106Sdesfi 905238106Sdes 906238106SdesACX_CHECK_GETADDRINFO_WITH_INCLUDES 907238106Sdesif test "$USE_WINSOCK" = 1; then 908238106Sdes AC_DEFINE(UB_ON_WINDOWS, 1, [Use win32 resources and API]) 909238106Sdes AC_CHECK_HEADERS([iphlpapi.h],,, [AC_INCLUDES_DEFAULT 910238106Sdes#include <windows.h> 911238106Sdes ]) 912238106Sdes AC_CHECK_TOOL(WINDRES, windres) 913238106Sdes LIBS="$LIBS -liphlpapi" 914238106Sdes WINAPPS="unbound-service-install.exe unbound-service-remove.exe anchor-update.exe" 915238106Sdes AC_SUBST(WINAPPS) 916238106Sdes WIN_DAEMON_SRC="winrc/win_svc.c winrc/w_inst.c" 917238106Sdes AC_SUBST(WIN_DAEMON_SRC) 918238106Sdes WIN_DAEMON_OBJ="win_svc.lo w_inst.lo" 919238106Sdes AC_SUBST(WIN_DAEMON_OBJ) 920238106Sdes WIN_DAEMON_OBJ_LINK="rsrc_unbound.o" 921238106Sdes AC_SUBST(WIN_DAEMON_OBJ_LINK) 922238106Sdes WIN_HOST_OBJ_LINK="rsrc_unbound_host.o" 923238106Sdes AC_SUBST(WIN_HOST_OBJ_LINK) 924238106Sdes WIN_UBANCHOR_OBJ_LINK="rsrc_unbound_anchor.o log.lo locks.lo" 925238106Sdes AC_SUBST(WIN_UBANCHOR_OBJ_LINK) 926238106Sdes WIN_CONTROL_OBJ_LINK="rsrc_unbound_control.o" 927238106Sdes AC_SUBST(WIN_CONTROL_OBJ_LINK) 928238106Sdes WIN_CHECKCONF_OBJ_LINK="rsrc_unbound_checkconf.o" 929238106Sdes AC_SUBST(WIN_CHECKCONF_OBJ_LINK) 930238106Sdesfi 931238106Sdesif test $ac_cv_func_getaddrinfo = no; then 932238106Sdes AC_LIBOBJ([fake-rfc2553]) 933238106Sdesfi 934238106Sdes# check after getaddrinfo for its libraries 935238106SdesACX_FUNC_IOCTLSOCKET 936238106Sdes 937238106Sdes# see if daemon(3) exists, and if it is deprecated. 938238106SdesAC_CHECK_FUNCS([daemon]) 939238106Sdesif test $ac_cv_func_daemon = yes; then 940238106Sdes ACX_FUNC_DEPRECATED([daemon], [(void)daemon(0, 0);], [ 941238106Sdes#include <stdlib.h> 942238106Sdes]) 943238106Sdesfi 944238106Sdes 945285206SdesAC_CHECK_MEMBERS([struct sockaddr_un.sun_len],,,[ 946285206SdesAC_INCLUDES_DEFAULT 947285206Sdes#ifdef HAVE_SYS_UN_H 948285206Sdes#include <sys/un.h> 949285206Sdes#endif 950285206Sdes]) 951238106SdesAC_CHECK_MEMBERS([struct in_pktinfo.ipi_spec_dst],,,[ 952238106SdesAC_INCLUDES_DEFAULT 953238106Sdes#if HAVE_SYS_PARAM_H 954238106Sdes#include <sys/param.h> 955238106Sdes#endif 956238106Sdes 957238106Sdes#ifdef HAVE_SYS_SOCKET_H 958238106Sdes#include <sys/socket.h> 959238106Sdes#endif 960238106Sdes 961238106Sdes#ifdef HAVE_SYS_UIO_H 962238106Sdes#include <sys/uio.h> 963238106Sdes#endif 964238106Sdes 965238106Sdes#ifdef HAVE_NETINET_IN_H 966238106Sdes#include <netinet/in.h> 967238106Sdes#endif 968238106Sdes 969238106Sdes#ifdef HAVE_ARPA_INET_H 970238106Sdes#include <arpa/inet.h> 971238106Sdes#endif 972238106Sdes 973238106Sdes#ifdef HAVE_WINSOCK2_H 974238106Sdes#include <winsock2.h> 975238106Sdes#endif 976238106Sdes 977238106Sdes#ifdef HAVE_WS2TCPIP_H 978238106Sdes#include <ws2tcpip.h> 979238106Sdes#endif 980238106Sdes]) 981238106SdesAC_SEARCH_LIBS([setusercontext], [util]) 982285206SdesAC_CHECK_FUNCS([tzset sigprocmask fcntl getpwnam getrlimit setrlimit setsid sbrk chroot kill chown sleep usleep random srandom recvmsg sendmsg writev socketpair glob initgroups strftime localtime_r setusercontext _beginthreadex endservent endprotoent]) 983238106SdesAC_CHECK_FUNCS([setresuid],,[AC_CHECK_FUNCS([setreuid])]) 984238106SdesAC_CHECK_FUNCS([setresgid],,[AC_CHECK_FUNCS([setregid])]) 985238106Sdes 986238106Sdes# check if setreuid en setregid fail, on MacOSX10.4(darwin8). 987238106Sdesif echo $build_os | grep darwin8 > /dev/null; then 988238106Sdes AC_DEFINE(DARWIN_BROKEN_SETREUID, 1, [Define this if on macOSX10.4-darwin8 and setreuid and setregid do not work]) 989238106Sdesfi 990238106SdesAC_REPLACE_FUNCS(inet_aton) 991238106SdesAC_REPLACE_FUNCS(inet_pton) 992238106SdesAC_REPLACE_FUNCS(inet_ntop) 993238106SdesAC_REPLACE_FUNCS(snprintf) 994269257SdesAC_REPLACE_FUNCS(strlcat) 995238106SdesAC_REPLACE_FUNCS(strlcpy) 996238106SdesAC_REPLACE_FUNCS(memmove) 997238106SdesAC_REPLACE_FUNCS(gmtime_r) 998285206SdesLIBOBJ_WITHOUT_CTIMEARC4="$LIBOBJS" 999285206SdesAC_SUBST(LIBOBJ_WITHOUT_CTIMEARC4) 1000285206Sdesif test "$USE_NSS" = "no"; then 1001285206Sdes AC_REPLACE_FUNCS(arc4random) 1002285206Sdes AC_REPLACE_FUNCS(arc4random_uniform) 1003285206Sdes if test "$ac_cv_func_arc4random" = "no"; then 1004285206Sdes AC_LIBOBJ(explicit_bzero) 1005285206Sdes AC_LIBOBJ(arc4_lock) 1006285206Sdes AC_CHECK_FUNCS([getentropy],,[ 1007285206Sdes if test "$USE_WINSOCK" = 1; then 1008285206Sdes AC_LIBOBJ(getentropy_win) 1009285206Sdes else 1010285206Sdes case `uname` in 1011285206Sdes Darwin) 1012285206Sdes AC_LIBOBJ(getentropy_osx) 1013285206Sdes ;; 1014285206Sdes SunOS) 1015285206Sdes AC_LIBOBJ(getentropy_solaris) 1016285206Sdes AC_CHECK_HEADERS([sys/sha2.h],, [ 1017285206Sdes AC_CHECK_FUNCS([SHA512_Update],,[ 1018285206Sdes AC_LIBOBJ(sha512) 1019285206Sdes ]) 1020285206Sdes ], [AC_INCLUDES_DEFAULT]) 1021285206Sdes if test "$ac_cv_header_sys_sha2_h" = "yes"; then 1022285206Sdes # this lib needed for sha2 on solaris 1023285206Sdes LIBS="$LIBS -lmd" 1024285206Sdes fi 1025285206Sdes AC_SEARCH_LIBS([clock_gettime], [rt]) 1026285206Sdes ;; 1027285206Sdes Linux|*) 1028285206Sdes AC_LIBOBJ(getentropy_linux) 1029285206Sdes AC_CHECK_FUNCS([SHA512_Update],,[ 1030285206Sdes AC_DEFINE([COMPAT_SHA512], [1], [Do sha512 definitions in config.h]) 1031285206Sdes AC_LIBOBJ(sha512) 1032285206Sdes ]) 1033285206Sdes AC_CHECK_HEADERS([sys/sysctl.h],,, [AC_INCLUDES_DEFAULT]) 1034285206Sdes AC_CHECK_FUNCS([getauxval]) 1035285206Sdes AC_SEARCH_LIBS([clock_gettime], [rt]) 1036285206Sdes ;; 1037285206Sdes esac 1038285206Sdes fi 1039285206Sdes ]) 1040285206Sdes fi 1041285206Sdesfi 1042238106SdesLIBOBJ_WITHOUT_CTIME="$LIBOBJS" 1043238106SdesAC_SUBST(LIBOBJ_WITHOUT_CTIME) 1044238106SdesAC_REPLACE_FUNCS(ctime_r) 1045238106Sdes 1046238106SdesAC_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])) 1047238106Sdescase "$enable_allsymbols" in 1048238106Sdes yes) 1049238106Sdes COMMON_OBJ_ALL_SYMBOLS="" 1050238106Sdes UBSYMS="" 1051238106Sdes EXTRALINK="-L. -L.libs -lunbound" 1052238106Sdes 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]) 1053238106Sdes ;; 1054238106Sdes no|*) 1055238106Sdes COMMON_OBJ_ALL_SYMBOLS='$(COMMON_OBJ)' 1056238106Sdes UBSYMS='-export-symbols $(srcdir)/libunbound/ubsyms.def' 1057238106Sdes EXTRALINK="" 1058238106Sdes ;; 1059238106Sdesesac 1060238106SdesAC_SUBST(COMMON_OBJ_ALL_SYMBOLS) 1061238106SdesAC_SUBST(EXTRALINK) 1062238106SdesAC_SUBST(UBSYMS) 1063238106Sdesif test x_$enable_lock_checks = x_yes; then 1064238106Sdes UBSYMS="-export-symbols clubsyms.def" 1065238106Sdes cp ${srcdir}/libunbound/ubsyms.def clubsyms.def 1066238106Sdes echo lock_protect >> clubsyms.def 1067238106Sdes echo lock_unprotect >> clubsyms.def 1068238106Sdes echo lock_get_mem >> clubsyms.def 1069238106Sdes echo checklock_start >> clubsyms.def 1070238106Sdes echo checklock_stop >> clubsyms.def 1071238106Sdes echo checklock_lock >> clubsyms.def 1072238106Sdes echo checklock_unlock >> clubsyms.def 1073238106Sdes echo checklock_init >> clubsyms.def 1074238106Sdes echo checklock_thrcreate >> clubsyms.def 1075238106Sdes echo checklock_thrjoin >> clubsyms.def 1076238106Sdesfi 1077238106Sdes 1078285206Sdes# check for dnstap if requested 1079285206Sdesdt_DNSTAP([$UNBOUND_RUN_DIR/dnstap.sock], 1080285206Sdes [ 1081285206Sdes AC_DEFINE([USE_DNSTAP], [1], [Define to 1 to enable dnstap support]) 1082285206Sdes AC_SUBST([ENABLE_DNSTAP], [1]) 1083285206Sdes 1084285206Sdes AC_SUBST([opt_dnstap_socket_path]) 1085285206Sdes ACX_ESCAPE_BACKSLASH($opt_dnstap_socket_path, hdr_dnstap_socket_path) 1086285206Sdes AC_DEFINE_UNQUOTED(DNSTAP_SOCKET_PATH, 1087285206Sdes ["$hdr_dnstap_socket_path"], [default dnstap socket path]) 1088285206Sdes 1089285206Sdes AC_SUBST([DNSTAP_SRC], ["dnstap/dnstap.c dnstap/dnstap.pb-c.c"]) 1090285206Sdes AC_SUBST([DNSTAP_OBJ], ["dnstap.lo dnstap.pb-c.lo"]) 1091285206Sdes ], 1092285206Sdes [ 1093285206Sdes AC_SUBST([ENABLE_DNSTAP], [0]) 1094285206Sdes ] 1095285206Sdes) 1096285206Sdes 1097238106SdesAC_MSG_CHECKING([if ${MAKE:-make} supports $< with implicit rule in scope]) 1098238106Sdes# on openBSD, the implicit rule make $< work. 1099238106Sdes# on Solaris, it does not work ($? is changed sources, $^ lists dependencies). 1100238106Sdes# gmake works. 1101238106Sdescat >conftest.make <<EOF 1102238106Sdesall: conftest.lo 1103238106Sdes 1104238106Sdesconftest.lo foo.lo bla.lo: 1105238106Sdes if test -f "\$<"; then touch \$@; fi 1106238106Sdes 1107238106Sdes.SUFFIXES: .lo 1108238106Sdes.c.lo: 1109238106Sdes if test -f "\$<"; then touch \$@; fi 1110238106Sdes 1111238106Sdesconftest.lo: conftest.dir/conftest.c 1112238106SdesEOF 1113238106Sdesmkdir conftest.dir 1114238106Sdestouch conftest.dir/conftest.c 1115238106Sdesrm -f conftest.lo conftest.c 1116238106Sdes${MAKE:-make} -f conftest.make >/dev/null 1117238106Sdesrm -f conftest.make conftest.c conftest.dir/conftest.c 1118238106Sdesrm -rf conftest.dir 1119238106Sdesif test ! -f conftest.lo; then 1120238106Sdes AC_MSG_RESULT(no) 1121238106Sdes SOURCEDETERMINE='echo "$^" | awk "-F " "{print \$$1;}" > .source' 1122238106Sdes SOURCEFILE='`cat .source`' 1123238106Sdeselse 1124238106Sdes AC_MSG_RESULT(yes) 1125238106Sdes SOURCEDETERMINE=':' 1126238106Sdes SOURCEFILE='$<' 1127238106Sdesfi 1128238106Sdesrm -f conftest.lo 1129238106SdesAC_SUBST(SOURCEDETERMINE) 1130238106SdesAC_SUBST(SOURCEFILE) 1131238106Sdes 1132249141Sdes# see if we want to build the library or everything 1133249141SdesALLTARGET="alltargets" 1134269257SdesINSTALLTARGET="install-all" 1135249141SdesAC_ARG_WITH(libunbound-only, AC_HELP_STRING([--with-libunbound-only], 1136249141Sdes [do not build daemon and tool programs]), 1137249141Sdes [ 1138249141Sdes if test "$withval" = "yes"; then 1139249141Sdes ALLTARGET="lib" 1140269257Sdes INSTALLTARGET="install-lib" 1141249141Sdes fi 1142249141Sdes]) 1143249141SdesAC_SUBST(ALLTARGET) 1144269257SdesAC_SUBST(INSTALLTARGET) 1145249141Sdes 1146238106SdesACX_STRIP_EXT_FLAGS 1147238106SdesLDFLAGS="$LATE_LDFLAGS $LDFLAGS" 1148238106Sdes 1149238106SdesAC_DEFINE_UNQUOTED([MAXSYSLOGMSGLEN], [10240], [Define to the maximum message length to pass to syslog.]) 1150238106Sdes 1151238106SdesAH_BOTTOM( 1152238106Sdesdnl this must be first AH_CONFIG, to define the flags before any includes. 1153238106SdesAHX_CONFIG_EXT_FLAGS 1154238106Sdes 1155238106Sdesdnl includes 1156238106Sdes[ 1157238106Sdes#ifndef UNBOUND_DEBUG 1158238106Sdes# define NDEBUG 1159238106Sdes#endif 1160238106Sdes 1161269257Sdes/** Use small-ldns codebase */ 1162269257Sdes#define USE_SLDNS 1 1163269257Sdes#ifdef HAVE_SSL 1164269257Sdes# define LDNS_BUILD_CONFIG_HAVE_SSL 1 1165269257Sdes#endif 1166269257Sdes 1167238106Sdes#include <stdio.h> 1168238106Sdes#include <string.h> 1169238106Sdes#include <unistd.h> 1170238106Sdes#include <assert.h> 1171238106Sdes 1172238106Sdes#if STDC_HEADERS 1173238106Sdes#include <stdlib.h> 1174238106Sdes#include <stddef.h> 1175238106Sdes#endif 1176238106Sdes 1177269257Sdes#ifdef HAVE_STDARG_H 1178269257Sdes#include <stdarg.h> 1179269257Sdes#endif 1180269257Sdes 1181238106Sdes#ifdef HAVE_STDINT_H 1182238106Sdes#include <stdint.h> 1183238106Sdes#endif 1184238106Sdes 1185238106Sdes#include <errno.h> 1186238106Sdes 1187238106Sdes#if HAVE_SYS_PARAM_H 1188238106Sdes#include <sys/param.h> 1189238106Sdes#endif 1190238106Sdes 1191238106Sdes#ifdef HAVE_SYS_SOCKET_H 1192238106Sdes#include <sys/socket.h> 1193238106Sdes#endif 1194238106Sdes 1195238106Sdes#ifdef HAVE_SYS_UIO_H 1196238106Sdes#include <sys/uio.h> 1197238106Sdes#endif 1198238106Sdes 1199238106Sdes#ifdef HAVE_NETINET_IN_H 1200238106Sdes#include <netinet/in.h> 1201238106Sdes#endif 1202238106Sdes 1203238106Sdes#ifdef HAVE_ARPA_INET_H 1204238106Sdes#include <arpa/inet.h> 1205238106Sdes#endif 1206238106Sdes 1207238106Sdes#ifdef HAVE_WINSOCK2_H 1208238106Sdes#include <winsock2.h> 1209238106Sdes#endif 1210238106Sdes 1211238106Sdes#ifdef HAVE_WS2TCPIP_H 1212238106Sdes#include <ws2tcpip.h> 1213238106Sdes#endif 1214269257Sdes 1215269257Sdes#ifndef USE_WINSOCK 1216269257Sdes#define ARG_LL "%ll" 1217269257Sdes#else 1218269257Sdes#define ARG_LL "%I64" 1219269257Sdes#endif 1220285206Sdes 1221285206Sdes#ifndef AF_LOCAL 1222285206Sdes#define AF_LOCAL AF_UNIX 1223285206Sdes#endif 1224238106Sdes] 1225238106Sdes 1226238106SdesAHX_CONFIG_FORMAT_ATTRIBUTE 1227238106SdesAHX_CONFIG_UNUSED_ATTRIBUTE 1228238106SdesAHX_CONFIG_FSEEKO 1229238106SdesAHX_CONFIG_MAXHOSTNAMELEN 1230238106SdesAHX_CONFIG_SNPRINTF(unbound) 1231238106SdesAHX_CONFIG_INET_PTON(unbound) 1232238106SdesAHX_CONFIG_INET_NTOP(unbound) 1233238106SdesAHX_CONFIG_INET_ATON(unbound) 1234238106SdesAHX_CONFIG_MEMMOVE(unbound) 1235269257SdesAHX_CONFIG_STRLCAT(unbound) 1236238106SdesAHX_CONFIG_STRLCPY(unbound) 1237238106SdesAHX_CONFIG_GMTIME_R(unbound) 1238238106SdesAHX_CONFIG_W32_SLEEP 1239238106SdesAHX_CONFIG_W32_USLEEP 1240238106SdesAHX_CONFIG_W32_RANDOM 1241238106SdesAHX_CONFIG_W32_SRANDOM 1242238106SdesAHX_CONFIG_W32_FD_SET_T 1243238106SdesAHX_CONFIG_IPV6_MIN_MTU 1244238106SdesAHX_MEMCMP_BROKEN(unbound) 1245238106Sdes 1246238106Sdes[ 1247238106Sdes#ifndef HAVE_CTIME_R 1248238106Sdes#define ctime_r unbound_ctime_r 1249238106Sdeschar *ctime_r(const time_t *timep, char *buf); 1250238106Sdes#endif 1251238106Sdes 1252238106Sdes#if !defined(HAVE_STRPTIME) || !defined(STRPTIME_WORKS) 1253238106Sdes#define strptime unbound_strptime 1254238106Sdesstruct tm; 1255238106Sdeschar *strptime(const char *s, const char *format, struct tm *tm); 1256238106Sdes#endif 1257238106Sdes 1258285206Sdes#ifdef HAVE_LIBRESSL 1259285206Sdes# if !HAVE_DECL_STRLCPY 1260285206Sdessize_t strlcpy(char *dst, const char *src, size_t siz); 1261285206Sdes# endif 1262285206Sdes# if !HAVE_DECL_STRLCAT 1263285206Sdessize_t strlcat(char *dst, const char *src, size_t siz); 1264285206Sdes# endif 1265285206Sdes# if !HAVE_DECL_ARC4RANDOM && defined(HAVE_ARC4RANDOM) 1266285206Sdesuint32_t arc4random(void); 1267285206Sdes# endif 1268285206Sdes# if !HAVE_DECL_ARC4RANDOM_UNIFORM && defined(HAVE_ARC4RANDOM_UNIFORM) 1269285206Sdesuint32_t arc4random_uniform(uint32_t upper_bound); 1270285206Sdes# endif 1271285206Sdes#endif /* HAVE_LIBRESSL */ 1272285206Sdes#ifndef HAVE_ARC4RANDOM 1273285206Sdesvoid explicit_bzero(void* buf, size_t len); 1274285206Sdesint getentropy(void* buf, size_t len); 1275285206Sdesuint32_t arc4random(void); 1276285206Sdesvoid arc4random_buf(void* buf, size_t n); 1277285206Sdesvoid _ARC4_LOCK(void); 1278285206Sdesvoid _ARC4_UNLOCK(void); 1279285206Sdes#endif 1280285206Sdes#ifndef HAVE_ARC4RANDOM_UNIFORM 1281285206Sdesuint32_t arc4random_uniform(uint32_t upper_bound); 1282285206Sdes#endif 1283285206Sdes#ifdef COMPAT_SHA512 1284285206Sdes#ifndef SHA512_DIGEST_LENGTH 1285285206Sdes#define SHA512_BLOCK_LENGTH 128 1286285206Sdes#define SHA512_DIGEST_LENGTH 64 1287285206Sdes#define SHA512_DIGEST_STRING_LENGTH (SHA512_DIGEST_LENGTH * 2 + 1) 1288285206Sdestypedef struct _SHA512_CTX { 1289285206Sdes uint64_t state[8]; 1290285206Sdes uint64_t bitcount[2]; 1291285206Sdes uint8_t buffer[SHA512_BLOCK_LENGTH]; 1292285206Sdes} SHA512_CTX; 1293285206Sdes#endif /* SHA512_DIGEST_LENGTH */ 1294285206Sdesvoid SHA512_Init(SHA512_CTX*); 1295285206Sdesvoid SHA512_Update(SHA512_CTX*, void*, size_t); 1296285206Sdesvoid SHA512_Final(uint8_t[SHA512_DIGEST_LENGTH], SHA512_CTX*); 1297285206Sdesunsigned char *SHA512(void* data, unsigned int data_len, unsigned char *digest); 1298285206Sdes#endif /* COMPAT_SHA512 */ 1299285206Sdes 1300285206Sdes 1301285206Sdes 1302238106Sdes#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)) 1303238106Sdes /* using version of libevent that is not threadsafe. */ 1304238106Sdes# define LIBEVENT_SIGNAL_PROBLEM 1 1305238106Sdes#endif 1306238106Sdes 1307238106Sdes#ifndef CHECKED_INET6 1308238106Sdes# define CHECKED_INET6 1309238106Sdes# ifdef AF_INET6 1310238106Sdes# define INET6 1311238106Sdes# else 1312238106Sdes# define AF_INET6 28 1313238106Sdes# endif 1314238106Sdes#endif /* CHECKED_INET6 */ 1315238106Sdes 1316238106Sdes#ifndef HAVE_GETADDRINFO 1317238106Sdesstruct sockaddr_storage; 1318238106Sdes#include "compat/fake-rfc2553.h" 1319238106Sdes#endif 1320238106Sdes 1321238106Sdes#ifdef UNBOUND_ALLOC_STATS 1322238106Sdes# define malloc(s) unbound_stat_malloc_log(s, __FILE__, __LINE__, __func__) 1323238106Sdes# define calloc(n,s) unbound_stat_calloc_log(n, s, __FILE__, __LINE__, __func__) 1324238106Sdes# define free(p) unbound_stat_free_log(p, __FILE__, __LINE__, __func__) 1325238106Sdes# define realloc(p,s) unbound_stat_realloc_log(p, s, __FILE__, __LINE__, __func__) 1326238106Sdesvoid *unbound_stat_malloc(size_t size); 1327238106Sdesvoid *unbound_stat_calloc(size_t nmemb, size_t size); 1328238106Sdesvoid unbound_stat_free(void *ptr); 1329238106Sdesvoid *unbound_stat_realloc(void *ptr, size_t size); 1330238106Sdesvoid *unbound_stat_malloc_log(size_t size, const char* file, int line, 1331238106Sdes const char* func); 1332238106Sdesvoid *unbound_stat_calloc_log(size_t nmemb, size_t size, const char* file, 1333238106Sdes int line, const char* func); 1334238106Sdesvoid unbound_stat_free_log(void *ptr, const char* file, int line, 1335238106Sdes const char* func); 1336238106Sdesvoid *unbound_stat_realloc_log(void *ptr, size_t size, const char* file, 1337238106Sdes int line, const char* func); 1338238106Sdes#elif defined(UNBOUND_ALLOC_LITE) 1339238106Sdes# include "util/alloc.h" 1340238106Sdes#endif /* UNBOUND_ALLOC_LITE and UNBOUND_ALLOC_STATS */ 1341238106Sdes 1342238106Sdes/** default port for DNS traffic. */ 1343238106Sdes#define UNBOUND_DNS_PORT 53 1344238106Sdes/** default port for unbound control traffic, registered port with IANA, 1345238106Sdes ub-dns-control 8953/tcp unbound dns nameserver control */ 1346238106Sdes#define UNBOUND_CONTROL_PORT 8953 1347238106Sdes/** the version of unbound-control that this software implements */ 1348238106Sdes#define UNBOUND_CONTROL_VERSION 1 1349238106Sdes 1350238106Sdes]) 1351238106Sdes 1352285206Sdesdnl if we build from source tree, the man pages need @date@ and @version@ 1353285206Sdesdnl if this is a distro tarball, that was already done by makedist.sh 1354285206SdesAC_SUBST(version, [VERSION_MAJOR.VERSION_MINOR.VERSION_MICRO]) 1355285206SdesAC_SUBST(date, [`date +'%b %e, %Y'`]) 1356285206Sdes 1357285206SdesAC_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]) 1358238106SdesAC_CONFIG_HEADER([config.h]) 1359238106SdesAC_OUTPUT 1360