1*b7579f77SDag-Erling Smørgrav# -*- Autoconf -*- 2*b7579f77SDag-Erling Smørgrav# Process this file with autoconf to produce a configure script. 3*b7579f77SDag-Erling SmørgravAC_PREREQ(2.56) 4*b7579f77SDag-Erling Smørgravsinclude(acx_nlnetlabs.m4) 5*b7579f77SDag-Erling Smørgravsinclude(acx_pthread.m4) 6*b7579f77SDag-Erling Smørgravsinclude(acx_python.m4) 7*b7579f77SDag-Erling Smørgravsinclude(ac_pkg_swig.m4) 8*b7579f77SDag-Erling Smørgrav 9*b7579f77SDag-Erling SmørgravAC_INIT(unbound, 1.4.17, unbound-bugs@nlnetlabs.nl, unbound) 10*b7579f77SDag-Erling Smørgrav 11*b7579f77SDag-Erling SmørgravLIBUNBOUND_CURRENT=3 12*b7579f77SDag-Erling SmørgravLIBUNBOUND_REVISION=1 13*b7579f77SDag-Erling SmørgravLIBUNBOUND_AGE=1 14*b7579f77SDag-Erling Smørgrav# 1.0.0 had 0:12:0 15*b7579f77SDag-Erling Smørgrav# 1.0.1 had 0:13:0 16*b7579f77SDag-Erling Smørgrav# 1.0.2 had 0:14:0 17*b7579f77SDag-Erling Smørgrav# 1.1.0 had 0:15:0 18*b7579f77SDag-Erling Smørgrav# 1.1.1 had 0:16:0 19*b7579f77SDag-Erling Smørgrav# 1.2.0 had 0:17:0 20*b7579f77SDag-Erling Smørgrav# 1.2.1 had 0:18:0 21*b7579f77SDag-Erling Smørgrav# 1.3.0 had 1:0:0 # ub_cancel and -export-symbols. 22*b7579f77SDag-Erling Smørgrav# 1.3.1 had 1:1:0 23*b7579f77SDag-Erling Smørgrav# 1.3.2 had 1:2:0 24*b7579f77SDag-Erling Smørgrav# 1.3.3 had 1:3:0 25*b7579f77SDag-Erling Smørgrav# 1.3.4 had 1:4:0 26*b7579f77SDag-Erling Smørgrav# 1.4.0-snapshots had 1:5:0 27*b7579f77SDag-Erling Smørgrav# 1.4.0 had 1:5:0 (not 2:0:0) # ub_result.why_bogus 28*b7579f77SDag-Erling Smørgrav# 1.4.1 had 2:1:0 29*b7579f77SDag-Erling Smørgrav# 1.4.2 had 2:2:0 30*b7579f77SDag-Erling Smørgrav# 1.4.3 had 2:3:0 31*b7579f77SDag-Erling Smørgrav# 1.4.4 had 2:4:0 32*b7579f77SDag-Erling Smørgrav# 1.4.5 had 2:5:0 33*b7579f77SDag-Erling Smørgrav# 1.4.6 had 2:6:0 34*b7579f77SDag-Erling Smørgrav# 1.4.7 had 2:7:0 35*b7579f77SDag-Erling Smørgrav# 1.4.8 had 2:8:0 36*b7579f77SDag-Erling Smørgrav# 1.4.9 had 2:9:0 37*b7579f77SDag-Erling Smørgrav# 1.4.10 had 2:10:0 38*b7579f77SDag-Erling Smørgrav# 1.4.11 had 2:11:0 39*b7579f77SDag-Erling Smørgrav# 1.4.12 had 2:12:0 40*b7579f77SDag-Erling Smørgrav# 1.4.13 had 2:13:0 41*b7579f77SDag-Erling Smørgrav# and 1.4.13p1 and 1.4.13.p2 42*b7579f77SDag-Erling Smørgrav# 1.4.14 had 2:14:0 43*b7579f77SDag-Erling Smørgrav# 1.4.15 had 3:0:1 # adds ub_version() 44*b7579f77SDag-Erling Smørgrav# 1.4.16 had 3:1:1 45*b7579f77SDag-Erling Smørgrav# 1.4.17 had 3:2:1 46*b7579f77SDag-Erling Smørgrav 47*b7579f77SDag-Erling Smørgrav# Current -- the number of the binary API that we're implementing 48*b7579f77SDag-Erling Smørgrav# Revision -- which iteration of the implementation of the binary 49*b7579f77SDag-Erling Smørgrav# API are we supplying? 50*b7579f77SDag-Erling Smørgrav# Age -- How many previous binary API versions do we also 51*b7579f77SDag-Erling Smørgrav# support? 52*b7579f77SDag-Erling Smørgrav# 53*b7579f77SDag-Erling Smørgrav# If we release a new version that does not change the binary API, 54*b7579f77SDag-Erling Smørgrav# increment Revision. 55*b7579f77SDag-Erling Smørgrav# 56*b7579f77SDag-Erling Smørgrav# If we release a new version that changes the binary API, but does 57*b7579f77SDag-Erling Smørgrav# not break programs compiled against the old binary API, increment 58*b7579f77SDag-Erling Smørgrav# Current and Age. Set Revision to 0, since this is the first 59*b7579f77SDag-Erling Smørgrav# implementation of the new API. 60*b7579f77SDag-Erling Smørgrav# 61*b7579f77SDag-Erling Smørgrav# Otherwise, we're changing the binary API and breaking bakward 62*b7579f77SDag-Erling Smørgrav# compatibility with old binaries. Increment Current. Set Age to 0, 63*b7579f77SDag-Erling Smørgrav# since we're backward compatible with no previous APIs. Set Revision 64*b7579f77SDag-Erling Smørgrav# to 0 too. 65*b7579f77SDag-Erling SmørgravAC_SUBST(LIBUNBOUND_CURRENT) 66*b7579f77SDag-Erling SmørgravAC_SUBST(LIBUNBOUND_REVISION) 67*b7579f77SDag-Erling SmørgravAC_SUBST(LIBUNBOUND_AGE) 68*b7579f77SDag-Erling Smørgrav 69*b7579f77SDag-Erling Smørgravpretty_cmdline() { 70*b7579f77SDag-Erling Smørgrav cmdline="" 71*b7579f77SDag-Erling Smørgrav while test -n "$1"; do 72*b7579f77SDag-Erling Smørgrav cmdline="$cmdline '"`echo $1 | sed -e 's/\\\\/\\\\\\\\/g' | sed -e 's/"/\\\\"/g' `"'" 73*b7579f77SDag-Erling Smørgrav shift 74*b7579f77SDag-Erling Smørgrav done 75*b7579f77SDag-Erling Smørgrav} 76*b7579f77SDag-Erling Smørgravpretty_cmdline $@ 77*b7579f77SDag-Erling SmørgravAC_DEFINE_UNQUOTED(CONFIGURE_BUILD_WITH, ["$cmdline"], [configure flags]) 78*b7579f77SDag-Erling SmørgravAC_CANONICAL_TARGET 79*b7579f77SDag-Erling SmørgravAC_DEFINE_UNQUOTED(CONFIGURE_TARGET, ["$target"], [configure target system]) 80*b7579f77SDag-Erling SmørgravAC_DEFINE_UNQUOTED(CONFIGURE_DATE, ["`date`"], [configure date]) 81*b7579f77SDag-Erling Smørgrav 82*b7579f77SDag-Erling SmørgravCFLAGS="$CFLAGS" 83*b7579f77SDag-Erling SmørgravAC_AIX 84*b7579f77SDag-Erling Smørgrav 85*b7579f77SDag-Erling Smørgravdnl 86*b7579f77SDag-Erling Smørgravdnl By default set prefix to /usr/local 87*b7579f77SDag-Erling Smørgravdnl 88*b7579f77SDag-Erling Smørgravcase "$prefix" in 89*b7579f77SDag-Erling Smørgrav NONE) 90*b7579f77SDag-Erling Smørgrav prefix="/usr/local" 91*b7579f77SDag-Erling Smørgrav ;; 92*b7579f77SDag-Erling Smørgravesac 93*b7579f77SDag-Erling Smørgrav 94*b7579f77SDag-Erling Smørgrav# are we on MinGW? 95*b7579f77SDag-Erling Smørgravif uname -s 2>&1 | grep MINGW32 >/dev/null; then on_mingw="yes" 96*b7579f77SDag-Erling Smørgravelse 97*b7579f77SDag-Erling Smørgrav if echo $target | grep mingw32 >/dev/null; then on_mingw="yes" 98*b7579f77SDag-Erling Smørgrav else on_mingw="no"; fi 99*b7579f77SDag-Erling Smørgravfi 100*b7579f77SDag-Erling Smørgrav 101*b7579f77SDag-Erling Smørgrav# 102*b7579f77SDag-Erling Smørgrav# Determine configuration file 103*b7579f77SDag-Erling Smørgrav# the eval is to evaluate shell expansion twice 104*b7579f77SDag-Erling Smørgravif test $on_mingw = "no"; then 105*b7579f77SDag-Erling Smørgrav ub_conf_file=`eval echo "${sysconfdir}/unbound/unbound.conf"` 106*b7579f77SDag-Erling Smørgravelse 107*b7579f77SDag-Erling Smørgrav ub_conf_file="C:\\Program Files\\Unbound\\service.conf" 108*b7579f77SDag-Erling Smørgravfi 109*b7579f77SDag-Erling SmørgravAC_ARG_WITH([conf_file], 110*b7579f77SDag-Erling Smørgrav AC_HELP_STRING([--with-conf-file=path], 111*b7579f77SDag-Erling Smørgrav [Pathname to the Unbound configuration file]), 112*b7579f77SDag-Erling Smørgrav [ub_conf_file="$withval"]) 113*b7579f77SDag-Erling SmørgravAC_SUBST(ub_conf_file) 114*b7579f77SDag-Erling SmørgravACX_ESCAPE_BACKSLASH($ub_conf_file, hdr_config) 115*b7579f77SDag-Erling SmørgravAC_DEFINE_UNQUOTED(CONFIGFILE, ["$hdr_config"], [Pathname to the Unbound configuration file]) 116*b7579f77SDag-Erling Smørgrav 117*b7579f77SDag-Erling Smørgrav# Determine run, chroot directory and pidfile locations 118*b7579f77SDag-Erling SmørgravAC_ARG_WITH(run-dir, 119*b7579f77SDag-Erling Smørgrav AC_HELP_STRING([--with-run-dir=path], 120*b7579f77SDag-Erling Smørgrav [set default directory to chdir to (by default dir part of cfg file)]), 121*b7579f77SDag-Erling Smørgrav UNBOUND_RUN_DIR="$withval", 122*b7579f77SDag-Erling Smørgravif test $on_mingw = no; then 123*b7579f77SDag-Erling Smørgrav UNBOUND_RUN_DIR=`dirname "$ub_conf_file"` 124*b7579f77SDag-Erling Smørgravelse 125*b7579f77SDag-Erling Smørgrav UNBOUND_RUN_DIR="" 126*b7579f77SDag-Erling Smørgravfi 127*b7579f77SDag-Erling Smørgrav) 128*b7579f77SDag-Erling SmørgravAC_SUBST(UNBOUND_RUN_DIR) 129*b7579f77SDag-Erling SmørgravACX_ESCAPE_BACKSLASH($UNBOUND_RUN_DIR, hdr_run) 130*b7579f77SDag-Erling SmørgravAC_DEFINE_UNQUOTED(RUN_DIR, ["$hdr_run"], [Directory to chdir to]) 131*b7579f77SDag-Erling Smørgrav 132*b7579f77SDag-Erling SmørgravAC_ARG_WITH(chroot-dir, 133*b7579f77SDag-Erling Smørgrav AC_HELP_STRING([--with-chroot-dir=path], 134*b7579f77SDag-Erling Smørgrav [set default directory to chroot to (by default same as run-dir)]), 135*b7579f77SDag-Erling Smørgrav UNBOUND_CHROOT_DIR="$withval", 136*b7579f77SDag-Erling Smørgravif test $on_mingw = no; then 137*b7579f77SDag-Erling Smørgrav UNBOUND_CHROOT_DIR="$UNBOUND_RUN_DIR" 138*b7579f77SDag-Erling Smørgravelse 139*b7579f77SDag-Erling Smørgrav UNBOUND_CHROOT_DIR="" 140*b7579f77SDag-Erling Smørgravfi 141*b7579f77SDag-Erling Smørgrav) 142*b7579f77SDag-Erling SmørgravAC_SUBST(UNBOUND_CHROOT_DIR) 143*b7579f77SDag-Erling SmørgravACX_ESCAPE_BACKSLASH($UNBOUND_CHROOT_DIR, hdr_chroot) 144*b7579f77SDag-Erling SmørgravAC_DEFINE_UNQUOTED(CHROOT_DIR, ["$hdr_chroot"], [Directory to chroot to]) 145*b7579f77SDag-Erling Smørgrav 146*b7579f77SDag-Erling SmørgravAC_ARG_WITH(share-dir, 147*b7579f77SDag-Erling Smørgrav AC_HELP_STRING([--with-share-dir=path], 148*b7579f77SDag-Erling Smørgrav [set default directory with shared data (by default same as share/unbound)]), 149*b7579f77SDag-Erling Smørgrav UNBOUND_SHARE_DIR="$withval", 150*b7579f77SDag-Erling Smørgrav UNBOUND_SHARE_DIR="$UNBOUND_RUN_DIR") 151*b7579f77SDag-Erling SmørgravAC_SUBST(UNBOUND_SHARE_DIR) 152*b7579f77SDag-Erling SmørgravAC_DEFINE_UNQUOTED(SHARE_DIR, ["$UNBOUND_SHARE_DIR"], [Shared data]) 153*b7579f77SDag-Erling Smørgrav 154*b7579f77SDag-Erling SmørgravAC_ARG_WITH(pidfile, 155*b7579f77SDag-Erling Smørgrav AC_HELP_STRING([--with-pidfile=filename], 156*b7579f77SDag-Erling Smørgrav [set default pathname to unbound pidfile (default run-dir/unbound.pid)]), 157*b7579f77SDag-Erling Smørgrav UNBOUND_PIDFILE="$withval", 158*b7579f77SDag-Erling Smørgravif test $on_mingw = no; then 159*b7579f77SDag-Erling Smørgrav UNBOUND_PIDFILE="$UNBOUND_RUN_DIR/unbound.pid" 160*b7579f77SDag-Erling Smørgravelse 161*b7579f77SDag-Erling Smørgrav UNBOUND_PIDFILE="" 162*b7579f77SDag-Erling Smørgravfi 163*b7579f77SDag-Erling Smørgrav) 164*b7579f77SDag-Erling SmørgravAC_SUBST(UNBOUND_PIDFILE) 165*b7579f77SDag-Erling SmørgravACX_ESCAPE_BACKSLASH($UNBOUND_PIDFILE, hdr_pid) 166*b7579f77SDag-Erling SmørgravAC_DEFINE_UNQUOTED(PIDFILE, ["$hdr_pid"], [default pidfile location]) 167*b7579f77SDag-Erling Smørgrav 168*b7579f77SDag-Erling SmørgravAC_ARG_WITH(rootkey-file, 169*b7579f77SDag-Erling Smørgrav AC_HELP_STRING([--with-rootkey-file=filename], 170*b7579f77SDag-Erling Smørgrav [set default pathname to root key file (default run-dir/root.key). This file is read and written.]), 171*b7579f77SDag-Erling Smørgrav UNBOUND_ROOTKEY_FILE="$withval", 172*b7579f77SDag-Erling Smørgravif test $on_mingw = no; then 173*b7579f77SDag-Erling Smørgrav UNBOUND_ROOTKEY_FILE="$UNBOUND_RUN_DIR/root.key" 174*b7579f77SDag-Erling Smørgravelse 175*b7579f77SDag-Erling Smørgrav UNBOUND_ROOTKEY_FILE="C:\\Program Files\\Unbound\\root.key" 176*b7579f77SDag-Erling Smørgravfi 177*b7579f77SDag-Erling Smørgrav) 178*b7579f77SDag-Erling SmørgravAC_SUBST(UNBOUND_ROOTKEY_FILE) 179*b7579f77SDag-Erling SmørgravACX_ESCAPE_BACKSLASH($UNBOUND_ROOTKEY_FILE, hdr_rkey) 180*b7579f77SDag-Erling SmørgravAC_DEFINE_UNQUOTED(ROOT_ANCHOR_FILE, ["$hdr_rkey"], [default rootkey location]) 181*b7579f77SDag-Erling Smørgrav 182*b7579f77SDag-Erling SmørgravAC_ARG_WITH(rootcert-file, 183*b7579f77SDag-Erling Smørgrav AC_HELP_STRING([--with-rootcert-file=filename], 184*b7579f77SDag-Erling Smørgrav [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.]), 185*b7579f77SDag-Erling Smørgrav UNBOUND_ROOTCERT_FILE="$withval", 186*b7579f77SDag-Erling Smørgravif test $on_mingw = no; then 187*b7579f77SDag-Erling Smørgrav UNBOUND_ROOTCERT_FILE="$UNBOUND_RUN_DIR/icannbundle.pem" 188*b7579f77SDag-Erling Smørgravelse 189*b7579f77SDag-Erling Smørgrav UNBOUND_ROOTCERT_FILE="C:\\Program Files\\Unbound\\icannbundle.pem" 190*b7579f77SDag-Erling Smørgravfi 191*b7579f77SDag-Erling Smørgrav) 192*b7579f77SDag-Erling SmørgravAC_SUBST(UNBOUND_ROOTCERT_FILE) 193*b7579f77SDag-Erling SmørgravACX_ESCAPE_BACKSLASH($UNBOUND_ROOTCERT_FILE, hdr_rpem) 194*b7579f77SDag-Erling SmørgravAC_DEFINE_UNQUOTED(ROOT_CERT_FILE, ["$hdr_rpem"], [default rootcert location]) 195*b7579f77SDag-Erling Smørgrav 196*b7579f77SDag-Erling SmørgravAC_ARG_WITH(username, 197*b7579f77SDag-Erling Smørgrav AC_HELP_STRING([--with-username=user], 198*b7579f77SDag-Erling Smørgrav [set default user that unbound changes to (default user is unbound)]), 199*b7579f77SDag-Erling Smørgrav UNBOUND_USERNAME="$withval", 200*b7579f77SDag-Erling Smørgrav UNBOUND_USERNAME="unbound") 201*b7579f77SDag-Erling SmørgravAC_SUBST(UNBOUND_USERNAME) 202*b7579f77SDag-Erling SmørgravAC_DEFINE_UNQUOTED(UB_USERNAME, ["$UNBOUND_USERNAME"], [default username]) 203*b7579f77SDag-Erling Smørgrav 204*b7579f77SDag-Erling SmørgravAC_DEFINE(WINVER, 0x0502, [the version of the windows API enabled]) 205*b7579f77SDag-Erling SmørgravACX_RSRC_VERSION(wnvs) 206*b7579f77SDag-Erling SmørgravAC_DEFINE_UNQUOTED(RSRC_PACKAGE_VERSION, [$wnvs], [version number for resource files]) 207*b7579f77SDag-Erling Smørgrav 208*b7579f77SDag-Erling Smørgrav# Checks for typedefs, structures, and compiler characteristics. 209*b7579f77SDag-Erling SmørgravAC_C_CONST 210*b7579f77SDag-Erling SmørgravAC_LANG_C 211*b7579f77SDag-Erling SmørgravACX_CHECK_COMPILER_FLAG(g, [CFLAGS="$CFLAGS -g"]) 212*b7579f77SDag-Erling SmørgravACX_CHECK_COMPILER_FLAG(O2, [CFLAGS="$CFLAGS -O2"]) 213*b7579f77SDag-Erling SmørgravAC_PROG_CC 214*b7579f77SDag-Erling SmørgravACX_DEPFLAG 215*b7579f77SDag-Erling SmørgravACX_DETERMINE_EXT_FLAGS_UNBOUND 216*b7579f77SDag-Erling Smørgrav 217*b7579f77SDag-Erling Smørgrav# debug mode flags warnings 218*b7579f77SDag-Erling SmørgravAC_ARG_ENABLE(checking, AC_HELP_STRING([--enable-checking], [Enable warnings, asserts, makefile-dependencies])) 219*b7579f77SDag-Erling SmørgravAC_ARG_ENABLE(debug, AC_HELP_STRING([--enable-debug], [same as enable-checking])) 220*b7579f77SDag-Erling Smørgravif test "$enable_debug" = "yes"; then debug_enabled="$enable_debug"; 221*b7579f77SDag-Erling Smørgravelse debug_enabled="$enable_checking"; fi 222*b7579f77SDag-Erling SmørgravAC_SUBST(debug_enabled) 223*b7579f77SDag-Erling Smørgravcase "$debug_enabled" in 224*b7579f77SDag-Erling Smørgrav yes) 225*b7579f77SDag-Erling Smørgrav ACX_CHECK_COMPILER_FLAG(W, [CFLAGS="$CFLAGS -W"]) 226*b7579f77SDag-Erling Smørgrav ACX_CHECK_COMPILER_FLAG(Wall, [CFLAGS="$CFLAGS -Wall"]) 227*b7579f77SDag-Erling Smørgrav ACX_CHECK_COMPILER_FLAG(Wextra, [CFLAGS="$CFLAGS -Wextra"]) 228*b7579f77SDag-Erling Smørgrav ACX_CHECK_COMPILER_FLAG(Wdeclaration-after-statement, [CFLAGS="$CFLAGS -Wdeclaration-after-statement"]) 229*b7579f77SDag-Erling Smørgrav AC_DEFINE([UNBOUND_DEBUG], [], [define this to enable debug checks.]) 230*b7579f77SDag-Erling Smørgrav ;; 231*b7579f77SDag-Erling Smørgrav no|*) 232*b7579f77SDag-Erling Smørgrav # nothing to do. 233*b7579f77SDag-Erling Smørgrav ;; 234*b7579f77SDag-Erling Smørgravesac 235*b7579f77SDag-Erling SmørgravACX_CHECK_FLTO 236*b7579f77SDag-Erling Smørgrav 237*b7579f77SDag-Erling SmørgravAC_C_INLINE 238*b7579f77SDag-Erling SmørgravACX_CHECK_FORMAT_ATTRIBUTE 239*b7579f77SDag-Erling SmørgravACX_CHECK_UNUSED_ATTRIBUTE 240*b7579f77SDag-Erling Smørgrav 241*b7579f77SDag-Erling Smørgravif test "$srcdir" != "."; then 242*b7579f77SDag-Erling Smørgrav CPPFLAGS="$CPPFLAGS -I$srcdir" 243*b7579f77SDag-Erling Smørgravfi 244*b7579f77SDag-Erling Smørgrav 245*b7579f77SDag-Erling SmørgravAC_DEFUN([ACX_YYLEX_DESTROY], [ 246*b7579f77SDag-Erling Smørgrav AC_MSG_CHECKING([for yylex_destroy]) 247*b7579f77SDag-Erling Smørgrav if echo %% | $LEX -t 2>&1 | grep yylex_destroy >/dev/null 2>&1; then 248*b7579f77SDag-Erling Smørgrav AC_DEFINE(LEX_HAS_YYLEX_DESTROY, 1, [if lex has yylex_destroy]) 249*b7579f77SDag-Erling Smørgrav AC_MSG_RESULT(yes) 250*b7579f77SDag-Erling Smørgrav else AC_MSG_RESULT(no); fi 251*b7579f77SDag-Erling Smørgrav]) 252*b7579f77SDag-Erling Smørgrav 253*b7579f77SDag-Erling SmørgravAC_PROG_LEX 254*b7579f77SDag-Erling SmørgravACX_YYLEX_DESTROY 255*b7579f77SDag-Erling SmørgravAC_PROG_YACC 256*b7579f77SDag-Erling SmørgravAC_CHECK_PROG(doxygen, doxygen, doxygen) 257*b7579f77SDag-Erling SmørgravAC_CHECK_TOOL(STRIP, strip) 258*b7579f77SDag-Erling SmørgravACX_LIBTOOL_C_ONLY 259*b7579f77SDag-Erling Smørgrav 260*b7579f77SDag-Erling Smørgrav# Checks for header files. 261*b7579f77SDag-Erling SmørgravAC_CHECK_HEADERS([stdarg.h stdbool.h netinet/in.h sys/param.h sys/socket.h sys/uio.h sys/resource.h arpa/inet.h syslog.h netdb.h sys/wait.h pwd.h glob.h grp.h login_cap.h winsock2.h ws2tcpip.h],,, [AC_INCLUDES_DEFAULT]) 262*b7579f77SDag-Erling Smørgrav 263*b7579f77SDag-Erling Smørgrav# check for types. 264*b7579f77SDag-Erling Smørgrav# Using own tests for int64* because autoconf builtin only give 32bit. 265*b7579f77SDag-Erling SmørgravAC_CHECK_TYPE(int8_t, signed char) 266*b7579f77SDag-Erling SmørgravAC_CHECK_TYPE(int16_t, short) 267*b7579f77SDag-Erling SmørgravAC_CHECK_TYPE(int32_t, int) 268*b7579f77SDag-Erling SmørgravAC_CHECK_TYPE(int64_t, long long) 269*b7579f77SDag-Erling SmørgravAC_CHECK_TYPE(uint8_t, unsigned char) 270*b7579f77SDag-Erling SmørgravAC_CHECK_TYPE(uint16_t, unsigned short) 271*b7579f77SDag-Erling SmørgravAC_CHECK_TYPE(uint32_t, unsigned int) 272*b7579f77SDag-Erling SmørgravAC_CHECK_TYPE(uint64_t, unsigned long long) 273*b7579f77SDag-Erling SmørgravAC_TYPE_SIZE_T 274*b7579f77SDag-Erling SmørgravAC_CHECK_TYPE(ssize_t, int) 275*b7579f77SDag-Erling SmørgravAC_TYPE_UID_T 276*b7579f77SDag-Erling SmørgravAC_TYPE_PID_T 277*b7579f77SDag-Erling SmørgravAC_TYPE_OFF_T 278*b7579f77SDag-Erling SmørgravACX_TYPE_U_CHAR 279*b7579f77SDag-Erling SmørgravACX_TYPE_RLIM_T 280*b7579f77SDag-Erling SmørgravACX_TYPE_SOCKLEN_T 281*b7579f77SDag-Erling SmørgravACX_TYPE_IN_ADDR_T 282*b7579f77SDag-Erling SmørgravACX_TYPE_IN_PORT_T 283*b7579f77SDag-Erling SmørgravACX_CHECK_MEMCMP_SIGNED 284*b7579f77SDag-Erling Smørgrav 285*b7579f77SDag-Erling Smørgrav# add option to disable the evil rpath 286*b7579f77SDag-Erling SmørgravACX_ARG_RPATH 287*b7579f77SDag-Erling SmørgravAC_SUBST(RUNTIME_PATH) 288*b7579f77SDag-Erling Smørgrav 289*b7579f77SDag-Erling Smørgrav# check to see if libraries are needed for these functions. 290*b7579f77SDag-Erling SmørgravAC_SEARCH_LIBS([inet_pton], [nsl]) 291*b7579f77SDag-Erling SmørgravAC_SEARCH_LIBS([socket], [socket]) 292*b7579f77SDag-Erling Smørgrav 293*b7579f77SDag-Erling Smørgrav# check wether strptime also works 294*b7579f77SDag-Erling SmørgravAC_DEFUN([AC_CHECK_STRPTIME_WORKS], 295*b7579f77SDag-Erling Smørgrav[AC_REQUIRE([AC_PROG_CC]) 296*b7579f77SDag-Erling SmørgravAC_MSG_CHECKING(whether strptime works) 297*b7579f77SDag-Erling Smørgravif test c${cross_compiling} = cno; then 298*b7579f77SDag-Erling SmørgravAC_RUN_IFELSE([AC_LANG_SOURCE([[ 299*b7579f77SDag-Erling Smørgrav#define _XOPEN_SOURCE 300*b7579f77SDag-Erling Smørgrav#include <time.h> 301*b7579f77SDag-Erling Smørgravint main(void) { struct tm tm; char *res; 302*b7579f77SDag-Erling Smørgravres = 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); 303*b7579f77SDag-Erling Smørgravif (!res) return 2; 304*b7579f77SDag-Erling Smørgravres = strptime("20070207111842", "%Y%m%d%H%M%S", &tm); 305*b7579f77SDag-Erling Smørgravif (!res) return 1; return 0; } 306*b7579f77SDag-Erling Smørgrav]])] , [eval "ac_cv_c_strptime_works=yes"], [eval "ac_cv_c_strptime_works=no"]) 307*b7579f77SDag-Erling Smørgravelse 308*b7579f77SDag-Erling Smørgraveval "ac_cv_c_strptime_works=maybe" 309*b7579f77SDag-Erling Smørgravfi 310*b7579f77SDag-Erling SmørgravAC_MSG_RESULT($ac_cv_c_strptime_works) 311*b7579f77SDag-Erling Smørgravif test $ac_cv_c_strptime_works = no; then 312*b7579f77SDag-Erling SmørgravAC_LIBOBJ(strptime) 313*b7579f77SDag-Erling Smørgravelse 314*b7579f77SDag-Erling SmørgravAC_DEFINE_UNQUOTED([STRPTIME_WORKS], 1, [use default strptime.]) 315*b7579f77SDag-Erling Smørgravfi 316*b7579f77SDag-Erling Smørgrav])dnl 317*b7579f77SDag-Erling Smørgrav 318*b7579f77SDag-Erling Smørgrav# check some functions of the OS before linking libs (while still runnable). 319*b7579f77SDag-Erling SmørgravAC_FUNC_CHOWN 320*b7579f77SDag-Erling SmørgravAC_FUNC_FORK 321*b7579f77SDag-Erling SmørgravAC_TYPE_SIGNAL 322*b7579f77SDag-Erling SmørgravAC_FUNC_FSEEKO 323*b7579f77SDag-Erling SmørgravACX_SYS_LARGEFILE 324*b7579f77SDag-Erling SmørgravACX_CHECK_NONBLOCKING_BROKEN 325*b7579f77SDag-Erling SmørgravACX_MKDIR_ONE_ARG 326*b7579f77SDag-Erling SmørgravAC_CHECK_FUNCS([strptime],[AC_CHECK_STRPTIME_WORKS],[AC_LIBOBJ([strptime])]) 327*b7579f77SDag-Erling Smørgrav 328*b7579f77SDag-Erling Smørgrav# set memory allocation checking if requested 329*b7579f77SDag-Erling SmørgravAC_ARG_ENABLE(alloc-checks, AC_HELP_STRING([--enable-alloc-checks], 330*b7579f77SDag-Erling Smørgrav [ enable to memory allocation statistics, for debug purposes ]), 331*b7579f77SDag-Erling Smørgrav , ) 332*b7579f77SDag-Erling SmørgravAC_ARG_ENABLE(alloc-lite, AC_HELP_STRING([--enable-alloc-lite], 333*b7579f77SDag-Erling Smørgrav [ enable for lightweight alloc assertions, for debug purposes ]), 334*b7579f77SDag-Erling Smørgrav , ) 335*b7579f77SDag-Erling SmørgravAC_ARG_ENABLE(alloc-nonregional, AC_HELP_STRING([--enable-alloc-nonregional], 336*b7579f77SDag-Erling Smørgrav [ enable nonregional allocs, slow but exposes regional allocations to other memory purifiers, for debug purposes ]), 337*b7579f77SDag-Erling Smørgrav , ) 338*b7579f77SDag-Erling Smørgravif test x_$enable_alloc_nonregional = x_yes; then 339*b7579f77SDag-Erling Smørgrav AC_DEFINE(UNBOUND_ALLOC_NONREGIONAL, 1, [use malloc not regions, for debug use]) 340*b7579f77SDag-Erling Smørgravfi 341*b7579f77SDag-Erling Smørgravif test x_$enable_alloc_checks = x_yes; then 342*b7579f77SDag-Erling Smørgrav AC_DEFINE(UNBOUND_ALLOC_STATS, 1, [use statistics for allocs and frees, for debug use]) 343*b7579f77SDag-Erling Smørgravelse 344*b7579f77SDag-Erling Smørgrav if test x_$enable_alloc_lite = x_yes; then 345*b7579f77SDag-Erling Smørgrav AC_DEFINE(UNBOUND_ALLOC_LITE, 1, [use to enable lightweight alloc assertions, for debug use]) 346*b7579f77SDag-Erling Smørgrav else 347*b7579f77SDag-Erling Smørgrav ACX_FUNC_MALLOC([unbound]) 348*b7579f77SDag-Erling Smørgrav fi 349*b7579f77SDag-Erling Smørgravfi 350*b7579f77SDag-Erling Smørgrav 351*b7579f77SDag-Erling Smørgrav# check windows threads (we use them, not pthreads, on windows). 352*b7579f77SDag-Erling Smørgravif test "$on_mingw" = "yes"; then 353*b7579f77SDag-Erling Smørgrav# check windows threads 354*b7579f77SDag-Erling Smørgrav AC_CHECK_HEADERS([windows.h],,, [AC_INCLUDES_DEFAULT]) 355*b7579f77SDag-Erling Smørgrav AC_MSG_CHECKING([for CreateThread]) 356*b7579f77SDag-Erling Smørgrav AC_COMPILE_IFELSE([AC_LANG_PROGRAM([ 357*b7579f77SDag-Erling Smørgrav#ifdef HAVE_WINDOWS_H 358*b7579f77SDag-Erling Smørgrav#include <windows.h> 359*b7579f77SDag-Erling Smørgrav#endif 360*b7579f77SDag-Erling Smørgrav], [ 361*b7579f77SDag-Erling Smørgrav HANDLE t = CreateThread(NULL, 0, NULL, NULL, 0, NULL); 362*b7579f77SDag-Erling Smørgrav])], 363*b7579f77SDag-Erling Smørgrav AC_MSG_RESULT(yes) 364*b7579f77SDag-Erling Smørgrav AC_DEFINE(HAVE_WINDOWS_THREADS, 1, [Using Windows threads]) 365*b7579f77SDag-Erling Smørgrav, 366*b7579f77SDag-Erling Smørgrav AC_MSG_RESULT(no) 367*b7579f77SDag-Erling Smørgrav) 368*b7579f77SDag-Erling Smørgrav 369*b7579f77SDag-Erling Smørgravelse 370*b7579f77SDag-Erling Smørgrav# not on mingw, check thread libraries. 371*b7579f77SDag-Erling Smørgrav 372*b7579f77SDag-Erling Smørgrav# check for thread library. 373*b7579f77SDag-Erling Smørgrav# check this first, so that the pthread lib does not get linked in via 374*b7579f77SDag-Erling Smørgrav# libssl or libpython, and thus distorts the tests, and we end up using 375*b7579f77SDag-Erling Smørgrav# the non-threadsafe C libraries. 376*b7579f77SDag-Erling SmørgravAC_ARG_WITH(pthreads, AC_HELP_STRING([--with-pthreads], 377*b7579f77SDag-Erling Smørgrav [use pthreads library, or --without-pthreads to disable threading support.]), 378*b7579f77SDag-Erling Smørgrav [ ],[ withval="yes" ]) 379*b7579f77SDag-Erling Smørgravub_have_pthreads=no 380*b7579f77SDag-Erling Smørgravif test x_$withval != x_no; then 381*b7579f77SDag-Erling Smørgrav ACX_PTHREAD([ 382*b7579f77SDag-Erling Smørgrav AC_DEFINE(HAVE_PTHREAD,1,[Define if you have POSIX threads libraries and header files.]) 383*b7579f77SDag-Erling Smørgrav LIBS="$PTHREAD_LIBS $LIBS" 384*b7579f77SDag-Erling Smørgrav CFLAGS="$CFLAGS $PTHREAD_CFLAGS" 385*b7579f77SDag-Erling Smørgrav CC="$PTHREAD_CC" 386*b7579f77SDag-Erling Smørgrav ub_have_pthreads=yes 387*b7579f77SDag-Erling Smørgrav AC_CHECK_TYPES([pthread_spinlock_t, pthread_rwlock_t],,,[#include <pthread.h>]) 388*b7579f77SDag-Erling Smørgrav ]) 389*b7579f77SDag-Erling Smørgravfi 390*b7579f77SDag-Erling Smørgrav 391*b7579f77SDag-Erling Smørgrav# check solaris thread library 392*b7579f77SDag-Erling SmørgravAC_ARG_WITH(solaris-threads, AC_HELP_STRING([--with-solaris-threads], 393*b7579f77SDag-Erling Smørgrav [use solaris native thread library.]), [ ],[ withval="no" ]) 394*b7579f77SDag-Erling Smørgravub_have_sol_threads=no 395*b7579f77SDag-Erling Smørgravif test x_$withval != x_no; then 396*b7579f77SDag-Erling Smørgrav if test x_$ub_have_pthreads != x_no; then 397*b7579f77SDag-Erling Smørgrav AC_WARN([Have pthreads already, ignoring --with-solaris-threads]) 398*b7579f77SDag-Erling Smørgrav else 399*b7579f77SDag-Erling Smørgrav AC_SEARCH_LIBS(thr_create, [thread], 400*b7579f77SDag-Erling Smørgrav [ 401*b7579f77SDag-Erling Smørgrav AC_DEFINE(HAVE_SOLARIS_THREADS, 1, [Using Solaris threads]) 402*b7579f77SDag-Erling Smørgrav 403*b7579f77SDag-Erling Smørgrav ACX_CHECK_COMPILER_FLAG(mt, [CFLAGS="$CFLAGS -mt"], 404*b7579f77SDag-Erling Smørgrav [CFLAGS="$CFLAGS -D_REENTRANT"]) 405*b7579f77SDag-Erling Smørgrav ub_have_sol_threads=yes 406*b7579f77SDag-Erling Smørgrav ] , [ 407*b7579f77SDag-Erling Smørgrav AC_ERROR([no solaris threads found.]) 408*b7579f77SDag-Erling Smørgrav ]) 409*b7579f77SDag-Erling Smørgrav fi 410*b7579f77SDag-Erling Smørgravfi 411*b7579f77SDag-Erling Smørgrav 412*b7579f77SDag-Erling Smørgravfi # end of non-mingw check of thread libraries 413*b7579f77SDag-Erling Smørgrav 414*b7579f77SDag-Erling Smørgrav# Check for PyUnbound 415*b7579f77SDag-Erling SmørgravAC_ARG_WITH(pyunbound, 416*b7579f77SDag-Erling Smørgrav AC_HELP_STRING([--with-pyunbound], 417*b7579f77SDag-Erling Smørgrav [build PyUnbound, or --without-pyunbound to skip it. (default=no)]), 418*b7579f77SDag-Erling Smørgrav [], [ withval="no" ]) 419*b7579f77SDag-Erling Smørgrav 420*b7579f77SDag-Erling Smørgravub_test_python=no 421*b7579f77SDag-Erling Smørgravub_with_pyunbound=no 422*b7579f77SDag-Erling Smørgravif test x_$withval != x_no; then 423*b7579f77SDag-Erling Smørgrav ub_with_pyunbound=yes 424*b7579f77SDag-Erling Smørgrav ub_test_python=yes 425*b7579f77SDag-Erling Smørgravfi 426*b7579f77SDag-Erling Smørgrav 427*b7579f77SDag-Erling Smørgrav# Check for Python module 428*b7579f77SDag-Erling SmørgravAC_ARG_WITH(pythonmodule, 429*b7579f77SDag-Erling Smørgrav AC_HELP_STRING([--with-pythonmodule], 430*b7579f77SDag-Erling Smørgrav [build Python module, or --without-pythonmodule to disable script engine. (default=no)]), 431*b7579f77SDag-Erling Smørgrav [], [ withval="no" ]) 432*b7579f77SDag-Erling Smørgrav 433*b7579f77SDag-Erling Smørgravub_with_pythonmod=no 434*b7579f77SDag-Erling Smørgravif test x_$withval != x_no; then 435*b7579f77SDag-Erling Smørgrav ub_with_pythonmod=yes 436*b7579f77SDag-Erling Smørgrav ub_test_python=yes 437*b7579f77SDag-Erling Smørgravfi 438*b7579f77SDag-Erling Smørgrav 439*b7579f77SDag-Erling Smørgrav# Check for Python & SWIG only on PyUnbound or PyModule 440*b7579f77SDag-Erling Smørgravif test x_$ub_test_python != x_no; then 441*b7579f77SDag-Erling Smørgrav 442*b7579f77SDag-Erling Smørgrav # Check for Python 443*b7579f77SDag-Erling Smørgrav ub_have_python=no 444*b7579f77SDag-Erling Smørgrav ac_save_LIBS="$LIBS" dnl otherwise AC_PYTHON_DEVEL thrashes $LIBS 445*b7579f77SDag-Erling Smørgrav AC_PYTHON_DEVEL 446*b7579f77SDag-Erling Smørgrav if test ! -z "$PYTHON_VERSION"; then 447*b7579f77SDag-Erling Smørgrav if test `$PYTHON -c "print '$PYTHON_VERSION' >= '2.4.0'"` = "False"; then 448*b7579f77SDag-Erling Smørgrav AC_ERROR([Python version >= 2.4.0 is required]) 449*b7579f77SDag-Erling Smørgrav fi 450*b7579f77SDag-Erling Smørgrav 451*b7579f77SDag-Erling Smørgrav # Have Python 452*b7579f77SDag-Erling Smørgrav AC_DEFINE(HAVE_PYTHON,1,[Define if you have Python libraries and header files.]) 453*b7579f77SDag-Erling Smørgrav LIBS="$PYTHON_LDFLAGS $LIBS" 454*b7579f77SDag-Erling Smørgrav CPPFLAGS="$CPPFLAGS $PYTHON_CPPFLAGS" 455*b7579f77SDag-Erling Smørgrav ub_have_python=yes 456*b7579f77SDag-Erling Smørgrav 457*b7579f77SDag-Erling Smørgrav # Check for SWIG 458*b7579f77SDag-Erling Smørgrav ub_have_swig=no 459*b7579f77SDag-Erling Smørgrav AC_PROG_SWIG 460*b7579f77SDag-Erling Smørgrav AC_MSG_CHECKING(SWIG) 461*b7579f77SDag-Erling Smørgrav if test ! -x "$SWIG"; then 462*b7579f77SDag-Erling Smørgrav AC_ERROR([failed to find swig tool, install it, or do not build Python module and PyUnbound]) 463*b7579f77SDag-Erling Smørgrav else 464*b7579f77SDag-Erling Smørgrav AC_DEFINE(HAVE_SWIG, 1, [Define if you have Swig libraries and header files.]) 465*b7579f77SDag-Erling Smørgrav AC_SUBST(swig, "$SWIG") 466*b7579f77SDag-Erling Smørgrav AC_MSG_RESULT(present) 467*b7579f77SDag-Erling Smørgrav 468*b7579f77SDag-Erling Smørgrav # If have Python & SWIG 469*b7579f77SDag-Erling Smørgrav # Declare PythonMod 470*b7579f77SDag-Erling Smørgrav if test x_$ub_with_pythonmod != x_no; then 471*b7579f77SDag-Erling Smørgrav AC_DEFINE(WITH_PYTHONMODULE, 1, [Define if you want Python module.]) 472*b7579f77SDag-Erling Smørgrav WITH_PYTHONMODULE=yes 473*b7579f77SDag-Erling Smørgrav AC_SUBST(WITH_PYTHONMODULE) 474*b7579f77SDag-Erling Smørgrav PYTHONMOD_OBJ="pythonmod.lo pythonmod_utils.lo" 475*b7579f77SDag-Erling Smørgrav AC_SUBST(PYTHONMOD_OBJ) 476*b7579f77SDag-Erling Smørgrav PYTHONMOD_HEADER='$(srcdir)/pythonmod/pythonmod.h' 477*b7579f77SDag-Erling Smørgrav AC_SUBST(PYTHONMOD_HEADER) 478*b7579f77SDag-Erling Smørgrav PYTHONMOD_INSTALL=pythonmod-install 479*b7579f77SDag-Erling Smørgrav AC_SUBST(PYTHONMOD_INSTALL) 480*b7579f77SDag-Erling Smørgrav PYTHONMOD_UNINSTALL=pythonmod-uninstall 481*b7579f77SDag-Erling Smørgrav AC_SUBST(PYTHONMOD_UNINSTALL) 482*b7579f77SDag-Erling Smørgrav fi 483*b7579f77SDag-Erling Smørgrav 484*b7579f77SDag-Erling Smørgrav # Declare PyUnbound 485*b7579f77SDag-Erling Smørgrav if test x_$ub_with_pyunbound != x_no; then 486*b7579f77SDag-Erling Smørgrav AC_DEFINE(WITH_PYUNBOUND, 1, [Define if you want PyUnbound.]) 487*b7579f77SDag-Erling Smørgrav WITH_PYUNBOUND=yes 488*b7579f77SDag-Erling Smørgrav AC_SUBST(WITH_PYUNBOUND) 489*b7579f77SDag-Erling Smørgrav PYUNBOUND_OBJ="libunbound_wrap.lo" 490*b7579f77SDag-Erling Smørgrav AC_SUBST(PYUNBOUND_OBJ) 491*b7579f77SDag-Erling Smørgrav PYUNBOUND_TARGET="_unbound.la" 492*b7579f77SDag-Erling Smørgrav AC_SUBST(PYUNBOUND_TARGET) 493*b7579f77SDag-Erling Smørgrav PYUNBOUND_INSTALL=pyunbound-install 494*b7579f77SDag-Erling Smørgrav AC_SUBST(PYUNBOUND_INSTALL) 495*b7579f77SDag-Erling Smørgrav PYUNBOUND_UNINSTALL=pyunbound-uninstall 496*b7579f77SDag-Erling Smørgrav AC_SUBST(PYUNBOUND_UNINSTALL) 497*b7579f77SDag-Erling Smørgrav fi 498*b7579f77SDag-Erling Smørgrav fi 499*b7579f77SDag-Erling Smørgrav else 500*b7579f77SDag-Erling Smørgrav AC_MSG_RESULT([*** Python libraries not found, won't build PythonMod or PyUnbound ***]) 501*b7579f77SDag-Erling Smørgrav ub_with_pyunbound=no 502*b7579f77SDag-Erling Smørgrav ub_with_pythonmod=no 503*b7579f77SDag-Erling Smørgrav fi 504*b7579f77SDag-Erling Smørgravfi 505*b7579f77SDag-Erling Smørgrav 506*b7579f77SDag-Erling Smørgravif test "`uname`" = "NetBSD"; then 507*b7579f77SDag-Erling Smørgrav NETBSD_LINTFLAGS='"-D__RENAME(x)=" -D_NETINET_IN_H_' 508*b7579f77SDag-Erling Smørgrav AC_SUBST(NETBSD_LINTFLAGS) 509*b7579f77SDag-Erling Smørgravfi 510*b7579f77SDag-Erling SmørgravCONFIG_DATE=`date +%Y%m%d` 511*b7579f77SDag-Erling SmørgravAC_SUBST(CONFIG_DATE) 512*b7579f77SDag-Erling Smørgrav 513*b7579f77SDag-Erling Smørgrav# Checks for libraries. 514*b7579f77SDag-Erling SmørgravACX_WITH_SSL 515*b7579f77SDag-Erling SmørgravACX_LIB_SSL 516*b7579f77SDag-Erling SmørgravAC_CHECK_HEADERS([openssl/conf.h],,, [AC_INCLUDES_DEFAULT]) 517*b7579f77SDag-Erling SmørgravAC_CHECK_HEADERS([openssl/engine.h],,, [AC_INCLUDES_DEFAULT]) 518*b7579f77SDag-Erling SmørgravAC_CHECK_FUNCS([OPENSSL_config EVP_sha1 EVP_sha256 EVP_sha512]) 519*b7579f77SDag-Erling SmørgravAC_CHECK_DECLS([SSL_COMP_get_compression_methods,sk_SSL_COMP_pop_free], [], [], [ 520*b7579f77SDag-Erling SmørgravAC_INCLUDES_DEFAULT 521*b7579f77SDag-Erling Smørgrav#ifdef HAVE_OPENSSL_ERR_H 522*b7579f77SDag-Erling Smørgrav#include <openssl/err.h> 523*b7579f77SDag-Erling Smørgrav#endif 524*b7579f77SDag-Erling Smørgrav 525*b7579f77SDag-Erling Smørgrav#ifdef HAVE_OPENSSL_RAND_H 526*b7579f77SDag-Erling Smørgrav#include <openssl/rand.h> 527*b7579f77SDag-Erling Smørgrav#endif 528*b7579f77SDag-Erling Smørgrav 529*b7579f77SDag-Erling Smørgrav#ifdef HAVE_OPENSSL_CONF_H 530*b7579f77SDag-Erling Smørgrav#include <openssl/conf.h> 531*b7579f77SDag-Erling Smørgrav#endif 532*b7579f77SDag-Erling Smørgrav 533*b7579f77SDag-Erling Smørgrav#ifdef HAVE_OPENSSL_ENGINE_H 534*b7579f77SDag-Erling Smørgrav#include <openssl/engine.h> 535*b7579f77SDag-Erling Smørgrav#endif 536*b7579f77SDag-Erling Smørgrav#include <openssl/ssl.h> 537*b7579f77SDag-Erling Smørgrav#include <openssl/evp.h> 538*b7579f77SDag-Erling Smørgrav]) 539*b7579f77SDag-Erling Smørgrav 540*b7579f77SDag-Erling SmørgravAC_ARG_ENABLE(sha2, AC_HELP_STRING([--disable-sha2], [Disable SHA256 and SHA512 RRSIG support])) 541*b7579f77SDag-Erling Smørgravcase "$enable_sha2" in 542*b7579f77SDag-Erling Smørgrav no) 543*b7579f77SDag-Erling Smørgrav ;; 544*b7579f77SDag-Erling Smørgrav yes|*) 545*b7579f77SDag-Erling Smørgrav AC_DEFINE([USE_SHA2], [1], [Define this to enable SHA256 and SHA512 support.]) 546*b7579f77SDag-Erling Smørgrav ;; 547*b7579f77SDag-Erling Smørgravesac 548*b7579f77SDag-Erling Smørgrav 549*b7579f77SDag-Erling Smørgrav# check wether gost also works 550*b7579f77SDag-Erling SmørgravAC_DEFUN([AC_CHECK_GOST_WORKS], 551*b7579f77SDag-Erling Smørgrav[AC_REQUIRE([AC_PROG_CC]) 552*b7579f77SDag-Erling SmørgravAC_MSG_CHECKING([if GOST works]) 553*b7579f77SDag-Erling Smørgravif test c${cross_compiling} = cno; then 554*b7579f77SDag-Erling SmørgravBAKCFLAGS="$CFLAGS" 555*b7579f77SDag-Erling Smørgravif test -n "$ssldir"; then 556*b7579f77SDag-Erling Smørgrav CFLAGS="$CFLAGS -Wl,-rpath,$ssldir/lib" 557*b7579f77SDag-Erling Smørgravfi 558*b7579f77SDag-Erling SmørgravAC_RUN_IFELSE([AC_LANG_SOURCE([[ 559*b7579f77SDag-Erling Smørgrav#include <string.h> 560*b7579f77SDag-Erling Smørgrav#include <openssl/ssl.h> 561*b7579f77SDag-Erling Smørgrav#include <openssl/evp.h> 562*b7579f77SDag-Erling Smørgrav#include <openssl/engine.h> 563*b7579f77SDag-Erling Smørgrav#include <openssl/conf.h> 564*b7579f77SDag-Erling Smørgrav/* routine to load gost from ldns */ 565*b7579f77SDag-Erling Smørgravint load_gost_id(void) 566*b7579f77SDag-Erling Smørgrav{ 567*b7579f77SDag-Erling Smørgrav static int gost_id = 0; 568*b7579f77SDag-Erling Smørgrav const EVP_PKEY_ASN1_METHOD* meth; 569*b7579f77SDag-Erling Smørgrav ENGINE* e; 570*b7579f77SDag-Erling Smørgrav 571*b7579f77SDag-Erling Smørgrav if(gost_id) return gost_id; 572*b7579f77SDag-Erling Smørgrav 573*b7579f77SDag-Erling Smørgrav /* see if configuration loaded gost implementation from other engine*/ 574*b7579f77SDag-Erling Smørgrav meth = EVP_PKEY_asn1_find_str(NULL, "gost2001", -1); 575*b7579f77SDag-Erling Smørgrav if(meth) { 576*b7579f77SDag-Erling Smørgrav EVP_PKEY_asn1_get0_info(&gost_id, NULL, NULL, NULL, NULL, meth); 577*b7579f77SDag-Erling Smørgrav return gost_id; 578*b7579f77SDag-Erling Smørgrav } 579*b7579f77SDag-Erling Smørgrav 580*b7579f77SDag-Erling Smørgrav /* see if engine can be loaded already */ 581*b7579f77SDag-Erling Smørgrav e = ENGINE_by_id("gost"); 582*b7579f77SDag-Erling Smørgrav if(!e) { 583*b7579f77SDag-Erling Smørgrav /* load it ourself, in case statically linked */ 584*b7579f77SDag-Erling Smørgrav ENGINE_load_builtin_engines(); 585*b7579f77SDag-Erling Smørgrav ENGINE_load_dynamic(); 586*b7579f77SDag-Erling Smørgrav e = ENGINE_by_id("gost"); 587*b7579f77SDag-Erling Smørgrav } 588*b7579f77SDag-Erling Smørgrav if(!e) { 589*b7579f77SDag-Erling Smørgrav /* no gost engine in openssl */ 590*b7579f77SDag-Erling Smørgrav return 0; 591*b7579f77SDag-Erling Smørgrav } 592*b7579f77SDag-Erling Smørgrav if(!ENGINE_set_default(e, ENGINE_METHOD_ALL)) { 593*b7579f77SDag-Erling Smørgrav ENGINE_finish(e); 594*b7579f77SDag-Erling Smørgrav ENGINE_free(e); 595*b7579f77SDag-Erling Smørgrav return 0; 596*b7579f77SDag-Erling Smørgrav } 597*b7579f77SDag-Erling Smørgrav 598*b7579f77SDag-Erling Smørgrav meth = EVP_PKEY_asn1_find_str(&e, "gost2001", -1); 599*b7579f77SDag-Erling Smørgrav if(!meth) { 600*b7579f77SDag-Erling Smørgrav /* algo not found */ 601*b7579f77SDag-Erling Smørgrav ENGINE_finish(e); 602*b7579f77SDag-Erling Smørgrav ENGINE_free(e); 603*b7579f77SDag-Erling Smørgrav return 0; 604*b7579f77SDag-Erling Smørgrav } 605*b7579f77SDag-Erling Smørgrav EVP_PKEY_asn1_get0_info(&gost_id, NULL, NULL, NULL, NULL, meth); 606*b7579f77SDag-Erling Smørgrav return gost_id; 607*b7579f77SDag-Erling Smørgrav} 608*b7579f77SDag-Erling Smørgravint main(void) { 609*b7579f77SDag-Erling Smørgrav EVP_MD_CTX* ctx; 610*b7579f77SDag-Erling Smørgrav const EVP_MD* md; 611*b7579f77SDag-Erling Smørgrav unsigned char digest[64]; /* its a 256-bit digest, so uses 32 bytes */ 612*b7579f77SDag-Erling Smørgrav const char* str = "Hello world"; 613*b7579f77SDag-Erling Smørgrav const unsigned char check[] = { 614*b7579f77SDag-Erling Smørgrav 0x40 , 0xed , 0xf8 , 0x56 , 0x5a , 0xc5 , 0x36 , 0xe1 , 615*b7579f77SDag-Erling Smørgrav 0x33 , 0x7c , 0x7e , 0x87 , 0x62 , 0x1c , 0x42 , 0xe0 , 616*b7579f77SDag-Erling Smørgrav 0x17 , 0x1b , 0x5e , 0xce , 0xa8 , 0x46 , 0x65 , 0x4d , 617*b7579f77SDag-Erling Smørgrav 0x8d , 0x3e , 0x22 , 0x9b , 0xe1 , 0x30 , 0x19 , 0x9d 618*b7579f77SDag-Erling Smørgrav }; 619*b7579f77SDag-Erling Smørgrav OPENSSL_config(NULL); 620*b7579f77SDag-Erling Smørgrav (void)load_gost_id(); 621*b7579f77SDag-Erling Smørgrav md = EVP_get_digestbyname("md_gost94"); 622*b7579f77SDag-Erling Smørgrav if(!md) return 1; 623*b7579f77SDag-Erling Smørgrav memset(digest, 0, sizeof(digest)); 624*b7579f77SDag-Erling Smørgrav ctx = EVP_MD_CTX_create(); 625*b7579f77SDag-Erling Smørgrav if(!ctx) return 2; 626*b7579f77SDag-Erling Smørgrav if(!EVP_DigestInit_ex(ctx, md, NULL)) return 3; 627*b7579f77SDag-Erling Smørgrav if(!EVP_DigestUpdate(ctx, str, 10)) return 4; 628*b7579f77SDag-Erling Smørgrav if(!EVP_DigestFinal_ex(ctx, digest, NULL)) return 5; 629*b7579f77SDag-Erling Smørgrav /* uncomment to see the hash calculated. 630*b7579f77SDag-Erling Smørgrav {int i; 631*b7579f77SDag-Erling Smørgrav for(i=0; i<32; i++) 632*b7579f77SDag-Erling Smørgrav printf(" %2.2x", (int)digest[i]); 633*b7579f77SDag-Erling Smørgrav printf("\n");} 634*b7579f77SDag-Erling Smørgrav */ 635*b7579f77SDag-Erling Smørgrav if(memcmp(digest, check, sizeof(check)) != 0) 636*b7579f77SDag-Erling Smørgrav return 6; 637*b7579f77SDag-Erling Smørgrav return 0; 638*b7579f77SDag-Erling Smørgrav} 639*b7579f77SDag-Erling Smørgrav]])] , [eval "ac_cv_c_gost_works=yes"], [eval "ac_cv_c_gost_works=no"]) 640*b7579f77SDag-Erling SmørgravCFLAGS="$BAKCFLAGS" 641*b7579f77SDag-Erling Smørgravelse 642*b7579f77SDag-Erling Smørgraveval "ac_cv_c_gost_works=maybe" 643*b7579f77SDag-Erling Smørgravfi 644*b7579f77SDag-Erling SmørgravAC_MSG_RESULT($ac_cv_c_gost_works) 645*b7579f77SDag-Erling Smørgrav])dnl 646*b7579f77SDag-Erling Smørgrav 647*b7579f77SDag-Erling SmørgravAC_ARG_ENABLE(gost, AC_HELP_STRING([--disable-gost], [Disable GOST support])) 648*b7579f77SDag-Erling Smørgravuse_gost="no" 649*b7579f77SDag-Erling Smørgravcase "$enable_gost" in 650*b7579f77SDag-Erling Smørgrav no) 651*b7579f77SDag-Erling Smørgrav ;; 652*b7579f77SDag-Erling Smørgrav *) 653*b7579f77SDag-Erling Smørgrav AC_CHECK_FUNC(EVP_PKEY_set_type_str, [:],[AC_MSG_ERROR([OpenSSL 1.0.0 is needed for GOST support])]) 654*b7579f77SDag-Erling Smørgrav AC_CHECK_FUNC(EC_KEY_new, [], [AC_MSG_ERROR([OpenSSL does not support ECC, needed for GOST support])]) 655*b7579f77SDag-Erling Smørgrav AC_CHECK_GOST_WORKS 656*b7579f77SDag-Erling Smørgrav if test $ac_cv_c_gost_works != no; then 657*b7579f77SDag-Erling Smørgrav use_gost="yes" 658*b7579f77SDag-Erling Smørgrav AC_DEFINE([USE_GOST], [1], [Define this to enable GOST support.]) 659*b7579f77SDag-Erling Smørgrav fi 660*b7579f77SDag-Erling Smørgrav ;; 661*b7579f77SDag-Erling Smørgravesac 662*b7579f77SDag-Erling Smørgrav 663*b7579f77SDag-Erling SmørgravAC_ARG_ENABLE(ecdsa, AC_HELP_STRING([--disable-ecdsa], [Disable ECDSA support])) 664*b7579f77SDag-Erling Smørgravuse_ecdsa="no" 665*b7579f77SDag-Erling Smørgravcase "$enable_ecdsa" in 666*b7579f77SDag-Erling Smørgrav no) 667*b7579f77SDag-Erling Smørgrav ;; 668*b7579f77SDag-Erling Smørgrav *) 669*b7579f77SDag-Erling Smørgrav AC_CHECK_FUNC(ECDSA_sign, [], [AC_MSG_ERROR([OpenSSL does not support ECDSA: please upgrade or rerun with --disable-ecdsa])]) 670*b7579f77SDag-Erling Smørgrav AC_CHECK_FUNC(SHA384_Init, [], [AC_MSG_ERROR([OpenSSL does not support SHA384: please upgrade or rerun with --disable-ecdsa])]) 671*b7579f77SDag-Erling Smørgrav 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 672*b7579f77SDag-Erling Smørgrav#include <openssl/evp.h> 673*b7579f77SDag-Erling Smørgrav ]) 674*b7579f77SDag-Erling Smørgrav # see if OPENSSL 1.0.0 or later (has EVP MD and Verify independency) 675*b7579f77SDag-Erling Smørgrav AC_MSG_CHECKING([if openssl supports SHA2 and ECDSA with EVP]) 676*b7579f77SDag-Erling Smørgrav if grep OPENSSL_VERSION_NUMBER $ssldir/include/openssl/opensslv.h | grep 0x0 >/dev/null; then 677*b7579f77SDag-Erling Smørgrav AC_MSG_RESULT([no]) 678*b7579f77SDag-Erling Smørgrav AC_DEFINE_UNQUOTED([USE_ECDSA_EVP_WORKAROUND], [1], [Define this to enable an EVP workaround for older openssl]) 679*b7579f77SDag-Erling Smørgrav else 680*b7579f77SDag-Erling Smørgrav AC_MSG_RESULT([yes]) 681*b7579f77SDag-Erling Smørgrav fi 682*b7579f77SDag-Erling Smørgrav # we now know we have ECDSA and the required curves. 683*b7579f77SDag-Erling Smørgrav AC_DEFINE_UNQUOTED([USE_ECDSA], [1], [Define this to enable ECDSA support.]) 684*b7579f77SDag-Erling Smørgrav use_ecdsa="yes" 685*b7579f77SDag-Erling Smørgrav ;; 686*b7579f77SDag-Erling Smørgravesac 687*b7579f77SDag-Erling Smørgrav 688*b7579f77SDag-Erling Smørgrav# check for libevent 689*b7579f77SDag-Erling SmørgravAC_ARG_WITH(libevent, AC_HELP_STRING([--with-libevent=pathname], 690*b7579f77SDag-Erling Smørgrav [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.]), 691*b7579f77SDag-Erling Smørgrav [ ],[ withval="no" ]) 692*b7579f77SDag-Erling Smørgravif test x_$withval = x_yes -o x_$withval != x_no; then 693*b7579f77SDag-Erling Smørgrav AC_MSG_CHECKING(for libevent) 694*b7579f77SDag-Erling Smørgrav if test x_$withval = x_ -o x_$withval = x_yes; then 695*b7579f77SDag-Erling Smørgrav withval="/usr/local /opt/local /usr/lib /usr/pkg /usr/sfw /usr" 696*b7579f77SDag-Erling Smørgrav fi 697*b7579f77SDag-Erling Smørgrav for dir in $withval; do 698*b7579f77SDag-Erling Smørgrav thedir="$dir" 699*b7579f77SDag-Erling Smørgrav if test -f "$dir/include/event.h"; then 700*b7579f77SDag-Erling Smørgrav found_libevent="yes" 701*b7579f77SDag-Erling Smørgrav dnl assume /usr is in default path. 702*b7579f77SDag-Erling Smørgrav if test "$thedir" != "/usr"; then 703*b7579f77SDag-Erling Smørgrav CPPFLAGS="$CPPFLAGS -I$thedir/include" 704*b7579f77SDag-Erling Smørgrav fi 705*b7579f77SDag-Erling Smørgrav break; 706*b7579f77SDag-Erling Smørgrav fi 707*b7579f77SDag-Erling Smørgrav done 708*b7579f77SDag-Erling Smørgrav if test x_$found_libevent != x_yes; then 709*b7579f77SDag-Erling Smørgrav if test -f "$dir/event.h" -a \( -f "$dir/libevent.la" -o -f "$dir/libev.la" \) ; then 710*b7579f77SDag-Erling Smørgrav # libevent source directory 711*b7579f77SDag-Erling Smørgrav AC_MSG_RESULT(found in $thedir) 712*b7579f77SDag-Erling Smørgrav CPPFLAGS="$CPPFLAGS -I$thedir -I$thedir/include" 713*b7579f77SDag-Erling Smørgrav BAK_LDFLAGS_SET="1" 714*b7579f77SDag-Erling Smørgrav BAK_LDFLAGS="$LDFLAGS" 715*b7579f77SDag-Erling Smørgrav # remove evdns from linking 716*b7579f77SDag-Erling Smørgrav mkdir build >/dev/null 2>&1 717*b7579f77SDag-Erling Smørgrav mkdir build/libevent >/dev/null 2>&1 718*b7579f77SDag-Erling Smørgrav mkdir build/libevent/.libs >/dev/null 2>&1 719*b7579f77SDag-Erling Smørgrav ev_files_o=`ls $thedir/*.o | grep -v evdns\.o | grep -v bufferevent_openssl\.o` 720*b7579f77SDag-Erling Smørgrav ev_files_lo=`ls $thedir/*.lo | grep -v evdns\.lo | grep -v bufferevent_openssl\.lo` 721*b7579f77SDag-Erling Smørgrav ev_files_libso=`ls $thedir/.libs/*.o | grep -v evdns\.o | grep -v bufferevent_openssl\.o` 722*b7579f77SDag-Erling Smørgrav cp $ev_files_o build/libevent 723*b7579f77SDag-Erling Smørgrav cp $ev_files_lo build/libevent 724*b7579f77SDag-Erling Smørgrav cp $ev_files_libso build/libevent/.libs 725*b7579f77SDag-Erling Smørgrav LATE_LDFLAGS="build/libevent/*.lo -lm" 726*b7579f77SDag-Erling Smørgrav LDFLAGS="build/libevent/*.o $LDFLAGS -lm" 727*b7579f77SDag-Erling Smørgrav else 728*b7579f77SDag-Erling Smørgrav AC_MSG_ERROR([Cannot find the libevent library in $withval 729*b7579f77SDag-Erling SmørgravYou can restart ./configure --with-libevent=no to use a builtin alternative. 730*b7579f77SDag-Erling SmørgravPlease note that this alternative is not as capable as libevent when using 731*b7579f77SDag-Erling Smørgravlarge outgoing port ranges. ]) 732*b7579f77SDag-Erling Smørgrav fi 733*b7579f77SDag-Erling Smørgrav else 734*b7579f77SDag-Erling Smørgrav AC_MSG_RESULT(found in $thedir) 735*b7579f77SDag-Erling Smørgrav dnl assume /usr is in default path, do not add "". 736*b7579f77SDag-Erling Smørgrav if test "$thedir" != "/usr" -a "$thedir" != ""; then 737*b7579f77SDag-Erling Smørgrav LDFLAGS="$LDFLAGS -L$thedir/lib" 738*b7579f77SDag-Erling Smørgrav ACX_RUNTIME_PATH_ADD([$thedir/lib]) 739*b7579f77SDag-Erling Smørgrav fi 740*b7579f77SDag-Erling Smørgrav fi 741*b7579f77SDag-Erling Smørgrav # check for library used by libevent after 1.3c 742*b7579f77SDag-Erling Smørgrav AC_SEARCH_LIBS([clock_gettime], [rt]) 743*b7579f77SDag-Erling Smørgrav 744*b7579f77SDag-Erling Smørgrav # is the event.h header libev or libevent? 745*b7579f77SDag-Erling Smørgrav AC_CHECK_HEADERS([event.h],,, [AC_INCLUDES_DEFAULT]) 746*b7579f77SDag-Erling Smørgrav AC_CHECK_DECL(EV_VERSION_MAJOR, [ 747*b7579f77SDag-Erling Smørgrav AC_SEARCH_LIBS(event_set, [ev]) 748*b7579f77SDag-Erling Smørgrav ],[ 749*b7579f77SDag-Erling Smørgrav AC_SEARCH_LIBS(event_set, [event]) 750*b7579f77SDag-Erling Smørgrav ],[AC_INCLUDES_DEFAULT 751*b7579f77SDag-Erling Smørgrav#include <event.h> 752*b7579f77SDag-Erling Smørgrav ]) 753*b7579f77SDag-Erling Smørgrav AC_CHECK_FUNCS([event_base_free]) # only in libevent 1.2 and later 754*b7579f77SDag-Erling Smørgrav AC_CHECK_FUNCS([event_base_once]) # only in libevent 1.4.1 and later 755*b7579f77SDag-Erling Smørgrav AC_CHECK_FUNCS([event_base_new]) # only in libevent 1.4.1 and later 756*b7579f77SDag-Erling Smørgrav AC_CHECK_FUNCS([event_base_get_method]) # only in libevent 1.4.3 and later 757*b7579f77SDag-Erling Smørgrav AC_CHECK_FUNCS([ev_loop]) # only in libev. (tested on 3.51) 758*b7579f77SDag-Erling Smørgrav AC_CHECK_FUNCS([ev_default_loop]) # only in libev. (tested on 4.00) 759*b7579f77SDag-Erling Smørgrav if test -n "$BAK_LDFLAGS_SET"; then 760*b7579f77SDag-Erling Smørgrav LDFLAGS="$BAK_LDFLAGS" 761*b7579f77SDag-Erling Smørgrav fi 762*b7579f77SDag-Erling Smørgravelse 763*b7579f77SDag-Erling Smørgrav AC_DEFINE(USE_MINI_EVENT, 1, [Define if you want to use internal select based events]) 764*b7579f77SDag-Erling Smørgravfi 765*b7579f77SDag-Erling Smørgrav 766*b7579f77SDag-Erling Smørgrav# check for libexpat 767*b7579f77SDag-Erling SmørgravAC_ARG_WITH(libexpat, AC_HELP_STRING([--with-libexpat=path], 768*b7579f77SDag-Erling Smørgrav [specify explicit path for libexpat.]), 769*b7579f77SDag-Erling Smørgrav [ ],[ withval="/usr/local /opt/local /usr/lib /usr/pkg /usr/sfw /usr" ]) 770*b7579f77SDag-Erling SmørgravAC_MSG_CHECKING(for libexpat) 771*b7579f77SDag-Erling Smørgravfound_libexpat="no" 772*b7579f77SDag-Erling Smørgravfor dir in $withval ; do 773*b7579f77SDag-Erling Smørgrav if test -f "$dir/include/expat.h"; then 774*b7579f77SDag-Erling Smørgrav found_libexpat="yes" 775*b7579f77SDag-Erling Smørgrav dnl assume /usr is in default path. 776*b7579f77SDag-Erling Smørgrav if test "$dir" != "/usr"; then 777*b7579f77SDag-Erling Smørgrav CPPFLAGS="$CPPFLAGS -I$dir/include" 778*b7579f77SDag-Erling Smørgrav LDFLAGS="$LDFLAGS -L$dir/lib" 779*b7579f77SDag-Erling Smørgrav fi 780*b7579f77SDag-Erling Smørgrav AC_MSG_RESULT(found in $dir) 781*b7579f77SDag-Erling Smørgrav break; 782*b7579f77SDag-Erling Smørgrav fi 783*b7579f77SDag-Erling Smørgravdone 784*b7579f77SDag-Erling Smørgravif test x_$found_libexpat != x_yes; then 785*b7579f77SDag-Erling Smørgrav AC_ERROR([Could not find libexpat, expat.h]) 786*b7579f77SDag-Erling Smørgravfi 787*b7579f77SDag-Erling SmørgravAC_CHECK_HEADERS([expat.h],,, [AC_INCLUDES_DEFAULT]) 788*b7579f77SDag-Erling Smørgrav 789*b7579f77SDag-Erling Smørgrav# set static linking if requested 790*b7579f77SDag-Erling SmørgravAC_SUBST(staticexe) 791*b7579f77SDag-Erling Smørgravstaticexe="" 792*b7579f77SDag-Erling SmørgravAC_ARG_ENABLE(static-exe, AC_HELP_STRING([--enable-static-exe], 793*b7579f77SDag-Erling Smørgrav [ enable to compile executables statically against event, ldns libs, for debug purposes ]), 794*b7579f77SDag-Erling Smørgrav , ) 795*b7579f77SDag-Erling Smørgravif test x_$enable_static_exe = x_yes; then 796*b7579f77SDag-Erling Smørgrav staticexe="-static" 797*b7579f77SDag-Erling Smørgrav if test "$on_mingw" = yes; then 798*b7579f77SDag-Erling Smørgrav staticexe="-all-static" 799*b7579f77SDag-Erling Smørgrav # for static crosscompile, include gdi32 and zlib here. 800*b7579f77SDag-Erling Smørgrav if test "`uname`" = "Linux"; then 801*b7579f77SDag-Erling Smørgrav LIBS="$LIBS -lgdi32 -lz" 802*b7579f77SDag-Erling Smørgrav fi 803*b7579f77SDag-Erling Smørgrav fi 804*b7579f77SDag-Erling Smørgravfi 805*b7579f77SDag-Erling Smørgrav 806*b7579f77SDag-Erling Smørgrav# set lock checking if requested 807*b7579f77SDag-Erling SmørgravAC_ARG_ENABLE(lock_checks, AC_HELP_STRING([--enable-lock-checks], 808*b7579f77SDag-Erling Smørgrav [ enable to check lock and unlock calls, for debug purposes ]), 809*b7579f77SDag-Erling Smørgrav , ) 810*b7579f77SDag-Erling Smørgravif test x_$enable_lock_checks = x_yes; then 811*b7579f77SDag-Erling Smørgrav AC_DEFINE(ENABLE_LOCK_CHECKS, 1, [Define if you want to use debug lock checking (slow).]) 812*b7579f77SDag-Erling Smørgrav CHECKLOCK_OBJ="checklocks.lo" 813*b7579f77SDag-Erling Smørgrav AC_SUBST(CHECKLOCK_OBJ) 814*b7579f77SDag-Erling Smørgravfi 815*b7579f77SDag-Erling Smørgrav 816*b7579f77SDag-Erling SmørgravACX_CHECK_GETADDRINFO_WITH_INCLUDES 817*b7579f77SDag-Erling Smørgravif test "$USE_WINSOCK" = 1; then 818*b7579f77SDag-Erling Smørgrav AC_DEFINE(UB_ON_WINDOWS, 1, [Use win32 resources and API]) 819*b7579f77SDag-Erling Smørgrav AC_CHECK_HEADERS([iphlpapi.h],,, [AC_INCLUDES_DEFAULT 820*b7579f77SDag-Erling Smørgrav#include <windows.h> 821*b7579f77SDag-Erling Smørgrav ]) 822*b7579f77SDag-Erling Smørgrav AC_CHECK_TOOL(WINDRES, windres) 823*b7579f77SDag-Erling Smørgrav LIBS="$LIBS -liphlpapi" 824*b7579f77SDag-Erling Smørgrav WINAPPS="unbound-service-install.exe unbound-service-remove.exe anchor-update.exe" 825*b7579f77SDag-Erling Smørgrav AC_SUBST(WINAPPS) 826*b7579f77SDag-Erling Smørgrav WIN_DAEMON_SRC="winrc/win_svc.c winrc/w_inst.c" 827*b7579f77SDag-Erling Smørgrav AC_SUBST(WIN_DAEMON_SRC) 828*b7579f77SDag-Erling Smørgrav WIN_DAEMON_OBJ="win_svc.lo w_inst.lo" 829*b7579f77SDag-Erling Smørgrav AC_SUBST(WIN_DAEMON_OBJ) 830*b7579f77SDag-Erling Smørgrav WIN_DAEMON_OBJ_LINK="rsrc_unbound.o" 831*b7579f77SDag-Erling Smørgrav AC_SUBST(WIN_DAEMON_OBJ_LINK) 832*b7579f77SDag-Erling Smørgrav WIN_HOST_OBJ_LINK="rsrc_unbound_host.o" 833*b7579f77SDag-Erling Smørgrav AC_SUBST(WIN_HOST_OBJ_LINK) 834*b7579f77SDag-Erling Smørgrav WIN_UBANCHOR_OBJ_LINK="rsrc_unbound_anchor.o log.lo locks.lo" 835*b7579f77SDag-Erling Smørgrav AC_SUBST(WIN_UBANCHOR_OBJ_LINK) 836*b7579f77SDag-Erling Smørgrav WIN_CONTROL_OBJ_LINK="rsrc_unbound_control.o" 837*b7579f77SDag-Erling Smørgrav AC_SUBST(WIN_CONTROL_OBJ_LINK) 838*b7579f77SDag-Erling Smørgrav WIN_CHECKCONF_OBJ_LINK="rsrc_unbound_checkconf.o" 839*b7579f77SDag-Erling Smørgrav AC_SUBST(WIN_CHECKCONF_OBJ_LINK) 840*b7579f77SDag-Erling Smørgravfi 841*b7579f77SDag-Erling Smørgravif test $ac_cv_func_getaddrinfo = no; then 842*b7579f77SDag-Erling Smørgrav AC_LIBOBJ([fake-rfc2553]) 843*b7579f77SDag-Erling Smørgravfi 844*b7579f77SDag-Erling Smørgrav# check after getaddrinfo for its libraries 845*b7579f77SDag-Erling SmørgravACX_FUNC_IOCTLSOCKET 846*b7579f77SDag-Erling Smørgrav 847*b7579f77SDag-Erling Smørgrav# see if daemon(3) exists, and if it is deprecated. 848*b7579f77SDag-Erling SmørgravAC_CHECK_FUNCS([daemon]) 849*b7579f77SDag-Erling Smørgravif test $ac_cv_func_daemon = yes; then 850*b7579f77SDag-Erling Smørgrav ACX_FUNC_DEPRECATED([daemon], [(void)daemon(0, 0);], [ 851*b7579f77SDag-Erling Smørgrav#include <stdlib.h> 852*b7579f77SDag-Erling Smørgrav]) 853*b7579f77SDag-Erling Smørgravfi 854*b7579f77SDag-Erling Smørgrav 855*b7579f77SDag-Erling SmørgravAC_CHECK_MEMBERS([struct in_pktinfo.ipi_spec_dst],,,[ 856*b7579f77SDag-Erling SmørgravAC_INCLUDES_DEFAULT 857*b7579f77SDag-Erling Smørgrav#if HAVE_SYS_PARAM_H 858*b7579f77SDag-Erling Smørgrav#include <sys/param.h> 859*b7579f77SDag-Erling Smørgrav#endif 860*b7579f77SDag-Erling Smørgrav 861*b7579f77SDag-Erling Smørgrav#ifdef HAVE_SYS_SOCKET_H 862*b7579f77SDag-Erling Smørgrav#include <sys/socket.h> 863*b7579f77SDag-Erling Smørgrav#endif 864*b7579f77SDag-Erling Smørgrav 865*b7579f77SDag-Erling Smørgrav#ifdef HAVE_SYS_UIO_H 866*b7579f77SDag-Erling Smørgrav#include <sys/uio.h> 867*b7579f77SDag-Erling Smørgrav#endif 868*b7579f77SDag-Erling Smørgrav 869*b7579f77SDag-Erling Smørgrav#ifdef HAVE_NETINET_IN_H 870*b7579f77SDag-Erling Smørgrav#include <netinet/in.h> 871*b7579f77SDag-Erling Smørgrav#endif 872*b7579f77SDag-Erling Smørgrav 873*b7579f77SDag-Erling Smørgrav#ifdef HAVE_ARPA_INET_H 874*b7579f77SDag-Erling Smørgrav#include <arpa/inet.h> 875*b7579f77SDag-Erling Smørgrav#endif 876*b7579f77SDag-Erling Smørgrav 877*b7579f77SDag-Erling Smørgrav#ifdef HAVE_WINSOCK2_H 878*b7579f77SDag-Erling Smørgrav#include <winsock2.h> 879*b7579f77SDag-Erling Smørgrav#endif 880*b7579f77SDag-Erling Smørgrav 881*b7579f77SDag-Erling Smørgrav#ifdef HAVE_WS2TCPIP_H 882*b7579f77SDag-Erling Smørgrav#include <ws2tcpip.h> 883*b7579f77SDag-Erling Smørgrav#endif 884*b7579f77SDag-Erling Smørgrav]) 885*b7579f77SDag-Erling SmørgravAC_SEARCH_LIBS([setusercontext], [util]) 886*b7579f77SDag-Erling SmørgravAC_CHECK_FUNCS([tzset sigprocmask fcntl getpwnam getrlimit setrlimit setsid sbrk chroot kill sleep usleep random srandom recvmsg sendmsg writev socketpair glob initgroups strftime localtime_r setusercontext _beginthreadex]) 887*b7579f77SDag-Erling SmørgravAC_CHECK_FUNCS([setresuid],,[AC_CHECK_FUNCS([setreuid])]) 888*b7579f77SDag-Erling SmørgravAC_CHECK_FUNCS([setresgid],,[AC_CHECK_FUNCS([setregid])]) 889*b7579f77SDag-Erling Smørgrav 890*b7579f77SDag-Erling Smørgrav# check if setreuid en setregid fail, on MacOSX10.4(darwin8). 891*b7579f77SDag-Erling Smørgravif echo $build_os | grep darwin8 > /dev/null; then 892*b7579f77SDag-Erling Smørgrav AC_DEFINE(DARWIN_BROKEN_SETREUID, 1, [Define this if on macOSX10.4-darwin8 and setreuid and setregid do not work]) 893*b7579f77SDag-Erling Smørgravfi 894*b7579f77SDag-Erling SmørgravAC_REPLACE_FUNCS(inet_aton) 895*b7579f77SDag-Erling SmørgravAC_REPLACE_FUNCS(inet_pton) 896*b7579f77SDag-Erling SmørgravAC_REPLACE_FUNCS(inet_ntop) 897*b7579f77SDag-Erling SmørgravAC_REPLACE_FUNCS(snprintf) 898*b7579f77SDag-Erling SmørgravAC_REPLACE_FUNCS(strlcpy) 899*b7579f77SDag-Erling SmørgravAC_REPLACE_FUNCS(memmove) 900*b7579f77SDag-Erling SmørgravAC_REPLACE_FUNCS(gmtime_r) 901*b7579f77SDag-Erling SmørgravLIBOBJ_WITHOUT_CTIME="$LIBOBJS" 902*b7579f77SDag-Erling SmørgravAC_SUBST(LIBOBJ_WITHOUT_CTIME) 903*b7579f77SDag-Erling SmørgravAC_REPLACE_FUNCS(ctime_r) 904*b7579f77SDag-Erling Smørgrav 905*b7579f77SDag-Erling SmørgravAC_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])) 906*b7579f77SDag-Erling Smørgravcase "$enable_allsymbols" in 907*b7579f77SDag-Erling Smørgrav yes) 908*b7579f77SDag-Erling Smørgrav COMMON_OBJ_ALL_SYMBOLS="" 909*b7579f77SDag-Erling Smørgrav UBSYMS="" 910*b7579f77SDag-Erling Smørgrav EXTRALINK="-L. -L.libs -lunbound" 911*b7579f77SDag-Erling Smørgrav 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]) 912*b7579f77SDag-Erling Smørgrav ;; 913*b7579f77SDag-Erling Smørgrav no|*) 914*b7579f77SDag-Erling Smørgrav COMMON_OBJ_ALL_SYMBOLS='$(COMMON_OBJ)' 915*b7579f77SDag-Erling Smørgrav UBSYMS='-export-symbols $(srcdir)/libunbound/ubsyms.def' 916*b7579f77SDag-Erling Smørgrav EXTRALINK="" 917*b7579f77SDag-Erling Smørgrav ;; 918*b7579f77SDag-Erling Smørgravesac 919*b7579f77SDag-Erling SmørgravAC_SUBST(COMMON_OBJ_ALL_SYMBOLS) 920*b7579f77SDag-Erling SmørgravAC_SUBST(EXTRALINK) 921*b7579f77SDag-Erling SmørgravAC_SUBST(UBSYMS) 922*b7579f77SDag-Erling Smørgravif test x_$enable_lock_checks = x_yes; then 923*b7579f77SDag-Erling Smørgrav UBSYMS="-export-symbols clubsyms.def" 924*b7579f77SDag-Erling Smørgrav cp ${srcdir}/libunbound/ubsyms.def clubsyms.def 925*b7579f77SDag-Erling Smørgrav echo lock_protect >> clubsyms.def 926*b7579f77SDag-Erling Smørgrav echo lock_unprotect >> clubsyms.def 927*b7579f77SDag-Erling Smørgrav echo lock_get_mem >> clubsyms.def 928*b7579f77SDag-Erling Smørgrav echo checklock_start >> clubsyms.def 929*b7579f77SDag-Erling Smørgrav echo checklock_stop >> clubsyms.def 930*b7579f77SDag-Erling Smørgrav echo checklock_lock >> clubsyms.def 931*b7579f77SDag-Erling Smørgrav echo checklock_unlock >> clubsyms.def 932*b7579f77SDag-Erling Smørgrav echo checklock_init >> clubsyms.def 933*b7579f77SDag-Erling Smørgrav echo checklock_thrcreate >> clubsyms.def 934*b7579f77SDag-Erling Smørgrav echo checklock_thrjoin >> clubsyms.def 935*b7579f77SDag-Erling Smørgravfi 936*b7579f77SDag-Erling Smørgrav 937*b7579f77SDag-Erling SmørgravAC_MSG_CHECKING([if ${MAKE:-make} supports $< with implicit rule in scope]) 938*b7579f77SDag-Erling Smørgrav# on openBSD, the implicit rule make $< work. 939*b7579f77SDag-Erling Smørgrav# on Solaris, it does not work ($? is changed sources, $^ lists dependencies). 940*b7579f77SDag-Erling Smørgrav# gmake works. 941*b7579f77SDag-Erling Smørgravcat >conftest.make <<EOF 942*b7579f77SDag-Erling Smørgravall: conftest.lo 943*b7579f77SDag-Erling Smørgrav 944*b7579f77SDag-Erling Smørgravconftest.lo foo.lo bla.lo: 945*b7579f77SDag-Erling Smørgrav if test -f "\$<"; then touch \$@; fi 946*b7579f77SDag-Erling Smørgrav 947*b7579f77SDag-Erling Smørgrav.SUFFIXES: .lo 948*b7579f77SDag-Erling Smørgrav.c.lo: 949*b7579f77SDag-Erling Smørgrav if test -f "\$<"; then touch \$@; fi 950*b7579f77SDag-Erling Smørgrav 951*b7579f77SDag-Erling Smørgravconftest.lo: conftest.dir/conftest.c 952*b7579f77SDag-Erling SmørgravEOF 953*b7579f77SDag-Erling Smørgravmkdir conftest.dir 954*b7579f77SDag-Erling Smørgravtouch conftest.dir/conftest.c 955*b7579f77SDag-Erling Smørgravrm -f conftest.lo conftest.c 956*b7579f77SDag-Erling Smørgrav${MAKE:-make} -f conftest.make >/dev/null 957*b7579f77SDag-Erling Smørgravrm -f conftest.make conftest.c conftest.dir/conftest.c 958*b7579f77SDag-Erling Smørgravrm -rf conftest.dir 959*b7579f77SDag-Erling Smørgravif test ! -f conftest.lo; then 960*b7579f77SDag-Erling Smørgrav AC_MSG_RESULT(no) 961*b7579f77SDag-Erling Smørgrav SOURCEDETERMINE='echo "$^" | awk "-F " "{print \$$1;}" > .source' 962*b7579f77SDag-Erling Smørgrav SOURCEFILE='`cat .source`' 963*b7579f77SDag-Erling Smørgravelse 964*b7579f77SDag-Erling Smørgrav AC_MSG_RESULT(yes) 965*b7579f77SDag-Erling Smørgrav SOURCEDETERMINE=':' 966*b7579f77SDag-Erling Smørgrav SOURCEFILE='$<' 967*b7579f77SDag-Erling Smørgravfi 968*b7579f77SDag-Erling Smørgravrm -f conftest.lo 969*b7579f77SDag-Erling SmørgravAC_SUBST(SOURCEDETERMINE) 970*b7579f77SDag-Erling SmørgravAC_SUBST(SOURCEFILE) 971*b7579f77SDag-Erling Smørgrav 972*b7579f77SDag-Erling Smørgrav# check this after all other compilation checks, since the linking of the lib 973*b7579f77SDag-Erling Smørgrav# may break checks after this. 974*b7579f77SDag-Erling SmørgravAC_ARG_WITH(ldns, AC_HELP_STRING([--with-ldns=PATH], 975*b7579f77SDag-Erling Smørgrav [specify prefix of path of ldns library to use]), 976*b7579f77SDag-Erling Smørgrav [ 977*b7579f77SDag-Erling Smørgrav if test "$withval" != "yes"; then 978*b7579f77SDag-Erling Smørgrav if test "$withval" != "/usr" -a "$withval" != ""; then 979*b7579f77SDag-Erling Smørgrav CPPFLAGS="-I$withval/include $CPPFLAGS" 980*b7579f77SDag-Erling Smørgrav LDFLAGS="-L$withval/lib $LDFLAGS" 981*b7579f77SDag-Erling Smørgrav ACX_RUNTIME_PATH_ADD([$withval/lib]) 982*b7579f77SDag-Erling Smørgrav fi 983*b7579f77SDag-Erling Smørgrav ldnsdir="$withval" 984*b7579f77SDag-Erling Smørgrav AC_SUBST(ldnsdir) 985*b7579f77SDag-Erling Smørgrav fi 986*b7579f77SDag-Erling Smørgrav]) 987*b7579f77SDag-Erling Smørgrav 988*b7579f77SDag-Erling Smørgrav# check if ldns is good enough 989*b7579f77SDag-Erling SmørgravAC_CHECK_LIB(ldns, ldns_rr_new,,[ 990*b7579f77SDag-Erling Smørgrav AC_MSG_ERROR([No ldns library found, install the ldns library into system lib dir or use --with-ldns=path to other location. The --with-ldns can point to the make-dir of ldns. Install the package ldns or download source http://www.nlnetlabs.nl/projects/ldns]) 991*b7579f77SDag-Erling Smørgrav]) 992*b7579f77SDag-Erling SmørgravAC_CHECK_FUNC(ldns_buffer_copy) 993*b7579f77SDag-Erling SmørgravAC_CHECK_FUNC(ldns_key_buf2rsa_raw) 994*b7579f77SDag-Erling SmørgravAC_CHECK_FUNC(ldns_get_random) 995*b7579f77SDag-Erling SmørgravAC_CHECK_FUNC(ldns_b32_ntop_extended_hex) 996*b7579f77SDag-Erling Smørgravif test x$use_gost = xyes; then 997*b7579f77SDag-Erling Smørgrav AC_CHECK_FUNC(ldns_key_EVP_load_gost_id) 998*b7579f77SDag-Erling Smørgrav AC_CHECK_FUNCS([ldns_key_EVP_unload_gost]) 999*b7579f77SDag-Erling Smørgravelse 1000*b7579f77SDag-Erling Smørgrav ac_cv_func_ldns_key_EVP_load_gost_id="yes" 1001*b7579f77SDag-Erling Smørgravfi 1002*b7579f77SDag-Erling Smørgravif test x$use_ecdsa = xyes; then 1003*b7579f77SDag-Erling Smørgrav AC_CHECK_DECL([LDNS_ECDSAP384SHA384], [], [], [ 1004*b7579f77SDag-Erling SmørgravAC_INCLUDES_DEFAULT 1005*b7579f77SDag-Erling Smørgrav#ifdef HAVE_SYS_SOCKET_H 1006*b7579f77SDag-Erling Smørgrav# include <sys/socket.h> 1007*b7579f77SDag-Erling Smørgrav#endif 1008*b7579f77SDag-Erling Smørgrav#ifdef HAVE_WS2TCPIP_H 1009*b7579f77SDag-Erling Smørgrav# include <ws2tcpip.h> 1010*b7579f77SDag-Erling Smørgrav#endif 1011*b7579f77SDag-Erling Smørgrav#include <ldns/ldns.h> 1012*b7579f77SDag-Erling Smørgrav ]) 1013*b7579f77SDag-Erling Smørgravelse 1014*b7579f77SDag-Erling Smørgrav ac_cv_have_decl_LDNS_ECDSAP384SHA384="yes" 1015*b7579f77SDag-Erling Smørgravfi 1016*b7579f77SDag-Erling SmørgravAC_CHECK_HEADERS([ldns/ldns.h],,[ 1017*b7579f77SDag-Erling Smørgrav AC_MSG_ERROR([No ldns include file found, install the ldns library development files. Install package ldns-dev or ldns-devel or download source http://www.nlnetlabs.nl/projects/ldns]) 1018*b7579f77SDag-Erling Smørgrav ], [AC_INCLUDES_DEFAULT 1019*b7579f77SDag-Erling Smørgrav#ifdef HAVE_SYS_SOCKET_H 1020*b7579f77SDag-Erling Smørgrav#include <sys/socket.h> 1021*b7579f77SDag-Erling Smørgrav#endif 1022*b7579f77SDag-Erling Smørgrav 1023*b7579f77SDag-Erling Smørgrav#ifdef HAVE_NETINET_IN_H 1024*b7579f77SDag-Erling Smørgrav#include <netinet/in.h> 1025*b7579f77SDag-Erling Smørgrav#endif 1026*b7579f77SDag-Erling Smørgrav 1027*b7579f77SDag-Erling Smørgrav#ifdef HAVE_ARPA_INET_H 1028*b7579f77SDag-Erling Smørgrav#include <arpa/inet.h> 1029*b7579f77SDag-Erling Smørgrav#endif 1030*b7579f77SDag-Erling Smørgrav 1031*b7579f77SDag-Erling Smørgrav#ifdef HAVE_WINSOCK2_H 1032*b7579f77SDag-Erling Smørgrav#include <winsock2.h> 1033*b7579f77SDag-Erling Smørgrav#endif 1034*b7579f77SDag-Erling Smørgrav 1035*b7579f77SDag-Erling Smørgrav#ifdef HAVE_WS2TCPIP_H 1036*b7579f77SDag-Erling Smørgrav#include <ws2tcpip.h> 1037*b7579f77SDag-Erling Smørgrav#endif 1038*b7579f77SDag-Erling Smørgrav]) 1039*b7579f77SDag-Erling Smørgravif test $ac_cv_func_ldns_buffer_copy = yes \ 1040*b7579f77SDag-Erling Smørgrav -a $ac_cv_func_ldns_key_buf2rsa_raw = yes \ 1041*b7579f77SDag-Erling Smørgrav -a $ac_cv_func_ldns_get_random = yes \ 1042*b7579f77SDag-Erling Smørgrav -a $ac_cv_header_ldns_ldns_h = yes \ 1043*b7579f77SDag-Erling Smørgrav -a $ac_cv_func_ldns_b32_ntop_extended_hex = yes \ 1044*b7579f77SDag-Erling Smørgrav -a $ac_cv_func_ldns_key_EVP_load_gost_id = yes \ 1045*b7579f77SDag-Erling Smørgrav -a $ac_cv_have_decl_LDNS_ECDSAP384SHA384 = yes; then 1046*b7579f77SDag-Erling Smørgrav dnl ldns was found 1047*b7579f77SDag-Erling Smørgrav : 1048*b7579f77SDag-Erling Smørgravelse 1049*b7579f77SDag-Erling Smørgrav AC_MSG_ERROR([ldns library is not recent, update the ldns library, install it into system lib dir or use --with-ldns=path to other location. The --with-ldns can point to the make-dir of ldns. Package libldns or download source http://www.nlnetlabs.nl/projects/ldns]) 1050*b7579f77SDag-Erling Smørgravfi 1051*b7579f77SDag-Erling Smørgrav 1052*b7579f77SDag-Erling SmørgravACX_STRIP_EXT_FLAGS 1053*b7579f77SDag-Erling SmørgravLDFLAGS="$LATE_LDFLAGS $LDFLAGS" 1054*b7579f77SDag-Erling Smørgrav 1055*b7579f77SDag-Erling SmørgravAC_DEFINE_UNQUOTED([MAXSYSLOGMSGLEN], [10240], [Define to the maximum message length to pass to syslog.]) 1056*b7579f77SDag-Erling Smørgrav 1057*b7579f77SDag-Erling SmørgravAH_BOTTOM( 1058*b7579f77SDag-Erling Smørgravdnl this must be first AH_CONFIG, to define the flags before any includes. 1059*b7579f77SDag-Erling SmørgravAHX_CONFIG_EXT_FLAGS 1060*b7579f77SDag-Erling Smørgrav 1061*b7579f77SDag-Erling Smørgravdnl includes 1062*b7579f77SDag-Erling Smørgrav[ 1063*b7579f77SDag-Erling Smørgrav#ifndef UNBOUND_DEBUG 1064*b7579f77SDag-Erling Smørgrav# define NDEBUG 1065*b7579f77SDag-Erling Smørgrav#endif 1066*b7579f77SDag-Erling Smørgrav 1067*b7579f77SDag-Erling Smørgrav#include <stdio.h> 1068*b7579f77SDag-Erling Smørgrav#include <string.h> 1069*b7579f77SDag-Erling Smørgrav#include <unistd.h> 1070*b7579f77SDag-Erling Smørgrav#include <assert.h> 1071*b7579f77SDag-Erling Smørgrav 1072*b7579f77SDag-Erling Smørgrav#if STDC_HEADERS 1073*b7579f77SDag-Erling Smørgrav#include <stdlib.h> 1074*b7579f77SDag-Erling Smørgrav#include <stddef.h> 1075*b7579f77SDag-Erling Smørgrav#endif 1076*b7579f77SDag-Erling Smørgrav 1077*b7579f77SDag-Erling Smørgrav#ifdef HAVE_STDINT_H 1078*b7579f77SDag-Erling Smørgrav#include <stdint.h> 1079*b7579f77SDag-Erling Smørgrav#endif 1080*b7579f77SDag-Erling Smørgrav 1081*b7579f77SDag-Erling Smørgrav#include <errno.h> 1082*b7579f77SDag-Erling Smørgrav 1083*b7579f77SDag-Erling Smørgrav#if HAVE_SYS_PARAM_H 1084*b7579f77SDag-Erling Smørgrav#include <sys/param.h> 1085*b7579f77SDag-Erling Smørgrav#endif 1086*b7579f77SDag-Erling Smørgrav 1087*b7579f77SDag-Erling Smørgrav#ifdef HAVE_SYS_SOCKET_H 1088*b7579f77SDag-Erling Smørgrav#include <sys/socket.h> 1089*b7579f77SDag-Erling Smørgrav#endif 1090*b7579f77SDag-Erling Smørgrav 1091*b7579f77SDag-Erling Smørgrav#ifdef HAVE_SYS_UIO_H 1092*b7579f77SDag-Erling Smørgrav#include <sys/uio.h> 1093*b7579f77SDag-Erling Smørgrav#endif 1094*b7579f77SDag-Erling Smørgrav 1095*b7579f77SDag-Erling Smørgrav#ifdef HAVE_NETINET_IN_H 1096*b7579f77SDag-Erling Smørgrav#include <netinet/in.h> 1097*b7579f77SDag-Erling Smørgrav#endif 1098*b7579f77SDag-Erling Smørgrav 1099*b7579f77SDag-Erling Smørgrav#ifdef HAVE_ARPA_INET_H 1100*b7579f77SDag-Erling Smørgrav#include <arpa/inet.h> 1101*b7579f77SDag-Erling Smørgrav#endif 1102*b7579f77SDag-Erling Smørgrav 1103*b7579f77SDag-Erling Smørgrav#ifdef HAVE_WINSOCK2_H 1104*b7579f77SDag-Erling Smørgrav#include <winsock2.h> 1105*b7579f77SDag-Erling Smørgrav#endif 1106*b7579f77SDag-Erling Smørgrav 1107*b7579f77SDag-Erling Smørgrav#ifdef HAVE_WS2TCPIP_H 1108*b7579f77SDag-Erling Smørgrav#include <ws2tcpip.h> 1109*b7579f77SDag-Erling Smørgrav#endif 1110*b7579f77SDag-Erling Smørgrav] 1111*b7579f77SDag-Erling Smørgrav 1112*b7579f77SDag-Erling SmørgravAHX_CONFIG_FORMAT_ATTRIBUTE 1113*b7579f77SDag-Erling SmørgravAHX_CONFIG_UNUSED_ATTRIBUTE 1114*b7579f77SDag-Erling SmørgravAHX_CONFIG_FSEEKO 1115*b7579f77SDag-Erling SmørgravAHX_CONFIG_MAXHOSTNAMELEN 1116*b7579f77SDag-Erling SmørgravAHX_CONFIG_SNPRINTF(unbound) 1117*b7579f77SDag-Erling SmørgravAHX_CONFIG_INET_PTON(unbound) 1118*b7579f77SDag-Erling SmørgravAHX_CONFIG_INET_NTOP(unbound) 1119*b7579f77SDag-Erling SmørgravAHX_CONFIG_INET_ATON(unbound) 1120*b7579f77SDag-Erling SmørgravAHX_CONFIG_MEMMOVE(unbound) 1121*b7579f77SDag-Erling SmørgravAHX_CONFIG_STRLCPY(unbound) 1122*b7579f77SDag-Erling SmørgravAHX_CONFIG_GMTIME_R(unbound) 1123*b7579f77SDag-Erling SmørgravAHX_CONFIG_W32_SLEEP 1124*b7579f77SDag-Erling SmørgravAHX_CONFIG_W32_USLEEP 1125*b7579f77SDag-Erling SmørgravAHX_CONFIG_W32_RANDOM 1126*b7579f77SDag-Erling SmørgravAHX_CONFIG_W32_SRANDOM 1127*b7579f77SDag-Erling SmørgravAHX_CONFIG_W32_FD_SET_T 1128*b7579f77SDag-Erling SmørgravAHX_CONFIG_IPV6_MIN_MTU 1129*b7579f77SDag-Erling SmørgravAHX_MEMCMP_BROKEN(unbound) 1130*b7579f77SDag-Erling Smørgrav 1131*b7579f77SDag-Erling Smørgrav[ 1132*b7579f77SDag-Erling Smørgrav#ifndef HAVE_CTIME_R 1133*b7579f77SDag-Erling Smørgrav#define ctime_r unbound_ctime_r 1134*b7579f77SDag-Erling Smørgravchar *ctime_r(const time_t *timep, char *buf); 1135*b7579f77SDag-Erling Smørgrav#endif 1136*b7579f77SDag-Erling Smørgrav 1137*b7579f77SDag-Erling Smørgrav#if !defined(HAVE_STRPTIME) || !defined(STRPTIME_WORKS) 1138*b7579f77SDag-Erling Smørgrav#define strptime unbound_strptime 1139*b7579f77SDag-Erling Smørgravstruct tm; 1140*b7579f77SDag-Erling Smørgravchar *strptime(const char *s, const char *format, struct tm *tm); 1141*b7579f77SDag-Erling Smørgrav#endif 1142*b7579f77SDag-Erling Smørgrav 1143*b7579f77SDag-Erling Smørgrav#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)) 1144*b7579f77SDag-Erling Smørgrav /* using version of libevent that is not threadsafe. */ 1145*b7579f77SDag-Erling Smørgrav# define LIBEVENT_SIGNAL_PROBLEM 1 1146*b7579f77SDag-Erling Smørgrav#endif 1147*b7579f77SDag-Erling Smørgrav 1148*b7579f77SDag-Erling Smørgrav#ifndef CHECKED_INET6 1149*b7579f77SDag-Erling Smørgrav# define CHECKED_INET6 1150*b7579f77SDag-Erling Smørgrav# ifdef AF_INET6 1151*b7579f77SDag-Erling Smørgrav# define INET6 1152*b7579f77SDag-Erling Smørgrav# else 1153*b7579f77SDag-Erling Smørgrav# define AF_INET6 28 1154*b7579f77SDag-Erling Smørgrav# endif 1155*b7579f77SDag-Erling Smørgrav#endif /* CHECKED_INET6 */ 1156*b7579f77SDag-Erling Smørgrav 1157*b7579f77SDag-Erling Smørgrav/* maximum nesting of included files */ 1158*b7579f77SDag-Erling Smørgrav#define MAXINCLUDES 10 1159*b7579f77SDag-Erling Smørgrav#ifndef HAVE_GETADDRINFO 1160*b7579f77SDag-Erling Smørgravstruct sockaddr_storage; 1161*b7579f77SDag-Erling Smørgrav#include "compat/fake-rfc2553.h" 1162*b7579f77SDag-Erling Smørgrav#endif 1163*b7579f77SDag-Erling Smørgrav 1164*b7579f77SDag-Erling Smørgrav#ifdef UNBOUND_ALLOC_STATS 1165*b7579f77SDag-Erling Smørgrav# define malloc(s) unbound_stat_malloc_log(s, __FILE__, __LINE__, __func__) 1166*b7579f77SDag-Erling Smørgrav# define calloc(n,s) unbound_stat_calloc_log(n, s, __FILE__, __LINE__, __func__) 1167*b7579f77SDag-Erling Smørgrav# define free(p) unbound_stat_free_log(p, __FILE__, __LINE__, __func__) 1168*b7579f77SDag-Erling Smørgrav# define realloc(p,s) unbound_stat_realloc_log(p, s, __FILE__, __LINE__, __func__) 1169*b7579f77SDag-Erling Smørgravvoid *unbound_stat_malloc(size_t size); 1170*b7579f77SDag-Erling Smørgravvoid *unbound_stat_calloc(size_t nmemb, size_t size); 1171*b7579f77SDag-Erling Smørgravvoid unbound_stat_free(void *ptr); 1172*b7579f77SDag-Erling Smørgravvoid *unbound_stat_realloc(void *ptr, size_t size); 1173*b7579f77SDag-Erling Smørgravvoid *unbound_stat_malloc_log(size_t size, const char* file, int line, 1174*b7579f77SDag-Erling Smørgrav const char* func); 1175*b7579f77SDag-Erling Smørgravvoid *unbound_stat_calloc_log(size_t nmemb, size_t size, const char* file, 1176*b7579f77SDag-Erling Smørgrav int line, const char* func); 1177*b7579f77SDag-Erling Smørgravvoid unbound_stat_free_log(void *ptr, const char* file, int line, 1178*b7579f77SDag-Erling Smørgrav const char* func); 1179*b7579f77SDag-Erling Smørgravvoid *unbound_stat_realloc_log(void *ptr, size_t size, const char* file, 1180*b7579f77SDag-Erling Smørgrav int line, const char* func); 1181*b7579f77SDag-Erling Smørgrav#elif defined(UNBOUND_ALLOC_LITE) 1182*b7579f77SDag-Erling Smørgrav# include "util/alloc.h" 1183*b7579f77SDag-Erling Smørgrav#endif /* UNBOUND_ALLOC_LITE and UNBOUND_ALLOC_STATS */ 1184*b7579f77SDag-Erling Smørgrav 1185*b7579f77SDag-Erling Smørgrav/** default port for DNS traffic. */ 1186*b7579f77SDag-Erling Smørgrav#define UNBOUND_DNS_PORT 53 1187*b7579f77SDag-Erling Smørgrav/** default port for unbound control traffic, registered port with IANA, 1188*b7579f77SDag-Erling Smørgrav ub-dns-control 8953/tcp unbound dns nameserver control */ 1189*b7579f77SDag-Erling Smørgrav#define UNBOUND_CONTROL_PORT 8953 1190*b7579f77SDag-Erling Smørgrav/** the version of unbound-control that this software implements */ 1191*b7579f77SDag-Erling Smørgrav#define UNBOUND_CONTROL_VERSION 1 1192*b7579f77SDag-Erling Smørgrav 1193*b7579f77SDag-Erling Smørgrav]) 1194*b7579f77SDag-Erling Smørgrav 1195*b7579f77SDag-Erling SmørgravAC_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]) 1196*b7579f77SDag-Erling SmørgravAC_CONFIG_HEADER([config.h]) 1197*b7579f77SDag-Erling SmørgravAC_OUTPUT 1198