1b7579f77SDag-Erling Smørgrav# -*- Autoconf -*- 2b7579f77SDag-Erling Smørgrav# Process this file with autoconf to produce a configure script. 3f44e67d1SCy SchubertAC_PREREQ([2.56]) 4b7579f77SDag-Erling Smørgravsinclude(acx_nlnetlabs.m4) 517d15b25SDag-Erling Smørgravsinclude(ax_pthread.m4) 6b7579f77SDag-Erling Smørgravsinclude(acx_python.m4) 7b7579f77SDag-Erling Smørgravsinclude(ac_pkg_swig.m4) 8ff825849SDag-Erling Smørgravsinclude(dnstap/dnstap.m4) 965b390aaSDag-Erling Smørgravsinclude(dnscrypt/dnscrypt.m4) 10b7579f77SDag-Erling Smørgrav 1117d15b25SDag-Erling Smørgrav# must be numbers. ac_defun because of later processing 1217d15b25SDag-Erling Smørgravm4_define([VERSION_MAJOR],[1]) 13*8f76bb7dSCy Schubertm4_define([VERSION_MINOR],[18]) 14*8f76bb7dSCy Schubertm4_define([VERSION_MICRO],[0]) 15f44e67d1SCy SchubertAC_INIT([unbound],m4_defn([VERSION_MAJOR]).m4_defn([VERSION_MINOR]).m4_defn([VERSION_MICRO]),[unbound-bugs@nlnetlabs.nl or https://github.com/NLnetLabs/unbound/issues],[unbound]) 1617d15b25SDag-Erling SmørgravAC_SUBST(UNBOUND_VERSION_MAJOR, [VERSION_MAJOR]) 1717d15b25SDag-Erling SmørgravAC_SUBST(UNBOUND_VERSION_MINOR, [VERSION_MINOR]) 1817d15b25SDag-Erling SmørgravAC_SUBST(UNBOUND_VERSION_MICRO, [VERSION_MICRO]) 19b7579f77SDag-Erling Smørgrav 20e86b9096SDag-Erling SmørgravLIBUNBOUND_CURRENT=9 21*8f76bb7dSCy SchubertLIBUNBOUND_REVISION=22 22e86b9096SDag-Erling SmørgravLIBUNBOUND_AGE=1 23b7579f77SDag-Erling Smørgrav# 1.0.0 had 0:12:0 24b7579f77SDag-Erling Smørgrav# 1.0.1 had 0:13:0 25b7579f77SDag-Erling Smørgrav# 1.0.2 had 0:14:0 26b7579f77SDag-Erling Smørgrav# 1.1.0 had 0:15:0 27b7579f77SDag-Erling Smørgrav# 1.1.1 had 0:16:0 28b7579f77SDag-Erling Smørgrav# 1.2.0 had 0:17:0 29b7579f77SDag-Erling Smørgrav# 1.2.1 had 0:18:0 30b7579f77SDag-Erling Smørgrav# 1.3.0 had 1:0:0 # ub_cancel and -export-symbols. 31b7579f77SDag-Erling Smørgrav# 1.3.1 had 1:1:0 32b7579f77SDag-Erling Smørgrav# 1.3.2 had 1:2:0 33b7579f77SDag-Erling Smørgrav# 1.3.3 had 1:3:0 34b7579f77SDag-Erling Smørgrav# 1.3.4 had 1:4:0 35b7579f77SDag-Erling Smørgrav# 1.4.0-snapshots had 1:5:0 36b7579f77SDag-Erling Smørgrav# 1.4.0 had 1:5:0 (not 2:0:0) # ub_result.why_bogus 37b7579f77SDag-Erling Smørgrav# 1.4.1 had 2:1:0 38b7579f77SDag-Erling Smørgrav# 1.4.2 had 2:2:0 39b7579f77SDag-Erling Smørgrav# 1.4.3 had 2:3:0 40b7579f77SDag-Erling Smørgrav# 1.4.4 had 2:4:0 41b7579f77SDag-Erling Smørgrav# 1.4.5 had 2:5:0 42b7579f77SDag-Erling Smørgrav# 1.4.6 had 2:6:0 43b7579f77SDag-Erling Smørgrav# 1.4.7 had 2:7:0 44b7579f77SDag-Erling Smørgrav# 1.4.8 had 2:8:0 45b7579f77SDag-Erling Smørgrav# 1.4.9 had 2:9:0 46b7579f77SDag-Erling Smørgrav# 1.4.10 had 2:10:0 47b7579f77SDag-Erling Smørgrav# 1.4.11 had 2:11:0 48b7579f77SDag-Erling Smørgrav# 1.4.12 had 2:12:0 49b7579f77SDag-Erling Smørgrav# 1.4.13 had 2:13:0 50b7579f77SDag-Erling Smørgrav# and 1.4.13p1 and 1.4.13.p2 51b7579f77SDag-Erling Smørgrav# 1.4.14 had 2:14:0 52b7579f77SDag-Erling Smørgrav# 1.4.15 had 3:0:1 # adds ub_version() 53b7579f77SDag-Erling Smørgrav# 1.4.16 had 3:1:1 54b7579f77SDag-Erling Smørgrav# 1.4.17 had 3:2:1 558ed2b524SDag-Erling Smørgrav# 1.4.18 had 3:3:1 568ed2b524SDag-Erling Smørgrav# 1.4.19 had 3:4:1 5717d15b25SDag-Erling Smørgrav# 1.4.20 had 4:0:2 # adds libunbound.ttl # but shipped 3:5:1 5817d15b25SDag-Erling Smørgrav# 1.4.21 had 4:1:2 59ff825849SDag-Erling Smørgrav# 1.4.22 had 4:1:2 60ff825849SDag-Erling Smørgrav# 1.5.0 had 5:3:3 # adds ub_ctx_add_ta_autr 616480faa8SDag-Erling Smørgrav# 1.5.1 had 5:3:3 626480faa8SDag-Erling Smørgrav# 1.5.2 had 5:5:3 636480faa8SDag-Erling Smørgrav# 1.5.3 had 5:6:3 6409a3aaf3SDag-Erling Smørgrav# 1.5.4 had 5:7:3 65b75612f8SDag-Erling Smørgrav# 1.5.5 had 5:8:3 6605ab2901SDag-Erling Smørgrav# 1.5.6 had 5:9:3 6705ab2901SDag-Erling Smørgrav# 1.5.7 had 5:10:3 68f61ef7f6SDag-Erling Smørgrav# 1.5.8 had 6:0:4 # adds ub_ctx_set_stub 69e2d15004SDag-Erling Smørgrav# 1.5.9 had 6:1:4 70b5663de9SDag-Erling Smørgrav# 1.5.10 had 6:2:4 71bc892140SDag-Erling Smørgrav# 1.6.0 had 6:3:4 723005e0a3SDag-Erling Smørgrav# 1.6.1 had 7:0:5 # ub_callback_t typedef renamed to ub_callback_type 7365b390aaSDag-Erling Smørgrav# 1.6.2 had 7:1:5 7492bb4ebdSDag-Erling Smørgrav# 1.6.3 had 7:2:5 75c7f4d7adSDag-Erling Smørgrav# 1.6.4 had 7:3:5 768157cbabSDag-Erling Smørgrav# 1.6.5 had 7:4:5 77971980c3SDag-Erling Smørgrav# 1.6.6 had 7:5:5 788a384985SDag-Erling Smørgrav# 1.6.7 had 7:6:5 79838e13ceSDag-Erling Smørgrav# 1.6.8 had 7:7:5 8057bddd21SDag-Erling Smørgrav# 1.7.0 had 7:8:5 810fb34990SDag-Erling Smørgrav# 1.7.1 had 7:9:5 823bd4df0aSDag-Erling Smørgrav# 1.7.2 had 7:10:5 837da0adf7SDag-Erling Smørgrav# 1.7.3 had 7:11:5 84a755b6f6SDag-Erling Smørgrav# 1.8.0 had 8:0:0 # changes the event callback function signature 85a755b6f6SDag-Erling Smørgrav# 1.8.1 had 8:1:0 86e86b9096SDag-Erling Smørgrav# 1.8.2 had 8:2:0 87e86b9096SDag-Erling Smørgrav# 1.8.3 had 8:3:0 88e86b9096SDag-Erling Smørgrav# 1.9.0 had 9:0:1 # add ub_ctx_set_tls 89e86b9096SDag-Erling Smørgrav# 1.9.1 had 9:1:1 90e86b9096SDag-Erling Smørgrav# 1.9.2 had 9:2:1 910eefd307SCy Schubert# 1.9.3 had 9:3:1 920eefd307SCy Schubert# 1.9.4 had 9:4:1 930eefd307SCy Schubert# 1.9.5 had 9:5:1 940eefd307SCy Schubert# 1.9.6 had 9:6:1 95091e9e46SCy Schubert# 1.10.0 had 9:7:1 96091e9e46SCy Schubert# 1.10.1 had 9:8:1 9725039b37SCy Schubert# 1.11.0 had 9:9:1 98c0caa2e2SCy Schubert# 1.12.0 had 9:10:1 99369c6923SCy Schubert# 1.13.0 had 9:11:1 100f44e67d1SCy Schubert# 1.13.1 had 9:12:1 1015469a995SCy Schubert# 1.13.2 had 9:13:1 10224e36522SCy Schubert# 1.14.0 had 9:14:1 1039cf5bc93SCy Schubert# 1.15.0 had 9:15:1 104a39a5a69SCy Schubert# 1.16.0 had 9:16:1 1050a92a9fcSCy Schubert# 1.16.1 had 9:17:1 106790c6b24SCy Schubert# 1.16.2 had 9:18:1 1074f5c8956SCy Schubert# 1.16.3 had 9:19:1 108865f46b2SCy Schubert# 1.17.0 had 9:20:1 1091838dec3SCy Schubert# 1.17.1 had 9:21:1 110*8f76bb7dSCy Schubert# 1.18.0 had 9:22:1 111b7579f77SDag-Erling Smørgrav 112b7579f77SDag-Erling Smørgrav# Current -- the number of the binary API that we're implementing 113b7579f77SDag-Erling Smørgrav# Revision -- which iteration of the implementation of the binary 114b7579f77SDag-Erling Smørgrav# API are we supplying? 115b7579f77SDag-Erling Smørgrav# Age -- How many previous binary API versions do we also 116b7579f77SDag-Erling Smørgrav# support? 117b7579f77SDag-Erling Smørgrav# 118b7579f77SDag-Erling Smørgrav# If we release a new version that does not change the binary API, 119b7579f77SDag-Erling Smørgrav# increment Revision. 120b7579f77SDag-Erling Smørgrav# 121b7579f77SDag-Erling Smørgrav# If we release a new version that changes the binary API, but does 122b7579f77SDag-Erling Smørgrav# not break programs compiled against the old binary API, increment 123b7579f77SDag-Erling Smørgrav# Current and Age. Set Revision to 0, since this is the first 124b7579f77SDag-Erling Smørgrav# implementation of the new API. 125b7579f77SDag-Erling Smørgrav# 1268a384985SDag-Erling Smørgrav# Otherwise, we're changing the binary API and breaking backward 127b7579f77SDag-Erling Smørgrav# compatibility with old binaries. Increment Current. Set Age to 0, 128b7579f77SDag-Erling Smørgrav# since we're backward compatible with no previous APIs. Set Revision 129b7579f77SDag-Erling Smørgrav# to 0 too. 130b7579f77SDag-Erling SmørgravAC_SUBST(LIBUNBOUND_CURRENT) 131b7579f77SDag-Erling SmørgravAC_SUBST(LIBUNBOUND_REVISION) 132b7579f77SDag-Erling SmørgravAC_SUBST(LIBUNBOUND_AGE) 133b7579f77SDag-Erling Smørgrav 1340eefd307SCy Schubert 1350eefd307SCy Schubertcmdln="`echo $@ | sed -e 's/\\\\/\\\\\\\\/g' | sed -e 's/"/\\\\"/'g`" 1360eefd307SCy SchubertAC_DEFINE_UNQUOTED(CONFCMDLINE, ["$cmdln"], [Command line arguments used with configure]) 1370eefd307SCy Schubert 138b7579f77SDag-Erling SmørgravCFLAGS="$CFLAGS" 139f44e67d1SCy SchubertAC_USE_SYSTEM_EXTENSIONS 14017d15b25SDag-Erling Smørgravif test "$ac_cv_header_minix_config_h" = "yes"; then 14117d15b25SDag-Erling Smørgrav AC_DEFINE(_NETBSD_SOURCE,1, [Enable for compile on Minix]) 14217d15b25SDag-Erling Smørgravfi 143b7579f77SDag-Erling Smørgrav 144b7579f77SDag-Erling Smørgravdnl 145b7579f77SDag-Erling Smørgravdnl By default set prefix to /usr/local 146b7579f77SDag-Erling Smørgravdnl 147b7579f77SDag-Erling Smørgravcase "$prefix" in 148b7579f77SDag-Erling Smørgrav NONE) 149b7579f77SDag-Erling Smørgrav prefix="/usr/local" 150b7579f77SDag-Erling Smørgrav ;; 151b7579f77SDag-Erling Smørgravesac 152c7f4d7adSDag-Erling Smørgravcase "$exec_prefix" in 153c7f4d7adSDag-Erling Smørgrav NONE) 154c7f4d7adSDag-Erling Smørgrav exec_prefix="$prefix" 155c7f4d7adSDag-Erling Smørgrav ;; 156c7f4d7adSDag-Erling Smørgravesac 157b7579f77SDag-Erling Smørgrav 158b7579f77SDag-Erling Smørgrav# are we on MinGW? 1595469a995SCy Schubertif uname -s 2>&1 | grep MINGW >/dev/null; then on_mingw="yes" 160b7579f77SDag-Erling Smørgravelse 1615469a995SCy Schubert if echo $host | grep mingw >/dev/null; then on_mingw="yes" 162b7579f77SDag-Erling Smørgrav else on_mingw="no"; fi 163b7579f77SDag-Erling Smørgravfi 164b7579f77SDag-Erling Smørgrav 165b7579f77SDag-Erling Smørgrav# 166b7579f77SDag-Erling Smørgrav# Determine configuration file 167b7579f77SDag-Erling Smørgrav# the eval is to evaluate shell expansion twice 168c7f4d7adSDag-Erling SmørgravUNBOUND_SBIN_DIR=`eval echo "${sbindir}"` 169c7f4d7adSDag-Erling SmørgravAC_SUBST(UNBOUND_SBIN_DIR) 170c7f4d7adSDag-Erling SmørgravUNBOUND_SYSCONF_DIR=`eval echo "${sysconfdir}"` 171c7f4d7adSDag-Erling SmørgravAC_SUBST(UNBOUND_SYSCONF_DIR) 172c7f4d7adSDag-Erling SmørgravUNBOUND_LOCALSTATE_DIR=`eval echo "${localstatedir}"` 173c7f4d7adSDag-Erling SmørgravAC_SUBST(UNBOUND_LOCALSTATE_DIR) 174b7579f77SDag-Erling Smørgravif test $on_mingw = "no"; then 175b7579f77SDag-Erling Smørgrav ub_conf_file=`eval echo "${sysconfdir}/unbound/unbound.conf"` 176b7579f77SDag-Erling Smørgravelse 17765b390aaSDag-Erling Smørgrav ub_conf_file="C:\\Program Files\\Unbound\\service.conf" 178b7579f77SDag-Erling Smørgravfi 179b7579f77SDag-Erling SmørgravAC_ARG_WITH([conf_file], 180f44e67d1SCy Schubert AS_HELP_STRING([--with-conf-file=path],[Pathname to the Unbound configuration file]), 181b7579f77SDag-Erling Smørgrav [ub_conf_file="$withval"]) 182b7579f77SDag-Erling SmørgravAC_SUBST(ub_conf_file) 183b7579f77SDag-Erling SmørgravACX_ESCAPE_BACKSLASH($ub_conf_file, hdr_config) 184b7579f77SDag-Erling SmørgravAC_DEFINE_UNQUOTED(CONFIGFILE, ["$hdr_config"], [Pathname to the Unbound configuration file]) 1856480faa8SDag-Erling Smørgravub_conf_dir=`AS_DIRNAME(["$ub_conf_file"])` 1866480faa8SDag-Erling SmørgravAC_SUBST(ub_conf_dir) 187b7579f77SDag-Erling Smørgrav 188b7579f77SDag-Erling Smørgrav# Determine run, chroot directory and pidfile locations 189b7579f77SDag-Erling SmørgravAC_ARG_WITH(run-dir, 190f44e67d1SCy Schubert AS_HELP_STRING([--with-run-dir=path],[set default directory to chdir to (by default dir part of cfg file)]), 191b7579f77SDag-Erling Smørgrav UNBOUND_RUN_DIR="$withval", 192b7579f77SDag-Erling Smørgravif test $on_mingw = no; then 193b7579f77SDag-Erling Smørgrav UNBOUND_RUN_DIR=`dirname "$ub_conf_file"` 194b7579f77SDag-Erling Smørgravelse 195b7579f77SDag-Erling Smørgrav UNBOUND_RUN_DIR="" 196b7579f77SDag-Erling Smørgravfi 197b7579f77SDag-Erling Smørgrav) 198b7579f77SDag-Erling SmørgravAC_SUBST(UNBOUND_RUN_DIR) 199b7579f77SDag-Erling SmørgravACX_ESCAPE_BACKSLASH($UNBOUND_RUN_DIR, hdr_run) 200b7579f77SDag-Erling SmørgravAC_DEFINE_UNQUOTED(RUN_DIR, ["$hdr_run"], [Directory to chdir to]) 201b7579f77SDag-Erling Smørgrav 202b7579f77SDag-Erling SmørgravAC_ARG_WITH(chroot-dir, 203f44e67d1SCy Schubert AS_HELP_STRING([--with-chroot-dir=path],[set default directory to chroot to (by default same as run-dir)]), 204b7579f77SDag-Erling Smørgrav UNBOUND_CHROOT_DIR="$withval", 205b7579f77SDag-Erling Smørgravif test $on_mingw = no; then 206b7579f77SDag-Erling Smørgrav UNBOUND_CHROOT_DIR="$UNBOUND_RUN_DIR" 207b7579f77SDag-Erling Smørgravelse 208b7579f77SDag-Erling Smørgrav UNBOUND_CHROOT_DIR="" 209b7579f77SDag-Erling Smørgravfi 210b7579f77SDag-Erling Smørgrav) 211b7579f77SDag-Erling SmørgravAC_SUBST(UNBOUND_CHROOT_DIR) 212b7579f77SDag-Erling SmørgravACX_ESCAPE_BACKSLASH($UNBOUND_CHROOT_DIR, hdr_chroot) 213b7579f77SDag-Erling SmørgravAC_DEFINE_UNQUOTED(CHROOT_DIR, ["$hdr_chroot"], [Directory to chroot to]) 214b7579f77SDag-Erling Smørgrav 215b7579f77SDag-Erling SmørgravAC_ARG_WITH(share-dir, 216f44e67d1SCy Schubert AS_HELP_STRING([--with-share-dir=path],[set default directory with shared data (by default same as share/unbound)]), 217b7579f77SDag-Erling Smørgrav UNBOUND_SHARE_DIR="$withval", 218b7579f77SDag-Erling Smørgrav UNBOUND_SHARE_DIR="$UNBOUND_RUN_DIR") 219b7579f77SDag-Erling SmørgravAC_SUBST(UNBOUND_SHARE_DIR) 220b7579f77SDag-Erling SmørgravAC_DEFINE_UNQUOTED(SHARE_DIR, ["$UNBOUND_SHARE_DIR"], [Shared data]) 221b7579f77SDag-Erling Smørgrav 222b7579f77SDag-Erling SmørgravAC_ARG_WITH(pidfile, 223f44e67d1SCy Schubert AS_HELP_STRING([--with-pidfile=filename],[set default pathname to unbound pidfile (default run-dir/unbound.pid)]), 224b7579f77SDag-Erling Smørgrav UNBOUND_PIDFILE="$withval", 225b7579f77SDag-Erling Smørgravif test $on_mingw = no; then 226b7579f77SDag-Erling Smørgrav UNBOUND_PIDFILE="$UNBOUND_RUN_DIR/unbound.pid" 227b7579f77SDag-Erling Smørgravelse 228b7579f77SDag-Erling Smørgrav UNBOUND_PIDFILE="" 229b7579f77SDag-Erling Smørgravfi 230b7579f77SDag-Erling Smørgrav) 231b7579f77SDag-Erling SmørgravAC_SUBST(UNBOUND_PIDFILE) 232b7579f77SDag-Erling SmørgravACX_ESCAPE_BACKSLASH($UNBOUND_PIDFILE, hdr_pid) 233b7579f77SDag-Erling SmørgravAC_DEFINE_UNQUOTED(PIDFILE, ["$hdr_pid"], [default pidfile location]) 234b7579f77SDag-Erling Smørgrav 235b7579f77SDag-Erling SmørgravAC_ARG_WITH(rootkey-file, 236f44e67d1SCy Schubert AS_HELP_STRING([--with-rootkey-file=filename],[set default pathname to root key file (default run-dir/root.key). This file is read and written.]), 237b7579f77SDag-Erling Smørgrav UNBOUND_ROOTKEY_FILE="$withval", 238b7579f77SDag-Erling Smørgravif test $on_mingw = no; then 239b7579f77SDag-Erling Smørgrav UNBOUND_ROOTKEY_FILE="$UNBOUND_RUN_DIR/root.key" 240b7579f77SDag-Erling Smørgravelse 24165b390aaSDag-Erling Smørgrav UNBOUND_ROOTKEY_FILE="C:\\Program Files\\Unbound\\root.key" 242b7579f77SDag-Erling Smørgravfi 243b7579f77SDag-Erling Smørgrav) 244b7579f77SDag-Erling SmørgravAC_SUBST(UNBOUND_ROOTKEY_FILE) 245b7579f77SDag-Erling SmørgravACX_ESCAPE_BACKSLASH($UNBOUND_ROOTKEY_FILE, hdr_rkey) 246b7579f77SDag-Erling SmørgravAC_DEFINE_UNQUOTED(ROOT_ANCHOR_FILE, ["$hdr_rkey"], [default rootkey location]) 247b7579f77SDag-Erling Smørgrav 248b7579f77SDag-Erling SmørgravAC_ARG_WITH(rootcert-file, 249f44e67d1SCy Schubert AS_HELP_STRING([--with-rootcert-file=filename],[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.]), 250b7579f77SDag-Erling Smørgrav UNBOUND_ROOTCERT_FILE="$withval", 251b7579f77SDag-Erling Smørgravif test $on_mingw = no; then 252b7579f77SDag-Erling Smørgrav UNBOUND_ROOTCERT_FILE="$UNBOUND_RUN_DIR/icannbundle.pem" 253b7579f77SDag-Erling Smørgravelse 25465b390aaSDag-Erling Smørgrav UNBOUND_ROOTCERT_FILE="C:\\Program Files\\Unbound\\icannbundle.pem" 255b7579f77SDag-Erling Smørgravfi 256b7579f77SDag-Erling Smørgrav) 257b7579f77SDag-Erling SmørgravAC_SUBST(UNBOUND_ROOTCERT_FILE) 258b7579f77SDag-Erling SmørgravACX_ESCAPE_BACKSLASH($UNBOUND_ROOTCERT_FILE, hdr_rpem) 259b7579f77SDag-Erling SmørgravAC_DEFINE_UNQUOTED(ROOT_CERT_FILE, ["$hdr_rpem"], [default rootcert location]) 260b7579f77SDag-Erling Smørgrav 261b7579f77SDag-Erling SmørgravAC_ARG_WITH(username, 262f44e67d1SCy Schubert AS_HELP_STRING([--with-username=user],[set default user that unbound changes to (default user is unbound)]), 263b7579f77SDag-Erling Smørgrav UNBOUND_USERNAME="$withval", 264b7579f77SDag-Erling Smørgrav UNBOUND_USERNAME="unbound") 265b7579f77SDag-Erling SmørgravAC_SUBST(UNBOUND_USERNAME) 266b7579f77SDag-Erling SmørgravAC_DEFINE_UNQUOTED(UB_USERNAME, ["$UNBOUND_USERNAME"], [default username]) 267b7579f77SDag-Erling Smørgrav 268b7579f77SDag-Erling SmørgravAC_DEFINE(WINVER, 0x0502, [the version of the windows API enabled]) 269b7579f77SDag-Erling SmørgravACX_RSRC_VERSION(wnvs) 270b7579f77SDag-Erling SmørgravAC_DEFINE_UNQUOTED(RSRC_PACKAGE_VERSION, [$wnvs], [version number for resource files]) 271b7579f77SDag-Erling Smørgrav 272b7579f77SDag-Erling Smørgrav# Checks for typedefs, structures, and compiler characteristics. 273b7579f77SDag-Erling SmørgravAC_C_CONST 274f44e67d1SCy SchubertAC_LANG([C]) 2758ed2b524SDag-Erling Smørgrav# allow user to override the -g -O2 flags. 27657bddd21SDag-Erling Smørgravdefault_cflags=no 2778ed2b524SDag-Erling Smørgravif test "x$CFLAGS" = "x" ; then 278b7579f77SDag-Erling SmørgravACX_CHECK_COMPILER_FLAG(g, [CFLAGS="$CFLAGS -g"]) 279b7579f77SDag-Erling SmørgravACX_CHECK_COMPILER_FLAG(O2, [CFLAGS="$CFLAGS -O2"]) 28057bddd21SDag-Erling Smørgravdefault_cflags=yes 2818ed2b524SDag-Erling Smørgravfi 282b7579f77SDag-Erling SmørgravAC_PROG_CC 283b7579f77SDag-Erling SmørgravACX_DEPFLAG 284b7579f77SDag-Erling SmørgravACX_DETERMINE_EXT_FLAGS_UNBOUND 285b7579f77SDag-Erling Smørgrav 286b7579f77SDag-Erling Smørgrav# debug mode flags warnings 287f44e67d1SCy SchubertAC_ARG_ENABLE(checking, AS_HELP_STRING([--enable-checking],[Enable warnings, asserts, makefile-dependencies])) 288f44e67d1SCy SchubertAC_ARG_ENABLE(debug, AS_HELP_STRING([--enable-debug],[same as enable-checking])) 289b7579f77SDag-Erling Smørgravif test "$enable_debug" = "yes"; then debug_enabled="$enable_debug"; 290b7579f77SDag-Erling Smørgravelse debug_enabled="$enable_checking"; fi 291b7579f77SDag-Erling SmørgravAC_SUBST(debug_enabled) 292b7579f77SDag-Erling Smørgravcase "$debug_enabled" in 293b7579f77SDag-Erling Smørgrav yes) 294b7579f77SDag-Erling Smørgrav ACX_CHECK_COMPILER_FLAG(W, [CFLAGS="$CFLAGS -W"]) 295b7579f77SDag-Erling Smørgrav ACX_CHECK_COMPILER_FLAG(Wall, [CFLAGS="$CFLAGS -Wall"]) 296b7579f77SDag-Erling Smørgrav ACX_CHECK_COMPILER_FLAG(Wextra, [CFLAGS="$CFLAGS -Wextra"]) 297b7579f77SDag-Erling Smørgrav ACX_CHECK_COMPILER_FLAG(Wdeclaration-after-statement, [CFLAGS="$CFLAGS -Wdeclaration-after-statement"]) 298b7579f77SDag-Erling Smørgrav AC_DEFINE([UNBOUND_DEBUG], [], [define this to enable debug checks.]) 299b7579f77SDag-Erling Smørgrav ;; 300b7579f77SDag-Erling Smørgrav no|*) 301b7579f77SDag-Erling Smørgrav # nothing to do. 302b7579f77SDag-Erling Smørgrav ;; 303b7579f77SDag-Erling Smørgravesac 30457bddd21SDag-Erling Smørgravif test "$default_cflags" = "yes"; then 30557bddd21SDag-Erling Smørgrav # only when CFLAGS was "" at the start, if the users wants to 30657bddd21SDag-Erling Smørgrav # override we shouldn't add default cflags, because they wouldn't 30757bddd21SDag-Erling Smørgrav # be able to turn off these options and set the CFLAGS wanted. 308b7579f77SDag-Erling Smørgrav ACX_CHECK_FLTO 309b75612f8SDag-Erling Smørgrav ACX_CHECK_PIE 310b75612f8SDag-Erling Smørgrav ACX_CHECK_RELRO_NOW 31157bddd21SDag-Erling Smørgravfi 312b7579f77SDag-Erling Smørgrav 313b7579f77SDag-Erling SmørgravAC_C_INLINE 314b7579f77SDag-Erling SmørgravACX_CHECK_FORMAT_ATTRIBUTE 315b7579f77SDag-Erling SmørgravACX_CHECK_UNUSED_ATTRIBUTE 316b7579f77SDag-Erling Smørgrav 317e2d15004SDag-Erling SmørgravAC_DEFUN([CHECK_WEAK_ATTRIBUTE], 318e2d15004SDag-Erling Smørgrav[AC_REQUIRE([AC_PROG_CC]) 319e2d15004SDag-Erling SmørgravAC_MSG_CHECKING(whether the C compiler (${CC-cc}) accepts the "weak" attribute) 320e2d15004SDag-Erling SmørgravAC_CACHE_VAL(ac_cv_c_weak_attribute, 321e2d15004SDag-Erling Smørgrav[ac_cv_c_weak_attribute=no 322f44e67d1SCy SchubertAC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ #include <stdio.h> 323e2d15004SDag-Erling Smørgrav__attribute__((weak)) void f(int x) { printf("%d", x); } 324f44e67d1SCy Schubert]], [[ 325e2d15004SDag-Erling Smørgrav f(1); 326f44e67d1SCy Schubert]])],[ac_cv_c_weak_attribute="yes"],[ac_cv_c_weak_attribute="no"]) 327e2d15004SDag-Erling Smørgrav]) 328e2d15004SDag-Erling Smørgrav 329e2d15004SDag-Erling SmørgravAC_MSG_RESULT($ac_cv_c_weak_attribute) 330e2d15004SDag-Erling Smørgravif test $ac_cv_c_weak_attribute = yes; then 331e2d15004SDag-Erling Smørgrav AC_DEFINE(HAVE_ATTR_WEAK, 1, [Whether the C compiler accepts the "weak" attribute]) 332a755b6f6SDag-Erling Smørgrav AC_DEFINE(ATTR_WEAK, [__attribute__((weak))], [apply the weak attribute to a symbol]) 333e2d15004SDag-Erling Smørgravfi 334e2d15004SDag-Erling Smørgrav])dnl End of CHECK_WEAK_ATTRIBUTE 335e2d15004SDag-Erling Smørgrav 336e2d15004SDag-Erling SmørgravCHECK_WEAK_ATTRIBUTE 337e2d15004SDag-Erling Smørgrav 338a755b6f6SDag-Erling SmørgravAC_DEFUN([CHECK_NORETURN_ATTRIBUTE], 339a755b6f6SDag-Erling Smørgrav[AC_REQUIRE([AC_PROG_CC]) 340a755b6f6SDag-Erling SmørgravAC_MSG_CHECKING(whether the C compiler (${CC-cc}) accepts the "noreturn" attribute) 341a755b6f6SDag-Erling SmørgravAC_CACHE_VAL(ac_cv_c_noreturn_attribute, 342a755b6f6SDag-Erling Smørgrav[ac_cv_c_noreturn_attribute=no 343f44e67d1SCy SchubertAC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ #include <stdio.h> 344a755b6f6SDag-Erling Smørgrav__attribute__((noreturn)) void f(int x) { printf("%d", x); } 345f44e67d1SCy Schubert]], [[ 346a755b6f6SDag-Erling Smørgrav f(1); 347f44e67d1SCy Schubert]])],[ac_cv_c_noreturn_attribute="yes"],[ac_cv_c_noreturn_attribute="no"]) 348a755b6f6SDag-Erling Smørgrav]) 349a755b6f6SDag-Erling Smørgrav 350a755b6f6SDag-Erling SmørgravAC_MSG_RESULT($ac_cv_c_noreturn_attribute) 351a755b6f6SDag-Erling Smørgravif test $ac_cv_c_noreturn_attribute = yes; then 352a755b6f6SDag-Erling Smørgrav AC_DEFINE(HAVE_ATTR_NORETURN, 1, [Whether the C compiler accepts the "noreturn" attribute]) 353a755b6f6SDag-Erling Smørgrav AC_DEFINE(ATTR_NORETURN, [__attribute__((__noreturn__))], [apply the noreturn attribute to a function that exits the program]) 354a755b6f6SDag-Erling Smørgravfi 355a755b6f6SDag-Erling Smørgrav])dnl End of CHECK_NORETURN_ATTRIBUTE 356a755b6f6SDag-Erling Smørgrav 357a755b6f6SDag-Erling SmørgravCHECK_NORETURN_ATTRIBUTE 358a755b6f6SDag-Erling Smørgrav 359b7579f77SDag-Erling Smørgravif test "$srcdir" != "."; then 360b7579f77SDag-Erling Smørgrav CPPFLAGS="$CPPFLAGS -I$srcdir" 361b7579f77SDag-Erling Smørgravfi 362b7579f77SDag-Erling Smørgrav 363b7579f77SDag-Erling SmørgravAC_DEFUN([ACX_YYLEX_DESTROY], [ 364b7579f77SDag-Erling Smørgrav AC_MSG_CHECKING([for yylex_destroy]) 365b7579f77SDag-Erling Smørgrav if echo %% | $LEX -t 2>&1 | grep yylex_destroy >/dev/null 2>&1; then 366b7579f77SDag-Erling Smørgrav AC_DEFINE(LEX_HAS_YYLEX_DESTROY, 1, [if lex has yylex_destroy]) 367b7579f77SDag-Erling Smørgrav AC_MSG_RESULT(yes) 3684c75e3aaSDag-Erling Smørgrav else AC_MSG_RESULT(no); 3694c75e3aaSDag-Erling Smørgrav LEX=":" 3704c75e3aaSDag-Erling Smørgrav fi 3714c75e3aaSDag-Erling Smørgrav]) 3724c75e3aaSDag-Erling Smørgrav 3734c75e3aaSDag-Erling SmørgravAC_DEFUN([ACX_YYLEX_OPTION], [ 3744c75e3aaSDag-Erling Smørgrav AC_MSG_CHECKING([for lex %option]) 3754c75e3aaSDag-Erling Smørgrav if cat <<EOF | $LEX -t 2>&1 | grep yy_delete_buffer >/dev/null 2>&1; then 3764c75e3aaSDag-Erling Smørgrav%option nounput 3774c75e3aaSDag-Erling Smørgrav%% 3784c75e3aaSDag-Erling SmørgravEOF 3794c75e3aaSDag-Erling Smørgrav AC_MSG_RESULT(yes) 3804c75e3aaSDag-Erling Smørgrav else AC_MSG_RESULT(no); 3814c75e3aaSDag-Erling Smørgrav LEX=":" 3824c75e3aaSDag-Erling Smørgrav fi 383b7579f77SDag-Erling Smørgrav]) 384b7579f77SDag-Erling Smørgrav 385f44e67d1SCy SchubertAC_PROG_LEX([noyywrap]) 3864c75e3aaSDag-Erling Smørgravif test "$LEX" != "" -a "$LEX" != ":"; then 387b7579f77SDag-Erling SmørgravACX_YYLEX_DESTROY 3884c75e3aaSDag-Erling Smørgravfi 3894c75e3aaSDag-Erling Smørgravif test "$LEX" != "" -a "$LEX" != ":"; then 3904c75e3aaSDag-Erling SmørgravACX_YYLEX_OPTION 3914c75e3aaSDag-Erling Smørgravfi 392*8f76bb7dSCy Schubertif test "$LEX" = "" -o "$LEX" = ":"; then 393*8f76bb7dSCy Schubert if test ! -f util/configlexer.c; then 394*8f76bb7dSCy Schubert AC_MSG_ERROR([no lex and no util/configlexer.c: need flex and bison to compile from source repository.]) 395*8f76bb7dSCy Schubert fi 396*8f76bb7dSCy Schubertfi 397b7579f77SDag-Erling SmørgravAC_PROG_YACC 398*8f76bb7dSCy Schubertif test "$YACC" = "" -o "$YACC" = ":"; then 399*8f76bb7dSCy Schubert if test ! -f util/configparser.c; then 400*8f76bb7dSCy Schubert AC_MSG_ERROR([no yacc and no util/configparser.c: need flex and bison to compile from source repository.]) 401*8f76bb7dSCy Schubert fi 402*8f76bb7dSCy Schubertfi 403b7579f77SDag-Erling SmørgravAC_CHECK_PROG(doxygen, doxygen, doxygen) 404b7579f77SDag-Erling SmørgravAC_CHECK_TOOL(STRIP, strip) 405b7579f77SDag-Erling SmørgravACX_LIBTOOL_C_ONLY 406b7579f77SDag-Erling Smørgrav 4075469a995SCy Schubert# pkg-config is only needed for these options, do not require it otherwise 4085469a995SCy Schubertif test "$enable_systemd" = "yes" -o "$with_pyunbound" = "yes" -o "$with_pythonmod" = "yes"; then 409e86b9096SDag-Erling SmørgravPKG_PROG_PKG_CONFIG 4105469a995SCy Schubertfi 411e86b9096SDag-Erling Smørgrav 412b7579f77SDag-Erling Smørgrav# Checks for header files. 413865f46b2SCy SchubertAC_CHECK_HEADERS([stdarg.h stdbool.h netinet/in.h netinet/tcp.h sys/param.h sys/select.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 sys/endian.h libkern/OSByteOrder.h sys/ipc.h sys/shm.h ifaddrs.h poll.h],,, [AC_INCLUDES_DEFAULT]) 414369c6923SCy Schubert# net/if.h portability for Darwin see: 415369c6923SCy Schubert# https://www.gnu.org/software/autoconf/manual/autoconf-2.69/html_node/Header-Portability.html 416369c6923SCy SchubertAC_CHECK_HEADERS([net/if.h],,, [ 417369c6923SCy Schubert#include <stdio.h> 418369c6923SCy Schubert#ifdef STDC_HEADERS 419369c6923SCy Schubert# include <stdlib.h> 420369c6923SCy Schubert# include <stddef.h> 421369c6923SCy Schubert#else 422369c6923SCy Schubert# ifdef HAVE_STDLIB_H 423369c6923SCy Schubert# include <stdlib.h> 424369c6923SCy Schubert# endif 425369c6923SCy Schubert#endif 426369c6923SCy Schubert#ifdef HAVE_SYS_SOCKET_H 427369c6923SCy Schubert# include <sys/socket.h> 428369c6923SCy Schubert#endif 429369c6923SCy Schubert]) 430b7579f77SDag-Erling Smørgrav 43125039b37SCy Schubert# Check for Apple header. This uncovers TARGET_OS_IPHONE, TARGET_OS_TV or TARGET_OS_WATCH 4325469a995SCy SchubertAC_CHECK_HEADERS([TargetConditionals.h],,, [AC_INCLUDES_DEFAULT]) 4339cf5bc93SCy SchubertAC_CHECK_HEADERS([netioapi.h],,, [AC_INCLUDES_DEFAULT 4349cf5bc93SCy Schubert#if HAVE_SYS_PARAM_H 4359cf5bc93SCy Schubert#include <sys/param.h> 4369cf5bc93SCy Schubert#endif 4379cf5bc93SCy Schubert 4389cf5bc93SCy Schubert#ifdef HAVE_SYS_SOCKET_H 4399cf5bc93SCy Schubert#include <sys/socket.h> 4409cf5bc93SCy Schubert#endif 4419cf5bc93SCy Schubert 4429cf5bc93SCy Schubert#ifdef HAVE_SYS_UIO_H 4439cf5bc93SCy Schubert#include <sys/uio.h> 4449cf5bc93SCy Schubert#endif 4459cf5bc93SCy Schubert 4469cf5bc93SCy Schubert#ifdef HAVE_NETINET_IN_H 4479cf5bc93SCy Schubert#include <netinet/in.h> 4489cf5bc93SCy Schubert#endif 4499cf5bc93SCy Schubert 4509cf5bc93SCy Schubert#ifdef HAVE_NETINET_TCP_H 4519cf5bc93SCy Schubert#include <netinet/tcp.h> 4529cf5bc93SCy Schubert#endif 4539cf5bc93SCy Schubert 4549cf5bc93SCy Schubert#ifdef HAVE_ARPA_INET_H 4559cf5bc93SCy Schubert#include <arpa/inet.h> 4569cf5bc93SCy Schubert#endif 4579cf5bc93SCy Schubert 4589cf5bc93SCy Schubert#ifdef HAVE_WINSOCK2_H 4599cf5bc93SCy Schubert#include <winsock2.h> 4609cf5bc93SCy Schubert#endif 4619cf5bc93SCy Schubert 4629cf5bc93SCy Schubert#ifdef HAVE_WS2TCPIP_H 4639cf5bc93SCy Schubert#include <ws2tcpip.h> 4649cf5bc93SCy Schubert#endif 4659cf5bc93SCy Schubert]) 46625039b37SCy Schubert 467*8f76bb7dSCy Schubert# Check for Linux timestamping headers 468*8f76bb7dSCy SchubertAC_CHECK_HEADERS([linux/net_tstamp.h],,, [AC_INCLUDES_DEFAULT]) 469*8f76bb7dSCy Schubert 470b7579f77SDag-Erling Smørgrav# check for types. 471b7579f77SDag-Erling Smørgrav# Using own tests for int64* because autoconf builtin only give 32bit. 472b7579f77SDag-Erling SmørgravAC_CHECK_TYPE(int8_t, signed char) 473b7579f77SDag-Erling SmørgravAC_CHECK_TYPE(int16_t, short) 474b7579f77SDag-Erling SmørgravAC_CHECK_TYPE(int32_t, int) 475b7579f77SDag-Erling SmørgravAC_CHECK_TYPE(int64_t, long long) 476b7579f77SDag-Erling SmørgravAC_CHECK_TYPE(uint8_t, unsigned char) 477b7579f77SDag-Erling SmørgravAC_CHECK_TYPE(uint16_t, unsigned short) 478b7579f77SDag-Erling SmørgravAC_CHECK_TYPE(uint32_t, unsigned int) 479b7579f77SDag-Erling SmørgravAC_CHECK_TYPE(uint64_t, unsigned long long) 480b7579f77SDag-Erling SmørgravAC_TYPE_SIZE_T 481b7579f77SDag-Erling SmørgravAC_CHECK_TYPE(ssize_t, int) 482b7579f77SDag-Erling SmørgravAC_TYPE_UID_T 483b7579f77SDag-Erling SmørgravAC_TYPE_PID_T 484b7579f77SDag-Erling SmørgravAC_TYPE_OFF_T 485b7579f77SDag-Erling SmørgravACX_TYPE_U_CHAR 486b7579f77SDag-Erling SmørgravACX_TYPE_RLIM_T 487b7579f77SDag-Erling SmørgravACX_TYPE_SOCKLEN_T 488b7579f77SDag-Erling SmørgravACX_TYPE_IN_ADDR_T 489b7579f77SDag-Erling SmørgravACX_TYPE_IN_PORT_T 490b7579f77SDag-Erling SmørgravACX_CHECK_MEMCMP_SIGNED 491b7579f77SDag-Erling Smørgrav 49217d15b25SDag-Erling SmørgravAC_CHECK_SIZEOF(time_t,,[ 49317d15b25SDag-Erling SmørgravAC_INCLUDES_DEFAULT 49417d15b25SDag-Erling Smørgrav#ifdef TIME_WITH_SYS_TIME 49517d15b25SDag-Erling Smørgrav# include <sys/time.h> 49617d15b25SDag-Erling Smørgrav# include <time.h> 49717d15b25SDag-Erling Smørgrav#else 49817d15b25SDag-Erling Smørgrav# ifdef HAVE_SYS_TIME_H 49917d15b25SDag-Erling Smørgrav# include <sys/time.h> 50017d15b25SDag-Erling Smørgrav# else 50117d15b25SDag-Erling Smørgrav# include <time.h> 50217d15b25SDag-Erling Smørgrav# endif 50317d15b25SDag-Erling Smørgrav#endif 50417d15b25SDag-Erling Smørgrav]) 5050eefd307SCy SchubertAC_CHECK_SIZEOF(size_t) 50617d15b25SDag-Erling Smørgrav 507b7579f77SDag-Erling Smørgrav# add option to disable the evil rpath 508b7579f77SDag-Erling SmørgravACX_ARG_RPATH 509b7579f77SDag-Erling SmørgravAC_SUBST(RUNTIME_PATH) 510b7579f77SDag-Erling Smørgrav 511b7579f77SDag-Erling Smørgrav# check to see if libraries are needed for these functions. 512b7579f77SDag-Erling SmørgravAC_SEARCH_LIBS([inet_pton], [nsl]) 513b7579f77SDag-Erling SmørgravAC_SEARCH_LIBS([socket], [socket]) 514b7579f77SDag-Erling Smørgrav 51524e36522SCy Schubert# check whether strptime also works 516b7579f77SDag-Erling SmørgravAC_DEFUN([AC_CHECK_STRPTIME_WORKS], 517b7579f77SDag-Erling Smørgrav[AC_REQUIRE([AC_PROG_CC]) 518b7579f77SDag-Erling SmørgravAC_MSG_CHECKING(whether strptime works) 519b7579f77SDag-Erling Smørgravif test c${cross_compiling} = cno; then 520b7579f77SDag-Erling SmørgravAC_RUN_IFELSE([AC_LANG_SOURCE([[ 521ff825849SDag-Erling Smørgrav#define _XOPEN_SOURCE 600 522b7579f77SDag-Erling Smørgrav#include <time.h> 523b7579f77SDag-Erling Smørgravint main(void) { struct tm tm; char *res; 524b7579f77SDag-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); 525b7579f77SDag-Erling Smørgravif (!res) return 2; 526b7579f77SDag-Erling Smørgravres = strptime("20070207111842", "%Y%m%d%H%M%S", &tm); 527b7579f77SDag-Erling Smørgravif (!res) return 1; return 0; } 528b7579f77SDag-Erling Smørgrav]])] , [eval "ac_cv_c_strptime_works=yes"], [eval "ac_cv_c_strptime_works=no"]) 529b7579f77SDag-Erling Smørgravelse 530b7579f77SDag-Erling Smørgraveval "ac_cv_c_strptime_works=maybe" 531b7579f77SDag-Erling Smørgravfi 532b7579f77SDag-Erling SmørgravAC_MSG_RESULT($ac_cv_c_strptime_works) 533b7579f77SDag-Erling Smørgravif test $ac_cv_c_strptime_works = no; then 534b7579f77SDag-Erling SmørgravAC_LIBOBJ(strptime) 535b7579f77SDag-Erling Smørgravelse 536b7579f77SDag-Erling SmørgravAC_DEFINE_UNQUOTED([STRPTIME_WORKS], 1, [use default strptime.]) 537b7579f77SDag-Erling Smørgravfi 538b7579f77SDag-Erling Smørgrav])dnl 539b7579f77SDag-Erling Smørgrav 540b7579f77SDag-Erling Smørgrav# check some functions of the OS before linking libs (while still runnable). 541b7579f77SDag-Erling SmørgravAC_FUNC_CHOWN 542b7579f77SDag-Erling SmørgravAC_FUNC_FORK 543f44e67d1SCy SchubertAC_DEFINE(RETSIGTYPE,void,[Return type of signal handlers, but autoconf 2.70 says 'your code may safely assume C89 semantics that RETSIGTYPE is void.']) 544b7579f77SDag-Erling SmørgravAC_FUNC_FSEEKO 545b7579f77SDag-Erling SmørgravACX_SYS_LARGEFILE 546b7579f77SDag-Erling SmørgravACX_CHECK_NONBLOCKING_BROKEN 547b7579f77SDag-Erling SmørgravACX_MKDIR_ONE_ARG 548b7579f77SDag-Erling SmørgravAC_CHECK_FUNCS([strptime],[AC_CHECK_STRPTIME_WORKS],[AC_LIBOBJ([strptime])]) 549b7579f77SDag-Erling Smørgrav 550209fcf8eSDag-Erling Smørgrav# check if we can use SO_REUSEPORT 5515469a995SCy Schubertreuseport_default=0 5525469a995SCy Schubertif echo "$host" | $GREP -i -e linux >/dev/null; then reuseport_default=1; fi 5535469a995SCy Schubertif echo "$host" | $GREP -i -e dragonfly >/dev/null; then reuseport_default=1; fi 5545469a995SCy Schubertif test "$reuseport_default" = 1; then 555209fcf8eSDag-Erling Smørgrav AC_DEFINE(REUSEPORT_DEFAULT, 1, [if REUSEPORT is enabled by default]) 556209fcf8eSDag-Erling Smørgravelse 557209fcf8eSDag-Erling Smørgrav AC_DEFINE(REUSEPORT_DEFAULT, 0, [if REUSEPORT is enabled by default]) 558209fcf8eSDag-Erling Smørgravfi 559209fcf8eSDag-Erling Smørgrav 5600eefd307SCy Schubert# Include systemd.m4 - begin 5610eefd307SCy Schubertsinclude(systemd.m4) 5620eefd307SCy Schubert# Include systemd.m4 - end 5630eefd307SCy Schubert 564b7579f77SDag-Erling Smørgrav# set memory allocation checking if requested 565f44e67d1SCy SchubertAC_ARG_ENABLE(alloc-checks, AS_HELP_STRING([--enable-alloc-checks],[ enable to memory allocation statistics, for debug purposes ]), 566b7579f77SDag-Erling Smørgrav , ) 567f44e67d1SCy SchubertAC_ARG_ENABLE(alloc-lite, AS_HELP_STRING([--enable-alloc-lite],[ enable for lightweight alloc assertions, for debug purposes ]), 568b7579f77SDag-Erling Smørgrav , ) 569f44e67d1SCy SchubertAC_ARG_ENABLE(alloc-nonregional, AS_HELP_STRING([--enable-alloc-nonregional],[ enable nonregional allocs, slow but exposes regional allocations to other memory purifiers, for debug purposes ]), 570b7579f77SDag-Erling Smørgrav , ) 571b7579f77SDag-Erling Smørgravif test x_$enable_alloc_nonregional = x_yes; then 572b7579f77SDag-Erling Smørgrav AC_DEFINE(UNBOUND_ALLOC_NONREGIONAL, 1, [use malloc not regions, for debug use]) 573b7579f77SDag-Erling Smørgravfi 574b7579f77SDag-Erling Smørgravif test x_$enable_alloc_checks = x_yes; then 575b7579f77SDag-Erling Smørgrav AC_DEFINE(UNBOUND_ALLOC_STATS, 1, [use statistics for allocs and frees, for debug use]) 5760eefd307SCy Schubert SLDNS_ALLOCCHECK_EXTRA_OBJ="alloc.lo log.lo" 5770eefd307SCy Schubert AC_SUBST(SLDNS_ALLOCCHECK_EXTRA_OBJ) 5780eefd307SCy Schubert ASYNCLOOK_ALLOCCHECK_EXTRA_OBJ="alloc.lo" 5790eefd307SCy Schubert AC_SUBST(ASYNCLOOK_ALLOCCHECK_EXTRA_OBJ) 580b7579f77SDag-Erling Smørgravelse 581b7579f77SDag-Erling Smørgrav if test x_$enable_alloc_lite = x_yes; then 582b7579f77SDag-Erling Smørgrav AC_DEFINE(UNBOUND_ALLOC_LITE, 1, [use to enable lightweight alloc assertions, for debug use]) 583b7579f77SDag-Erling Smørgrav else 584b7579f77SDag-Erling Smørgrav ACX_FUNC_MALLOC([unbound]) 585b7579f77SDag-Erling Smørgrav fi 586b7579f77SDag-Erling Smørgravfi 587b7579f77SDag-Erling Smørgrav 588b7579f77SDag-Erling Smørgrav# check windows threads (we use them, not pthreads, on windows). 589b7579f77SDag-Erling Smørgravif test "$on_mingw" = "yes"; then 590b7579f77SDag-Erling Smørgrav# check windows threads 591b7579f77SDag-Erling Smørgrav AC_CHECK_HEADERS([windows.h],,, [AC_INCLUDES_DEFAULT]) 592b7579f77SDag-Erling Smørgrav AC_MSG_CHECKING([for CreateThread]) 593b7579f77SDag-Erling Smørgrav AC_COMPILE_IFELSE([AC_LANG_PROGRAM([ 594b7579f77SDag-Erling Smørgrav#ifdef HAVE_WINDOWS_H 595b7579f77SDag-Erling Smørgrav#include <windows.h> 596b7579f77SDag-Erling Smørgrav#endif 597b7579f77SDag-Erling Smørgrav], [ 598b7579f77SDag-Erling Smørgrav HANDLE t = CreateThread(NULL, 0, NULL, NULL, 0, NULL); 599b7579f77SDag-Erling Smørgrav])], 600b7579f77SDag-Erling Smørgrav AC_MSG_RESULT(yes) 601b7579f77SDag-Erling Smørgrav AC_DEFINE(HAVE_WINDOWS_THREADS, 1, [Using Windows threads]) 602b7579f77SDag-Erling Smørgrav, 603b7579f77SDag-Erling Smørgrav AC_MSG_RESULT(no) 604b7579f77SDag-Erling Smørgrav) 605b7579f77SDag-Erling Smørgrav 606b7579f77SDag-Erling Smørgravelse 607b7579f77SDag-Erling Smørgrav# not on mingw, check thread libraries. 608b7579f77SDag-Erling Smørgrav 609b7579f77SDag-Erling Smørgrav# check for thread library. 610b7579f77SDag-Erling Smørgrav# check this first, so that the pthread lib does not get linked in via 611b7579f77SDag-Erling Smørgrav# libssl or libpython, and thus distorts the tests, and we end up using 612b7579f77SDag-Erling Smørgrav# the non-threadsafe C libraries. 613f44e67d1SCy SchubertAC_ARG_WITH(pthreads, AS_HELP_STRING([--with-pthreads],[use pthreads library, or --without-pthreads to disable threading support.]), 614b7579f77SDag-Erling Smørgrav [ ],[ withval="yes" ]) 615b7579f77SDag-Erling Smørgravub_have_pthreads=no 616b7579f77SDag-Erling Smørgravif test x_$withval != x_no; then 61717d15b25SDag-Erling Smørgrav AX_PTHREAD([ 618b7579f77SDag-Erling Smørgrav AC_DEFINE(HAVE_PTHREAD,1,[Define if you have POSIX threads libraries and header files.]) 619971980c3SDag-Erling Smørgrav if test -n "$PTHREAD_LIBS"; then 620b7579f77SDag-Erling Smørgrav LIBS="$PTHREAD_LIBS $LIBS" 621971980c3SDag-Erling Smørgrav fi 622b7579f77SDag-Erling Smørgrav CFLAGS="$CFLAGS $PTHREAD_CFLAGS" 623b7579f77SDag-Erling Smørgrav CC="$PTHREAD_CC" 624b7579f77SDag-Erling Smørgrav ub_have_pthreads=yes 625b7579f77SDag-Erling Smørgrav AC_CHECK_TYPES([pthread_spinlock_t, pthread_rwlock_t],,,[#include <pthread.h>]) 626865f46b2SCy Schubert AC_CHECK_SIZEOF([unsigned long]) 627865f46b2SCy Schubert AC_CHECK_SIZEOF(pthread_t) 628f61ef7f6SDag-Erling Smørgrav 629f61ef7f6SDag-Erling Smørgrav if echo "$CFLAGS" | $GREP -e "-pthread" >/dev/null; then 630f61ef7f6SDag-Erling Smørgrav AC_MSG_CHECKING([if -pthread unused during linking]) 631f61ef7f6SDag-Erling Smørgrav # catch clang warning 'argument unused during compilation' 632f61ef7f6SDag-Erling Smørgrav AC_LANG_CONFTEST([AC_LANG_SOURCE(AC_INCLUDES_DEFAULT 633f61ef7f6SDag-Erling Smørgrav[[ 634f61ef7f6SDag-Erling Smørgravint main(void) {return 0;} 635f61ef7f6SDag-Erling Smørgrav]])]) 636f61ef7f6SDag-Erling Smørgrav pthread_unused="yes" 637f61ef7f6SDag-Erling Smørgrav # first compile 638f61ef7f6SDag-Erling Smørgrav echo "$CC $CFLAGS -c conftest.c -o conftest.o" >&AS_MESSAGE_LOG_FD 639f61ef7f6SDag-Erling Smørgrav $CC $CFLAGS -c conftest.c -o conftest.o 2>&AS_MESSAGE_LOG_FD >&AS_MESSAGE_LOG_FD 640f61ef7f6SDag-Erling Smørgrav if test $? = 0; then 641f61ef7f6SDag-Erling Smørgrav # then link 642f61ef7f6SDag-Erling Smørgrav echo "$CC $CFLAGS -Werror $LDFLAGS $LIBS -o conftest contest.o" >&AS_MESSAGE_LOG_FD 643f61ef7f6SDag-Erling Smørgrav $CC $CFLAGS -Werror $LDFLAGS $LIBS -o conftest conftest.o 2>&AS_MESSAGE_LOG_FD >&AS_MESSAGE_LOG_FD 644f61ef7f6SDag-Erling Smørgrav if test $? -ne 0; then 645f61ef7f6SDag-Erling Smørgrav AC_MSG_RESULT(yes) 646f61ef7f6SDag-Erling Smørgrav CFLAGS=`echo "$CFLAGS" | sed -e 's/-pthread//'` 647f61ef7f6SDag-Erling Smørgrav PTHREAD_CFLAGS_ONLY="-pthread" 648f61ef7f6SDag-Erling Smørgrav AC_SUBST(PTHREAD_CFLAGS_ONLY) 649f61ef7f6SDag-Erling Smørgrav else 650f61ef7f6SDag-Erling Smørgrav AC_MSG_RESULT(no) 651f61ef7f6SDag-Erling Smørgrav fi 652f61ef7f6SDag-Erling Smørgrav else 653f61ef7f6SDag-Erling Smørgrav AC_MSG_RESULT(no) 654f61ef7f6SDag-Erling Smørgrav fi # endif cc successful 655f61ef7f6SDag-Erling Smørgrav rm -f conftest conftest.c conftest.o 656f61ef7f6SDag-Erling Smørgrav fi # endif -pthread in CFLAGS 657f61ef7f6SDag-Erling Smørgrav 658b7579f77SDag-Erling Smørgrav ]) 659b7579f77SDag-Erling Smørgravfi 660b7579f77SDag-Erling Smørgrav 661b7579f77SDag-Erling Smørgrav# check solaris thread library 662f44e67d1SCy SchubertAC_ARG_WITH(solaris-threads, AS_HELP_STRING([--with-solaris-threads],[use solaris native thread library.]), [ ],[ withval="no" ]) 663b7579f77SDag-Erling Smørgravub_have_sol_threads=no 664b7579f77SDag-Erling Smørgravif test x_$withval != x_no; then 665b7579f77SDag-Erling Smørgrav if test x_$ub_have_pthreads != x_no; then 666f44e67d1SCy Schubert AC_MSG_WARN([Have pthreads already, ignoring --with-solaris-threads]) 667b7579f77SDag-Erling Smørgrav else 668b7579f77SDag-Erling Smørgrav AC_SEARCH_LIBS(thr_create, [thread], 669b7579f77SDag-Erling Smørgrav [ 670b7579f77SDag-Erling Smørgrav AC_DEFINE(HAVE_SOLARIS_THREADS, 1, [Using Solaris threads]) 671b7579f77SDag-Erling Smørgrav 672b7579f77SDag-Erling Smørgrav ACX_CHECK_COMPILER_FLAG(mt, [CFLAGS="$CFLAGS -mt"], 673b7579f77SDag-Erling Smørgrav [CFLAGS="$CFLAGS -D_REENTRANT"]) 674b7579f77SDag-Erling Smørgrav ub_have_sol_threads=yes 675b7579f77SDag-Erling Smørgrav ] , [ 676f44e67d1SCy Schubert AC_MSG_ERROR([no solaris threads found.]) 677b7579f77SDag-Erling Smørgrav ]) 678b7579f77SDag-Erling Smørgrav fi 679b7579f77SDag-Erling Smørgravfi 680b7579f77SDag-Erling Smørgrav 681b7579f77SDag-Erling Smørgravfi # end of non-mingw check of thread libraries 682b7579f77SDag-Erling Smørgrav 6830eefd307SCy Schubert# Check for SYSLOG_FACILITY 684f44e67d1SCy SchubertAC_ARG_WITH(syslog-facility, AS_HELP_STRING([--with-syslog-facility=LOCAL0 - LOCAL7],[ set SYSLOG_FACILITY, default DAEMON ]), 6850eefd307SCy Schubert [ UNBOUND_SYSLOG_FACILITY="$withval" ], []) 6860eefd307SCy Schubertcase "${UNBOUND_SYSLOG_FACILITY}" in 6870eefd307SCy Schubert 6880eefd307SCy Schubert LOCAL[[0-7]]) UNBOUND_SYSLOG_FACILITY="LOG_${UNBOUND_SYSLOG_FACILITY}" ;; 6890eefd307SCy Schubert 6900eefd307SCy Schubert *) UNBOUND_SYSLOG_FACILITY="LOG_DAEMON" ;; 6910eefd307SCy Schubert 6920eefd307SCy Schubertesac 6930eefd307SCy SchubertAC_DEFINE_UNQUOTED(UB_SYSLOG_FACILITY,${UNBOUND_SYSLOG_FACILITY},[the SYSLOG_FACILITY to use, default LOG_DAEMON]) 6940eefd307SCy Schubert 69525039b37SCy Schubert# Check for dynamic library module 69625039b37SCy SchubertAC_ARG_WITH(dynlibmodule, 697f44e67d1SCy Schubert AS_HELP_STRING([--with-dynlibmodule],[build dynamic library module, or --without-dynlibmodule to disable it. (default=no)]), 69825039b37SCy Schubert [], [ withval="no" ]) 69925039b37SCy Schubert 70025039b37SCy Schubertif test x_$withval != x_no; then 70125039b37SCy Schubert AC_DEFINE(WITH_DYNLIBMODULE, 1, [Define if you want dynlib module.]) 70225039b37SCy Schubert WITH_DYNLIBMODULE=yes 70325039b37SCy Schubert AC_SUBST(WITH_DYNLIBMODULE) 70425039b37SCy Schubert DYNLIBMOD_OBJ="dynlibmod.lo" 70525039b37SCy Schubert AC_SUBST(DYNLIBMOD_OBJ) 70625039b37SCy Schubert DYNLIBMOD_HEADER='$(srcdir)/dynlibmod/dynlibmod.h' 70725039b37SCy Schubert AC_SUBST(DYNLIBMOD_HEADER) 70825039b37SCy Schubert if test $on_mingw = "no"; then 709f44e67d1SCy Schubert # link with -ldl if not already there, for all executables because 710f44e67d1SCy Schubert # dlopen call is in the dynlib module. For unbound executable, also 711f44e67d1SCy Schubert # export symbols. 712f44e67d1SCy Schubert AC_SEARCH_LIBS([dlopen], [dl]) 713f44e67d1SCy Schubert DYNLIBMOD_EXTRALIBS="-export-dynamic" 71425039b37SCy Schubert else 715f44e67d1SCy Schubert DYNLIBMOD_EXTRALIBS="-Wl,--export-all-symbols,--out-implib,libunbound.dll.a" 71625039b37SCy Schubert fi 71725039b37SCy Schubert AC_SUBST(DYNLIBMOD_EXTRALIBS) 71825039b37SCy Schubertfi 71925039b37SCy Schubert 720b7579f77SDag-Erling Smørgrav# Check for PyUnbound 721b7579f77SDag-Erling SmørgravAC_ARG_WITH(pyunbound, 722f44e67d1SCy Schubert AS_HELP_STRING([--with-pyunbound],[build PyUnbound, or --without-pyunbound to skip it. (default=no)]), 723b7579f77SDag-Erling Smørgrav [], [ withval="no" ]) 724b7579f77SDag-Erling Smørgrav 725b7579f77SDag-Erling Smørgravub_test_python=no 726b7579f77SDag-Erling Smørgravub_with_pyunbound=no 727b7579f77SDag-Erling Smørgravif test x_$withval != x_no; then 728b7579f77SDag-Erling Smørgrav ub_with_pyunbound=yes 729b7579f77SDag-Erling Smørgrav ub_test_python=yes 730b7579f77SDag-Erling Smørgravfi 731b7579f77SDag-Erling Smørgrav 732b7579f77SDag-Erling Smørgrav# Check for Python module 733b7579f77SDag-Erling SmørgravAC_ARG_WITH(pythonmodule, 734f44e67d1SCy Schubert AS_HELP_STRING([--with-pythonmodule],[build Python module, or --without-pythonmodule to disable script engine. (default=no)]), 735b7579f77SDag-Erling Smørgrav [], [ withval="no" ]) 736b7579f77SDag-Erling Smørgrav 737b7579f77SDag-Erling Smørgravub_with_pythonmod=no 738b7579f77SDag-Erling Smørgravif test x_$withval != x_no; then 739b7579f77SDag-Erling Smørgrav ub_with_pythonmod=yes 740b7579f77SDag-Erling Smørgrav ub_test_python=yes 741b7579f77SDag-Erling Smørgravfi 742b7579f77SDag-Erling Smørgrav 743b7579f77SDag-Erling Smørgrav# Check for Python & SWIG only on PyUnbound or PyModule 744b7579f77SDag-Erling Smørgravif test x_$ub_test_python != x_no; then 745b7579f77SDag-Erling Smørgrav 746b7579f77SDag-Erling Smørgrav # Check for Python 747b7579f77SDag-Erling Smørgrav ub_have_python=no 748b7579f77SDag-Erling Smørgrav ac_save_LIBS="$LIBS" dnl otherwise AC_PYTHON_DEVEL thrashes $LIBS 749b7579f77SDag-Erling Smørgrav AC_PYTHON_DEVEL 750b7579f77SDag-Erling Smørgrav if test ! -z "$PYTHON_VERSION"; then 751*8f76bb7dSCy Schubert badversion="no" 752*8f76bb7dSCy Schubert if test "$PYTHON_VERSION_MAJOR" -lt 2; then 753*8f76bb7dSCy Schubert badversion="yes" 754*8f76bb7dSCy Schubert fi 755*8f76bb7dSCy Schubert if test "$PYTHON_VERSION_MAJOR" -eq 2 -a "$PYTHON_VERSION_MINOR" -lt 4; then 756*8f76bb7dSCy Schubert badversion="yes" 757*8f76bb7dSCy Schubert fi 758*8f76bb7dSCy Schubert if test "$badversion" = "yes"; then 759f44e67d1SCy Schubert AC_MSG_ERROR([Python version >= 2.4.0 is required]) 760b7579f77SDag-Erling Smørgrav fi 761b7579f77SDag-Erling Smørgrav 762b75612f8SDag-Erling Smørgrav [PY_MAJOR_VERSION="`$PYTHON -c \"import sys; print(sys.version_info[0])\"`"] 76309a3aaf3SDag-Erling Smørgrav AC_SUBST(PY_MAJOR_VERSION) 764b7579f77SDag-Erling Smørgrav # Have Python 765b7579f77SDag-Erling Smørgrav AC_DEFINE(HAVE_PYTHON,1,[Define if you have Python libraries and header files.]) 76624e36522SCy Schubert if test x_$ub_with_pythonmod != x_no; then 767971980c3SDag-Erling Smørgrav if test -n "$LIBS"; then 768b7579f77SDag-Erling Smørgrav LIBS="$PYTHON_LDFLAGS $LIBS" 769971980c3SDag-Erling Smørgrav else 770971980c3SDag-Erling Smørgrav LIBS="$PYTHON_LDFLAGS" 771971980c3SDag-Erling Smørgrav fi 77224e36522SCy Schubert fi 77324e36522SCy Schubert PYTHON_LIBS="$PYTHON_LDFLAGS" 77424e36522SCy Schubert AC_SUBST(PYTHON_LIBS) 775971980c3SDag-Erling Smørgrav if test -n "$CPPFLAGS"; then 776b7579f77SDag-Erling Smørgrav CPPFLAGS="$CPPFLAGS $PYTHON_CPPFLAGS" 777971980c3SDag-Erling Smørgrav else 778971980c3SDag-Erling Smørgrav CPPFLAGS="$PYTHON_CPPFLAGS" 779971980c3SDag-Erling Smørgrav fi 78025039b37SCy Schubert if test "$PYTHON_LIBDIR" != "/usr/lib" -a "$PYTHON_LIBDIR" != "" -a "$PYTHON_LIBDIR" != "/usr/lib64"; then 78125039b37SCy Schubert ACX_RUNTIME_PATH_ADD([$PYTHON_LIBDIR]) 78225039b37SCy Schubert fi 783b7579f77SDag-Erling Smørgrav ub_have_python=yes 7844c75e3aaSDag-Erling Smørgrav PKG_CHECK_EXISTS(["python${PY_MAJOR_VERSION}"], 7854c75e3aaSDag-Erling Smørgrav [PC_PY_DEPENDENCY="python${PY_MAJOR_VERSION}"], 7864c75e3aaSDag-Erling Smørgrav [PC_PY_DEPENDENCY="python"]) 787bc892140SDag-Erling Smørgrav AC_SUBST(PC_PY_DEPENDENCY) 788b7579f77SDag-Erling Smørgrav 789b7579f77SDag-Erling Smørgrav # Check for SWIG 790b7579f77SDag-Erling Smørgrav ub_have_swig=no 791f44e67d1SCy Schubert AC_ARG_ENABLE(swig-version-check, AS_HELP_STRING([--disable-swig-version-check],[Disable swig version check to build python modules with older swig even though that is unreliable])) 79257bddd21SDag-Erling Smørgrav if test "$enable_swig_version_check" = "yes"; then 79365b390aaSDag-Erling Smørgrav AC_PROG_SWIG(2.0.1) 79457bddd21SDag-Erling Smørgrav else 79557bddd21SDag-Erling Smørgrav AC_PROG_SWIG 79657bddd21SDag-Erling Smørgrav fi 797b7579f77SDag-Erling Smørgrav AC_MSG_CHECKING(SWIG) 798b7579f77SDag-Erling Smørgrav if test ! -x "$SWIG"; then 799f44e67d1SCy Schubert AC_MSG_ERROR([failed to find swig tool, install it, or do not build Python module and PyUnbound]) 800b7579f77SDag-Erling Smørgrav else 801b7579f77SDag-Erling Smørgrav AC_DEFINE(HAVE_SWIG, 1, [Define if you have Swig libraries and header files.]) 802b7579f77SDag-Erling Smørgrav AC_SUBST(swig, "$SWIG") 803b7579f77SDag-Erling Smørgrav AC_MSG_RESULT(present) 804b7579f77SDag-Erling Smørgrav 805b7579f77SDag-Erling Smørgrav # If have Python & SWIG 806b7579f77SDag-Erling Smørgrav # Declare PythonMod 807b7579f77SDag-Erling Smørgrav if test x_$ub_with_pythonmod != x_no; then 808b7579f77SDag-Erling Smørgrav AC_DEFINE(WITH_PYTHONMODULE, 1, [Define if you want Python module.]) 809b7579f77SDag-Erling Smørgrav WITH_PYTHONMODULE=yes 810b7579f77SDag-Erling Smørgrav AC_SUBST(WITH_PYTHONMODULE) 811b7579f77SDag-Erling Smørgrav PYTHONMOD_OBJ="pythonmod.lo pythonmod_utils.lo" 812b7579f77SDag-Erling Smørgrav AC_SUBST(PYTHONMOD_OBJ) 813b7579f77SDag-Erling Smørgrav PYTHONMOD_HEADER='$(srcdir)/pythonmod/pythonmod.h' 814b7579f77SDag-Erling Smørgrav AC_SUBST(PYTHONMOD_HEADER) 815b7579f77SDag-Erling Smørgrav PYTHONMOD_INSTALL=pythonmod-install 816b7579f77SDag-Erling Smørgrav AC_SUBST(PYTHONMOD_INSTALL) 817b7579f77SDag-Erling Smørgrav PYTHONMOD_UNINSTALL=pythonmod-uninstall 818b7579f77SDag-Erling Smørgrav AC_SUBST(PYTHONMOD_UNINSTALL) 819b7579f77SDag-Erling Smørgrav fi 820b7579f77SDag-Erling Smørgrav 821b7579f77SDag-Erling Smørgrav # Declare PyUnbound 822b7579f77SDag-Erling Smørgrav if test x_$ub_with_pyunbound != x_no; then 823b7579f77SDag-Erling Smørgrav AC_DEFINE(WITH_PYUNBOUND, 1, [Define if you want PyUnbound.]) 824b7579f77SDag-Erling Smørgrav WITH_PYUNBOUND=yes 825b7579f77SDag-Erling Smørgrav AC_SUBST(WITH_PYUNBOUND) 826b7579f77SDag-Erling Smørgrav PYUNBOUND_OBJ="libunbound_wrap.lo" 827b7579f77SDag-Erling Smørgrav AC_SUBST(PYUNBOUND_OBJ) 828b7579f77SDag-Erling Smørgrav PYUNBOUND_TARGET="_unbound.la" 829b7579f77SDag-Erling Smørgrav AC_SUBST(PYUNBOUND_TARGET) 830b7579f77SDag-Erling Smørgrav PYUNBOUND_INSTALL=pyunbound-install 831b7579f77SDag-Erling Smørgrav AC_SUBST(PYUNBOUND_INSTALL) 832b7579f77SDag-Erling Smørgrav PYUNBOUND_UNINSTALL=pyunbound-uninstall 833b7579f77SDag-Erling Smørgrav AC_SUBST(PYUNBOUND_UNINSTALL) 834b7579f77SDag-Erling Smørgrav fi 835b7579f77SDag-Erling Smørgrav fi 836b7579f77SDag-Erling Smørgrav else 837b7579f77SDag-Erling Smørgrav AC_MSG_RESULT([*** Python libraries not found, won't build PythonMod or PyUnbound ***]) 838b7579f77SDag-Erling Smørgrav ub_with_pyunbound=no 839b7579f77SDag-Erling Smørgrav ub_with_pythonmod=no 840b7579f77SDag-Erling Smørgrav fi 841b7579f77SDag-Erling Smørgravfi 842b7579f77SDag-Erling Smørgrav 843b7579f77SDag-Erling Smørgravif test "`uname`" = "NetBSD"; then 844b7579f77SDag-Erling Smørgrav NETBSD_LINTFLAGS='"-D__RENAME(x)=" -D_NETINET_IN_H_' 845b7579f77SDag-Erling Smørgrav AC_SUBST(NETBSD_LINTFLAGS) 846b7579f77SDag-Erling Smørgravfi 84724e36522SCy Schubert 8489cf5bc93SCy Schubertif test "`uname`" = "Linux"; then 84924e36522SCy Schubert # splint cannot parse modern c99 header files 85024e36522SCy Schubert GCC_DOCKER_LINTFLAGS='-syntax' 85124e36522SCy Schubert AC_SUBST(GCC_DOCKER_LINTFLAGS) 85224e36522SCy Schubertfi 853b7579f77SDag-Erling SmørgravCONFIG_DATE=`date +%Y%m%d` 854b7579f77SDag-Erling SmørgravAC_SUBST(CONFIG_DATE) 855b7579f77SDag-Erling Smørgrav 856b7579f77SDag-Erling Smørgrav# Checks for libraries. 8578ed2b524SDag-Erling Smørgrav 8588ed2b524SDag-Erling Smørgrav# libnss 8598ed2b524SDag-Erling SmørgravUSE_NSS="no" 860f44e67d1SCy SchubertAC_ARG_WITH([nss], AS_HELP_STRING([--with-nss=path],[use libnss instead of openssl, installed at path.]), 8618ed2b524SDag-Erling Smørgrav [ 8628ed2b524SDag-Erling Smørgrav USE_NSS="yes" 8638ed2b524SDag-Erling Smørgrav AC_DEFINE(HAVE_NSS, 1, [Use libnss for crypto]) 8648ed2b524SDag-Erling Smørgrav if test "$withval" != "" -a "$withval" != "yes"; then 8658ed2b524SDag-Erling Smørgrav CPPFLAGS="$CPPFLAGS -I$withval/include/nss3" 8668ed2b524SDag-Erling Smørgrav LDFLAGS="$LDFLAGS -L$withval/lib" 8678ed2b524SDag-Erling Smørgrav ACX_RUNTIME_PATH_ADD([$withval/lib]) 8688ed2b524SDag-Erling Smørgrav CPPFLAGS="-I$withval/include/nspr4 $CPPFLAGS" 8698ed2b524SDag-Erling Smørgrav else 8708ed2b524SDag-Erling Smørgrav CPPFLAGS="$CPPFLAGS -I/usr/include/nss3" 8718ed2b524SDag-Erling Smørgrav CPPFLAGS="-I/usr/include/nspr4 $CPPFLAGS" 8728ed2b524SDag-Erling Smørgrav fi 8738ed2b524SDag-Erling Smørgrav LIBS="$LIBS -lnss3 -lnspr4" 87405ab2901SDag-Erling Smørgrav SSLLIB="" 875091e9e46SCy Schubert PC_CRYPTO_DEPENDENCY="nss nspr" 876091e9e46SCy Schubert AC_SUBST(PC_CRYPTO_DEPENDENCY) 87705ab2901SDag-Erling Smørgrav ] 87805ab2901SDag-Erling Smørgrav) 87905ab2901SDag-Erling Smørgrav 88005ab2901SDag-Erling Smørgrav# libnettle 88105ab2901SDag-Erling SmørgravUSE_NETTLE="no" 882f44e67d1SCy SchubertAC_ARG_WITH([nettle], AS_HELP_STRING([--with-nettle=path],[use libnettle as crypto library, installed at path.]), 88305ab2901SDag-Erling Smørgrav [ 88405ab2901SDag-Erling Smørgrav USE_NETTLE="yes" 88505ab2901SDag-Erling Smørgrav AC_DEFINE(HAVE_NETTLE, 1, [Use libnettle for crypto]) 886b5663de9SDag-Erling Smørgrav AC_CHECK_HEADERS([nettle/dsa-compat.h],,, [AC_INCLUDES_DEFAULT]) 88705ab2901SDag-Erling Smørgrav if test "$withval" != "" -a "$withval" != "yes"; then 88805ab2901SDag-Erling Smørgrav CPPFLAGS="$CPPFLAGS -I$withval/include/nettle" 88905ab2901SDag-Erling Smørgrav LDFLAGS="$LDFLAGS -L$withval/lib" 89005ab2901SDag-Erling Smørgrav ACX_RUNTIME_PATH_ADD([$withval/lib]) 89105ab2901SDag-Erling Smørgrav else 89205ab2901SDag-Erling Smørgrav CPPFLAGS="$CPPFLAGS -I/usr/include/nettle" 89305ab2901SDag-Erling Smørgrav fi 89405ab2901SDag-Erling Smørgrav LIBS="$LIBS -lhogweed -lnettle -lgmp" 89505ab2901SDag-Erling Smørgrav SSLLIB="" 896091e9e46SCy Schubert PC_CRYPTO_DEPENDENCY="hogweed nettle" 897091e9e46SCy Schubert AC_SUBST(PC_CRYPTO_DEPENDENCY) 8988ed2b524SDag-Erling Smørgrav ] 8998ed2b524SDag-Erling Smørgrav) 9008ed2b524SDag-Erling Smørgrav 9018ed2b524SDag-Erling Smørgrav# openssl 90205ab2901SDag-Erling Smørgravif test $USE_NSS = "no" -a $USE_NETTLE = "no"; then 903b7579f77SDag-Erling SmørgravACX_WITH_SSL 904b7579f77SDag-Erling SmørgravACX_LIB_SSL 90505ab2901SDag-Erling SmørgravSSLLIB="-lssl" 906b5663de9SDag-Erling Smørgrav 90724e36522SCy SchubertPC_CRYPTO_DEPENDENCY="" 908091e9e46SCy SchubertAC_SUBST(PC_CRYPTO_DEPENDENCY) 909091e9e46SCy Schubert 910b5663de9SDag-Erling Smørgrav# check if -lcrypt32 is needed because CAPIENG needs that. (on windows) 911b5663de9SDag-Erling SmørgravBAKLIBS="$LIBS" 912b5663de9SDag-Erling SmørgravLIBS="-lssl $LIBS" 913b5663de9SDag-Erling SmørgravAC_MSG_CHECKING([if libssl needs -lcrypt32]) 914f44e67d1SCy SchubertAC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ 915f44e67d1SCy Schubert int EVP_sha256(void); 916f44e67d1SCy Schubert (void)EVP_sha256(); 917f44e67d1SCy Schubert]])], [ 918b5663de9SDag-Erling Smørgrav AC_MSG_RESULT([no]) 919b5663de9SDag-Erling Smørgrav LIBS="$BAKLIBS" 920b5663de9SDag-Erling Smørgrav], [ 921b5663de9SDag-Erling Smørgrav AC_MSG_RESULT([yes]) 922b5663de9SDag-Erling Smørgrav LIBS="$BAKLIBS" 923b5663de9SDag-Erling Smørgrav LIBS="$LIBS -lcrypt32" 924b5663de9SDag-Erling Smørgrav]) 925b5663de9SDag-Erling Smørgrav 926ff825849SDag-Erling SmørgravAC_MSG_CHECKING([for LibreSSL]) 92724e36522SCy Schubertif grep VERSION_TEXT $ssldir_include/openssl/opensslv.h | grep "LibreSSL" >/dev/null; then 928ff825849SDag-Erling Smørgrav AC_MSG_RESULT([yes]) 929ff825849SDag-Erling Smørgrav AC_DEFINE([HAVE_LIBRESSL], [1], [Define if we have LibreSSL]) 930ff825849SDag-Erling Smørgrav # libressl provides these compat functions, but they may also be 931ff825849SDag-Erling Smørgrav # declared by the OS in libc. See if they have been declared. 9320eefd307SCy Schubert AC_CHECK_DECLS([strlcpy,strlcat,arc4random,arc4random_uniform]) 933ff825849SDag-Erling Smørgravelse 934ff825849SDag-Erling Smørgrav AC_MSG_RESULT([no]) 935ff825849SDag-Erling Smørgravfi 9365469a995SCy SchubertAC_CHECK_HEADERS([openssl/conf.h openssl/engine.h openssl/bn.h openssl/dh.h openssl/dsa.h openssl/rsa.h openssl/core_names.h openssl/param_build.h],,, [AC_INCLUDES_DEFAULT]) 9370a92a9fcSCy SchubertAC_CHECK_FUNCS([OPENSSL_config EVP_sha1 EVP_sha256 EVP_sha512 FIPS_mode EVP_default_properties_is_fips_enabled EVP_MD_CTX_new OpenSSL_add_all_digests OPENSSL_init_crypto EVP_cleanup ENGINE_cleanup ERR_load_crypto_strings CRYPTO_cleanup_all_ex_data ERR_free_strings RAND_cleanup DSA_SIG_set0 EVP_dss1 EVP_DigestVerify EVP_aes_256_cbc EVP_EncryptInit_ex HMAC_Init_ex CRYPTO_THREADID_set_callback EVP_MAC_CTX_set_params OSSL_PARAM_BLD_new BIO_set_callback_ex]) 938b5663de9SDag-Erling Smørgrav 939b5663de9SDag-Erling Smørgrav# these check_funcs need -lssl 940b5663de9SDag-Erling SmørgravBAKLIBS="$LIBS" 941b5663de9SDag-Erling SmørgravLIBS="-lssl $LIBS" 9425469a995SCy SchubertAC_CHECK_FUNCS([OPENSSL_init_ssl SSL_CTX_set_security_level SSL_set1_host SSL_get0_peername X509_VERIFY_PARAM_set1_host SSL_CTX_set_ciphersuites SSL_CTX_set_tlsext_ticket_key_evp_cb SSL_CTX_set_alpn_select_cb SSL_get0_alpn_selected SSL_CTX_set_alpn_protos SSL_get1_peer_certificate]) 943b5663de9SDag-Erling SmørgravLIBS="$BAKLIBS" 944b5663de9SDag-Erling Smørgrav 945b75612f8SDag-Erling SmørgravAC_CHECK_DECLS([SSL_COMP_get_compression_methods,sk_SSL_COMP_pop_free,SSL_CTX_set_ecdh_auto], [], [], [ 946b7579f77SDag-Erling SmørgravAC_INCLUDES_DEFAULT 947b7579f77SDag-Erling Smørgrav#ifdef HAVE_OPENSSL_ERR_H 948b7579f77SDag-Erling Smørgrav#include <openssl/err.h> 949b7579f77SDag-Erling Smørgrav#endif 950b7579f77SDag-Erling Smørgrav 951b7579f77SDag-Erling Smørgrav#ifdef HAVE_OPENSSL_RAND_H 952b7579f77SDag-Erling Smørgrav#include <openssl/rand.h> 953b7579f77SDag-Erling Smørgrav#endif 954b7579f77SDag-Erling Smørgrav 955b7579f77SDag-Erling Smørgrav#ifdef HAVE_OPENSSL_CONF_H 956b7579f77SDag-Erling Smørgrav#include <openssl/conf.h> 957b7579f77SDag-Erling Smørgrav#endif 958b7579f77SDag-Erling Smørgrav 959b7579f77SDag-Erling Smørgrav#ifdef HAVE_OPENSSL_ENGINE_H 960b7579f77SDag-Erling Smørgrav#include <openssl/engine.h> 961b7579f77SDag-Erling Smørgrav#endif 962b7579f77SDag-Erling Smørgrav#include <openssl/ssl.h> 963b7579f77SDag-Erling Smørgrav#include <openssl/evp.h> 964b7579f77SDag-Erling Smørgrav]) 9650eefd307SCy Schubert 9660eefd307SCy Schubertif test "$ac_cv_func_HMAC_Init_ex" = "yes"; then 9670eefd307SCy Schubert# check function return type. 9680eefd307SCy SchubertAC_MSG_CHECKING(the return type of HMAC_Init_ex) 9690eefd307SCy SchubertAC_COMPILE_IFELSE([AC_LANG_PROGRAM([ 9700eefd307SCy Schubert#ifdef HAVE_OPENSSL_ERR_H 9710eefd307SCy Schubert#include <openssl/err.h> 9720eefd307SCy Schubert#endif 9730eefd307SCy Schubert 9740eefd307SCy Schubert#ifdef HAVE_OPENSSL_RAND_H 9750eefd307SCy Schubert#include <openssl/rand.h> 9760eefd307SCy Schubert#endif 9770eefd307SCy Schubert 9780eefd307SCy Schubert#ifdef HAVE_OPENSSL_CONF_H 9790eefd307SCy Schubert#include <openssl/conf.h> 9800eefd307SCy Schubert#endif 9810eefd307SCy Schubert 9820eefd307SCy Schubert#ifdef HAVE_OPENSSL_ENGINE_H 9830eefd307SCy Schubert#include <openssl/engine.h> 9840eefd307SCy Schubert#endif 9850eefd307SCy Schubert#include <openssl/ssl.h> 9860eefd307SCy Schubert#include <openssl/evp.h> 9870eefd307SCy Schubert], [ 9880eefd307SCy Schubert HMAC_CTX* hmac_ctx = NULL; 9890eefd307SCy Schubert void* hmac_key = NULL; 9900eefd307SCy Schubert const EVP_MD* digest = NULL; 9910eefd307SCy Schubert int x = HMAC_Init_ex(hmac_ctx, hmac_key, 32, digest, NULL); 9920eefd307SCy Schubert (void)x; 9930eefd307SCy Schubert])], [ 9940eefd307SCy Schubert AC_MSG_RESULT(int) 9950eefd307SCy Schubert], [ 9960eefd307SCy Schubert AC_MSG_RESULT(void) 9970eefd307SCy Schubert AC_DEFINE([HMAC_INIT_EX_RETURNS_VOID], 1, [If HMAC_Init_ex() returns void]) 9980eefd307SCy Schubert]) 9990eefd307SCy Schubertfi 10000eefd307SCy Schubert 10018ed2b524SDag-Erling Smørgravfi 100205ab2901SDag-Erling SmørgravAC_SUBST(SSLLIB) 10038ed2b524SDag-Erling Smørgrav 1004091e9e46SCy Schubert# libbsd 1005f44e67d1SCy SchubertAC_ARG_WITH([libbsd], AS_HELP_STRING([--with-libbsd],[Use portable libbsd functions]), [ 1006091e9e46SCy Schubert AC_CHECK_HEADERS([bsd/string.h bsd/stdlib.h],,, [AC_INCLUDES_DEFAULT]) 1007091e9e46SCy Schubert if test "x$ac_cv_header_bsd_string_h" = xyes -a "x$ac_cv_header_bsd_stdlib_h" = xyes; then 1008091e9e46SCy Schubert for func in strlcpy strlcat arc4random arc4random_uniform reallocarray; do 1009091e9e46SCy Schubert AC_SEARCH_LIBS([$func], [bsd], [ 1010091e9e46SCy Schubert AC_DEFINE(HAVE_LIBBSD, 1, [Use portable libbsd functions]) 1011091e9e46SCy Schubert PC_LIBBSD_DEPENDENCY=libbsd 1012091e9e46SCy Schubert AC_SUBST(PC_LIBBSD_DEPENDENCY) 1013091e9e46SCy Schubert ]) 1014091e9e46SCy Schubert done 1015091e9e46SCy Schubert fi 1016091e9e46SCy Schubert]) 1017b7579f77SDag-Erling Smørgrav 1018f44e67d1SCy SchubertAC_ARG_ENABLE(sha1, AS_HELP_STRING([--disable-sha1],[Disable SHA1 RRSIG support, does not disable nsec3 support])) 101965b390aaSDag-Erling Smørgravcase "$enable_sha1" in 102065b390aaSDag-Erling Smørgrav no) 102165b390aaSDag-Erling Smørgrav ;; 102265b390aaSDag-Erling Smørgrav yes|*) 102365b390aaSDag-Erling Smørgrav AC_DEFINE([USE_SHA1], [1], [Define this to enable SHA1 support.]) 102465b390aaSDag-Erling Smørgrav ;; 102565b390aaSDag-Erling Smørgravesac 102665b390aaSDag-Erling Smørgrav 102765b390aaSDag-Erling Smørgrav 1028f44e67d1SCy SchubertAC_ARG_ENABLE(sha2, AS_HELP_STRING([--disable-sha2],[Disable SHA256 and SHA512 RRSIG support])) 1029b7579f77SDag-Erling Smørgravcase "$enable_sha2" in 1030b7579f77SDag-Erling Smørgrav no) 1031b7579f77SDag-Erling Smørgrav ;; 1032b7579f77SDag-Erling Smørgrav yes|*) 1033b7579f77SDag-Erling Smørgrav AC_DEFINE([USE_SHA2], [1], [Define this to enable SHA256 and SHA512 support.]) 1034b7579f77SDag-Erling Smørgrav ;; 1035b7579f77SDag-Erling Smørgravesac 1036b7579f77SDag-Erling Smørgrav 1037f44e67d1SCy SchubertAC_ARG_ENABLE(subnet, AS_HELP_STRING([--enable-subnet],[Enable client subnet])) 103865b390aaSDag-Erling Smørgravcase "$enable_subnet" in 103965b390aaSDag-Erling Smørgrav yes) 104065b390aaSDag-Erling Smørgrav AC_DEFINE([CLIENT_SUBNET], [1], [Define this to enable client subnet option.]) 104165b390aaSDag-Erling Smørgrav SUBNET_OBJ="edns-subnet.lo subnetmod.lo addrtree.lo subnet-whitelist.lo" 104265b390aaSDag-Erling Smørgrav AC_SUBST(SUBNET_OBJ) 104365b390aaSDag-Erling Smørgrav SUBNET_HEADER='$(srcdir)/edns-subnet/subnetmod.h $(srcdir)/edns-subnet/edns-subnet.h $(srcdir)/edns-subnet/subnet-whitelist.h $(srcdir)/edns-subnet/addrtree.h' 104465b390aaSDag-Erling Smørgrav AC_SUBST(SUBNET_HEADER) 104565b390aaSDag-Erling Smørgrav ;; 104665b390aaSDag-Erling Smørgrav no|*) 104765b390aaSDag-Erling Smørgrav ;; 104865b390aaSDag-Erling Smørgravesac 104965b390aaSDag-Erling Smørgrav 105024e36522SCy Schubert# check whether gost also works 1051b7579f77SDag-Erling SmørgravAC_DEFUN([AC_CHECK_GOST_WORKS], 1052b7579f77SDag-Erling Smørgrav[AC_REQUIRE([AC_PROG_CC]) 1053b7579f77SDag-Erling SmørgravAC_MSG_CHECKING([if GOST works]) 1054b7579f77SDag-Erling Smørgravif test c${cross_compiling} = cno; then 1055b7579f77SDag-Erling SmørgravBAKCFLAGS="$CFLAGS" 1056b7579f77SDag-Erling Smørgravif test -n "$ssldir"; then 105724e36522SCy Schubert CFLAGS="$CFLAGS -Wl,-rpath,$ssldir_lib" 1058b7579f77SDag-Erling Smørgravfi 1059b7579f77SDag-Erling SmørgravAC_RUN_IFELSE([AC_LANG_SOURCE([[ 1060b7579f77SDag-Erling Smørgrav#include <string.h> 1061b7579f77SDag-Erling Smørgrav#include <openssl/ssl.h> 1062b7579f77SDag-Erling Smørgrav#include <openssl/evp.h> 1063b7579f77SDag-Erling Smørgrav#include <openssl/engine.h> 1064b7579f77SDag-Erling Smørgrav#include <openssl/conf.h> 106517d15b25SDag-Erling Smørgrav/* routine to load gost (from sldns) */ 1066b7579f77SDag-Erling Smørgravint load_gost_id(void) 1067b7579f77SDag-Erling Smørgrav{ 1068b7579f77SDag-Erling Smørgrav static int gost_id = 0; 1069b7579f77SDag-Erling Smørgrav const EVP_PKEY_ASN1_METHOD* meth; 1070b7579f77SDag-Erling Smørgrav ENGINE* e; 1071b7579f77SDag-Erling Smørgrav 1072b7579f77SDag-Erling Smørgrav if(gost_id) return gost_id; 1073b7579f77SDag-Erling Smørgrav 1074b7579f77SDag-Erling Smørgrav /* see if configuration loaded gost implementation from other engine*/ 1075b7579f77SDag-Erling Smørgrav meth = EVP_PKEY_asn1_find_str(NULL, "gost2001", -1); 1076b7579f77SDag-Erling Smørgrav if(meth) { 1077b7579f77SDag-Erling Smørgrav EVP_PKEY_asn1_get0_info(&gost_id, NULL, NULL, NULL, NULL, meth); 1078b7579f77SDag-Erling Smørgrav return gost_id; 1079b7579f77SDag-Erling Smørgrav } 1080b7579f77SDag-Erling Smørgrav 1081b7579f77SDag-Erling Smørgrav /* see if engine can be loaded already */ 1082b7579f77SDag-Erling Smørgrav e = ENGINE_by_id("gost"); 1083b7579f77SDag-Erling Smørgrav if(!e) { 1084b7579f77SDag-Erling Smørgrav /* load it ourself, in case statically linked */ 1085b7579f77SDag-Erling Smørgrav ENGINE_load_builtin_engines(); 1086b7579f77SDag-Erling Smørgrav ENGINE_load_dynamic(); 1087b7579f77SDag-Erling Smørgrav e = ENGINE_by_id("gost"); 1088b7579f77SDag-Erling Smørgrav } 1089b7579f77SDag-Erling Smørgrav if(!e) { 1090b7579f77SDag-Erling Smørgrav /* no gost engine in openssl */ 1091b7579f77SDag-Erling Smørgrav return 0; 1092b7579f77SDag-Erling Smørgrav } 1093b7579f77SDag-Erling Smørgrav if(!ENGINE_set_default(e, ENGINE_METHOD_ALL)) { 1094b7579f77SDag-Erling Smørgrav ENGINE_finish(e); 1095b7579f77SDag-Erling Smørgrav ENGINE_free(e); 1096b7579f77SDag-Erling Smørgrav return 0; 1097b7579f77SDag-Erling Smørgrav } 1098b7579f77SDag-Erling Smørgrav 1099b7579f77SDag-Erling Smørgrav meth = EVP_PKEY_asn1_find_str(&e, "gost2001", -1); 1100b7579f77SDag-Erling Smørgrav if(!meth) { 1101b7579f77SDag-Erling Smørgrav /* algo not found */ 1102b7579f77SDag-Erling Smørgrav ENGINE_finish(e); 1103b7579f77SDag-Erling Smørgrav ENGINE_free(e); 1104b7579f77SDag-Erling Smørgrav return 0; 1105b7579f77SDag-Erling Smørgrav } 1106b7579f77SDag-Erling Smørgrav EVP_PKEY_asn1_get0_info(&gost_id, NULL, NULL, NULL, NULL, meth); 1107b7579f77SDag-Erling Smørgrav return gost_id; 1108b7579f77SDag-Erling Smørgrav} 1109b7579f77SDag-Erling Smørgravint main(void) { 1110b7579f77SDag-Erling Smørgrav EVP_MD_CTX* ctx; 1111b7579f77SDag-Erling Smørgrav const EVP_MD* md; 1112b7579f77SDag-Erling Smørgrav unsigned char digest[64]; /* its a 256-bit digest, so uses 32 bytes */ 1113b7579f77SDag-Erling Smørgrav const char* str = "Hello world"; 1114b7579f77SDag-Erling Smørgrav const unsigned char check[] = { 1115b7579f77SDag-Erling Smørgrav 0x40 , 0xed , 0xf8 , 0x56 , 0x5a , 0xc5 , 0x36 , 0xe1 , 1116b7579f77SDag-Erling Smørgrav 0x33 , 0x7c , 0x7e , 0x87 , 0x62 , 0x1c , 0x42 , 0xe0 , 1117b7579f77SDag-Erling Smørgrav 0x17 , 0x1b , 0x5e , 0xce , 0xa8 , 0x46 , 0x65 , 0x4d , 1118b7579f77SDag-Erling Smørgrav 0x8d , 0x3e , 0x22 , 0x9b , 0xe1 , 0x30 , 0x19 , 0x9d 1119b7579f77SDag-Erling Smørgrav }; 1120b7579f77SDag-Erling Smørgrav OPENSSL_config(NULL); 1121b7579f77SDag-Erling Smørgrav (void)load_gost_id(); 1122b7579f77SDag-Erling Smørgrav md = EVP_get_digestbyname("md_gost94"); 1123b7579f77SDag-Erling Smørgrav if(!md) return 1; 1124b7579f77SDag-Erling Smørgrav memset(digest, 0, sizeof(digest)); 1125b7579f77SDag-Erling Smørgrav ctx = EVP_MD_CTX_create(); 1126b7579f77SDag-Erling Smørgrav if(!ctx) return 2; 1127b7579f77SDag-Erling Smørgrav if(!EVP_DigestInit_ex(ctx, md, NULL)) return 3; 1128b7579f77SDag-Erling Smørgrav if(!EVP_DigestUpdate(ctx, str, 10)) return 4; 1129b7579f77SDag-Erling Smørgrav if(!EVP_DigestFinal_ex(ctx, digest, NULL)) return 5; 1130b7579f77SDag-Erling Smørgrav /* uncomment to see the hash calculated. 1131b7579f77SDag-Erling Smørgrav {int i; 1132b7579f77SDag-Erling Smørgrav for(i=0; i<32; i++) 1133b7579f77SDag-Erling Smørgrav printf(" %2.2x", (int)digest[i]); 1134b7579f77SDag-Erling Smørgrav printf("\n");} 1135b7579f77SDag-Erling Smørgrav */ 1136b7579f77SDag-Erling Smørgrav if(memcmp(digest, check, sizeof(check)) != 0) 1137b7579f77SDag-Erling Smørgrav return 6; 1138b7579f77SDag-Erling Smørgrav return 0; 1139b7579f77SDag-Erling Smørgrav} 1140b7579f77SDag-Erling Smørgrav]])] , [eval "ac_cv_c_gost_works=yes"], [eval "ac_cv_c_gost_works=no"]) 1141b7579f77SDag-Erling SmørgravCFLAGS="$BAKCFLAGS" 1142b7579f77SDag-Erling Smørgravelse 1143b7579f77SDag-Erling Smørgraveval "ac_cv_c_gost_works=maybe" 1144b7579f77SDag-Erling Smørgravfi 1145b7579f77SDag-Erling SmørgravAC_MSG_RESULT($ac_cv_c_gost_works) 1146b7579f77SDag-Erling Smørgrav])dnl 1147b7579f77SDag-Erling Smørgrav 1148f44e67d1SCy SchubertAC_ARG_ENABLE(gost, AS_HELP_STRING([--disable-gost],[Disable GOST support])) 1149b7579f77SDag-Erling Smørgravuse_gost="no" 115005ab2901SDag-Erling Smørgravif test $USE_NSS = "no" -a $USE_NETTLE = "no"; then 1151b7579f77SDag-Erling Smørgravcase "$enable_gost" in 1152b7579f77SDag-Erling Smørgrav no) 1153b7579f77SDag-Erling Smørgrav ;; 1154b7579f77SDag-Erling Smørgrav *) 1155b7579f77SDag-Erling Smørgrav AC_CHECK_FUNC(EVP_PKEY_set_type_str, [:],[AC_MSG_ERROR([OpenSSL 1.0.0 is needed for GOST support])]) 1156b7579f77SDag-Erling Smørgrav AC_CHECK_FUNC(EC_KEY_new, [], [AC_MSG_ERROR([OpenSSL does not support ECC, needed for GOST support])]) 1157b7579f77SDag-Erling Smørgrav AC_CHECK_GOST_WORKS 11588ed2b524SDag-Erling Smørgrav if test "$ac_cv_c_gost_works" != no; then 1159b7579f77SDag-Erling Smørgrav use_gost="yes" 1160b7579f77SDag-Erling Smørgrav AC_DEFINE([USE_GOST], [1], [Define this to enable GOST support.]) 1161b7579f77SDag-Erling Smørgrav fi 1162b7579f77SDag-Erling Smørgrav ;; 1163b7579f77SDag-Erling Smørgravesac 116405ab2901SDag-Erling Smørgravfi dnl !USE_NSS && !USE_NETTLE 1165b7579f77SDag-Erling Smørgrav 1166f44e67d1SCy SchubertAC_ARG_ENABLE(ecdsa, AS_HELP_STRING([--disable-ecdsa],[Disable ECDSA support])) 1167b7579f77SDag-Erling Smørgravuse_ecdsa="no" 1168b7579f77SDag-Erling Smørgravcase "$enable_ecdsa" in 1169b7579f77SDag-Erling Smørgrav no) 1170b7579f77SDag-Erling Smørgrav ;; 1171b7579f77SDag-Erling Smørgrav *) 117205ab2901SDag-Erling Smørgrav if test $USE_NSS = "no" -a $USE_NETTLE = "no"; then 1173b7579f77SDag-Erling Smørgrav AC_CHECK_FUNC(ECDSA_sign, [], [AC_MSG_ERROR([OpenSSL does not support ECDSA: please upgrade or rerun with --disable-ecdsa])]) 1174b7579f77SDag-Erling Smørgrav AC_CHECK_FUNC(SHA384_Init, [], [AC_MSG_ERROR([OpenSSL does not support SHA384: please upgrade or rerun with --disable-ecdsa])]) 1175b7579f77SDag-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 1176b7579f77SDag-Erling Smørgrav#include <openssl/evp.h> 1177b7579f77SDag-Erling Smørgrav ]) 1178b7579f77SDag-Erling Smørgrav # see if OPENSSL 1.0.0 or later (has EVP MD and Verify independency) 1179b7579f77SDag-Erling Smørgrav AC_MSG_CHECKING([if openssl supports SHA2 and ECDSA with EVP]) 118024e36522SCy Schubert if grep OPENSSL_VERSION_TEXT $ssldir_include/openssl/opensslv.h | grep "OpenSSL" >/dev/null; then 118124e36522SCy Schubert if grep OPENSSL_VERSION_NUMBER $ssldir_include/openssl/opensslv.h | grep 0x0 >/dev/null; then 1182b7579f77SDag-Erling Smørgrav AC_MSG_RESULT([no]) 1183b7579f77SDag-Erling Smørgrav AC_DEFINE_UNQUOTED([USE_ECDSA_EVP_WORKAROUND], [1], [Define this to enable an EVP workaround for older openssl]) 1184b7579f77SDag-Erling Smørgrav else 1185b7579f77SDag-Erling Smørgrav AC_MSG_RESULT([yes]) 1186b7579f77SDag-Erling Smørgrav fi 1187ff825849SDag-Erling Smørgrav else 1188ff825849SDag-Erling Smørgrav # not OpenSSL, thus likely LibreSSL, which supports it 1189ff825849SDag-Erling Smørgrav AC_MSG_RESULT([yes]) 1190ff825849SDag-Erling Smørgrav fi 11918ed2b524SDag-Erling Smørgrav fi 1192b7579f77SDag-Erling Smørgrav # we now know we have ECDSA and the required curves. 1193b7579f77SDag-Erling Smørgrav AC_DEFINE_UNQUOTED([USE_ECDSA], [1], [Define this to enable ECDSA support.]) 1194b7579f77SDag-Erling Smørgrav use_ecdsa="yes" 1195b7579f77SDag-Erling Smørgrav ;; 1196b7579f77SDag-Erling Smørgravesac 1197b7579f77SDag-Erling Smørgrav 1198f44e67d1SCy SchubertAC_ARG_ENABLE(dsa, AS_HELP_STRING([--disable-dsa],[Disable DSA support])) 1199e2d15004SDag-Erling Smørgravuse_dsa="no" 1200bc892140SDag-Erling Smørgravcase "$enable_dsa" in 1201091e9e46SCy Schubert yes) 1202e2d15004SDag-Erling Smørgrav # detect if DSA is supported, and turn it off if not. 1203971980c3SDag-Erling Smørgrav if test $USE_NSS = "no" -a $USE_NETTLE = "no"; then 1204bc892140SDag-Erling Smørgrav AC_CHECK_FUNC(DSA_SIG_new, [ 120557bddd21SDag-Erling Smørgrav AC_CHECK_TYPE(DSA_SIG*, [ 1206e2d15004SDag-Erling Smørgrav AC_DEFINE_UNQUOTED([USE_DSA], [1], [Define this to enable DSA support.]) 1207e2d15004SDag-Erling Smørgrav ], [if test "x$enable_dsa" = "xyes"; then AC_MSG_ERROR([OpenSSL does not support DSA and you used --enable-dsa.]) 120857bddd21SDag-Erling Smørgrav fi ], [ 120957bddd21SDag-Erling SmørgravAC_INCLUDES_DEFAULT 121057bddd21SDag-Erling Smørgrav#ifdef HAVE_OPENSSL_ERR_H 121157bddd21SDag-Erling Smørgrav#include <openssl/err.h> 121257bddd21SDag-Erling Smørgrav#endif 121357bddd21SDag-Erling Smørgrav 121457bddd21SDag-Erling Smørgrav#ifdef HAVE_OPENSSL_RAND_H 121557bddd21SDag-Erling Smørgrav#include <openssl/rand.h> 121657bddd21SDag-Erling Smørgrav#endif 121757bddd21SDag-Erling Smørgrav 121857bddd21SDag-Erling Smørgrav#ifdef HAVE_OPENSSL_CONF_H 121957bddd21SDag-Erling Smørgrav#include <openssl/conf.h> 122057bddd21SDag-Erling Smørgrav#endif 122157bddd21SDag-Erling Smørgrav 122257bddd21SDag-Erling Smørgrav#ifdef HAVE_OPENSSL_ENGINE_H 122357bddd21SDag-Erling Smørgrav#include <openssl/engine.h> 122457bddd21SDag-Erling Smørgrav#endif 122557bddd21SDag-Erling Smørgrav ]) 122657bddd21SDag-Erling Smørgrav ], [if test "x$enable_dsa" = "xyes"; then AC_MSG_ERROR([OpenSSL does not support DSA and you used --enable-dsa.]) 1227e2d15004SDag-Erling Smørgrav fi ]) 1228971980c3SDag-Erling Smørgrav else 1229971980c3SDag-Erling Smørgrav AC_DEFINE_UNQUOTED([USE_DSA], [1], [Define this to enable DSA support.]) 1230971980c3SDag-Erling Smørgrav fi 1231e2d15004SDag-Erling Smørgrav ;; 1232091e9e46SCy Schubert *) 1233091e9e46SCy Schubert # disable dsa by default, RFC 8624 section 3.1, validators MUST NOT 1234091e9e46SCy Schubert # support DSA for DNSSEC Validation. 1235091e9e46SCy Schubert ;; 1236e2d15004SDag-Erling Smørgravesac 1237e2d15004SDag-Erling Smørgrav 12385469a995SCy SchubertAC_ARG_WITH(deprecate-rsa-1024, AS_HELP_STRING([--with-deprecate-rsa-1024],[Deprecate RSA 1024 bit length, makes that an unsupported key, for use when OpenSSL FIPS refuses 1024 bit verification])) 12395469a995SCy Schubertif test "$with_deprecate_rsa_1024" = "yes"; then 12405469a995SCy Schubert AC_DEFINE([DEPRECATE_RSA_1024], [1], [Deprecate RSA 1024 bit length, makes that an unsupported key]) 12415469a995SCy Schubertfi 12425469a995SCy Schubert 1243f44e67d1SCy SchubertAC_ARG_ENABLE(ed25519, AS_HELP_STRING([--disable-ed25519],[Disable ED25519 support])) 1244c7f4d7adSDag-Erling Smørgravuse_ed25519="no" 1245c7f4d7adSDag-Erling Smørgravcase "$enable_ed25519" in 1246c7f4d7adSDag-Erling Smørgrav no) 1247c7f4d7adSDag-Erling Smørgrav ;; 1248c7f4d7adSDag-Erling Smørgrav *) 1249c7f4d7adSDag-Erling Smørgrav if test $USE_NSS = "no" -a $USE_NETTLE = "no"; then 1250c7f4d7adSDag-Erling Smørgrav AC_CHECK_DECLS([NID_ED25519], [ 1251c7f4d7adSDag-Erling Smørgrav use_ed25519="yes" 1252c7f4d7adSDag-Erling Smørgrav ], [ if test "x$enable_ed25519" = "xyes"; then AC_MSG_ERROR([OpenSSL does not support ED25519 and you used --enable-ed25519.]) 1253c7f4d7adSDag-Erling Smørgrav fi ], [AC_INCLUDES_DEFAULT 1254c7f4d7adSDag-Erling Smørgrav#include <openssl/evp.h> 1255c7f4d7adSDag-Erling Smørgrav ]) 1256c7f4d7adSDag-Erling Smørgrav fi 1257971980c3SDag-Erling Smørgrav if test $USE_NETTLE = "yes"; then 1258971980c3SDag-Erling Smørgrav AC_CHECK_HEADERS([nettle/eddsa.h], use_ed25519="yes",, [AC_INCLUDES_DEFAULT]) 1259971980c3SDag-Erling Smørgrav fi 1260971980c3SDag-Erling Smørgrav if test $use_ed25519 = "yes"; then 1261971980c3SDag-Erling Smørgrav AC_DEFINE_UNQUOTED([USE_ED25519], [1], [Define this to enable ED25519 support.]) 1262971980c3SDag-Erling Smørgrav fi 1263c7f4d7adSDag-Erling Smørgrav ;; 1264c7f4d7adSDag-Erling Smørgravesac 1265e2d15004SDag-Erling Smørgrav 1266f44e67d1SCy SchubertAC_ARG_ENABLE(ed448, AS_HELP_STRING([--disable-ed448],[Disable ED448 support])) 12670fb34990SDag-Erling Smørgravuse_ed448="no" 12680fb34990SDag-Erling Smørgravcase "$enable_ed448" in 12690fb34990SDag-Erling Smørgrav no) 12700fb34990SDag-Erling Smørgrav ;; 12710fb34990SDag-Erling Smørgrav *) 12720fb34990SDag-Erling Smørgrav if test $USE_NSS = "no" -a $USE_NETTLE = "no"; then 12730fb34990SDag-Erling Smørgrav AC_CHECK_DECLS([NID_ED448], [ 12740fb34990SDag-Erling Smørgrav use_ed448="yes" 12750fb34990SDag-Erling Smørgrav ], [ if test "x$enable_ed448" = "xyes"; then AC_MSG_ERROR([OpenSSL does not support ED448 and you used --enable-ed448.]) 12760fb34990SDag-Erling Smørgrav fi ], [AC_INCLUDES_DEFAULT 12770fb34990SDag-Erling Smørgrav#include <openssl/evp.h> 12780fb34990SDag-Erling Smørgrav ]) 12790fb34990SDag-Erling Smørgrav fi 12800fb34990SDag-Erling Smørgrav if test $use_ed448 = "yes"; then 12810fb34990SDag-Erling Smørgrav AC_DEFINE_UNQUOTED([USE_ED448], [1], [Define this to enable ED448 support.]) 12820fb34990SDag-Erling Smørgrav fi 12830fb34990SDag-Erling Smørgrav ;; 12840fb34990SDag-Erling Smørgravesac 12850fb34990SDag-Erling Smørgrav 1286f44e67d1SCy SchubertAC_ARG_ENABLE(event-api, AS_HELP_STRING([--enable-event-api],[Enable (experimental) pluggable event base libunbound API installed to unbound-event.h])) 128717d15b25SDag-Erling Smørgravcase "$enable_event_api" in 128817d15b25SDag-Erling Smørgrav yes) 1289e2d15004SDag-Erling Smørgrav AC_SUBST(UNBOUND_EVENT_INSTALL, [unbound-event-install]) 1290e2d15004SDag-Erling Smørgrav AC_SUBST(UNBOUND_EVENT_UNINSTALL, [unbound-event-uninstall]) 129117d15b25SDag-Erling Smørgrav ;; 129217d15b25SDag-Erling Smørgrav *) 129317d15b25SDag-Erling Smørgrav ;; 129417d15b25SDag-Erling Smørgravesac 129517d15b25SDag-Erling Smørgrav 1296f44e67d1SCy SchubertAC_ARG_ENABLE(tfo-client, AS_HELP_STRING([--enable-tfo-client],[Enable TCP Fast Open for client mode])) 1297b5663de9SDag-Erling Smørgravcase "$enable_tfo_client" in 1298b5663de9SDag-Erling Smørgrav yes) 12995469a995SCy Schubert case "$host_os" in 13005469a995SCy Schubert linux*) AC_CHECK_DECL([MSG_FASTOPEN], [AC_MSG_WARN([Check the platform specific TFO kernel parameters are correctly configured to support client mode TFO])], 1301b5663de9SDag-Erling Smørgrav [AC_MSG_ERROR([TCP Fast Open is not available for client mode: please rerun without --enable-tfo-client])], 1302b5663de9SDag-Erling Smørgrav [AC_INCLUDES_DEFAULT 1303b5663de9SDag-Erling Smørgrav#include <netinet/tcp.h> 1304b5663de9SDag-Erling Smørgrav]) 1305b5663de9SDag-Erling Smørgrav AC_DEFINE_UNQUOTED([USE_MSG_FASTOPEN], [1], [Define this to enable client TCP Fast Open.]) 1306b5663de9SDag-Erling Smørgrav ;; 13075469a995SCy Schubert darwin*) AC_CHECK_DECL([CONNECT_RESUME_ON_READ_WRITE], [AC_MSG_WARN([Check the platform specific TFO kernel parameters are correctly configured to support client mode TFO])], 1308b5663de9SDag-Erling Smørgrav [AC_MSG_ERROR([TCP Fast Open is not available for client mode: please rerun without --enable-tfo-client])], 1309b5663de9SDag-Erling Smørgrav [AC_INCLUDES_DEFAULT 1310b5663de9SDag-Erling Smørgrav#include <sys/socket.h> 1311b5663de9SDag-Erling Smørgrav]) 1312b5663de9SDag-Erling Smørgrav AC_DEFINE_UNQUOTED([USE_OSX_MSG_FASTOPEN], [1], [Define this to enable client TCP Fast Open.]) 1313b5663de9SDag-Erling Smørgrav ;; 1314b5663de9SDag-Erling Smørgrav esac 1315b5663de9SDag-Erling Smørgrav ;; 1316b5663de9SDag-Erling Smørgrav no|*) 1317b5663de9SDag-Erling Smørgrav ;; 1318b5663de9SDag-Erling Smørgravesac 1319b5663de9SDag-Erling Smørgrav 1320f44e67d1SCy SchubertAC_ARG_ENABLE(tfo-server, AS_HELP_STRING([--enable-tfo-server],[Enable TCP Fast Open for server mode])) 1321b5663de9SDag-Erling Smørgravcase "$enable_tfo_server" in 1322b5663de9SDag-Erling Smørgrav yes) 1323b5663de9SDag-Erling Smørgrav AC_CHECK_DECL([TCP_FASTOPEN], [AC_MSG_WARN([Check the platform specific TFO kernel parameters are correctly configured to support server mode TFO])], [AC_MSG_ERROR([TCP Fast Open is not available for server mode: please rerun without --enable-tfo-server])], [AC_INCLUDES_DEFAULT 1324b5663de9SDag-Erling Smørgrav#include <netinet/tcp.h> 1325b5663de9SDag-Erling Smørgrav ]) 1326b5663de9SDag-Erling Smørgrav AC_DEFINE_UNQUOTED([USE_TCP_FASTOPEN], [1], [Define this to enable server TCP Fast Open.]) 1327b5663de9SDag-Erling Smørgrav ;; 1328b5663de9SDag-Erling Smørgrav no|*) 1329b5663de9SDag-Erling Smørgrav ;; 1330b5663de9SDag-Erling Smørgravesac 1331b5663de9SDag-Erling Smørgrav 1332b7579f77SDag-Erling Smørgrav# check for libevent 1333f44e67d1SCy SchubertAC_ARG_WITH(libevent, AS_HELP_STRING([--with-libevent=pathname],[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.]), 133425039b37SCy Schubert [ ],[ with_libevent="no" ]) 133525039b37SCy Schubertif test "x_$with_libevent" != x_no; then 133625039b37SCy Schubert AC_DEFINE([USE_LIBEVENT], [1], [Define if you enable libevent]) 1337b7579f77SDag-Erling Smørgrav AC_MSG_CHECKING(for libevent) 133825039b37SCy Schubert if test "x_$with_libevent" = x_ -o "x_$with_libevent" = x_yes; then 133925039b37SCy Schubert with_libevent="/usr/local /opt/local /usr/lib /usr/pkg /usr/sfw /usr" 1340b7579f77SDag-Erling Smørgrav fi 134125039b37SCy Schubert for dir in $with_libevent; do 1342b7579f77SDag-Erling Smørgrav thedir="$dir" 134317d15b25SDag-Erling Smørgrav if test -f "$dir/include/event.h" -o -f "$dir/include/event2/event.h"; then 1344b7579f77SDag-Erling Smørgrav found_libevent="yes" 1345b7579f77SDag-Erling Smørgrav dnl assume /usr is in default path. 1346b7579f77SDag-Erling Smørgrav if test "$thedir" != "/usr"; then 1347b7579f77SDag-Erling Smørgrav CPPFLAGS="$CPPFLAGS -I$thedir/include" 1348b7579f77SDag-Erling Smørgrav fi 1349b7579f77SDag-Erling Smørgrav break; 1350b7579f77SDag-Erling Smørgrav fi 1351b7579f77SDag-Erling Smørgrav done 1352b7579f77SDag-Erling Smørgrav if test x_$found_libevent != x_yes; then 1353b7579f77SDag-Erling Smørgrav if test -f "$dir/event.h" -a \( -f "$dir/libevent.la" -o -f "$dir/libev.la" \) ; then 1354b7579f77SDag-Erling Smørgrav # libevent source directory 1355b7579f77SDag-Erling Smørgrav AC_MSG_RESULT(found in $thedir) 1356b7579f77SDag-Erling Smørgrav CPPFLAGS="$CPPFLAGS -I$thedir -I$thedir/include" 1357b7579f77SDag-Erling Smørgrav BAK_LDFLAGS_SET="1" 1358b7579f77SDag-Erling Smørgrav BAK_LDFLAGS="$LDFLAGS" 1359b7579f77SDag-Erling Smørgrav # remove evdns from linking 1360b7579f77SDag-Erling Smørgrav mkdir build >/dev/null 2>&1 1361b7579f77SDag-Erling Smørgrav mkdir build/libevent >/dev/null 2>&1 1362b7579f77SDag-Erling Smørgrav mkdir build/libevent/.libs >/dev/null 2>&1 1363b7579f77SDag-Erling Smørgrav ev_files_o=`ls $thedir/*.o | grep -v evdns\.o | grep -v bufferevent_openssl\.o` 1364b7579f77SDag-Erling Smørgrav ev_files_lo=`ls $thedir/*.lo | grep -v evdns\.lo | grep -v bufferevent_openssl\.lo` 1365b7579f77SDag-Erling Smørgrav ev_files_libso=`ls $thedir/.libs/*.o | grep -v evdns\.o | grep -v bufferevent_openssl\.o` 1366b7579f77SDag-Erling Smørgrav cp $ev_files_o build/libevent 1367b7579f77SDag-Erling Smørgrav cp $ev_files_lo build/libevent 1368b7579f77SDag-Erling Smørgrav cp $ev_files_libso build/libevent/.libs 1369b7579f77SDag-Erling Smørgrav LATE_LDFLAGS="build/libevent/*.lo -lm" 1370b7579f77SDag-Erling Smørgrav LDFLAGS="build/libevent/*.o $LDFLAGS -lm" 1371b7579f77SDag-Erling Smørgrav else 137225039b37SCy Schubert AC_MSG_ERROR([Cannot find the libevent library in $with_libevent 1373b7579f77SDag-Erling SmørgravYou can restart ./configure --with-libevent=no to use a builtin alternative. 1374b7579f77SDag-Erling SmørgravPlease note that this alternative is not as capable as libevent when using 1375b7579f77SDag-Erling Smørgravlarge outgoing port ranges. ]) 1376b7579f77SDag-Erling Smørgrav fi 1377b7579f77SDag-Erling Smørgrav else 1378b7579f77SDag-Erling Smørgrav AC_MSG_RESULT(found in $thedir) 137917d15b25SDag-Erling Smørgrav dnl if event2 exists and no event lib in dir itself, use subdir 138017d15b25SDag-Erling Smørgrav if test ! -f $thedir/lib/libevent.a -a ! -f $thedir/lib/libevent.so -a -d "$thedir/lib/event2"; then 138117d15b25SDag-Erling Smørgrav LDFLAGS="$LDFLAGS -L$thedir/lib/event2" 138217d15b25SDag-Erling Smørgrav ACX_RUNTIME_PATH_ADD([$thedir/lib/event2]) 138317d15b25SDag-Erling Smørgrav else 1384b7579f77SDag-Erling Smørgrav dnl assume /usr is in default path, do not add "". 1385b7579f77SDag-Erling Smørgrav if test "$thedir" != "/usr" -a "$thedir" != ""; then 1386b7579f77SDag-Erling Smørgrav LDFLAGS="$LDFLAGS -L$thedir/lib" 1387b7579f77SDag-Erling Smørgrav ACX_RUNTIME_PATH_ADD([$thedir/lib]) 1388b7579f77SDag-Erling Smørgrav fi 1389b7579f77SDag-Erling Smørgrav fi 139017d15b25SDag-Erling Smørgrav fi 1391b7579f77SDag-Erling Smørgrav # check for library used by libevent after 1.3c 1392b7579f77SDag-Erling Smørgrav AC_SEARCH_LIBS([clock_gettime], [rt]) 1393b7579f77SDag-Erling Smørgrav 1394b7579f77SDag-Erling Smørgrav # is the event.h header libev or libevent? 1395b7579f77SDag-Erling Smørgrav AC_CHECK_HEADERS([event.h],,, [AC_INCLUDES_DEFAULT]) 1396b7579f77SDag-Erling Smørgrav AC_CHECK_DECL(EV_VERSION_MAJOR, [ 1397b7579f77SDag-Erling Smørgrav AC_SEARCH_LIBS(event_set, [ev]) 1398b7579f77SDag-Erling Smørgrav ],[ 1399b7579f77SDag-Erling Smørgrav AC_SEARCH_LIBS(event_set, [event]) 1400b7579f77SDag-Erling Smørgrav ],[AC_INCLUDES_DEFAULT 1401b7579f77SDag-Erling Smørgrav#include <event.h> 1402b7579f77SDag-Erling Smørgrav ]) 1403b7579f77SDag-Erling Smørgrav AC_CHECK_FUNCS([event_base_free]) # only in libevent 1.2 and later 1404b7579f77SDag-Erling Smørgrav AC_CHECK_FUNCS([event_base_once]) # only in libevent 1.4.1 and later 1405b7579f77SDag-Erling Smørgrav AC_CHECK_FUNCS([event_base_new]) # only in libevent 1.4.1 and later 1406b7579f77SDag-Erling Smørgrav AC_CHECK_FUNCS([event_base_get_method]) # only in libevent 1.4.3 and later 1407b7579f77SDag-Erling Smørgrav AC_CHECK_FUNCS([ev_loop]) # only in libev. (tested on 3.51) 1408b7579f77SDag-Erling Smørgrav AC_CHECK_FUNCS([ev_default_loop]) # only in libev. (tested on 4.00) 1409e86b9096SDag-Erling Smørgrav AC_CHECK_FUNCS([event_assign]) # in libevent, for thread-safety 1410e86b9096SDag-Erling Smørgrav AC_CHECK_DECLS([evsignal_assign], [], [], [AC_INCLUDES_DEFAULT 1411e86b9096SDag-Erling Smørgrav#ifdef HAVE_EVENT_H 1412e86b9096SDag-Erling Smørgrav# include <event.h> 1413e86b9096SDag-Erling Smørgrav#else 1414e86b9096SDag-Erling Smørgrav# include "event2/event.h" 1415e86b9096SDag-Erling Smørgrav#endif 1416e86b9096SDag-Erling Smørgrav ]) 1417bc892140SDag-Erling Smørgrav PC_LIBEVENT_DEPENDENCY="libevent" 1418bc892140SDag-Erling Smørgrav AC_SUBST(PC_LIBEVENT_DEPENDENCY) 1419b7579f77SDag-Erling Smørgrav if test -n "$BAK_LDFLAGS_SET"; then 1420b7579f77SDag-Erling Smørgrav LDFLAGS="$BAK_LDFLAGS" 1421b7579f77SDag-Erling Smørgrav fi 1422b7579f77SDag-Erling Smørgravelse 1423b7579f77SDag-Erling Smørgrav AC_DEFINE(USE_MINI_EVENT, 1, [Define if you want to use internal select based events]) 1424b7579f77SDag-Erling Smørgravfi 1425b7579f77SDag-Erling Smørgrav 1426b7579f77SDag-Erling Smørgrav# check for libexpat 1427f44e67d1SCy SchubertAC_ARG_WITH(libexpat, AS_HELP_STRING([--with-libexpat=path],[specify explicit path for libexpat.]), 1428b7579f77SDag-Erling Smørgrav [ ],[ withval="/usr/local /opt/local /usr/lib /usr/pkg /usr/sfw /usr" ]) 1429b7579f77SDag-Erling SmørgravAC_MSG_CHECKING(for libexpat) 1430b7579f77SDag-Erling Smørgravfound_libexpat="no" 1431b7579f77SDag-Erling Smørgravfor dir in $withval ; do 1432b7579f77SDag-Erling Smørgrav if test -f "$dir/include/expat.h"; then 1433b7579f77SDag-Erling Smørgrav found_libexpat="yes" 1434b7579f77SDag-Erling Smørgrav dnl assume /usr is in default path. 1435b7579f77SDag-Erling Smørgrav if test "$dir" != "/usr"; then 1436b7579f77SDag-Erling Smørgrav CPPFLAGS="$CPPFLAGS -I$dir/include" 1437b7579f77SDag-Erling Smørgrav LDFLAGS="$LDFLAGS -L$dir/lib" 1438b7579f77SDag-Erling Smørgrav fi 1439b7579f77SDag-Erling Smørgrav AC_MSG_RESULT(found in $dir) 1440b7579f77SDag-Erling Smørgrav break; 1441b7579f77SDag-Erling Smørgrav fi 1442b7579f77SDag-Erling Smørgravdone 1443b7579f77SDag-Erling Smørgravif test x_$found_libexpat != x_yes; then 1444f44e67d1SCy Schubert AC_MSG_ERROR([Could not find libexpat, expat.h]) 1445b7579f77SDag-Erling Smørgravfi 1446b7579f77SDag-Erling SmørgravAC_CHECK_HEADERS([expat.h],,, [AC_INCLUDES_DEFAULT]) 144705ab2901SDag-Erling SmørgravAC_CHECK_DECLS([XML_StopParser], [], [], [AC_INCLUDES_DEFAULT 144805ab2901SDag-Erling Smørgrav#include <expat.h> 144905ab2901SDag-Erling Smørgrav]) 1450b7579f77SDag-Erling Smørgrav 14510fb34990SDag-Erling Smørgrav# hiredis (redis C client for cachedb) 1452f44e67d1SCy SchubertAC_ARG_WITH(libhiredis, AS_HELP_STRING([--with-libhiredis=path],[specify explicit path for libhiredis.]), 14530fb34990SDag-Erling Smørgrav [ ],[ withval="no" ]) 14540fb34990SDag-Erling Smørgravfound_libhiredis="no" 14550fb34990SDag-Erling Smørgravif test x_$withval = x_yes -o x_$withval != x_no; then 14564c75e3aaSDag-Erling Smørgrav AC_MSG_CHECKING(for libhiredis) 14570fb34990SDag-Erling Smørgrav if test x_$withval = x_ -o x_$withval = x_yes; then 14580fb34990SDag-Erling Smørgrav withval="/usr/local /opt/local /usr/lib /usr/pkg /usr/sfw /usr" 14590fb34990SDag-Erling Smørgrav fi 14600fb34990SDag-Erling Smørgrav for dir in $withval ; do 14610fb34990SDag-Erling Smørgrav if test -f "$dir/include/hiredis/hiredis.h"; then 14620fb34990SDag-Erling Smørgrav found_libhiredis="yes" 14630fb34990SDag-Erling Smørgrav dnl assume /usr is in default path. 14640fb34990SDag-Erling Smørgrav if test "$dir" != "/usr"; then 14650fb34990SDag-Erling Smørgrav CPPFLAGS="$CPPFLAGS -I$dir/include" 14660fb34990SDag-Erling Smørgrav LDFLAGS="$LDFLAGS -L$dir/lib" 14670fb34990SDag-Erling Smørgrav fi 14680fb34990SDag-Erling Smørgrav AC_MSG_RESULT(found in $dir) 14690fb34990SDag-Erling Smørgrav AC_DEFINE([USE_REDIS], [1], [Define this to use hiredis client.]) 14700fb34990SDag-Erling Smørgrav LIBS="$LIBS -lhiredis" 14710fb34990SDag-Erling Smørgrav break; 14720fb34990SDag-Erling Smørgrav fi 14730fb34990SDag-Erling Smørgrav done 14740fb34990SDag-Erling Smørgrav if test x_$found_libhiredis != x_yes; then 1475f44e67d1SCy Schubert AC_MSG_ERROR([Could not find libhiredis, hiredis.h]) 14760fb34990SDag-Erling Smørgrav fi 14770fb34990SDag-Erling Smørgrav AC_CHECK_HEADERS([hiredis/hiredis.h],,, [AC_INCLUDES_DEFAULT]) 14780fb34990SDag-Erling Smørgrav AC_CHECK_DECLS([redisConnect], [], [], [AC_INCLUDES_DEFAULT 14790fb34990SDag-Erling Smørgrav #include <hiredis/hiredis.h> 14800fb34990SDag-Erling Smørgrav ]) 14810fb34990SDag-Erling Smørgravfi 14820fb34990SDag-Erling Smørgrav 1483c0caa2e2SCy Schubert# nghttp2 1484f44e67d1SCy SchubertAC_ARG_WITH(libnghttp2, AS_HELP_STRING([--with-libnghttp2=path],[specify explicit path for libnghttp2.]), 1485c0caa2e2SCy Schubert [ ],[ withval="no" ]) 1486c0caa2e2SCy Schubertfound_libnghttp2="no" 1487c0caa2e2SCy Schubertif test x_$withval = x_yes -o x_$withval != x_no; then 1488c0caa2e2SCy Schubert AC_MSG_CHECKING(for libnghttp2) 1489c0caa2e2SCy Schubert if test x_$withval = x_ -o x_$withval = x_yes; then 1490c0caa2e2SCy Schubert withval="/usr/local /opt/local /usr/lib /usr/pkg /usr/sfw /usr" 1491c0caa2e2SCy Schubert fi 1492c0caa2e2SCy Schubert for dir in $withval ; do 1493c0caa2e2SCy Schubert if test -f "$dir/include/nghttp2/nghttp2.h"; then 1494c0caa2e2SCy Schubert found_libnghttp2="yes" 1495c0caa2e2SCy Schubert dnl assume /usr is in default path. 1496c0caa2e2SCy Schubert if test "$dir" != "/usr"; then 1497c0caa2e2SCy Schubert CPPFLAGS="$CPPFLAGS -I$dir/include" 1498c0caa2e2SCy Schubert LDFLAGS="$LDFLAGS -L$dir/lib" 1499c0caa2e2SCy Schubert fi 1500c0caa2e2SCy Schubert AC_MSG_RESULT(found in $dir) 1501c0caa2e2SCy Schubert AC_DEFINE([HAVE_NGHTTP2], [1], [Define this to use nghttp2 client.]) 1502c0caa2e2SCy Schubert LIBS="$LIBS -lnghttp2" 1503c0caa2e2SCy Schubert break; 1504c0caa2e2SCy Schubert fi 1505c0caa2e2SCy Schubert done 1506c0caa2e2SCy Schubert if test x_$found_libnghttp2 != x_yes; then 1507f44e67d1SCy Schubert AC_MSG_ERROR([Could not find libnghttp2, nghttp2.h]) 1508c0caa2e2SCy Schubert fi 1509c0caa2e2SCy Schubert AC_CHECK_HEADERS([nghttp2/nghttp2.h],,, [AC_INCLUDES_DEFAULT]) 1510c0caa2e2SCy Schubert AC_CHECK_DECLS([nghttp2_session_server_new], [], [], [AC_INCLUDES_DEFAULT 1511c0caa2e2SCy Schubert #include <nghttp2/nghttp2.h> 1512c0caa2e2SCy Schubert ]) 1513c0caa2e2SCy Schubertfi 1514c0caa2e2SCy Schubert 15150eefd307SCy Schubert# set static linking for uninstalled libraries if requested 1516b7579f77SDag-Erling SmørgravAC_SUBST(staticexe) 1517b7579f77SDag-Erling Smørgravstaticexe="" 1518f44e67d1SCy SchubertAC_ARG_ENABLE(static-exe, AS_HELP_STRING([--enable-static-exe],[ enable to compile executables statically against (event) uninstalled libs, for debug purposes ]), 1519b7579f77SDag-Erling Smørgrav , ) 1520b7579f77SDag-Erling Smørgravif test x_$enable_static_exe = x_yes; then 1521b7579f77SDag-Erling Smørgrav staticexe="-static" 1522b7579f77SDag-Erling Smørgrav if test "$on_mingw" = yes; then 1523b7579f77SDag-Erling Smørgrav staticexe="-all-static" 1524b5663de9SDag-Erling Smørgrav # for static compile, include gdi32 and zlib here. 1525971980c3SDag-Erling Smørgrav if echo $LIBS | grep 'lgdi32' >/dev/null; then 1526971980c3SDag-Erling Smørgrav : 1527971980c3SDag-Erling Smørgrav else 1528971980c3SDag-Erling Smørgrav LIBS="$LIBS -lgdi32" 1529971980c3SDag-Erling Smørgrav fi 15300a92a9fcSCy Schubert AC_CHECK_LIB([z], [compress], [ LIBS="$LIBS -lz" ]) 1531f44e67d1SCy Schubert LIBS="$LIBS -l:libssp.a" 1532b7579f77SDag-Erling Smørgrav fi 1533b7579f77SDag-Erling Smørgravfi 1534b7579f77SDag-Erling Smørgrav 15350eefd307SCy Schubert# set full static linking if requested 1536f44e67d1SCy SchubertAC_ARG_ENABLE(fully-static, AS_HELP_STRING([--enable-fully-static],[ enable to compile fully static ]), 15370eefd307SCy Schubert , ) 15380eefd307SCy Schubertif test x_$enable_fully_static = x_yes; then 15390eefd307SCy Schubert staticexe="-all-static" 15400eefd307SCy Schubert if test "$on_mingw" = yes; then 15410eefd307SCy Schubert # for static compile, include gdi32 and zlib here. 15420eefd307SCy Schubert if echo $LIBS | grep 'lgdi32' >/dev/null; then 15430eefd307SCy Schubert : 15440eefd307SCy Schubert else 15450eefd307SCy Schubert LIBS="$LIBS -lgdi32" 15460eefd307SCy Schubert fi 15470a92a9fcSCy Schubert AC_CHECK_LIB([z], [compress], [ LIBS="$LIBS -lz" ]) 1548f44e67d1SCy Schubert LIBS="$LIBS -l:libssp.a" 15490eefd307SCy Schubert fi 15500eefd307SCy Schubertfi 15513005e0a3SDag-Erling Smørgrav 1552b7579f77SDag-Erling Smørgrav# set lock checking if requested 1553f44e67d1SCy SchubertAC_ARG_ENABLE(lock_checks, AS_HELP_STRING([--enable-lock-checks],[ enable to check lock and unlock calls, for debug purposes ]), 1554b7579f77SDag-Erling Smørgrav , ) 1555b7579f77SDag-Erling Smørgravif test x_$enable_lock_checks = x_yes; then 1556b7579f77SDag-Erling Smørgrav AC_DEFINE(ENABLE_LOCK_CHECKS, 1, [Define if you want to use debug lock checking (slow).]) 1557b7579f77SDag-Erling Smørgrav CHECKLOCK_OBJ="checklocks.lo" 1558b7579f77SDag-Erling Smørgrav AC_SUBST(CHECKLOCK_OBJ) 1559b7579f77SDag-Erling Smørgravfi 1560b7579f77SDag-Erling Smørgrav 1561b7579f77SDag-Erling SmørgravACX_CHECK_GETADDRINFO_WITH_INCLUDES 1562b7579f77SDag-Erling Smørgravif test "$USE_WINSOCK" = 1; then 1563b7579f77SDag-Erling Smørgrav AC_DEFINE(UB_ON_WINDOWS, 1, [Use win32 resources and API]) 1564b7579f77SDag-Erling Smørgrav AC_CHECK_HEADERS([iphlpapi.h],,, [AC_INCLUDES_DEFAULT 1565b7579f77SDag-Erling Smørgrav#include <windows.h> 1566b7579f77SDag-Erling Smørgrav ]) 1567b7579f77SDag-Erling Smørgrav AC_CHECK_TOOL(WINDRES, windres) 15683bd4df0aSDag-Erling Smørgrav LIBS="$LIBS -liphlpapi -lcrypt32" 1569b7579f77SDag-Erling Smørgrav WINAPPS="unbound-service-install.exe unbound-service-remove.exe anchor-update.exe" 1570b7579f77SDag-Erling Smørgrav AC_SUBST(WINAPPS) 1571b7579f77SDag-Erling Smørgrav WIN_DAEMON_SRC="winrc/win_svc.c winrc/w_inst.c" 1572b7579f77SDag-Erling Smørgrav AC_SUBST(WIN_DAEMON_SRC) 1573b7579f77SDag-Erling Smørgrav WIN_DAEMON_OBJ="win_svc.lo w_inst.lo" 1574b7579f77SDag-Erling Smørgrav AC_SUBST(WIN_DAEMON_OBJ) 1575b7579f77SDag-Erling Smørgrav WIN_DAEMON_OBJ_LINK="rsrc_unbound.o" 1576b7579f77SDag-Erling Smørgrav AC_SUBST(WIN_DAEMON_OBJ_LINK) 1577b7579f77SDag-Erling Smørgrav WIN_HOST_OBJ_LINK="rsrc_unbound_host.o" 1578b7579f77SDag-Erling Smørgrav AC_SUBST(WIN_HOST_OBJ_LINK) 1579b7579f77SDag-Erling Smørgrav WIN_UBANCHOR_OBJ_LINK="rsrc_unbound_anchor.o log.lo locks.lo" 1580b7579f77SDag-Erling Smørgrav AC_SUBST(WIN_UBANCHOR_OBJ_LINK) 1581b7579f77SDag-Erling Smørgrav WIN_CONTROL_OBJ_LINK="rsrc_unbound_control.o" 1582b7579f77SDag-Erling Smørgrav AC_SUBST(WIN_CONTROL_OBJ_LINK) 1583b7579f77SDag-Erling Smørgrav WIN_CHECKCONF_OBJ_LINK="rsrc_unbound_checkconf.o" 1584b7579f77SDag-Erling Smørgrav AC_SUBST(WIN_CHECKCONF_OBJ_LINK) 1585a39a5a69SCy Schubert AC_DEFINE(__USE_MINGW_ANSI_STDIO, 1, [defined to use gcc ansi snprintf and sscanf that understands %lld when compiled for windows.]) 1586b7579f77SDag-Erling Smørgravfi 1587b7579f77SDag-Erling Smørgravif test $ac_cv_func_getaddrinfo = no; then 1588b7579f77SDag-Erling Smørgrav AC_LIBOBJ([fake-rfc2553]) 1589b7579f77SDag-Erling Smørgravfi 1590b7579f77SDag-Erling Smørgrav# check after getaddrinfo for its libraries 1591b7579f77SDag-Erling SmørgravACX_FUNC_IOCTLSOCKET 1592b7579f77SDag-Erling Smørgrav 1593b7579f77SDag-Erling Smørgrav# see if daemon(3) exists, and if it is deprecated. 1594b7579f77SDag-Erling SmørgravAC_CHECK_FUNCS([daemon]) 1595b7579f77SDag-Erling Smørgravif test $ac_cv_func_daemon = yes; then 1596b7579f77SDag-Erling Smørgrav ACX_FUNC_DEPRECATED([daemon], [(void)daemon(0, 0);], [ 1597b7579f77SDag-Erling Smørgrav#include <stdlib.h> 15985469a995SCy Schubert#include <unistd.h> 1599b7579f77SDag-Erling Smørgrav]) 1600b7579f77SDag-Erling Smørgravfi 1601b7579f77SDag-Erling Smørgrav 1602748bd829SDag-Erling SmørgravAC_CHECK_MEMBERS([struct sockaddr_un.sun_len],,,[ 1603748bd829SDag-Erling SmørgravAC_INCLUDES_DEFAULT 1604748bd829SDag-Erling Smørgrav#ifdef HAVE_SYS_UN_H 1605748bd829SDag-Erling Smørgrav#include <sys/un.h> 1606748bd829SDag-Erling Smørgrav#endif 1607748bd829SDag-Erling Smørgrav]) 1608b7579f77SDag-Erling SmørgravAC_CHECK_MEMBERS([struct in_pktinfo.ipi_spec_dst],,,[ 1609b7579f77SDag-Erling SmørgravAC_INCLUDES_DEFAULT 1610b7579f77SDag-Erling Smørgrav#if HAVE_SYS_PARAM_H 1611b7579f77SDag-Erling Smørgrav#include <sys/param.h> 1612b7579f77SDag-Erling Smørgrav#endif 1613b7579f77SDag-Erling Smørgrav 1614b7579f77SDag-Erling Smørgrav#ifdef HAVE_SYS_SOCKET_H 1615b7579f77SDag-Erling Smørgrav#include <sys/socket.h> 1616b7579f77SDag-Erling Smørgrav#endif 1617b7579f77SDag-Erling Smørgrav 1618b7579f77SDag-Erling Smørgrav#ifdef HAVE_SYS_UIO_H 1619b7579f77SDag-Erling Smørgrav#include <sys/uio.h> 1620b7579f77SDag-Erling Smørgrav#endif 1621b7579f77SDag-Erling Smørgrav 1622b7579f77SDag-Erling Smørgrav#ifdef HAVE_NETINET_IN_H 1623b7579f77SDag-Erling Smørgrav#include <netinet/in.h> 1624b7579f77SDag-Erling Smørgrav#endif 1625b7579f77SDag-Erling Smørgrav 1626f61ef7f6SDag-Erling Smørgrav#ifdef HAVE_NETINET_TCP_H 1627f61ef7f6SDag-Erling Smørgrav#include <netinet/tcp.h> 1628f61ef7f6SDag-Erling Smørgrav#endif 1629f61ef7f6SDag-Erling Smørgrav 1630b7579f77SDag-Erling Smørgrav#ifdef HAVE_ARPA_INET_H 1631b7579f77SDag-Erling Smørgrav#include <arpa/inet.h> 1632b7579f77SDag-Erling Smørgrav#endif 1633b7579f77SDag-Erling Smørgrav 1634b7579f77SDag-Erling Smørgrav#ifdef HAVE_WINSOCK2_H 1635b7579f77SDag-Erling Smørgrav#include <winsock2.h> 1636b7579f77SDag-Erling Smørgrav#endif 1637b7579f77SDag-Erling Smørgrav 1638b7579f77SDag-Erling Smørgrav#ifdef HAVE_WS2TCPIP_H 1639b7579f77SDag-Erling Smørgrav#include <ws2tcpip.h> 1640b7579f77SDag-Erling Smørgrav#endif 1641b7579f77SDag-Erling Smørgrav]) 1642091e9e46SCy Schubert 1643091e9e46SCy SchubertAC_MSG_CHECKING([for htobe64]) 1644091e9e46SCy SchubertAC_LINK_IFELSE([AC_LANG_PROGRAM([ 1645091e9e46SCy Schubert#include <stdio.h> 1646091e9e46SCy Schubert#ifdef HAVE_ENDIAN_H 1647091e9e46SCy Schubert# include <endian.h> 1648091e9e46SCy Schubert#endif 1649091e9e46SCy Schubert#ifdef HAVE_SYS_ENDIAN_H 1650091e9e46SCy Schubert# include <sys/endian.h> 1651091e9e46SCy Schubert#endif 1652091e9e46SCy Schubert], [unsigned long long x = htobe64(0); printf("%u", (unsigned)x);])], 1653091e9e46SCy Schubert AC_MSG_RESULT(yes) 1654091e9e46SCy Schubert AC_DEFINE(HAVE_HTOBE64, 1, [If we have htobe64]), 1655091e9e46SCy Schubert AC_MSG_RESULT(no)) 1656091e9e46SCy Schubert 1657091e9e46SCy SchubertAC_MSG_CHECKING([for be64toh]) 1658091e9e46SCy SchubertAC_LINK_IFELSE([AC_LANG_PROGRAM([ 1659091e9e46SCy Schubert#include <stdio.h> 1660091e9e46SCy Schubert#ifdef HAVE_ENDIAN_H 1661091e9e46SCy Schubert# include <endian.h> 1662091e9e46SCy Schubert#endif 1663091e9e46SCy Schubert#ifdef HAVE_SYS_ENDIAN_H 1664091e9e46SCy Schubert# include <sys/endian.h> 1665091e9e46SCy Schubert#endif 1666091e9e46SCy Schubert], [unsigned long long x = be64toh(0); printf("%u", (unsigned)x);])], 1667091e9e46SCy Schubert AC_MSG_RESULT(yes) 1668091e9e46SCy Schubert AC_DEFINE(HAVE_BE64TOH, 1, [If we have be64toh]), 1669091e9e46SCy Schubert AC_MSG_RESULT(no)) 1670091e9e46SCy Schubert 1671b7579f77SDag-Erling SmørgravAC_SEARCH_LIBS([setusercontext], [util]) 1672865f46b2SCy SchubertAC_CHECK_FUNCS([tzset sigprocmask fcntl getpwnam endpwent getrlimit setrlimit setsid chroot kill chown sleep usleep random srandom recvmsg sendmsg writev socketpair glob initgroups strftime localtime_r setusercontext _beginthreadex endservent endprotoent fsync shmget accept4 getifaddrs if_nametoindex poll gettid]) 1673b7579f77SDag-Erling SmørgravAC_CHECK_FUNCS([setresuid],,[AC_CHECK_FUNCS([setreuid])]) 1674b7579f77SDag-Erling SmørgravAC_CHECK_FUNCS([setresgid],,[AC_CHECK_FUNCS([setregid])]) 1675b7579f77SDag-Erling Smørgrav 1676b7579f77SDag-Erling Smørgrav# check if setreuid en setregid fail, on MacOSX10.4(darwin8). 16775469a995SCy Schubertif echo $host_os | grep darwin8 > /dev/null; then 1678b7579f77SDag-Erling Smørgrav AC_DEFINE(DARWIN_BROKEN_SETREUID, 1, [Define this if on macOSX10.4-darwin8 and setreuid and setregid do not work]) 1679b7579f77SDag-Erling Smørgravfi 16803005e0a3SDag-Erling SmørgravAC_CHECK_DECLS([inet_pton,inet_ntop], [], [], [ 16813005e0a3SDag-Erling SmørgravAC_INCLUDES_DEFAULT 16823005e0a3SDag-Erling Smørgrav#ifdef HAVE_NETINET_IN_H 16833005e0a3SDag-Erling Smørgrav#include <netinet/in.h> 16843005e0a3SDag-Erling Smørgrav#endif 16853005e0a3SDag-Erling Smørgrav 16863005e0a3SDag-Erling Smørgrav#ifdef HAVE_NETINET_TCP_H 16873005e0a3SDag-Erling Smørgrav#include <netinet/tcp.h> 16883005e0a3SDag-Erling Smørgrav#endif 16893005e0a3SDag-Erling Smørgrav 16903005e0a3SDag-Erling Smørgrav#ifdef HAVE_ARPA_INET_H 16913005e0a3SDag-Erling Smørgrav#include <arpa/inet.h> 16923005e0a3SDag-Erling Smørgrav#endif 16933005e0a3SDag-Erling Smørgrav 16943005e0a3SDag-Erling Smørgrav#ifdef HAVE_WINSOCK2_H 16953005e0a3SDag-Erling Smørgrav#include <winsock2.h> 16963005e0a3SDag-Erling Smørgrav#endif 16973005e0a3SDag-Erling Smørgrav 16983005e0a3SDag-Erling Smørgrav#ifdef HAVE_WS2TCPIP_H 16993005e0a3SDag-Erling Smørgrav#include <ws2tcpip.h> 17003005e0a3SDag-Erling Smørgrav#endif 17013005e0a3SDag-Erling Smørgrav]) 1702b7579f77SDag-Erling SmørgravAC_REPLACE_FUNCS(inet_aton) 1703b7579f77SDag-Erling SmørgravAC_REPLACE_FUNCS(inet_pton) 1704b7579f77SDag-Erling SmørgravAC_REPLACE_FUNCS(inet_ntop) 1705b7579f77SDag-Erling SmørgravAC_REPLACE_FUNCS(snprintf) 170605ab2901SDag-Erling Smørgrav# test if snprintf return the proper length 170705ab2901SDag-Erling Smørgravif test "x$ac_cv_func_snprintf" = xyes; then 170805ab2901SDag-Erling Smørgrav if test c${cross_compiling} = cno; then 170905ab2901SDag-Erling Smørgrav AC_MSG_CHECKING([for correct snprintf return value]) 171005ab2901SDag-Erling Smørgrav AC_RUN_IFELSE([AC_LANG_SOURCE(AC_INCLUDES_DEFAULT 171105ab2901SDag-Erling Smørgrav[[ 171205ab2901SDag-Erling Smørgravint main(void) { return !(snprintf(NULL, 0, "test") == 4); } 171305ab2901SDag-Erling Smørgrav]])], [AC_MSG_RESULT(yes)], [ 171405ab2901SDag-Erling Smørgrav AC_MSG_RESULT(no) 171505ab2901SDag-Erling Smørgrav AC_DEFINE([SNPRINTF_RET_BROKEN], [], [define if (v)snprintf does not return length needed, (but length used)]) 171605ab2901SDag-Erling Smørgrav AC_LIBOBJ(snprintf) 171705ab2901SDag-Erling Smørgrav ]) 171805ab2901SDag-Erling Smørgrav fi 171905ab2901SDag-Erling Smørgravfi 172017d15b25SDag-Erling SmørgravAC_REPLACE_FUNCS(strlcat) 1721b7579f77SDag-Erling SmørgravAC_REPLACE_FUNCS(strlcpy) 1722b7579f77SDag-Erling SmørgravAC_REPLACE_FUNCS(memmove) 1723b7579f77SDag-Erling SmørgravAC_REPLACE_FUNCS(gmtime_r) 172405ab2901SDag-Erling SmørgravAC_REPLACE_FUNCS(isblank) 1725a755b6f6SDag-Erling SmørgravAC_REPLACE_FUNCS(explicit_bzero) 172609a3aaf3SDag-Erling Smørgravdnl without CTIME, ARC4-functions and without reallocarray. 1727ff825849SDag-Erling SmørgravLIBOBJ_WITHOUT_CTIMEARC4="$LIBOBJS" 1728ff825849SDag-Erling SmørgravAC_SUBST(LIBOBJ_WITHOUT_CTIMEARC4) 1729e86b9096SDag-Erling SmørgravAC_MSG_CHECKING([for reallocarray]) 1730e86b9096SDag-Erling SmørgravAC_LINK_IFELSE([AC_LANG_SOURCE(AC_INCLUDES_DEFAULT 1731e86b9096SDag-Erling Smørgrav[[ 1732e86b9096SDag-Erling Smørgrav#ifndef _OPENBSD_SOURCE 1733e86b9096SDag-Erling Smørgrav#define _OPENBSD_SOURCE 1 1734e86b9096SDag-Erling Smørgrav#endif 1735e86b9096SDag-Erling Smørgrav#include <stdlib.h> 1736e86b9096SDag-Erling Smørgravint main(void) { 1737e86b9096SDag-Erling Smørgrav void* p = reallocarray(NULL, 10, 100); 1738e86b9096SDag-Erling Smørgrav free(p); 1739e86b9096SDag-Erling Smørgrav return 0; 1740e86b9096SDag-Erling Smørgrav} 1741e86b9096SDag-Erling Smørgrav]])], [AC_MSG_RESULT(yes) 1742e86b9096SDag-Erling Smørgrav AC_DEFINE(HAVE_REALLOCARRAY, 1, [If we have reallocarray(3)]) 1743e86b9096SDag-Erling Smørgrav], [ 1744e86b9096SDag-Erling Smørgrav AC_MSG_RESULT(no) 1745e86b9096SDag-Erling Smørgrav AC_LIBOBJ(reallocarray) 1746e86b9096SDag-Erling Smørgrav]) 17470eefd307SCy SchubertAC_CHECK_DECLS([reallocarray]) 1748ff825849SDag-Erling Smørgravif test "$USE_NSS" = "no"; then 1749ff825849SDag-Erling Smørgrav AC_REPLACE_FUNCS(arc4random) 1750ff825849SDag-Erling Smørgrav AC_REPLACE_FUNCS(arc4random_uniform) 1751ff825849SDag-Erling Smørgrav if test "$ac_cv_func_arc4random" = "no"; then 1752ff825849SDag-Erling Smørgrav AC_LIBOBJ(arc4_lock) 1753ff825849SDag-Erling Smørgrav AC_CHECK_FUNCS([getentropy],,[ 1754ff825849SDag-Erling Smørgrav if test "$USE_WINSOCK" = 1; then 1755ff825849SDag-Erling Smørgrav AC_LIBOBJ(getentropy_win) 1756ff825849SDag-Erling Smørgrav else 17573005e0a3SDag-Erling Smørgrav case "$host" in 17583005e0a3SDag-Erling Smørgrav Darwin|*darwin*) 1759ff825849SDag-Erling Smørgrav AC_LIBOBJ(getentropy_osx) 1760ff825849SDag-Erling Smørgrav ;; 17613005e0a3SDag-Erling Smørgrav *solaris*|*sunos*|SunOS) 1762ff825849SDag-Erling Smørgrav AC_LIBOBJ(getentropy_solaris) 1763ff825849SDag-Erling Smørgrav AC_CHECK_HEADERS([sys/sha2.h],, [ 1764ff825849SDag-Erling Smørgrav AC_CHECK_FUNCS([SHA512_Update],,[ 1765ff825849SDag-Erling Smørgrav AC_LIBOBJ(sha512) 1766ff825849SDag-Erling Smørgrav ]) 1767ff825849SDag-Erling Smørgrav ], [AC_INCLUDES_DEFAULT]) 1768ff825849SDag-Erling Smørgrav if test "$ac_cv_header_sys_sha2_h" = "yes"; then 1769ff825849SDag-Erling Smørgrav # this lib needed for sha2 on solaris 1770ff825849SDag-Erling Smørgrav LIBS="$LIBS -lmd" 1771ff825849SDag-Erling Smørgrav fi 17726480faa8SDag-Erling Smørgrav AC_SEARCH_LIBS([clock_gettime], [rt]) 1773ff825849SDag-Erling Smørgrav ;; 17740eefd307SCy Schubert *freebsd*|*FreeBSD) 17750eefd307SCy Schubert AC_LIBOBJ(getentropy_freebsd) 17760eefd307SCy Schubert ;; 17773005e0a3SDag-Erling Smørgrav *linux*|Linux|*) 1778ff825849SDag-Erling Smørgrav AC_LIBOBJ(getentropy_linux) 1779ff825849SDag-Erling Smørgrav AC_CHECK_FUNCS([SHA512_Update],,[ 1780ff825849SDag-Erling Smørgrav AC_DEFINE([COMPAT_SHA512], [1], [Do sha512 definitions in config.h]) 1781ff825849SDag-Erling Smørgrav AC_LIBOBJ(sha512) 1782ff825849SDag-Erling Smørgrav ]) 1783ff825849SDag-Erling Smørgrav AC_CHECK_HEADERS([sys/sysctl.h],,, [AC_INCLUDES_DEFAULT]) 17846480faa8SDag-Erling Smørgrav AC_CHECK_FUNCS([getauxval]) 1785ff825849SDag-Erling Smørgrav AC_SEARCH_LIBS([clock_gettime], [rt]) 1786ff825849SDag-Erling Smørgrav ;; 1787ff825849SDag-Erling Smørgrav esac 1788ff825849SDag-Erling Smørgrav fi 1789ff825849SDag-Erling Smørgrav ]) 1790ff825849SDag-Erling Smørgrav fi 1791ff825849SDag-Erling Smørgravfi 1792b7579f77SDag-Erling SmørgravLIBOBJ_WITHOUT_CTIME="$LIBOBJS" 1793b7579f77SDag-Erling SmørgravAC_SUBST(LIBOBJ_WITHOUT_CTIME) 1794b7579f77SDag-Erling SmørgravAC_REPLACE_FUNCS(ctime_r) 1795e2d15004SDag-Erling SmørgravAC_REPLACE_FUNCS(strsep) 1796b7579f77SDag-Erling Smørgrav 1797f44e67d1SCy SchubertAC_ARG_ENABLE(allsymbols, AS_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])) 1798b7579f77SDag-Erling Smørgravcase "$enable_allsymbols" in 1799b7579f77SDag-Erling Smørgrav yes) 1800b7579f77SDag-Erling Smørgrav COMMON_OBJ_ALL_SYMBOLS="" 1801b7579f77SDag-Erling Smørgrav UBSYMS="" 18025469a995SCy Schubert EXTRALINK="libunbound.la" 1803b7579f77SDag-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]) 1804b7579f77SDag-Erling Smørgrav ;; 1805b7579f77SDag-Erling Smørgrav no|*) 1806b7579f77SDag-Erling Smørgrav COMMON_OBJ_ALL_SYMBOLS='$(COMMON_OBJ)' 1807b7579f77SDag-Erling Smørgrav UBSYMS='-export-symbols $(srcdir)/libunbound/ubsyms.def' 1808b7579f77SDag-Erling Smørgrav EXTRALINK="" 1809b7579f77SDag-Erling Smørgrav ;; 1810b7579f77SDag-Erling Smørgravesac 1811b7579f77SDag-Erling SmørgravAC_SUBST(COMMON_OBJ_ALL_SYMBOLS) 1812b7579f77SDag-Erling SmørgravAC_SUBST(EXTRALINK) 1813b7579f77SDag-Erling SmørgravAC_SUBST(UBSYMS) 1814b7579f77SDag-Erling Smørgravif test x_$enable_lock_checks = x_yes; then 1815b7579f77SDag-Erling Smørgrav UBSYMS="-export-symbols clubsyms.def" 1816b7579f77SDag-Erling Smørgrav cp ${srcdir}/libunbound/ubsyms.def clubsyms.def 1817b7579f77SDag-Erling Smørgrav echo lock_protect >> clubsyms.def 1818b7579f77SDag-Erling Smørgrav echo lock_unprotect >> clubsyms.def 1819b7579f77SDag-Erling Smørgrav echo lock_get_mem >> clubsyms.def 1820b7579f77SDag-Erling Smørgrav echo checklock_start >> clubsyms.def 1821b7579f77SDag-Erling Smørgrav echo checklock_stop >> clubsyms.def 1822b7579f77SDag-Erling Smørgrav echo checklock_lock >> clubsyms.def 1823b7579f77SDag-Erling Smørgrav echo checklock_unlock >> clubsyms.def 1824b7579f77SDag-Erling Smørgrav echo checklock_init >> clubsyms.def 1825b7579f77SDag-Erling Smørgrav echo checklock_thrcreate >> clubsyms.def 1826b7579f77SDag-Erling Smørgrav echo checklock_thrjoin >> clubsyms.def 1827b7579f77SDag-Erling Smørgravfi 1828b7579f77SDag-Erling Smørgrav 1829ff825849SDag-Erling Smørgrav# check for dnstap if requested 1830ff825849SDag-Erling Smørgravdt_DNSTAP([$UNBOUND_RUN_DIR/dnstap.sock], 1831ff825849SDag-Erling Smørgrav [ 1832ff825849SDag-Erling Smørgrav AC_DEFINE([USE_DNSTAP], [1], [Define to 1 to enable dnstap support]) 1833ff825849SDag-Erling Smørgrav AC_SUBST([ENABLE_DNSTAP], [1]) 1834ff825849SDag-Erling Smørgrav 1835ff825849SDag-Erling Smørgrav AC_SUBST([opt_dnstap_socket_path]) 1836ff825849SDag-Erling Smørgrav ACX_ESCAPE_BACKSLASH($opt_dnstap_socket_path, hdr_dnstap_socket_path) 1837ff825849SDag-Erling Smørgrav AC_DEFINE_UNQUOTED(DNSTAP_SOCKET_PATH, 1838ff825849SDag-Erling Smørgrav ["$hdr_dnstap_socket_path"], [default dnstap socket path]) 183925039b37SCy Schubert AC_SUBST(DNSTAP_SOCKET_PATH,["$hdr_dnstap_socket_path"]) 1840f44e67d1SCy Schubert AC_SUBST(DNSTAP_SOCKET_TESTBIN,['unbound-dnstap-socket$(EXEEXT)']) 184125039b37SCy Schubert AC_SUBST([DNSTAP_SRC], ["dnstap/dnstap.c dnstap/dnstap.pb-c.c dnstap/dnstap_fstrm.c dnstap/dtstream.c"]) 184225039b37SCy Schubert AC_SUBST([DNSTAP_OBJ], ["dnstap.lo dnstap.pb-c.lo dnstap_fstrm.lo dtstream.lo"]) 1843ff825849SDag-Erling Smørgrav ], 1844ff825849SDag-Erling Smørgrav [ 1845ff825849SDag-Erling Smørgrav AC_SUBST([ENABLE_DNSTAP], [0]) 1846ff825849SDag-Erling Smørgrav ] 1847ff825849SDag-Erling Smørgrav) 1848ff825849SDag-Erling Smørgrav 184965b390aaSDag-Erling Smørgrav# check for dnscrypt if requested 185065b390aaSDag-Erling Smørgravdnsc_DNSCRYPT([ 185165b390aaSDag-Erling Smørgrav AC_DEFINE([USE_DNSCRYPT], [1], [Define to 1 to enable dnscrypt support]) 185265b390aaSDag-Erling Smørgrav AC_SUBST([ENABLE_DNSCRYPT], [1]) 185365b390aaSDag-Erling Smørgrav 185465b390aaSDag-Erling Smørgrav AC_SUBST([DNSCRYPT_SRC], ["dnscrypt/dnscrypt.c"]) 185565b390aaSDag-Erling Smørgrav AC_SUBST([DNSCRYPT_OBJ], ["dnscrypt.lo"]) 185665b390aaSDag-Erling Smørgrav ], 185765b390aaSDag-Erling Smørgrav [ 185865b390aaSDag-Erling Smørgrav AC_SUBST([ENABLE_DNSCRYPT], [0]) 185965b390aaSDag-Erling Smørgrav ] 186065b390aaSDag-Erling Smørgrav) 186165b390aaSDag-Erling Smørgrav 1862e2d15004SDag-Erling Smørgrav# check for cachedb if requested 1863f44e67d1SCy SchubertAC_ARG_ENABLE(cachedb, AS_HELP_STRING([--enable-cachedb],[enable cachedb module that can use external cache storage])) 18643bd4df0aSDag-Erling Smørgrav# turn on cachedb when hiredis support is enabled. 18653bd4df0aSDag-Erling Smørgravif test "$found_libhiredis" = "yes"; then enable_cachedb="yes"; fi 1866e2d15004SDag-Erling Smørgravcase "$enable_cachedb" in 1867e2d15004SDag-Erling Smørgrav yes) 1868e2d15004SDag-Erling Smørgrav AC_DEFINE([USE_CACHEDB], [1], [Define to 1 to use cachedb support]) 18695469a995SCy Schubert AC_SUBST([CACHEDB_SRC], ["cachedb/cachedb.c cachedb/redis.c"]) 18705469a995SCy Schubert AC_SUBST([CACHEDB_OBJ], ["cachedb.lo redis.lo"]) 1871e2d15004SDag-Erling Smørgrav ;; 1872e2d15004SDag-Erling Smørgrav no|*) 1873e2d15004SDag-Erling Smørgrav # nothing 1874e2d15004SDag-Erling Smørgrav ;; 1875e2d15004SDag-Erling Smørgravesac 1876e2d15004SDag-Erling Smørgrav 1877c7f4d7adSDag-Erling Smørgrav# check for ipsecmod if requested 1878f44e67d1SCy SchubertAC_ARG_ENABLE(ipsecmod, AS_HELP_STRING([--enable-ipsecmod],[Enable ipsecmod module that facilitates opportunistic IPsec])) 1879c7f4d7adSDag-Erling Smørgravcase "$enable_ipsecmod" in 1880c7f4d7adSDag-Erling Smørgrav yes) 1881c7f4d7adSDag-Erling Smørgrav AC_DEFINE([USE_IPSECMOD], [1], [Define to 1 to use ipsecmod support.]) 1882c7f4d7adSDag-Erling Smørgrav IPSECMOD_OBJ="ipsecmod.lo ipsecmod-whitelist.lo" 1883c7f4d7adSDag-Erling Smørgrav AC_SUBST(IPSECMOD_OBJ) 1884c7f4d7adSDag-Erling Smørgrav IPSECMOD_HEADER='$(srcdir)/ipsecmod/ipsecmod.h $(srcdir)/ipsecmod/ipsecmod-whitelist.h' 1885c7f4d7adSDag-Erling Smørgrav AC_SUBST(IPSECMOD_HEADER) 1886c7f4d7adSDag-Erling Smørgrav ;; 1887c7f4d7adSDag-Erling Smørgrav no|*) 1888c7f4d7adSDag-Erling Smørgrav # nothing 1889c7f4d7adSDag-Erling Smørgrav ;; 1890c7f4d7adSDag-Erling Smørgravesac 1891c7f4d7adSDag-Erling Smørgrav 18920eefd307SCy Schubert# check for ipset if requested 1893f44e67d1SCy SchubertAC_ARG_ENABLE(ipset, AS_HELP_STRING([--enable-ipset],[enable ipset module])) 18940eefd307SCy Schubertcase "$enable_ipset" in 18950eefd307SCy Schubert yes) 18960eefd307SCy Schubert AC_DEFINE([USE_IPSET], [1], [Define to 1 to use ipset support]) 18970eefd307SCy Schubert IPSET_SRC="ipset/ipset.c" 18980eefd307SCy Schubert AC_SUBST(IPSET_SRC) 18990eefd307SCy Schubert IPSET_OBJ="ipset.lo" 19000eefd307SCy Schubert AC_SUBST(IPSET_OBJ) 19010eefd307SCy Schubert 19020eefd307SCy Schubert # mnl 1903f44e67d1SCy Schubert AC_ARG_WITH(libmnl, AS_HELP_STRING([--with-libmnl=path],[specify explicit path for libmnl.]), 19040eefd307SCy Schubert [ ],[ withval="yes" ]) 19050eefd307SCy Schubert found_libmnl="no" 19060eefd307SCy Schubert AC_MSG_CHECKING(for libmnl) 19070eefd307SCy Schubert if test x_$withval = x_ -o x_$withval = x_yes; then 19080eefd307SCy Schubert withval="/usr/local /opt/local /usr/lib /usr/pkg /usr/sfw /usr" 19090eefd307SCy Schubert fi 19100eefd307SCy Schubert for dir in $withval ; do 1911a39a5a69SCy Schubert if test -f "$dir/include/libmnl/libmnl.h" -o -f "$dir/include/libmnl/libmnl/libmnl.h"; then 19120eefd307SCy Schubert found_libmnl="yes" 19130eefd307SCy Schubert dnl assume /usr is in default path. 1914a39a5a69SCy Schubert extralibmnl="" 1915a39a5a69SCy Schubert if test -f "$dir/include/libmnl/libmnl/libmnl.h"; then 1916a39a5a69SCy Schubert extralibmnl="/libmnl" 1917a39a5a69SCy Schubert fi 1918a39a5a69SCy Schubert if test "$dir" != "/usr" -o -n "$extralibmnl"; then 1919a39a5a69SCy Schubert CPPFLAGS="$CPPFLAGS -I$dir/include$extralibmnl" 1920a39a5a69SCy Schubert fi 19210eefd307SCy Schubert if test "$dir" != "/usr"; then 19220eefd307SCy Schubert LDFLAGS="$LDFLAGS -L$dir/lib" 19230eefd307SCy Schubert fi 19240eefd307SCy Schubert AC_MSG_RESULT(found in $dir) 19250eefd307SCy Schubert LIBS="$LIBS -lmnl" 19260eefd307SCy Schubert break; 19270eefd307SCy Schubert fi 19280eefd307SCy Schubert done 19290eefd307SCy Schubert if test x_$found_libmnl != x_yes; then 1930f44e67d1SCy Schubert AC_MSG_ERROR([Could not find libmnl, libmnl.h]) 19310eefd307SCy Schubert fi 19320eefd307SCy Schubert ;; 19330eefd307SCy Schubert no|*) 19340eefd307SCy Schubert # nothing 19350eefd307SCy Schubert ;; 19360eefd307SCy Schubertesac 1937f44e67d1SCy SchubertAC_ARG_ENABLE(explicit-port-randomisation, AS_HELP_STRING([--disable-explicit-port-randomisation],[disable explicit source port randomisation and rely on the kernel to provide random source ports])) 193825039b37SCy Schubertcase "$enable_explicit_port_randomisation" in 193925039b37SCy Schubert no) 194025039b37SCy Schubert AC_DEFINE([DISABLE_EXPLICIT_PORT_RANDOMISATION], [1], [Define this to enable kernel based UDP source port randomization.]) 194125039b37SCy Schubert ;; 194225039b37SCy Schubert yes|*) 194325039b37SCy Schubert ;; 194425039b37SCy Schubertesac 194525039b37SCy Schubert 19465469a995SCy Schubertif echo "$host" | $GREP -i -e linux >/dev/null; then 19475469a995SCy Schubert AC_ARG_ENABLE(linux-ip-local-port-range, AC_HELP_STRING([--enable-linux-ip-local-port-range], [Define this to enable use of /proc/sys/net/ipv4/ip_local_port_range as a default outgoing port range. This is only for the libunbound on Linux and does not affect unbound resolving daemon itself. This may severely limit the number of available outgoing ports and thus decrease randomness. Define this only when the target system restricts (e.g. some of SELinux enabled distributions) the use of non-ephemeral ports.])) 19485469a995SCy Schubert case "$enable_linux_ip_local_port_range" in 19495469a995SCy Schubert yes) 19505469a995SCy Schubert AC_DEFINE([USE_LINUX_IP_LOCAL_PORT_RANGE], [1], [Define this to enable use of /proc/sys/net/ipv4/ip_local_port_range as a default outgoing port range. This is only for the libunbound on Linux and does not affect unbound resolving daemon itself. This may severely limit the number of available outgoing ports and thus decrease randomness. Define this only when the target system restricts (e.g. some of SELinux enabled distributions) the use of non-ephemeral ports.]) 19515469a995SCy Schubert ;; 19525469a995SCy Schubert no|*) 19535469a995SCy Schubert ;; 19545469a995SCy Schubert esac 19555469a995SCy Schubertfi 19565469a995SCy Schubert 19570eefd307SCy Schubert 1958b7579f77SDag-Erling SmørgravAC_MSG_CHECKING([if ${MAKE:-make} supports $< with implicit rule in scope]) 1959b7579f77SDag-Erling Smørgrav# on openBSD, the implicit rule make $< work. 1960b7579f77SDag-Erling Smørgrav# on Solaris, it does not work ($? is changed sources, $^ lists dependencies). 1961b7579f77SDag-Erling Smørgrav# gmake works. 1962b7579f77SDag-Erling Smørgravcat >conftest.make <<EOF 1963b7579f77SDag-Erling Smørgravall: conftest.lo 1964b7579f77SDag-Erling Smørgrav 1965b7579f77SDag-Erling Smørgravconftest.lo foo.lo bla.lo: 1966b7579f77SDag-Erling Smørgrav if test -f "\$<"; then touch \$@; fi 1967b7579f77SDag-Erling Smørgrav 1968b7579f77SDag-Erling Smørgrav.SUFFIXES: .lo 1969b7579f77SDag-Erling Smørgrav.c.lo: 1970b7579f77SDag-Erling Smørgrav if test -f "\$<"; then touch \$@; fi 1971b7579f77SDag-Erling Smørgrav 1972b7579f77SDag-Erling Smørgravconftest.lo: conftest.dir/conftest.c 1973b7579f77SDag-Erling SmørgravEOF 1974b7579f77SDag-Erling Smørgravmkdir conftest.dir 1975b7579f77SDag-Erling Smørgravtouch conftest.dir/conftest.c 1976b7579f77SDag-Erling Smørgravrm -f conftest.lo conftest.c 1977b7579f77SDag-Erling Smørgrav${MAKE:-make} -f conftest.make >/dev/null 1978b7579f77SDag-Erling Smørgravrm -f conftest.make conftest.c conftest.dir/conftest.c 1979b7579f77SDag-Erling Smørgravrm -rf conftest.dir 1980b7579f77SDag-Erling Smørgravif test ! -f conftest.lo; then 1981b7579f77SDag-Erling Smørgrav AC_MSG_RESULT(no) 1982b7579f77SDag-Erling Smørgrav SOURCEDETERMINE='echo "$^" | awk "-F " "{print \$$1;}" > .source' 1983b7579f77SDag-Erling Smørgrav SOURCEFILE='`cat .source`' 1984b7579f77SDag-Erling Smørgravelse 1985b7579f77SDag-Erling Smørgrav AC_MSG_RESULT(yes) 1986b7579f77SDag-Erling Smørgrav SOURCEDETERMINE=':' 1987b7579f77SDag-Erling Smørgrav SOURCEFILE='$<' 1988b7579f77SDag-Erling Smørgravfi 1989b7579f77SDag-Erling Smørgravrm -f conftest.lo 1990b7579f77SDag-Erling SmørgravAC_SUBST(SOURCEDETERMINE) 1991b7579f77SDag-Erling SmørgravAC_SUBST(SOURCEFILE) 1992b7579f77SDag-Erling Smørgrav 19938ed2b524SDag-Erling Smørgrav# see if we want to build the library or everything 19948ed2b524SDag-Erling SmørgravALLTARGET="alltargets" 199517d15b25SDag-Erling SmørgravINSTALLTARGET="install-all" 1996f44e67d1SCy SchubertAC_ARG_WITH(libunbound-only, AS_HELP_STRING([--with-libunbound-only],[do not build daemon and tool programs]), 19978ed2b524SDag-Erling Smørgrav [ 19988ed2b524SDag-Erling Smørgrav if test "$withval" = "yes"; then 19998ed2b524SDag-Erling Smørgrav ALLTARGET="lib" 200017d15b25SDag-Erling Smørgrav INSTALLTARGET="install-lib" 20018ed2b524SDag-Erling Smørgrav fi 20028ed2b524SDag-Erling Smørgrav]) 200357bddd21SDag-Erling Smørgravif test $ALLTARGET = "alltargets"; then 200457bddd21SDag-Erling Smørgrav if test $USE_NSS = "yes"; then 2005f44e67d1SCy Schubert AC_MSG_ERROR([--with-nss can only be used in combination with --with-libunbound-only.]) 200657bddd21SDag-Erling Smørgrav fi 200757bddd21SDag-Erling Smørgrav if test $USE_NETTLE = "yes"; then 2008f44e67d1SCy Schubert AC_MSG_ERROR([--with-nettle can only be used in combination with --with-libunbound-only.]) 200957bddd21SDag-Erling Smørgrav fi 201057bddd21SDag-Erling Smørgravfi 201157bddd21SDag-Erling Smørgrav 20128ed2b524SDag-Erling SmørgravAC_SUBST(ALLTARGET) 201317d15b25SDag-Erling SmørgravAC_SUBST(INSTALLTARGET) 2014b7579f77SDag-Erling Smørgrav 2015b7579f77SDag-Erling SmørgravACX_STRIP_EXT_FLAGS 2016971980c3SDag-Erling Smørgravif test -n "$LATE_LDFLAGS"; then 2017b7579f77SDag-Erling Smørgrav LDFLAGS="$LATE_LDFLAGS $LDFLAGS" 2018971980c3SDag-Erling Smørgravfi 2019971980c3SDag-Erling Smørgrav# remove start spaces 2020971980c3SDag-Erling SmørgravLDFLAGS=`echo "$LDFLAGS"|sed -e 's/^ *//'` 2021971980c3SDag-Erling SmørgravLIBS=`echo "$LIBS"|sed -e 's/^ *//'` 2022b7579f77SDag-Erling Smørgrav 2023b7579f77SDag-Erling SmørgravAC_DEFINE_UNQUOTED([MAXSYSLOGMSGLEN], [10240], [Define to the maximum message length to pass to syslog.]) 2024b7579f77SDag-Erling Smørgrav 2025b7579f77SDag-Erling SmørgravAH_BOTTOM( 2026b7579f77SDag-Erling Smørgravdnl this must be first AH_CONFIG, to define the flags before any includes. 2027b7579f77SDag-Erling SmørgravAHX_CONFIG_EXT_FLAGS 2028b7579f77SDag-Erling Smørgrav 2029b7579f77SDag-Erling Smørgravdnl includes 2030b7579f77SDag-Erling Smørgrav[ 2031e86b9096SDag-Erling Smørgrav#ifndef _OPENBSD_SOURCE 2032e86b9096SDag-Erling Smørgrav#define _OPENBSD_SOURCE 1 2033e86b9096SDag-Erling Smørgrav#endif 2034e86b9096SDag-Erling Smørgrav 2035b7579f77SDag-Erling Smørgrav#ifndef UNBOUND_DEBUG 2036e86b9096SDag-Erling Smørgrav# ifndef NDEBUG 2037b7579f77SDag-Erling Smørgrav# define NDEBUG 2038b7579f77SDag-Erling Smørgrav# endif 2039e86b9096SDag-Erling Smørgrav#endif 2040b7579f77SDag-Erling Smørgrav 204117d15b25SDag-Erling Smørgrav/** Use small-ldns codebase */ 204217d15b25SDag-Erling Smørgrav#define USE_SLDNS 1 204317d15b25SDag-Erling Smørgrav#ifdef HAVE_SSL 204417d15b25SDag-Erling Smørgrav# define LDNS_BUILD_CONFIG_HAVE_SSL 1 204517d15b25SDag-Erling Smørgrav#endif 204617d15b25SDag-Erling Smørgrav 2047b7579f77SDag-Erling Smørgrav#include <stdio.h> 2048b7579f77SDag-Erling Smørgrav#include <string.h> 2049b7579f77SDag-Erling Smørgrav#include <unistd.h> 2050b7579f77SDag-Erling Smørgrav#include <assert.h> 2051b7579f77SDag-Erling Smørgrav 2052b7579f77SDag-Erling Smørgrav#if STDC_HEADERS 2053b7579f77SDag-Erling Smørgrav#include <stdlib.h> 2054b7579f77SDag-Erling Smørgrav#include <stddef.h> 2055b7579f77SDag-Erling Smørgrav#endif 2056b7579f77SDag-Erling Smørgrav 205717d15b25SDag-Erling Smørgrav#ifdef HAVE_STDARG_H 205817d15b25SDag-Erling Smørgrav#include <stdarg.h> 205917d15b25SDag-Erling Smørgrav#endif 206017d15b25SDag-Erling Smørgrav 2061b7579f77SDag-Erling Smørgrav#ifdef HAVE_STDINT_H 2062b7579f77SDag-Erling Smørgrav#include <stdint.h> 2063b7579f77SDag-Erling Smørgrav#endif 2064b7579f77SDag-Erling Smørgrav 2065b7579f77SDag-Erling Smørgrav#include <errno.h> 2066b7579f77SDag-Erling Smørgrav 2067b7579f77SDag-Erling Smørgrav#if HAVE_SYS_PARAM_H 2068b7579f77SDag-Erling Smørgrav#include <sys/param.h> 2069b7579f77SDag-Erling Smørgrav#endif 2070b7579f77SDag-Erling Smørgrav 2071b7579f77SDag-Erling Smørgrav#ifdef HAVE_SYS_SOCKET_H 2072b7579f77SDag-Erling Smørgrav#include <sys/socket.h> 2073b7579f77SDag-Erling Smørgrav#endif 2074b7579f77SDag-Erling Smørgrav 2075b7579f77SDag-Erling Smørgrav#ifdef HAVE_SYS_UIO_H 2076b7579f77SDag-Erling Smørgrav#include <sys/uio.h> 2077b7579f77SDag-Erling Smørgrav#endif 2078b7579f77SDag-Erling Smørgrav 2079b7579f77SDag-Erling Smørgrav#ifdef HAVE_NETINET_IN_H 2080b7579f77SDag-Erling Smørgrav#include <netinet/in.h> 2081b7579f77SDag-Erling Smørgrav#endif 2082b7579f77SDag-Erling Smørgrav 2083f61ef7f6SDag-Erling Smørgrav#ifdef HAVE_NETINET_TCP_H 2084f61ef7f6SDag-Erling Smørgrav#include <netinet/tcp.h> 2085f61ef7f6SDag-Erling Smørgrav#endif 2086f61ef7f6SDag-Erling Smørgrav 2087b7579f77SDag-Erling Smørgrav#ifdef HAVE_ARPA_INET_H 2088b7579f77SDag-Erling Smørgrav#include <arpa/inet.h> 2089b7579f77SDag-Erling Smørgrav#endif 2090b7579f77SDag-Erling Smørgrav 2091b7579f77SDag-Erling Smørgrav#ifdef HAVE_WINSOCK2_H 2092b7579f77SDag-Erling Smørgrav#include <winsock2.h> 2093b7579f77SDag-Erling Smørgrav#endif 2094b7579f77SDag-Erling Smørgrav 2095b7579f77SDag-Erling Smørgrav#ifdef HAVE_WS2TCPIP_H 2096b7579f77SDag-Erling Smørgrav#include <ws2tcpip.h> 2097b7579f77SDag-Erling Smørgrav#endif 209817d15b25SDag-Erling Smørgrav 2099a39a5a69SCy Schubert#if !defined(USE_WINSOCK) || !defined(HAVE_SNPRINTF) || defined(SNPRINTF_RET_BROKEN) || defined(__USE_MINGW_ANSI_STDIO) 210017d15b25SDag-Erling Smørgrav#define ARG_LL "%ll" 210117d15b25SDag-Erling Smørgrav#else 210217d15b25SDag-Erling Smørgrav#define ARG_LL "%I64" 210317d15b25SDag-Erling Smørgrav#endif 21046480faa8SDag-Erling Smørgrav 21056480faa8SDag-Erling Smørgrav#ifndef AF_LOCAL 21066480faa8SDag-Erling Smørgrav#define AF_LOCAL AF_UNIX 21076480faa8SDag-Erling Smørgrav#endif 2108b7579f77SDag-Erling Smørgrav] 2109b7579f77SDag-Erling Smørgrav 2110b7579f77SDag-Erling SmørgravAHX_CONFIG_FORMAT_ATTRIBUTE 2111b7579f77SDag-Erling SmørgravAHX_CONFIG_UNUSED_ATTRIBUTE 2112b7579f77SDag-Erling SmørgravAHX_CONFIG_FSEEKO 2113b7579f77SDag-Erling SmørgravAHX_CONFIG_MAXHOSTNAMELEN 211405ab2901SDag-Erling Smørgrav#if !defined(HAVE_SNPRINTF) || defined(SNPRINTF_RET_BROKEN) 211505ab2901SDag-Erling Smørgrav#define snprintf snprintf_unbound 211605ab2901SDag-Erling Smørgrav#define vsnprintf vsnprintf_unbound 211705ab2901SDag-Erling Smørgrav#include <stdarg.h> 211805ab2901SDag-Erling Smørgravint snprintf (char *str, size_t count, const char *fmt, ...); 211905ab2901SDag-Erling Smørgravint vsnprintf (char *str, size_t count, const char *fmt, va_list arg); 212005ab2901SDag-Erling Smørgrav#endif /* HAVE_SNPRINTF or SNPRINTF_RET_BROKEN */ 2121b7579f77SDag-Erling SmørgravAHX_CONFIG_INET_PTON(unbound) 2122b7579f77SDag-Erling SmørgravAHX_CONFIG_INET_NTOP(unbound) 2123b7579f77SDag-Erling SmørgravAHX_CONFIG_INET_ATON(unbound) 2124b7579f77SDag-Erling SmørgravAHX_CONFIG_MEMMOVE(unbound) 212517d15b25SDag-Erling SmørgravAHX_CONFIG_STRLCAT(unbound) 2126b7579f77SDag-Erling SmørgravAHX_CONFIG_STRLCPY(unbound) 2127b7579f77SDag-Erling SmørgravAHX_CONFIG_GMTIME_R(unbound) 212809a3aaf3SDag-Erling SmørgravAHX_CONFIG_REALLOCARRAY(unbound) 2129b7579f77SDag-Erling SmørgravAHX_CONFIG_W32_SLEEP 2130b7579f77SDag-Erling SmørgravAHX_CONFIG_W32_USLEEP 2131b7579f77SDag-Erling SmørgravAHX_CONFIG_W32_RANDOM 2132b7579f77SDag-Erling SmørgravAHX_CONFIG_W32_SRANDOM 2133b7579f77SDag-Erling SmørgravAHX_CONFIG_W32_FD_SET_T 2134b7579f77SDag-Erling SmørgravAHX_CONFIG_IPV6_MIN_MTU 2135b7579f77SDag-Erling SmørgravAHX_MEMCMP_BROKEN(unbound) 2136b7579f77SDag-Erling Smørgrav 2137b7579f77SDag-Erling Smørgrav[ 2138b7579f77SDag-Erling Smørgrav#ifndef HAVE_CTIME_R 2139b7579f77SDag-Erling Smørgrav#define ctime_r unbound_ctime_r 2140b7579f77SDag-Erling Smørgravchar *ctime_r(const time_t *timep, char *buf); 2141b7579f77SDag-Erling Smørgrav#endif 2142b7579f77SDag-Erling Smørgrav 2143e2d15004SDag-Erling Smørgrav#ifndef HAVE_STRSEP 2144e2d15004SDag-Erling Smørgrav#define strsep unbound_strsep 2145e2d15004SDag-Erling Smørgravchar *strsep(char **stringp, const char *delim); 2146e2d15004SDag-Erling Smørgrav#endif 2147e2d15004SDag-Erling Smørgrav 214805ab2901SDag-Erling Smørgrav#ifndef HAVE_ISBLANK 214905ab2901SDag-Erling Smørgrav#define isblank unbound_isblank 215005ab2901SDag-Erling Smørgravint isblank(int c); 215105ab2901SDag-Erling Smørgrav#endif 215205ab2901SDag-Erling Smørgrav 2153a755b6f6SDag-Erling Smørgrav#ifndef HAVE_EXPLICIT_BZERO 2154a755b6f6SDag-Erling Smørgrav#define explicit_bzero unbound_explicit_bzero 2155a755b6f6SDag-Erling Smørgravvoid explicit_bzero(void* buf, size_t len); 2156a755b6f6SDag-Erling Smørgrav#endif 2157a755b6f6SDag-Erling Smørgrav 21583005e0a3SDag-Erling Smørgrav#if defined(HAVE_INET_NTOP) && !HAVE_DECL_INET_NTOP 21593005e0a3SDag-Erling Smørgravconst char *inet_ntop(int af, const void *src, char *dst, size_t size); 21603005e0a3SDag-Erling Smørgrav#endif 21613005e0a3SDag-Erling Smørgrav 21623005e0a3SDag-Erling Smørgrav#if defined(HAVE_INET_PTON) && !HAVE_DECL_INET_PTON 21633005e0a3SDag-Erling Smørgravint inet_pton(int af, const char* src, void* dst); 21643005e0a3SDag-Erling Smørgrav#endif 21653005e0a3SDag-Erling Smørgrav 2166b7579f77SDag-Erling Smørgrav#if !defined(HAVE_STRPTIME) || !defined(STRPTIME_WORKS) 2167b7579f77SDag-Erling Smørgrav#define strptime unbound_strptime 2168b7579f77SDag-Erling Smørgravstruct tm; 2169b7579f77SDag-Erling Smørgravchar *strptime(const char *s, const char *format, struct tm *tm); 2170b7579f77SDag-Erling Smørgrav#endif 2171b7579f77SDag-Erling Smørgrav 21720eefd307SCy Schubert#if !HAVE_DECL_REALLOCARRAY 21730eefd307SCy Schubertvoid *reallocarray(void *ptr, size_t nmemb, size_t size); 21740eefd307SCy Schubert#endif 21750eefd307SCy Schubert 2176091e9e46SCy Schubert#ifdef HAVE_LIBBSD 2177091e9e46SCy Schubert#include <bsd/string.h> 2178091e9e46SCy Schubert#include <bsd/stdlib.h> 2179091e9e46SCy Schubert#endif 2180091e9e46SCy Schubert 2181ff825849SDag-Erling Smørgrav#ifdef HAVE_LIBRESSL 2182ff825849SDag-Erling Smørgrav# if !HAVE_DECL_STRLCPY 2183ff825849SDag-Erling Smørgravsize_t strlcpy(char *dst, const char *src, size_t siz); 2184ff825849SDag-Erling Smørgrav# endif 2185ff825849SDag-Erling Smørgrav# if !HAVE_DECL_STRLCAT 2186ff825849SDag-Erling Smørgravsize_t strlcat(char *dst, const char *src, size_t siz); 2187ff825849SDag-Erling Smørgrav# endif 2188ff825849SDag-Erling Smørgrav# if !HAVE_DECL_ARC4RANDOM && defined(HAVE_ARC4RANDOM) 2189ff825849SDag-Erling Smørgravuint32_t arc4random(void); 2190ff825849SDag-Erling Smørgrav# endif 2191ff825849SDag-Erling Smørgrav# if !HAVE_DECL_ARC4RANDOM_UNIFORM && defined(HAVE_ARC4RANDOM_UNIFORM) 2192ff825849SDag-Erling Smørgravuint32_t arc4random_uniform(uint32_t upper_bound); 2193ff825849SDag-Erling Smørgrav# endif 2194ff825849SDag-Erling Smørgrav#endif /* HAVE_LIBRESSL */ 2195ff825849SDag-Erling Smørgrav#ifndef HAVE_ARC4RANDOM 2196ff825849SDag-Erling Smørgravint getentropy(void* buf, size_t len); 2197ff825849SDag-Erling Smørgravuint32_t arc4random(void); 2198ff825849SDag-Erling Smørgravvoid arc4random_buf(void* buf, size_t n); 2199ff825849SDag-Erling Smørgravvoid _ARC4_LOCK(void); 2200ff825849SDag-Erling Smørgravvoid _ARC4_UNLOCK(void); 220157bddd21SDag-Erling Smørgravvoid _ARC4_LOCK_DESTROY(void); 2202ff825849SDag-Erling Smørgrav#endif 2203ff825849SDag-Erling Smørgrav#ifndef HAVE_ARC4RANDOM_UNIFORM 2204ff825849SDag-Erling Smørgravuint32_t arc4random_uniform(uint32_t upper_bound); 2205ff825849SDag-Erling Smørgrav#endif 2206ff825849SDag-Erling Smørgrav#ifdef COMPAT_SHA512 2207ff825849SDag-Erling Smørgrav#ifndef SHA512_DIGEST_LENGTH 2208ff825849SDag-Erling Smørgrav#define SHA512_BLOCK_LENGTH 128 2209ff825849SDag-Erling Smørgrav#define SHA512_DIGEST_LENGTH 64 2210ff825849SDag-Erling Smørgrav#define SHA512_DIGEST_STRING_LENGTH (SHA512_DIGEST_LENGTH * 2 + 1) 2211ff825849SDag-Erling Smørgravtypedef struct _SHA512_CTX { 2212ff825849SDag-Erling Smørgrav uint64_t state[8]; 2213ff825849SDag-Erling Smørgrav uint64_t bitcount[2]; 2214ff825849SDag-Erling Smørgrav uint8_t buffer[SHA512_BLOCK_LENGTH]; 2215ff825849SDag-Erling Smørgrav} SHA512_CTX; 2216ff825849SDag-Erling Smørgrav#endif /* SHA512_DIGEST_LENGTH */ 2217ff825849SDag-Erling Smørgravvoid SHA512_Init(SHA512_CTX*); 2218ff825849SDag-Erling Smørgravvoid SHA512_Update(SHA512_CTX*, void*, size_t); 2219ff825849SDag-Erling Smørgravvoid SHA512_Final(uint8_t[SHA512_DIGEST_LENGTH], SHA512_CTX*); 2220ff825849SDag-Erling Smørgravunsigned char *SHA512(void* data, unsigned int data_len, unsigned char *digest); 2221ff825849SDag-Erling Smørgrav#endif /* COMPAT_SHA512 */ 2222ff825849SDag-Erling Smørgrav 2223ff825849SDag-Erling Smørgrav 2224ff825849SDag-Erling Smørgrav 2225b7579f77SDag-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)) 2226b7579f77SDag-Erling Smørgrav /* using version of libevent that is not threadsafe. */ 2227b7579f77SDag-Erling Smørgrav# define LIBEVENT_SIGNAL_PROBLEM 1 2228b7579f77SDag-Erling Smørgrav#endif 2229b7579f77SDag-Erling Smørgrav 2230b7579f77SDag-Erling Smørgrav#ifndef CHECKED_INET6 2231b7579f77SDag-Erling Smørgrav# define CHECKED_INET6 2232b7579f77SDag-Erling Smørgrav# ifdef AF_INET6 2233b7579f77SDag-Erling Smørgrav# define INET6 2234b7579f77SDag-Erling Smørgrav# else 2235b7579f77SDag-Erling Smørgrav# define AF_INET6 28 2236b7579f77SDag-Erling Smørgrav# endif 2237b7579f77SDag-Erling Smørgrav#endif /* CHECKED_INET6 */ 2238b7579f77SDag-Erling Smørgrav 2239b7579f77SDag-Erling Smørgrav#ifndef HAVE_GETADDRINFO 2240b7579f77SDag-Erling Smørgravstruct sockaddr_storage; 2241b7579f77SDag-Erling Smørgrav#include "compat/fake-rfc2553.h" 2242b7579f77SDag-Erling Smørgrav#endif 2243b7579f77SDag-Erling Smørgrav 2244b7579f77SDag-Erling Smørgrav#ifdef UNBOUND_ALLOC_STATS 2245b7579f77SDag-Erling Smørgrav# define malloc(s) unbound_stat_malloc_log(s, __FILE__, __LINE__, __func__) 2246b7579f77SDag-Erling Smørgrav# define calloc(n,s) unbound_stat_calloc_log(n, s, __FILE__, __LINE__, __func__) 2247b7579f77SDag-Erling Smørgrav# define free(p) unbound_stat_free_log(p, __FILE__, __LINE__, __func__) 2248b7579f77SDag-Erling Smørgrav# define realloc(p,s) unbound_stat_realloc_log(p, s, __FILE__, __LINE__, __func__) 2249b7579f77SDag-Erling Smørgravvoid *unbound_stat_malloc(size_t size); 2250b7579f77SDag-Erling Smørgravvoid *unbound_stat_calloc(size_t nmemb, size_t size); 2251b7579f77SDag-Erling Smørgravvoid unbound_stat_free(void *ptr); 2252b7579f77SDag-Erling Smørgravvoid *unbound_stat_realloc(void *ptr, size_t size); 2253b7579f77SDag-Erling Smørgravvoid *unbound_stat_malloc_log(size_t size, const char* file, int line, 2254b7579f77SDag-Erling Smørgrav const char* func); 2255b7579f77SDag-Erling Smørgravvoid *unbound_stat_calloc_log(size_t nmemb, size_t size, const char* file, 2256b7579f77SDag-Erling Smørgrav int line, const char* func); 2257b7579f77SDag-Erling Smørgravvoid unbound_stat_free_log(void *ptr, const char* file, int line, 2258b7579f77SDag-Erling Smørgrav const char* func); 2259b7579f77SDag-Erling Smørgravvoid *unbound_stat_realloc_log(void *ptr, size_t size, const char* file, 2260b7579f77SDag-Erling Smørgrav int line, const char* func); 2261b7579f77SDag-Erling Smørgrav#elif defined(UNBOUND_ALLOC_LITE) 2262b7579f77SDag-Erling Smørgrav# include "util/alloc.h" 2263b7579f77SDag-Erling Smørgrav#endif /* UNBOUND_ALLOC_LITE and UNBOUND_ALLOC_STATS */ 2264b7579f77SDag-Erling Smørgrav 2265b7579f77SDag-Erling Smørgrav/** default port for DNS traffic. */ 2266b7579f77SDag-Erling Smørgrav#define UNBOUND_DNS_PORT 53 22670fb34990SDag-Erling Smørgrav/** default port for DNS over TLS traffic. */ 22680fb34990SDag-Erling Smørgrav#define UNBOUND_DNS_OVER_TLS_PORT 853 2269c0caa2e2SCy Schubert/** default port for DNS over HTTPS traffic. */ 2270c0caa2e2SCy Schubert#define UNBOUND_DNS_OVER_HTTPS_PORT 443 2271b7579f77SDag-Erling Smørgrav/** default port for unbound control traffic, registered port with IANA, 2272b7579f77SDag-Erling Smørgrav ub-dns-control 8953/tcp unbound dns nameserver control */ 2273b7579f77SDag-Erling Smørgrav#define UNBOUND_CONTROL_PORT 8953 2274b7579f77SDag-Erling Smørgrav/** the version of unbound-control that this software implements */ 2275b7579f77SDag-Erling Smørgrav#define UNBOUND_CONTROL_VERSION 1 2276b7579f77SDag-Erling Smørgrav 2277b7579f77SDag-Erling Smørgrav]) 2278b7579f77SDag-Erling Smørgrav 2279ff825849SDag-Erling Smørgravdnl if we build from source tree, the man pages need @date@ and @version@ 2280ff825849SDag-Erling Smørgravdnl if this is a distro tarball, that was already done by makedist.sh 2281ff825849SDag-Erling SmørgravAC_SUBST(version, [VERSION_MAJOR.VERSION_MINOR.VERSION_MICRO]) 2282ff825849SDag-Erling SmørgravAC_SUBST(date, [`date +'%b %e, %Y'`]) 2283ff825849SDag-Erling Smørgrav 2284091e9e46SCy SchubertAC_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 dnscrypt/dnscrypt_config.h contrib/libunbound.pc contrib/unbound.socket contrib/unbound.service contrib/unbound_portable.service]) 2285f44e67d1SCy SchubertAC_CONFIG_HEADERS([config.h]) 2286b7579f77SDag-Erling SmørgravAC_OUTPUT 2287