1b7579f77SDag-Erling Smørgrav# -*- Autoconf -*- 2b7579f77SDag-Erling Smørgrav# Process this file with autoconf to produce a configure script. 3*f44e67d1SCy 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]) 13369c6923SCy Schubertm4_define([VERSION_MINOR],[13]) 14*f44e67d1SCy Schubertm4_define([VERSION_MICRO],[1]) 15*f44e67d1SCy 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*f44e67d1SCy SchubertLIBUNBOUND_REVISION=12 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 100*f44e67d1SCy Schubert# 1.13.1 had 9:12:1 101b7579f77SDag-Erling Smørgrav 102b7579f77SDag-Erling Smørgrav# Current -- the number of the binary API that we're implementing 103b7579f77SDag-Erling Smørgrav# Revision -- which iteration of the implementation of the binary 104b7579f77SDag-Erling Smørgrav# API are we supplying? 105b7579f77SDag-Erling Smørgrav# Age -- How many previous binary API versions do we also 106b7579f77SDag-Erling Smørgrav# support? 107b7579f77SDag-Erling Smørgrav# 108b7579f77SDag-Erling Smørgrav# If we release a new version that does not change the binary API, 109b7579f77SDag-Erling Smørgrav# increment Revision. 110b7579f77SDag-Erling Smørgrav# 111b7579f77SDag-Erling Smørgrav# If we release a new version that changes the binary API, but does 112b7579f77SDag-Erling Smørgrav# not break programs compiled against the old binary API, increment 113b7579f77SDag-Erling Smørgrav# Current and Age. Set Revision to 0, since this is the first 114b7579f77SDag-Erling Smørgrav# implementation of the new API. 115b7579f77SDag-Erling Smørgrav# 1168a384985SDag-Erling Smørgrav# Otherwise, we're changing the binary API and breaking backward 117b7579f77SDag-Erling Smørgrav# compatibility with old binaries. Increment Current. Set Age to 0, 118b7579f77SDag-Erling Smørgrav# since we're backward compatible with no previous APIs. Set Revision 119b7579f77SDag-Erling Smørgrav# to 0 too. 120b7579f77SDag-Erling SmørgravAC_SUBST(LIBUNBOUND_CURRENT) 121b7579f77SDag-Erling SmørgravAC_SUBST(LIBUNBOUND_REVISION) 122b7579f77SDag-Erling SmørgravAC_SUBST(LIBUNBOUND_AGE) 123b7579f77SDag-Erling Smørgrav 1240eefd307SCy Schubert 1250eefd307SCy Schubertcmdln="`echo $@ | sed -e 's/\\\\/\\\\\\\\/g' | sed -e 's/"/\\\\"/'g`" 1260eefd307SCy SchubertAC_DEFINE_UNQUOTED(CONFCMDLINE, ["$cmdln"], [Command line arguments used with configure]) 1270eefd307SCy Schubert 128b7579f77SDag-Erling SmørgravCFLAGS="$CFLAGS" 129*f44e67d1SCy SchubertAC_USE_SYSTEM_EXTENSIONS 13017d15b25SDag-Erling Smørgravif test "$ac_cv_header_minix_config_h" = "yes"; then 13117d15b25SDag-Erling Smørgrav AC_DEFINE(_NETBSD_SOURCE,1, [Enable for compile on Minix]) 13217d15b25SDag-Erling Smørgravfi 133b7579f77SDag-Erling Smørgrav 134b7579f77SDag-Erling Smørgravdnl 135b7579f77SDag-Erling Smørgravdnl By default set prefix to /usr/local 136b7579f77SDag-Erling Smørgravdnl 137b7579f77SDag-Erling Smørgravcase "$prefix" in 138b7579f77SDag-Erling Smørgrav NONE) 139b7579f77SDag-Erling Smørgrav prefix="/usr/local" 140b7579f77SDag-Erling Smørgrav ;; 141b7579f77SDag-Erling Smørgravesac 142c7f4d7adSDag-Erling Smørgravcase "$exec_prefix" in 143c7f4d7adSDag-Erling Smørgrav NONE) 144c7f4d7adSDag-Erling Smørgrav exec_prefix="$prefix" 145c7f4d7adSDag-Erling Smørgrav ;; 146c7f4d7adSDag-Erling Smørgravesac 147b7579f77SDag-Erling Smørgrav 148b7579f77SDag-Erling Smørgrav# are we on MinGW? 149b7579f77SDag-Erling Smørgravif uname -s 2>&1 | grep MINGW32 >/dev/null; then on_mingw="yes" 150b7579f77SDag-Erling Smørgravelse 151b5663de9SDag-Erling Smørgrav if echo $host $target | grep mingw32 >/dev/null; then on_mingw="yes" 152b7579f77SDag-Erling Smørgrav else on_mingw="no"; fi 153b7579f77SDag-Erling Smørgravfi 154b7579f77SDag-Erling Smørgrav 155b7579f77SDag-Erling Smørgrav# 156b7579f77SDag-Erling Smørgrav# Determine configuration file 157b7579f77SDag-Erling Smørgrav# the eval is to evaluate shell expansion twice 158c7f4d7adSDag-Erling SmørgravUNBOUND_SBIN_DIR=`eval echo "${sbindir}"` 159c7f4d7adSDag-Erling SmørgravAC_SUBST(UNBOUND_SBIN_DIR) 160c7f4d7adSDag-Erling SmørgravUNBOUND_SYSCONF_DIR=`eval echo "${sysconfdir}"` 161c7f4d7adSDag-Erling SmørgravAC_SUBST(UNBOUND_SYSCONF_DIR) 162c7f4d7adSDag-Erling SmørgravUNBOUND_LOCALSTATE_DIR=`eval echo "${localstatedir}"` 163c7f4d7adSDag-Erling SmørgravAC_SUBST(UNBOUND_LOCALSTATE_DIR) 164b7579f77SDag-Erling Smørgravif test $on_mingw = "no"; then 165b7579f77SDag-Erling Smørgrav ub_conf_file=`eval echo "${sysconfdir}/unbound/unbound.conf"` 166b7579f77SDag-Erling Smørgravelse 16765b390aaSDag-Erling Smørgrav ub_conf_file="C:\\Program Files\\Unbound\\service.conf" 168b7579f77SDag-Erling Smørgravfi 169b7579f77SDag-Erling SmørgravAC_ARG_WITH([conf_file], 170*f44e67d1SCy Schubert AS_HELP_STRING([--with-conf-file=path],[Pathname to the Unbound configuration file]), 171b7579f77SDag-Erling Smørgrav [ub_conf_file="$withval"]) 172b7579f77SDag-Erling SmørgravAC_SUBST(ub_conf_file) 173b7579f77SDag-Erling SmørgravACX_ESCAPE_BACKSLASH($ub_conf_file, hdr_config) 174b7579f77SDag-Erling SmørgravAC_DEFINE_UNQUOTED(CONFIGFILE, ["$hdr_config"], [Pathname to the Unbound configuration file]) 1756480faa8SDag-Erling Smørgravub_conf_dir=`AS_DIRNAME(["$ub_conf_file"])` 1766480faa8SDag-Erling SmørgravAC_SUBST(ub_conf_dir) 177b7579f77SDag-Erling Smørgrav 178b7579f77SDag-Erling Smørgrav# Determine run, chroot directory and pidfile locations 179b7579f77SDag-Erling SmørgravAC_ARG_WITH(run-dir, 180*f44e67d1SCy Schubert AS_HELP_STRING([--with-run-dir=path],[set default directory to chdir to (by default dir part of cfg file)]), 181b7579f77SDag-Erling Smørgrav UNBOUND_RUN_DIR="$withval", 182b7579f77SDag-Erling Smørgravif test $on_mingw = no; then 183b7579f77SDag-Erling Smørgrav UNBOUND_RUN_DIR=`dirname "$ub_conf_file"` 184b7579f77SDag-Erling Smørgravelse 185b7579f77SDag-Erling Smørgrav UNBOUND_RUN_DIR="" 186b7579f77SDag-Erling Smørgravfi 187b7579f77SDag-Erling Smørgrav) 188b7579f77SDag-Erling SmørgravAC_SUBST(UNBOUND_RUN_DIR) 189b7579f77SDag-Erling SmørgravACX_ESCAPE_BACKSLASH($UNBOUND_RUN_DIR, hdr_run) 190b7579f77SDag-Erling SmørgravAC_DEFINE_UNQUOTED(RUN_DIR, ["$hdr_run"], [Directory to chdir to]) 191b7579f77SDag-Erling Smørgrav 192b7579f77SDag-Erling SmørgravAC_ARG_WITH(chroot-dir, 193*f44e67d1SCy Schubert AS_HELP_STRING([--with-chroot-dir=path],[set default directory to chroot to (by default same as run-dir)]), 194b7579f77SDag-Erling Smørgrav UNBOUND_CHROOT_DIR="$withval", 195b7579f77SDag-Erling Smørgravif test $on_mingw = no; then 196b7579f77SDag-Erling Smørgrav UNBOUND_CHROOT_DIR="$UNBOUND_RUN_DIR" 197b7579f77SDag-Erling Smørgravelse 198b7579f77SDag-Erling Smørgrav UNBOUND_CHROOT_DIR="" 199b7579f77SDag-Erling Smørgravfi 200b7579f77SDag-Erling Smørgrav) 201b7579f77SDag-Erling SmørgravAC_SUBST(UNBOUND_CHROOT_DIR) 202b7579f77SDag-Erling SmørgravACX_ESCAPE_BACKSLASH($UNBOUND_CHROOT_DIR, hdr_chroot) 203b7579f77SDag-Erling SmørgravAC_DEFINE_UNQUOTED(CHROOT_DIR, ["$hdr_chroot"], [Directory to chroot to]) 204b7579f77SDag-Erling Smørgrav 205b7579f77SDag-Erling SmørgravAC_ARG_WITH(share-dir, 206*f44e67d1SCy Schubert AS_HELP_STRING([--with-share-dir=path],[set default directory with shared data (by default same as share/unbound)]), 207b7579f77SDag-Erling Smørgrav UNBOUND_SHARE_DIR="$withval", 208b7579f77SDag-Erling Smørgrav UNBOUND_SHARE_DIR="$UNBOUND_RUN_DIR") 209b7579f77SDag-Erling SmørgravAC_SUBST(UNBOUND_SHARE_DIR) 210b7579f77SDag-Erling SmørgravAC_DEFINE_UNQUOTED(SHARE_DIR, ["$UNBOUND_SHARE_DIR"], [Shared data]) 211b7579f77SDag-Erling Smørgrav 212b7579f77SDag-Erling SmørgravAC_ARG_WITH(pidfile, 213*f44e67d1SCy Schubert AS_HELP_STRING([--with-pidfile=filename],[set default pathname to unbound pidfile (default run-dir/unbound.pid)]), 214b7579f77SDag-Erling Smørgrav UNBOUND_PIDFILE="$withval", 215b7579f77SDag-Erling Smørgravif test $on_mingw = no; then 216b7579f77SDag-Erling Smørgrav UNBOUND_PIDFILE="$UNBOUND_RUN_DIR/unbound.pid" 217b7579f77SDag-Erling Smørgravelse 218b7579f77SDag-Erling Smørgrav UNBOUND_PIDFILE="" 219b7579f77SDag-Erling Smørgravfi 220b7579f77SDag-Erling Smørgrav) 221b7579f77SDag-Erling SmørgravAC_SUBST(UNBOUND_PIDFILE) 222b7579f77SDag-Erling SmørgravACX_ESCAPE_BACKSLASH($UNBOUND_PIDFILE, hdr_pid) 223b7579f77SDag-Erling SmørgravAC_DEFINE_UNQUOTED(PIDFILE, ["$hdr_pid"], [default pidfile location]) 224b7579f77SDag-Erling Smørgrav 225b7579f77SDag-Erling SmørgravAC_ARG_WITH(rootkey-file, 226*f44e67d1SCy 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.]), 227b7579f77SDag-Erling Smørgrav UNBOUND_ROOTKEY_FILE="$withval", 228b7579f77SDag-Erling Smørgravif test $on_mingw = no; then 229b7579f77SDag-Erling Smørgrav UNBOUND_ROOTKEY_FILE="$UNBOUND_RUN_DIR/root.key" 230b7579f77SDag-Erling Smørgravelse 23165b390aaSDag-Erling Smørgrav UNBOUND_ROOTKEY_FILE="C:\\Program Files\\Unbound\\root.key" 232b7579f77SDag-Erling Smørgravfi 233b7579f77SDag-Erling Smørgrav) 234b7579f77SDag-Erling SmørgravAC_SUBST(UNBOUND_ROOTKEY_FILE) 235b7579f77SDag-Erling SmørgravACX_ESCAPE_BACKSLASH($UNBOUND_ROOTKEY_FILE, hdr_rkey) 236b7579f77SDag-Erling SmørgravAC_DEFINE_UNQUOTED(ROOT_ANCHOR_FILE, ["$hdr_rkey"], [default rootkey location]) 237b7579f77SDag-Erling Smørgrav 238b7579f77SDag-Erling SmørgravAC_ARG_WITH(rootcert-file, 239*f44e67d1SCy 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.]), 240b7579f77SDag-Erling Smørgrav UNBOUND_ROOTCERT_FILE="$withval", 241b7579f77SDag-Erling Smørgravif test $on_mingw = no; then 242b7579f77SDag-Erling Smørgrav UNBOUND_ROOTCERT_FILE="$UNBOUND_RUN_DIR/icannbundle.pem" 243b7579f77SDag-Erling Smørgravelse 24465b390aaSDag-Erling Smørgrav UNBOUND_ROOTCERT_FILE="C:\\Program Files\\Unbound\\icannbundle.pem" 245b7579f77SDag-Erling Smørgravfi 246b7579f77SDag-Erling Smørgrav) 247b7579f77SDag-Erling SmørgravAC_SUBST(UNBOUND_ROOTCERT_FILE) 248b7579f77SDag-Erling SmørgravACX_ESCAPE_BACKSLASH($UNBOUND_ROOTCERT_FILE, hdr_rpem) 249b7579f77SDag-Erling SmørgravAC_DEFINE_UNQUOTED(ROOT_CERT_FILE, ["$hdr_rpem"], [default rootcert location]) 250b7579f77SDag-Erling Smørgrav 251b7579f77SDag-Erling SmørgravAC_ARG_WITH(username, 252*f44e67d1SCy Schubert AS_HELP_STRING([--with-username=user],[set default user that unbound changes to (default user is unbound)]), 253b7579f77SDag-Erling Smørgrav UNBOUND_USERNAME="$withval", 254b7579f77SDag-Erling Smørgrav UNBOUND_USERNAME="unbound") 255b7579f77SDag-Erling SmørgravAC_SUBST(UNBOUND_USERNAME) 256b7579f77SDag-Erling SmørgravAC_DEFINE_UNQUOTED(UB_USERNAME, ["$UNBOUND_USERNAME"], [default username]) 257b7579f77SDag-Erling Smørgrav 258b7579f77SDag-Erling SmørgravAC_DEFINE(WINVER, 0x0502, [the version of the windows API enabled]) 259b7579f77SDag-Erling SmørgravACX_RSRC_VERSION(wnvs) 260b7579f77SDag-Erling SmørgravAC_DEFINE_UNQUOTED(RSRC_PACKAGE_VERSION, [$wnvs], [version number for resource files]) 261b7579f77SDag-Erling Smørgrav 262b7579f77SDag-Erling Smørgrav# Checks for typedefs, structures, and compiler characteristics. 263b7579f77SDag-Erling SmørgravAC_C_CONST 264*f44e67d1SCy SchubertAC_LANG([C]) 2658ed2b524SDag-Erling Smørgrav# allow user to override the -g -O2 flags. 26657bddd21SDag-Erling Smørgravdefault_cflags=no 2678ed2b524SDag-Erling Smørgravif test "x$CFLAGS" = "x" ; then 268b7579f77SDag-Erling SmørgravACX_CHECK_COMPILER_FLAG(g, [CFLAGS="$CFLAGS -g"]) 269b7579f77SDag-Erling SmørgravACX_CHECK_COMPILER_FLAG(O2, [CFLAGS="$CFLAGS -O2"]) 27057bddd21SDag-Erling Smørgravdefault_cflags=yes 2718ed2b524SDag-Erling Smørgravfi 272b7579f77SDag-Erling SmørgravAC_PROG_CC 273b7579f77SDag-Erling SmørgravACX_DEPFLAG 274b7579f77SDag-Erling SmørgravACX_DETERMINE_EXT_FLAGS_UNBOUND 275b7579f77SDag-Erling Smørgrav 276b7579f77SDag-Erling Smørgrav# debug mode flags warnings 277*f44e67d1SCy SchubertAC_ARG_ENABLE(checking, AS_HELP_STRING([--enable-checking],[Enable warnings, asserts, makefile-dependencies])) 278*f44e67d1SCy SchubertAC_ARG_ENABLE(debug, AS_HELP_STRING([--enable-debug],[same as enable-checking])) 279b7579f77SDag-Erling Smørgravif test "$enable_debug" = "yes"; then debug_enabled="$enable_debug"; 280b7579f77SDag-Erling Smørgravelse debug_enabled="$enable_checking"; fi 281b7579f77SDag-Erling SmørgravAC_SUBST(debug_enabled) 282b7579f77SDag-Erling Smørgravcase "$debug_enabled" in 283b7579f77SDag-Erling Smørgrav yes) 284b7579f77SDag-Erling Smørgrav ACX_CHECK_COMPILER_FLAG(W, [CFLAGS="$CFLAGS -W"]) 285b7579f77SDag-Erling Smørgrav ACX_CHECK_COMPILER_FLAG(Wall, [CFLAGS="$CFLAGS -Wall"]) 286b7579f77SDag-Erling Smørgrav ACX_CHECK_COMPILER_FLAG(Wextra, [CFLAGS="$CFLAGS -Wextra"]) 287b7579f77SDag-Erling Smørgrav ACX_CHECK_COMPILER_FLAG(Wdeclaration-after-statement, [CFLAGS="$CFLAGS -Wdeclaration-after-statement"]) 288b7579f77SDag-Erling Smørgrav AC_DEFINE([UNBOUND_DEBUG], [], [define this to enable debug checks.]) 289b7579f77SDag-Erling Smørgrav ;; 290b7579f77SDag-Erling Smørgrav no|*) 291b7579f77SDag-Erling Smørgrav # nothing to do. 292b7579f77SDag-Erling Smørgrav ;; 293b7579f77SDag-Erling Smørgravesac 29457bddd21SDag-Erling Smørgravif test "$default_cflags" = "yes"; then 29557bddd21SDag-Erling Smørgrav # only when CFLAGS was "" at the start, if the users wants to 29657bddd21SDag-Erling Smørgrav # override we shouldn't add default cflags, because they wouldn't 29757bddd21SDag-Erling Smørgrav # be able to turn off these options and set the CFLAGS wanted. 298b7579f77SDag-Erling Smørgrav ACX_CHECK_FLTO 299b75612f8SDag-Erling Smørgrav ACX_CHECK_PIE 300b75612f8SDag-Erling Smørgrav ACX_CHECK_RELRO_NOW 30157bddd21SDag-Erling Smørgravfi 302b7579f77SDag-Erling Smørgrav 303b7579f77SDag-Erling SmørgravAC_C_INLINE 304b7579f77SDag-Erling SmørgravACX_CHECK_FORMAT_ATTRIBUTE 305b7579f77SDag-Erling SmørgravACX_CHECK_UNUSED_ATTRIBUTE 306b7579f77SDag-Erling Smørgrav 307e2d15004SDag-Erling SmørgravAC_DEFUN([CHECK_WEAK_ATTRIBUTE], 308e2d15004SDag-Erling Smørgrav[AC_REQUIRE([AC_PROG_CC]) 309e2d15004SDag-Erling SmørgravAC_MSG_CHECKING(whether the C compiler (${CC-cc}) accepts the "weak" attribute) 310e2d15004SDag-Erling SmørgravAC_CACHE_VAL(ac_cv_c_weak_attribute, 311e2d15004SDag-Erling Smørgrav[ac_cv_c_weak_attribute=no 312*f44e67d1SCy SchubertAC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ #include <stdio.h> 313e2d15004SDag-Erling Smørgrav__attribute__((weak)) void f(int x) { printf("%d", x); } 314*f44e67d1SCy Schubert]], [[ 315e2d15004SDag-Erling Smørgrav f(1); 316*f44e67d1SCy Schubert]])],[ac_cv_c_weak_attribute="yes"],[ac_cv_c_weak_attribute="no"]) 317e2d15004SDag-Erling Smørgrav]) 318e2d15004SDag-Erling Smørgrav 319e2d15004SDag-Erling SmørgravAC_MSG_RESULT($ac_cv_c_weak_attribute) 320e2d15004SDag-Erling Smørgravif test $ac_cv_c_weak_attribute = yes; then 321e2d15004SDag-Erling Smørgrav AC_DEFINE(HAVE_ATTR_WEAK, 1, [Whether the C compiler accepts the "weak" attribute]) 322a755b6f6SDag-Erling Smørgrav AC_DEFINE(ATTR_WEAK, [__attribute__((weak))], [apply the weak attribute to a symbol]) 323e2d15004SDag-Erling Smørgravfi 324e2d15004SDag-Erling Smørgrav])dnl End of CHECK_WEAK_ATTRIBUTE 325e2d15004SDag-Erling Smørgrav 326e2d15004SDag-Erling SmørgravCHECK_WEAK_ATTRIBUTE 327e2d15004SDag-Erling Smørgrav 328a755b6f6SDag-Erling SmørgravAC_DEFUN([CHECK_NORETURN_ATTRIBUTE], 329a755b6f6SDag-Erling Smørgrav[AC_REQUIRE([AC_PROG_CC]) 330a755b6f6SDag-Erling SmørgravAC_MSG_CHECKING(whether the C compiler (${CC-cc}) accepts the "noreturn" attribute) 331a755b6f6SDag-Erling SmørgravAC_CACHE_VAL(ac_cv_c_noreturn_attribute, 332a755b6f6SDag-Erling Smørgrav[ac_cv_c_noreturn_attribute=no 333*f44e67d1SCy SchubertAC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ #include <stdio.h> 334a755b6f6SDag-Erling Smørgrav__attribute__((noreturn)) void f(int x) { printf("%d", x); } 335*f44e67d1SCy Schubert]], [[ 336a755b6f6SDag-Erling Smørgrav f(1); 337*f44e67d1SCy Schubert]])],[ac_cv_c_noreturn_attribute="yes"],[ac_cv_c_noreturn_attribute="no"]) 338a755b6f6SDag-Erling Smørgrav]) 339a755b6f6SDag-Erling Smørgrav 340a755b6f6SDag-Erling SmørgravAC_MSG_RESULT($ac_cv_c_noreturn_attribute) 341a755b6f6SDag-Erling Smørgravif test $ac_cv_c_noreturn_attribute = yes; then 342a755b6f6SDag-Erling Smørgrav AC_DEFINE(HAVE_ATTR_NORETURN, 1, [Whether the C compiler accepts the "noreturn" attribute]) 343a755b6f6SDag-Erling Smørgrav AC_DEFINE(ATTR_NORETURN, [__attribute__((__noreturn__))], [apply the noreturn attribute to a function that exits the program]) 344a755b6f6SDag-Erling Smørgravfi 345a755b6f6SDag-Erling Smørgrav])dnl End of CHECK_NORETURN_ATTRIBUTE 346a755b6f6SDag-Erling Smørgrav 347a755b6f6SDag-Erling SmørgravCHECK_NORETURN_ATTRIBUTE 348a755b6f6SDag-Erling Smørgrav 349b7579f77SDag-Erling Smørgravif test "$srcdir" != "."; then 350b7579f77SDag-Erling Smørgrav CPPFLAGS="$CPPFLAGS -I$srcdir" 351b7579f77SDag-Erling Smørgravfi 352b7579f77SDag-Erling Smørgrav 353b7579f77SDag-Erling SmørgravAC_DEFUN([ACX_YYLEX_DESTROY], [ 354b7579f77SDag-Erling Smørgrav AC_MSG_CHECKING([for yylex_destroy]) 355b7579f77SDag-Erling Smørgrav if echo %% | $LEX -t 2>&1 | grep yylex_destroy >/dev/null 2>&1; then 356b7579f77SDag-Erling Smørgrav AC_DEFINE(LEX_HAS_YYLEX_DESTROY, 1, [if lex has yylex_destroy]) 357b7579f77SDag-Erling Smørgrav AC_MSG_RESULT(yes) 3584c75e3aaSDag-Erling Smørgrav else AC_MSG_RESULT(no); 3594c75e3aaSDag-Erling Smørgrav LEX=":" 3604c75e3aaSDag-Erling Smørgrav fi 3614c75e3aaSDag-Erling Smørgrav]) 3624c75e3aaSDag-Erling Smørgrav 3634c75e3aaSDag-Erling SmørgravAC_DEFUN([ACX_YYLEX_OPTION], [ 3644c75e3aaSDag-Erling Smørgrav AC_MSG_CHECKING([for lex %option]) 3654c75e3aaSDag-Erling Smørgrav if cat <<EOF | $LEX -t 2>&1 | grep yy_delete_buffer >/dev/null 2>&1; then 3664c75e3aaSDag-Erling Smørgrav%option nounput 3674c75e3aaSDag-Erling Smørgrav%% 3684c75e3aaSDag-Erling SmørgravEOF 3694c75e3aaSDag-Erling Smørgrav AC_MSG_RESULT(yes) 3704c75e3aaSDag-Erling Smørgrav else AC_MSG_RESULT(no); 3714c75e3aaSDag-Erling Smørgrav LEX=":" 3724c75e3aaSDag-Erling Smørgrav fi 373b7579f77SDag-Erling Smørgrav]) 374b7579f77SDag-Erling Smørgrav 375*f44e67d1SCy SchubertAC_PROG_LEX([noyywrap]) 3764c75e3aaSDag-Erling Smørgravif test "$LEX" != "" -a "$LEX" != ":"; then 377b7579f77SDag-Erling SmørgravACX_YYLEX_DESTROY 3784c75e3aaSDag-Erling Smørgravfi 3794c75e3aaSDag-Erling Smørgravif test "$LEX" != "" -a "$LEX" != ":"; then 3804c75e3aaSDag-Erling SmørgravACX_YYLEX_OPTION 3814c75e3aaSDag-Erling Smørgravfi 382b7579f77SDag-Erling SmørgravAC_PROG_YACC 383b7579f77SDag-Erling SmørgravAC_CHECK_PROG(doxygen, doxygen, doxygen) 384b7579f77SDag-Erling SmørgravAC_CHECK_TOOL(STRIP, strip) 385b7579f77SDag-Erling SmørgravACX_LIBTOOL_C_ONLY 386b7579f77SDag-Erling Smørgrav 387e86b9096SDag-Erling SmørgravPKG_PROG_PKG_CONFIG 388e86b9096SDag-Erling Smørgrav 389b7579f77SDag-Erling Smørgrav# Checks for header files. 390369c6923SCy 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],,, [AC_INCLUDES_DEFAULT]) 391369c6923SCy Schubert# net/if.h portability for Darwin see: 392369c6923SCy Schubert# https://www.gnu.org/software/autoconf/manual/autoconf-2.69/html_node/Header-Portability.html 393369c6923SCy SchubertAC_CHECK_HEADERS([net/if.h],,, [ 394369c6923SCy Schubert#include <stdio.h> 395369c6923SCy Schubert#ifdef STDC_HEADERS 396369c6923SCy Schubert# include <stdlib.h> 397369c6923SCy Schubert# include <stddef.h> 398369c6923SCy Schubert#else 399369c6923SCy Schubert# ifdef HAVE_STDLIB_H 400369c6923SCy Schubert# include <stdlib.h> 401369c6923SCy Schubert# endif 402369c6923SCy Schubert#endif 403369c6923SCy Schubert#ifdef HAVE_SYS_SOCKET_H 404369c6923SCy Schubert# include <sys/socket.h> 405369c6923SCy Schubert#endif 406369c6923SCy Schubert]) 407b7579f77SDag-Erling Smørgrav 40825039b37SCy Schubert# Check for Apple header. This uncovers TARGET_OS_IPHONE, TARGET_OS_TV or TARGET_OS_WATCH 40925039b37SCy SchubertAC_CHECK_HEADERS([TargetConditionals.h]) 41025039b37SCy Schubert 411b7579f77SDag-Erling Smørgrav# check for types. 412b7579f77SDag-Erling Smørgrav# Using own tests for int64* because autoconf builtin only give 32bit. 413b7579f77SDag-Erling SmørgravAC_CHECK_TYPE(int8_t, signed char) 414b7579f77SDag-Erling SmørgravAC_CHECK_TYPE(int16_t, short) 415b7579f77SDag-Erling SmørgravAC_CHECK_TYPE(int32_t, int) 416b7579f77SDag-Erling SmørgravAC_CHECK_TYPE(int64_t, long long) 417b7579f77SDag-Erling SmørgravAC_CHECK_TYPE(uint8_t, unsigned char) 418b7579f77SDag-Erling SmørgravAC_CHECK_TYPE(uint16_t, unsigned short) 419b7579f77SDag-Erling SmørgravAC_CHECK_TYPE(uint32_t, unsigned int) 420b7579f77SDag-Erling SmørgravAC_CHECK_TYPE(uint64_t, unsigned long long) 421b7579f77SDag-Erling SmørgravAC_TYPE_SIZE_T 422b7579f77SDag-Erling SmørgravAC_CHECK_TYPE(ssize_t, int) 423b7579f77SDag-Erling SmørgravAC_TYPE_UID_T 424b7579f77SDag-Erling SmørgravAC_TYPE_PID_T 425b7579f77SDag-Erling SmørgravAC_TYPE_OFF_T 426b7579f77SDag-Erling SmørgravACX_TYPE_U_CHAR 427b7579f77SDag-Erling SmørgravACX_TYPE_RLIM_T 428b7579f77SDag-Erling SmørgravACX_TYPE_SOCKLEN_T 429b7579f77SDag-Erling SmørgravACX_TYPE_IN_ADDR_T 430b7579f77SDag-Erling SmørgravACX_TYPE_IN_PORT_T 431b7579f77SDag-Erling SmørgravACX_CHECK_MEMCMP_SIGNED 432b7579f77SDag-Erling Smørgrav 43317d15b25SDag-Erling SmørgravAC_CHECK_SIZEOF(time_t,,[ 43417d15b25SDag-Erling SmørgravAC_INCLUDES_DEFAULT 43517d15b25SDag-Erling Smørgrav#ifdef TIME_WITH_SYS_TIME 43617d15b25SDag-Erling Smørgrav# include <sys/time.h> 43717d15b25SDag-Erling Smørgrav# include <time.h> 43817d15b25SDag-Erling Smørgrav#else 43917d15b25SDag-Erling Smørgrav# ifdef HAVE_SYS_TIME_H 44017d15b25SDag-Erling Smørgrav# include <sys/time.h> 44117d15b25SDag-Erling Smørgrav# else 44217d15b25SDag-Erling Smørgrav# include <time.h> 44317d15b25SDag-Erling Smørgrav# endif 44417d15b25SDag-Erling Smørgrav#endif 44517d15b25SDag-Erling Smørgrav]) 4460eefd307SCy SchubertAC_CHECK_SIZEOF(size_t) 44717d15b25SDag-Erling Smørgrav 448b7579f77SDag-Erling Smørgrav# add option to disable the evil rpath 449b7579f77SDag-Erling SmørgravACX_ARG_RPATH 450b7579f77SDag-Erling SmørgravAC_SUBST(RUNTIME_PATH) 451b7579f77SDag-Erling Smørgrav 452b7579f77SDag-Erling Smørgrav# check to see if libraries are needed for these functions. 453b7579f77SDag-Erling SmørgravAC_SEARCH_LIBS([inet_pton], [nsl]) 454b7579f77SDag-Erling SmørgravAC_SEARCH_LIBS([socket], [socket]) 455b7579f77SDag-Erling Smørgrav 456b7579f77SDag-Erling Smørgrav# check wether strptime also works 457b7579f77SDag-Erling SmørgravAC_DEFUN([AC_CHECK_STRPTIME_WORKS], 458b7579f77SDag-Erling Smørgrav[AC_REQUIRE([AC_PROG_CC]) 459b7579f77SDag-Erling SmørgravAC_MSG_CHECKING(whether strptime works) 460b7579f77SDag-Erling Smørgravif test c${cross_compiling} = cno; then 461b7579f77SDag-Erling SmørgravAC_RUN_IFELSE([AC_LANG_SOURCE([[ 462ff825849SDag-Erling Smørgrav#define _XOPEN_SOURCE 600 463b7579f77SDag-Erling Smørgrav#include <time.h> 464b7579f77SDag-Erling Smørgravint main(void) { struct tm tm; char *res; 465b7579f77SDag-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); 466b7579f77SDag-Erling Smørgravif (!res) return 2; 467b7579f77SDag-Erling Smørgravres = strptime("20070207111842", "%Y%m%d%H%M%S", &tm); 468b7579f77SDag-Erling Smørgravif (!res) return 1; return 0; } 469b7579f77SDag-Erling Smørgrav]])] , [eval "ac_cv_c_strptime_works=yes"], [eval "ac_cv_c_strptime_works=no"]) 470b7579f77SDag-Erling Smørgravelse 471b7579f77SDag-Erling Smørgraveval "ac_cv_c_strptime_works=maybe" 472b7579f77SDag-Erling Smørgravfi 473b7579f77SDag-Erling SmørgravAC_MSG_RESULT($ac_cv_c_strptime_works) 474b7579f77SDag-Erling Smørgravif test $ac_cv_c_strptime_works = no; then 475b7579f77SDag-Erling SmørgravAC_LIBOBJ(strptime) 476b7579f77SDag-Erling Smørgravelse 477b7579f77SDag-Erling SmørgravAC_DEFINE_UNQUOTED([STRPTIME_WORKS], 1, [use default strptime.]) 478b7579f77SDag-Erling Smørgravfi 479b7579f77SDag-Erling Smørgrav])dnl 480b7579f77SDag-Erling Smørgrav 481b7579f77SDag-Erling Smørgrav# check some functions of the OS before linking libs (while still runnable). 482b7579f77SDag-Erling SmørgravAC_FUNC_CHOWN 483b7579f77SDag-Erling SmørgravAC_FUNC_FORK 484*f44e67d1SCy 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.']) 485b7579f77SDag-Erling SmørgravAC_FUNC_FSEEKO 486b7579f77SDag-Erling SmørgravACX_SYS_LARGEFILE 487b7579f77SDag-Erling SmørgravACX_CHECK_NONBLOCKING_BROKEN 488b7579f77SDag-Erling SmørgravACX_MKDIR_ONE_ARG 489b7579f77SDag-Erling SmørgravAC_CHECK_FUNCS([strptime],[AC_CHECK_STRPTIME_WORKS],[AC_LIBOBJ([strptime])]) 490b7579f77SDag-Erling Smørgrav 491209fcf8eSDag-Erling Smørgrav# check if we can use SO_REUSEPORT 4920eefd307SCy Schubertif echo "$host" | $GREP -i -e linux -e dragonfly >/dev/null; then 493209fcf8eSDag-Erling Smørgrav AC_DEFINE(REUSEPORT_DEFAULT, 1, [if REUSEPORT is enabled by default]) 494209fcf8eSDag-Erling Smørgravelse 495209fcf8eSDag-Erling Smørgrav AC_DEFINE(REUSEPORT_DEFAULT, 0, [if REUSEPORT is enabled by default]) 496209fcf8eSDag-Erling Smørgravfi 497209fcf8eSDag-Erling Smørgrav 4980eefd307SCy Schubert# Include systemd.m4 - begin 4990eefd307SCy Schubertsinclude(systemd.m4) 5000eefd307SCy Schubert# Include systemd.m4 - end 5010eefd307SCy Schubert 502b7579f77SDag-Erling Smørgrav# set memory allocation checking if requested 503*f44e67d1SCy SchubertAC_ARG_ENABLE(alloc-checks, AS_HELP_STRING([--enable-alloc-checks],[ enable to memory allocation statistics, for debug purposes ]), 504b7579f77SDag-Erling Smørgrav , ) 505*f44e67d1SCy SchubertAC_ARG_ENABLE(alloc-lite, AS_HELP_STRING([--enable-alloc-lite],[ enable for lightweight alloc assertions, for debug purposes ]), 506b7579f77SDag-Erling Smørgrav , ) 507*f44e67d1SCy 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 ]), 508b7579f77SDag-Erling Smørgrav , ) 509b7579f77SDag-Erling Smørgravif test x_$enable_alloc_nonregional = x_yes; then 510b7579f77SDag-Erling Smørgrav AC_DEFINE(UNBOUND_ALLOC_NONREGIONAL, 1, [use malloc not regions, for debug use]) 511b7579f77SDag-Erling Smørgravfi 512b7579f77SDag-Erling Smørgravif test x_$enable_alloc_checks = x_yes; then 513b7579f77SDag-Erling Smørgrav AC_DEFINE(UNBOUND_ALLOC_STATS, 1, [use statistics for allocs and frees, for debug use]) 5140eefd307SCy Schubert SLDNS_ALLOCCHECK_EXTRA_OBJ="alloc.lo log.lo" 5150eefd307SCy Schubert AC_SUBST(SLDNS_ALLOCCHECK_EXTRA_OBJ) 5160eefd307SCy Schubert ASYNCLOOK_ALLOCCHECK_EXTRA_OBJ="alloc.lo" 5170eefd307SCy Schubert AC_SUBST(ASYNCLOOK_ALLOCCHECK_EXTRA_OBJ) 518b7579f77SDag-Erling Smørgravelse 519b7579f77SDag-Erling Smørgrav if test x_$enable_alloc_lite = x_yes; then 520b7579f77SDag-Erling Smørgrav AC_DEFINE(UNBOUND_ALLOC_LITE, 1, [use to enable lightweight alloc assertions, for debug use]) 521b7579f77SDag-Erling Smørgrav else 522b7579f77SDag-Erling Smørgrav ACX_FUNC_MALLOC([unbound]) 523b7579f77SDag-Erling Smørgrav fi 524b7579f77SDag-Erling Smørgravfi 525b7579f77SDag-Erling Smørgrav 526b7579f77SDag-Erling Smørgrav# check windows threads (we use them, not pthreads, on windows). 527b7579f77SDag-Erling Smørgravif test "$on_mingw" = "yes"; then 528b7579f77SDag-Erling Smørgrav# check windows threads 529b7579f77SDag-Erling Smørgrav AC_CHECK_HEADERS([windows.h],,, [AC_INCLUDES_DEFAULT]) 530b7579f77SDag-Erling Smørgrav AC_MSG_CHECKING([for CreateThread]) 531b7579f77SDag-Erling Smørgrav AC_COMPILE_IFELSE([AC_LANG_PROGRAM([ 532b7579f77SDag-Erling Smørgrav#ifdef HAVE_WINDOWS_H 533b7579f77SDag-Erling Smørgrav#include <windows.h> 534b7579f77SDag-Erling Smørgrav#endif 535b7579f77SDag-Erling Smørgrav], [ 536b7579f77SDag-Erling Smørgrav HANDLE t = CreateThread(NULL, 0, NULL, NULL, 0, NULL); 537b7579f77SDag-Erling Smørgrav])], 538b7579f77SDag-Erling Smørgrav AC_MSG_RESULT(yes) 539b7579f77SDag-Erling Smørgrav AC_DEFINE(HAVE_WINDOWS_THREADS, 1, [Using Windows threads]) 540b7579f77SDag-Erling Smørgrav, 541b7579f77SDag-Erling Smørgrav AC_MSG_RESULT(no) 542b7579f77SDag-Erling Smørgrav) 543b7579f77SDag-Erling Smørgrav 544b7579f77SDag-Erling Smørgravelse 545b7579f77SDag-Erling Smørgrav# not on mingw, check thread libraries. 546b7579f77SDag-Erling Smørgrav 547b7579f77SDag-Erling Smørgrav# check for thread library. 548b7579f77SDag-Erling Smørgrav# check this first, so that the pthread lib does not get linked in via 549b7579f77SDag-Erling Smørgrav# libssl or libpython, and thus distorts the tests, and we end up using 550b7579f77SDag-Erling Smørgrav# the non-threadsafe C libraries. 551*f44e67d1SCy SchubertAC_ARG_WITH(pthreads, AS_HELP_STRING([--with-pthreads],[use pthreads library, or --without-pthreads to disable threading support.]), 552b7579f77SDag-Erling Smørgrav [ ],[ withval="yes" ]) 553b7579f77SDag-Erling Smørgravub_have_pthreads=no 554b7579f77SDag-Erling Smørgravif test x_$withval != x_no; then 55517d15b25SDag-Erling Smørgrav AX_PTHREAD([ 556b7579f77SDag-Erling Smørgrav AC_DEFINE(HAVE_PTHREAD,1,[Define if you have POSIX threads libraries and header files.]) 557971980c3SDag-Erling Smørgrav if test -n "$PTHREAD_LIBS"; then 558b7579f77SDag-Erling Smørgrav LIBS="$PTHREAD_LIBS $LIBS" 559971980c3SDag-Erling Smørgrav fi 560b7579f77SDag-Erling Smørgrav CFLAGS="$CFLAGS $PTHREAD_CFLAGS" 561b7579f77SDag-Erling Smørgrav CC="$PTHREAD_CC" 562b7579f77SDag-Erling Smørgrav ub_have_pthreads=yes 563b7579f77SDag-Erling Smørgrav AC_CHECK_TYPES([pthread_spinlock_t, pthread_rwlock_t],,,[#include <pthread.h>]) 564f61ef7f6SDag-Erling Smørgrav 565f61ef7f6SDag-Erling Smørgrav if echo "$CFLAGS" | $GREP -e "-pthread" >/dev/null; then 566f61ef7f6SDag-Erling Smørgrav AC_MSG_CHECKING([if -pthread unused during linking]) 567f61ef7f6SDag-Erling Smørgrav # catch clang warning 'argument unused during compilation' 568f61ef7f6SDag-Erling Smørgrav AC_LANG_CONFTEST([AC_LANG_SOURCE(AC_INCLUDES_DEFAULT 569f61ef7f6SDag-Erling Smørgrav[[ 570f61ef7f6SDag-Erling Smørgravint main(void) {return 0;} 571f61ef7f6SDag-Erling Smørgrav]])]) 572f61ef7f6SDag-Erling Smørgrav pthread_unused="yes" 573f61ef7f6SDag-Erling Smørgrav # first compile 574f61ef7f6SDag-Erling Smørgrav echo "$CC $CFLAGS -c conftest.c -o conftest.o" >&AS_MESSAGE_LOG_FD 575f61ef7f6SDag-Erling Smørgrav $CC $CFLAGS -c conftest.c -o conftest.o 2>&AS_MESSAGE_LOG_FD >&AS_MESSAGE_LOG_FD 576f61ef7f6SDag-Erling Smørgrav if test $? = 0; then 577f61ef7f6SDag-Erling Smørgrav # then link 578f61ef7f6SDag-Erling Smørgrav echo "$CC $CFLAGS -Werror $LDFLAGS $LIBS -o conftest contest.o" >&AS_MESSAGE_LOG_FD 579f61ef7f6SDag-Erling Smørgrav $CC $CFLAGS -Werror $LDFLAGS $LIBS -o conftest conftest.o 2>&AS_MESSAGE_LOG_FD >&AS_MESSAGE_LOG_FD 580f61ef7f6SDag-Erling Smørgrav if test $? -ne 0; then 581f61ef7f6SDag-Erling Smørgrav AC_MSG_RESULT(yes) 582f61ef7f6SDag-Erling Smørgrav CFLAGS=`echo "$CFLAGS" | sed -e 's/-pthread//'` 583f61ef7f6SDag-Erling Smørgrav PTHREAD_CFLAGS_ONLY="-pthread" 584f61ef7f6SDag-Erling Smørgrav AC_SUBST(PTHREAD_CFLAGS_ONLY) 585f61ef7f6SDag-Erling Smørgrav else 586f61ef7f6SDag-Erling Smørgrav AC_MSG_RESULT(no) 587f61ef7f6SDag-Erling Smørgrav fi 588f61ef7f6SDag-Erling Smørgrav else 589f61ef7f6SDag-Erling Smørgrav AC_MSG_RESULT(no) 590f61ef7f6SDag-Erling Smørgrav fi # endif cc successful 591f61ef7f6SDag-Erling Smørgrav rm -f conftest conftest.c conftest.o 592f61ef7f6SDag-Erling Smørgrav fi # endif -pthread in CFLAGS 593f61ef7f6SDag-Erling Smørgrav 594b7579f77SDag-Erling Smørgrav ]) 595b7579f77SDag-Erling Smørgravfi 596b7579f77SDag-Erling Smørgrav 597b7579f77SDag-Erling Smørgrav# check solaris thread library 598*f44e67d1SCy SchubertAC_ARG_WITH(solaris-threads, AS_HELP_STRING([--with-solaris-threads],[use solaris native thread library.]), [ ],[ withval="no" ]) 599b7579f77SDag-Erling Smørgravub_have_sol_threads=no 600b7579f77SDag-Erling Smørgravif test x_$withval != x_no; then 601b7579f77SDag-Erling Smørgrav if test x_$ub_have_pthreads != x_no; then 602*f44e67d1SCy Schubert AC_MSG_WARN([Have pthreads already, ignoring --with-solaris-threads]) 603b7579f77SDag-Erling Smørgrav else 604b7579f77SDag-Erling Smørgrav AC_SEARCH_LIBS(thr_create, [thread], 605b7579f77SDag-Erling Smørgrav [ 606b7579f77SDag-Erling Smørgrav AC_DEFINE(HAVE_SOLARIS_THREADS, 1, [Using Solaris threads]) 607b7579f77SDag-Erling Smørgrav 608b7579f77SDag-Erling Smørgrav ACX_CHECK_COMPILER_FLAG(mt, [CFLAGS="$CFLAGS -mt"], 609b7579f77SDag-Erling Smørgrav [CFLAGS="$CFLAGS -D_REENTRANT"]) 610b7579f77SDag-Erling Smørgrav ub_have_sol_threads=yes 611b7579f77SDag-Erling Smørgrav ] , [ 612*f44e67d1SCy Schubert AC_MSG_ERROR([no solaris threads found.]) 613b7579f77SDag-Erling Smørgrav ]) 614b7579f77SDag-Erling Smørgrav fi 615b7579f77SDag-Erling Smørgravfi 616b7579f77SDag-Erling Smørgrav 617b7579f77SDag-Erling Smørgravfi # end of non-mingw check of thread libraries 618b7579f77SDag-Erling Smørgrav 6190eefd307SCy Schubert# Check for SYSLOG_FACILITY 620*f44e67d1SCy SchubertAC_ARG_WITH(syslog-facility, AS_HELP_STRING([--with-syslog-facility=LOCAL0 - LOCAL7],[ set SYSLOG_FACILITY, default DAEMON ]), 6210eefd307SCy Schubert [ UNBOUND_SYSLOG_FACILITY="$withval" ], []) 6220eefd307SCy Schubertcase "${UNBOUND_SYSLOG_FACILITY}" in 6230eefd307SCy Schubert 6240eefd307SCy Schubert LOCAL[[0-7]]) UNBOUND_SYSLOG_FACILITY="LOG_${UNBOUND_SYSLOG_FACILITY}" ;; 6250eefd307SCy Schubert 6260eefd307SCy Schubert *) UNBOUND_SYSLOG_FACILITY="LOG_DAEMON" ;; 6270eefd307SCy Schubert 6280eefd307SCy Schubertesac 6290eefd307SCy SchubertAC_DEFINE_UNQUOTED(UB_SYSLOG_FACILITY,${UNBOUND_SYSLOG_FACILITY},[the SYSLOG_FACILITY to use, default LOG_DAEMON]) 6300eefd307SCy Schubert 63125039b37SCy Schubert# Check for dynamic library module 63225039b37SCy SchubertAC_ARG_WITH(dynlibmodule, 633*f44e67d1SCy Schubert AS_HELP_STRING([--with-dynlibmodule],[build dynamic library module, or --without-dynlibmodule to disable it. (default=no)]), 63425039b37SCy Schubert [], [ withval="no" ]) 63525039b37SCy Schubert 63625039b37SCy Schubertif test x_$withval != x_no; then 63725039b37SCy Schubert AC_DEFINE(WITH_DYNLIBMODULE, 1, [Define if you want dynlib module.]) 63825039b37SCy Schubert WITH_DYNLIBMODULE=yes 63925039b37SCy Schubert AC_SUBST(WITH_DYNLIBMODULE) 64025039b37SCy Schubert DYNLIBMOD_OBJ="dynlibmod.lo" 64125039b37SCy Schubert AC_SUBST(DYNLIBMOD_OBJ) 64225039b37SCy Schubert DYNLIBMOD_HEADER='$(srcdir)/dynlibmod/dynlibmod.h' 64325039b37SCy Schubert AC_SUBST(DYNLIBMOD_HEADER) 64425039b37SCy Schubert if test $on_mingw = "no"; then 645*f44e67d1SCy Schubert # link with -ldl if not already there, for all executables because 646*f44e67d1SCy Schubert # dlopen call is in the dynlib module. For unbound executable, also 647*f44e67d1SCy Schubert # export symbols. 648*f44e67d1SCy Schubert AC_SEARCH_LIBS([dlopen], [dl]) 649*f44e67d1SCy Schubert DYNLIBMOD_EXTRALIBS="-export-dynamic" 65025039b37SCy Schubert else 651*f44e67d1SCy Schubert DYNLIBMOD_EXTRALIBS="-Wl,--export-all-symbols,--out-implib,libunbound.dll.a" 65225039b37SCy Schubert fi 65325039b37SCy Schubert AC_SUBST(DYNLIBMOD_EXTRALIBS) 65425039b37SCy Schubertfi 65525039b37SCy Schubert 656b7579f77SDag-Erling Smørgrav# Check for PyUnbound 657b7579f77SDag-Erling SmørgravAC_ARG_WITH(pyunbound, 658*f44e67d1SCy Schubert AS_HELP_STRING([--with-pyunbound],[build PyUnbound, or --without-pyunbound to skip it. (default=no)]), 659b7579f77SDag-Erling Smørgrav [], [ withval="no" ]) 660b7579f77SDag-Erling Smørgrav 661b7579f77SDag-Erling Smørgravub_test_python=no 662b7579f77SDag-Erling Smørgravub_with_pyunbound=no 663b7579f77SDag-Erling Smørgravif test x_$withval != x_no; then 664b7579f77SDag-Erling Smørgrav ub_with_pyunbound=yes 665b7579f77SDag-Erling Smørgrav ub_test_python=yes 666b7579f77SDag-Erling Smørgravfi 667b7579f77SDag-Erling Smørgrav 668b7579f77SDag-Erling Smørgrav# Check for Python module 669b7579f77SDag-Erling SmørgravAC_ARG_WITH(pythonmodule, 670*f44e67d1SCy Schubert AS_HELP_STRING([--with-pythonmodule],[build Python module, or --without-pythonmodule to disable script engine. (default=no)]), 671b7579f77SDag-Erling Smørgrav [], [ withval="no" ]) 672b7579f77SDag-Erling Smørgrav 673b7579f77SDag-Erling Smørgravub_with_pythonmod=no 674b7579f77SDag-Erling Smørgravif test x_$withval != x_no; then 675b7579f77SDag-Erling Smørgrav ub_with_pythonmod=yes 676b7579f77SDag-Erling Smørgrav ub_test_python=yes 677b7579f77SDag-Erling Smørgravfi 678b7579f77SDag-Erling Smørgrav 679b7579f77SDag-Erling Smørgrav# Check for Python & SWIG only on PyUnbound or PyModule 680b7579f77SDag-Erling Smørgravif test x_$ub_test_python != x_no; then 681b7579f77SDag-Erling Smørgrav 682b7579f77SDag-Erling Smørgrav # Check for Python 683b7579f77SDag-Erling Smørgrav ub_have_python=no 684b7579f77SDag-Erling Smørgrav ac_save_LIBS="$LIBS" dnl otherwise AC_PYTHON_DEVEL thrashes $LIBS 685b7579f77SDag-Erling Smørgrav AC_PYTHON_DEVEL 686b7579f77SDag-Erling Smørgrav if test ! -z "$PYTHON_VERSION"; then 687ff825849SDag-Erling Smørgrav if test `$PYTHON -c "print('$PYTHON_VERSION' >= '2.4.0')"` = "False"; then 688*f44e67d1SCy Schubert AC_MSG_ERROR([Python version >= 2.4.0 is required]) 689b7579f77SDag-Erling Smørgrav fi 690b7579f77SDag-Erling Smørgrav 691b75612f8SDag-Erling Smørgrav [PY_MAJOR_VERSION="`$PYTHON -c \"import sys; print(sys.version_info[0])\"`"] 69209a3aaf3SDag-Erling Smørgrav AC_SUBST(PY_MAJOR_VERSION) 693b7579f77SDag-Erling Smørgrav # Have Python 694b7579f77SDag-Erling Smørgrav AC_DEFINE(HAVE_PYTHON,1,[Define if you have Python libraries and header files.]) 695971980c3SDag-Erling Smørgrav if test -n "$LIBS"; then 696b7579f77SDag-Erling Smørgrav LIBS="$PYTHON_LDFLAGS $LIBS" 697971980c3SDag-Erling Smørgrav else 698971980c3SDag-Erling Smørgrav LIBS="$PYTHON_LDFLAGS" 699971980c3SDag-Erling Smørgrav fi 700971980c3SDag-Erling Smørgrav if test -n "$CPPFLAGS"; then 701b7579f77SDag-Erling Smørgrav CPPFLAGS="$CPPFLAGS $PYTHON_CPPFLAGS" 702971980c3SDag-Erling Smørgrav else 703971980c3SDag-Erling Smørgrav CPPFLAGS="$PYTHON_CPPFLAGS" 704971980c3SDag-Erling Smørgrav fi 70525039b37SCy Schubert if test "$PYTHON_LIBDIR" != "/usr/lib" -a "$PYTHON_LIBDIR" != "" -a "$PYTHON_LIBDIR" != "/usr/lib64"; then 70625039b37SCy Schubert ACX_RUNTIME_PATH_ADD([$PYTHON_LIBDIR]) 70725039b37SCy Schubert fi 708b7579f77SDag-Erling Smørgrav ub_have_python=yes 7094c75e3aaSDag-Erling Smørgrav PKG_CHECK_EXISTS(["python${PY_MAJOR_VERSION}"], 7104c75e3aaSDag-Erling Smørgrav [PC_PY_DEPENDENCY="python${PY_MAJOR_VERSION}"], 7114c75e3aaSDag-Erling Smørgrav [PC_PY_DEPENDENCY="python"]) 712bc892140SDag-Erling Smørgrav AC_SUBST(PC_PY_DEPENDENCY) 713b7579f77SDag-Erling Smørgrav 714b7579f77SDag-Erling Smørgrav # Check for SWIG 715b7579f77SDag-Erling Smørgrav ub_have_swig=no 716*f44e67d1SCy 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])) 71757bddd21SDag-Erling Smørgrav if test "$enable_swig_version_check" = "yes"; then 71865b390aaSDag-Erling Smørgrav AC_PROG_SWIG(2.0.1) 71957bddd21SDag-Erling Smørgrav else 72057bddd21SDag-Erling Smørgrav AC_PROG_SWIG 72157bddd21SDag-Erling Smørgrav fi 722b7579f77SDag-Erling Smørgrav AC_MSG_CHECKING(SWIG) 723b7579f77SDag-Erling Smørgrav if test ! -x "$SWIG"; then 724*f44e67d1SCy Schubert AC_MSG_ERROR([failed to find swig tool, install it, or do not build Python module and PyUnbound]) 725b7579f77SDag-Erling Smørgrav else 726b7579f77SDag-Erling Smørgrav AC_DEFINE(HAVE_SWIG, 1, [Define if you have Swig libraries and header files.]) 727b7579f77SDag-Erling Smørgrav AC_SUBST(swig, "$SWIG") 728b7579f77SDag-Erling Smørgrav AC_MSG_RESULT(present) 729b7579f77SDag-Erling Smørgrav 730b7579f77SDag-Erling Smørgrav # If have Python & SWIG 731b7579f77SDag-Erling Smørgrav # Declare PythonMod 732b7579f77SDag-Erling Smørgrav if test x_$ub_with_pythonmod != x_no; then 733b7579f77SDag-Erling Smørgrav AC_DEFINE(WITH_PYTHONMODULE, 1, [Define if you want Python module.]) 734b7579f77SDag-Erling Smørgrav WITH_PYTHONMODULE=yes 735b7579f77SDag-Erling Smørgrav AC_SUBST(WITH_PYTHONMODULE) 736b7579f77SDag-Erling Smørgrav PYTHONMOD_OBJ="pythonmod.lo pythonmod_utils.lo" 737b7579f77SDag-Erling Smørgrav AC_SUBST(PYTHONMOD_OBJ) 738b7579f77SDag-Erling Smørgrav PYTHONMOD_HEADER='$(srcdir)/pythonmod/pythonmod.h' 739b7579f77SDag-Erling Smørgrav AC_SUBST(PYTHONMOD_HEADER) 740b7579f77SDag-Erling Smørgrav PYTHONMOD_INSTALL=pythonmod-install 741b7579f77SDag-Erling Smørgrav AC_SUBST(PYTHONMOD_INSTALL) 742b7579f77SDag-Erling Smørgrav PYTHONMOD_UNINSTALL=pythonmod-uninstall 743b7579f77SDag-Erling Smørgrav AC_SUBST(PYTHONMOD_UNINSTALL) 744b7579f77SDag-Erling Smørgrav fi 745b7579f77SDag-Erling Smørgrav 746b7579f77SDag-Erling Smørgrav # Declare PyUnbound 747b7579f77SDag-Erling Smørgrav if test x_$ub_with_pyunbound != x_no; then 748b7579f77SDag-Erling Smørgrav AC_DEFINE(WITH_PYUNBOUND, 1, [Define if you want PyUnbound.]) 749b7579f77SDag-Erling Smørgrav WITH_PYUNBOUND=yes 750b7579f77SDag-Erling Smørgrav AC_SUBST(WITH_PYUNBOUND) 751b7579f77SDag-Erling Smørgrav PYUNBOUND_OBJ="libunbound_wrap.lo" 752b7579f77SDag-Erling Smørgrav AC_SUBST(PYUNBOUND_OBJ) 753b7579f77SDag-Erling Smørgrav PYUNBOUND_TARGET="_unbound.la" 754b7579f77SDag-Erling Smørgrav AC_SUBST(PYUNBOUND_TARGET) 755b7579f77SDag-Erling Smørgrav PYUNBOUND_INSTALL=pyunbound-install 756b7579f77SDag-Erling Smørgrav AC_SUBST(PYUNBOUND_INSTALL) 757b7579f77SDag-Erling Smørgrav PYUNBOUND_UNINSTALL=pyunbound-uninstall 758b7579f77SDag-Erling Smørgrav AC_SUBST(PYUNBOUND_UNINSTALL) 759b7579f77SDag-Erling Smørgrav fi 760b7579f77SDag-Erling Smørgrav fi 761b7579f77SDag-Erling Smørgrav else 762b7579f77SDag-Erling Smørgrav AC_MSG_RESULT([*** Python libraries not found, won't build PythonMod or PyUnbound ***]) 763b7579f77SDag-Erling Smørgrav ub_with_pyunbound=no 764b7579f77SDag-Erling Smørgrav ub_with_pythonmod=no 765b7579f77SDag-Erling Smørgrav fi 766b7579f77SDag-Erling Smørgravfi 767b7579f77SDag-Erling Smørgrav 768b7579f77SDag-Erling Smørgravif test "`uname`" = "NetBSD"; then 769b7579f77SDag-Erling Smørgrav NETBSD_LINTFLAGS='"-D__RENAME(x)=" -D_NETINET_IN_H_' 770b7579f77SDag-Erling Smørgrav AC_SUBST(NETBSD_LINTFLAGS) 771b7579f77SDag-Erling Smørgravfi 772b7579f77SDag-Erling SmørgravCONFIG_DATE=`date +%Y%m%d` 773b7579f77SDag-Erling SmørgravAC_SUBST(CONFIG_DATE) 774b7579f77SDag-Erling Smørgrav 775b7579f77SDag-Erling Smørgrav# Checks for libraries. 7768ed2b524SDag-Erling Smørgrav 7778ed2b524SDag-Erling Smørgrav# libnss 7788ed2b524SDag-Erling SmørgravUSE_NSS="no" 779*f44e67d1SCy SchubertAC_ARG_WITH([nss], AS_HELP_STRING([--with-nss=path],[use libnss instead of openssl, installed at path.]), 7808ed2b524SDag-Erling Smørgrav [ 7818ed2b524SDag-Erling Smørgrav USE_NSS="yes" 7828ed2b524SDag-Erling Smørgrav AC_DEFINE(HAVE_NSS, 1, [Use libnss for crypto]) 7838ed2b524SDag-Erling Smørgrav if test "$withval" != "" -a "$withval" != "yes"; then 7848ed2b524SDag-Erling Smørgrav CPPFLAGS="$CPPFLAGS -I$withval/include/nss3" 7858ed2b524SDag-Erling Smørgrav LDFLAGS="$LDFLAGS -L$withval/lib" 7868ed2b524SDag-Erling Smørgrav ACX_RUNTIME_PATH_ADD([$withval/lib]) 7878ed2b524SDag-Erling Smørgrav CPPFLAGS="-I$withval/include/nspr4 $CPPFLAGS" 7888ed2b524SDag-Erling Smørgrav else 7898ed2b524SDag-Erling Smørgrav CPPFLAGS="$CPPFLAGS -I/usr/include/nss3" 7908ed2b524SDag-Erling Smørgrav CPPFLAGS="-I/usr/include/nspr4 $CPPFLAGS" 7918ed2b524SDag-Erling Smørgrav fi 7928ed2b524SDag-Erling Smørgrav LIBS="$LIBS -lnss3 -lnspr4" 79305ab2901SDag-Erling Smørgrav SSLLIB="" 794091e9e46SCy Schubert PC_CRYPTO_DEPENDENCY="nss nspr" 795091e9e46SCy Schubert AC_SUBST(PC_CRYPTO_DEPENDENCY) 79605ab2901SDag-Erling Smørgrav ] 79705ab2901SDag-Erling Smørgrav) 79805ab2901SDag-Erling Smørgrav 79905ab2901SDag-Erling Smørgrav# libnettle 80005ab2901SDag-Erling SmørgravUSE_NETTLE="no" 801*f44e67d1SCy SchubertAC_ARG_WITH([nettle], AS_HELP_STRING([--with-nettle=path],[use libnettle as crypto library, installed at path.]), 80205ab2901SDag-Erling Smørgrav [ 80305ab2901SDag-Erling Smørgrav USE_NETTLE="yes" 80405ab2901SDag-Erling Smørgrav AC_DEFINE(HAVE_NETTLE, 1, [Use libnettle for crypto]) 805b5663de9SDag-Erling Smørgrav AC_CHECK_HEADERS([nettle/dsa-compat.h],,, [AC_INCLUDES_DEFAULT]) 80605ab2901SDag-Erling Smørgrav if test "$withval" != "" -a "$withval" != "yes"; then 80705ab2901SDag-Erling Smørgrav CPPFLAGS="$CPPFLAGS -I$withval/include/nettle" 80805ab2901SDag-Erling Smørgrav LDFLAGS="$LDFLAGS -L$withval/lib" 80905ab2901SDag-Erling Smørgrav ACX_RUNTIME_PATH_ADD([$withval/lib]) 81005ab2901SDag-Erling Smørgrav else 81105ab2901SDag-Erling Smørgrav CPPFLAGS="$CPPFLAGS -I/usr/include/nettle" 81205ab2901SDag-Erling Smørgrav fi 81305ab2901SDag-Erling Smørgrav LIBS="$LIBS -lhogweed -lnettle -lgmp" 81405ab2901SDag-Erling Smørgrav SSLLIB="" 815091e9e46SCy Schubert PC_CRYPTO_DEPENDENCY="hogweed nettle" 816091e9e46SCy Schubert AC_SUBST(PC_CRYPTO_DEPENDENCY) 8178ed2b524SDag-Erling Smørgrav ] 8188ed2b524SDag-Erling Smørgrav) 8198ed2b524SDag-Erling Smørgrav 8208ed2b524SDag-Erling Smørgrav# openssl 82105ab2901SDag-Erling Smørgravif test $USE_NSS = "no" -a $USE_NETTLE = "no"; then 822b7579f77SDag-Erling SmørgravACX_WITH_SSL 823b7579f77SDag-Erling SmørgravACX_LIB_SSL 82405ab2901SDag-Erling SmørgravSSLLIB="-lssl" 825b5663de9SDag-Erling Smørgrav 826091e9e46SCy SchubertPC_CRYPTO_DEPENDENCY="libcrypto libssl" 827091e9e46SCy SchubertAC_SUBST(PC_CRYPTO_DEPENDENCY) 828091e9e46SCy Schubert 829b5663de9SDag-Erling Smørgrav# check if -lcrypt32 is needed because CAPIENG needs that. (on windows) 830b5663de9SDag-Erling SmørgravBAKLIBS="$LIBS" 831b5663de9SDag-Erling SmørgravLIBS="-lssl $LIBS" 832b5663de9SDag-Erling SmørgravAC_MSG_CHECKING([if libssl needs -lcrypt32]) 833*f44e67d1SCy SchubertAC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ 834*f44e67d1SCy Schubert int EVP_sha256(void); 835*f44e67d1SCy Schubert (void)EVP_sha256(); 836*f44e67d1SCy Schubert]])], [ 837b5663de9SDag-Erling Smørgrav AC_MSG_RESULT([no]) 838b5663de9SDag-Erling Smørgrav LIBS="$BAKLIBS" 839b5663de9SDag-Erling Smørgrav], [ 840b5663de9SDag-Erling Smørgrav AC_MSG_RESULT([yes]) 841b5663de9SDag-Erling Smørgrav LIBS="$BAKLIBS" 842b5663de9SDag-Erling Smørgrav LIBS="$LIBS -lcrypt32" 843b5663de9SDag-Erling Smørgrav]) 844b5663de9SDag-Erling Smørgrav 845ff825849SDag-Erling SmørgravAC_MSG_CHECKING([for LibreSSL]) 846b75612f8SDag-Erling Smørgravif grep VERSION_TEXT $ssldir/include/openssl/opensslv.h | grep "LibreSSL" >/dev/null; then 847ff825849SDag-Erling Smørgrav AC_MSG_RESULT([yes]) 848ff825849SDag-Erling Smørgrav AC_DEFINE([HAVE_LIBRESSL], [1], [Define if we have LibreSSL]) 849ff825849SDag-Erling Smørgrav # libressl provides these compat functions, but they may also be 850ff825849SDag-Erling Smørgrav # declared by the OS in libc. See if they have been declared. 8510eefd307SCy Schubert AC_CHECK_DECLS([strlcpy,strlcat,arc4random,arc4random_uniform]) 852ff825849SDag-Erling Smørgravelse 853ff825849SDag-Erling Smørgrav AC_MSG_RESULT([no]) 854ff825849SDag-Erling Smørgravfi 85525039b37SCy 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],,, [AC_INCLUDES_DEFAULT]) 856c0caa2e2SCy SchubertAC_CHECK_FUNCS([OPENSSL_config EVP_sha1 EVP_sha256 EVP_sha512 FIPS_mode EVP_MD_CTX_new OpenSSL_add_all_digests OPENSSL_init_crypto EVP_cleanup 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]) 857b5663de9SDag-Erling Smørgrav 858b5663de9SDag-Erling Smørgrav# these check_funcs need -lssl 859b5663de9SDag-Erling SmørgravBAKLIBS="$LIBS" 860b5663de9SDag-Erling SmørgravLIBS="-lssl $LIBS" 861c0caa2e2SCy 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]) 862b5663de9SDag-Erling SmørgravLIBS="$BAKLIBS" 863b5663de9SDag-Erling Smørgrav 864b75612f8SDag-Erling SmørgravAC_CHECK_DECLS([SSL_COMP_get_compression_methods,sk_SSL_COMP_pop_free,SSL_CTX_set_ecdh_auto], [], [], [ 865b7579f77SDag-Erling SmørgravAC_INCLUDES_DEFAULT 866b7579f77SDag-Erling Smørgrav#ifdef HAVE_OPENSSL_ERR_H 867b7579f77SDag-Erling Smørgrav#include <openssl/err.h> 868b7579f77SDag-Erling Smørgrav#endif 869b7579f77SDag-Erling Smørgrav 870b7579f77SDag-Erling Smørgrav#ifdef HAVE_OPENSSL_RAND_H 871b7579f77SDag-Erling Smørgrav#include <openssl/rand.h> 872b7579f77SDag-Erling Smørgrav#endif 873b7579f77SDag-Erling Smørgrav 874b7579f77SDag-Erling Smørgrav#ifdef HAVE_OPENSSL_CONF_H 875b7579f77SDag-Erling Smørgrav#include <openssl/conf.h> 876b7579f77SDag-Erling Smørgrav#endif 877b7579f77SDag-Erling Smørgrav 878b7579f77SDag-Erling Smørgrav#ifdef HAVE_OPENSSL_ENGINE_H 879b7579f77SDag-Erling Smørgrav#include <openssl/engine.h> 880b7579f77SDag-Erling Smørgrav#endif 881b7579f77SDag-Erling Smørgrav#include <openssl/ssl.h> 882b7579f77SDag-Erling Smørgrav#include <openssl/evp.h> 883b7579f77SDag-Erling Smørgrav]) 8840eefd307SCy Schubert 8850eefd307SCy Schubertif test "$ac_cv_func_HMAC_Init_ex" = "yes"; then 8860eefd307SCy Schubert# check function return type. 8870eefd307SCy SchubertAC_MSG_CHECKING(the return type of HMAC_Init_ex) 8880eefd307SCy SchubertAC_COMPILE_IFELSE([AC_LANG_PROGRAM([ 8890eefd307SCy Schubert#ifdef HAVE_OPENSSL_ERR_H 8900eefd307SCy Schubert#include <openssl/err.h> 8910eefd307SCy Schubert#endif 8920eefd307SCy Schubert 8930eefd307SCy Schubert#ifdef HAVE_OPENSSL_RAND_H 8940eefd307SCy Schubert#include <openssl/rand.h> 8950eefd307SCy Schubert#endif 8960eefd307SCy Schubert 8970eefd307SCy Schubert#ifdef HAVE_OPENSSL_CONF_H 8980eefd307SCy Schubert#include <openssl/conf.h> 8990eefd307SCy Schubert#endif 9000eefd307SCy Schubert 9010eefd307SCy Schubert#ifdef HAVE_OPENSSL_ENGINE_H 9020eefd307SCy Schubert#include <openssl/engine.h> 9030eefd307SCy Schubert#endif 9040eefd307SCy Schubert#include <openssl/ssl.h> 9050eefd307SCy Schubert#include <openssl/evp.h> 9060eefd307SCy Schubert], [ 9070eefd307SCy Schubert HMAC_CTX* hmac_ctx = NULL; 9080eefd307SCy Schubert void* hmac_key = NULL; 9090eefd307SCy Schubert const EVP_MD* digest = NULL; 9100eefd307SCy Schubert int x = HMAC_Init_ex(hmac_ctx, hmac_key, 32, digest, NULL); 9110eefd307SCy Schubert (void)x; 9120eefd307SCy Schubert])], [ 9130eefd307SCy Schubert AC_MSG_RESULT(int) 9140eefd307SCy Schubert], [ 9150eefd307SCy Schubert AC_MSG_RESULT(void) 9160eefd307SCy Schubert AC_DEFINE([HMAC_INIT_EX_RETURNS_VOID], 1, [If HMAC_Init_ex() returns void]) 9170eefd307SCy Schubert]) 9180eefd307SCy Schubertfi 9190eefd307SCy Schubert 9208ed2b524SDag-Erling Smørgravfi 92105ab2901SDag-Erling SmørgravAC_SUBST(SSLLIB) 9228ed2b524SDag-Erling Smørgrav 923091e9e46SCy Schubert# libbsd 924*f44e67d1SCy SchubertAC_ARG_WITH([libbsd], AS_HELP_STRING([--with-libbsd],[Use portable libbsd functions]), [ 925091e9e46SCy Schubert AC_CHECK_HEADERS([bsd/string.h bsd/stdlib.h],,, [AC_INCLUDES_DEFAULT]) 926091e9e46SCy Schubert if test "x$ac_cv_header_bsd_string_h" = xyes -a "x$ac_cv_header_bsd_stdlib_h" = xyes; then 927091e9e46SCy Schubert for func in strlcpy strlcat arc4random arc4random_uniform reallocarray; do 928091e9e46SCy Schubert AC_SEARCH_LIBS([$func], [bsd], [ 929091e9e46SCy Schubert AC_DEFINE(HAVE_LIBBSD, 1, [Use portable libbsd functions]) 930091e9e46SCy Schubert PC_LIBBSD_DEPENDENCY=libbsd 931091e9e46SCy Schubert AC_SUBST(PC_LIBBSD_DEPENDENCY) 932091e9e46SCy Schubert ]) 933091e9e46SCy Schubert done 934091e9e46SCy Schubert fi 935091e9e46SCy Schubert]) 936b7579f77SDag-Erling Smørgrav 937*f44e67d1SCy SchubertAC_ARG_ENABLE(sha1, AS_HELP_STRING([--disable-sha1],[Disable SHA1 RRSIG support, does not disable nsec3 support])) 93865b390aaSDag-Erling Smørgravcase "$enable_sha1" in 93965b390aaSDag-Erling Smørgrav no) 94065b390aaSDag-Erling Smørgrav ;; 94165b390aaSDag-Erling Smørgrav yes|*) 94265b390aaSDag-Erling Smørgrav AC_DEFINE([USE_SHA1], [1], [Define this to enable SHA1 support.]) 94365b390aaSDag-Erling Smørgrav ;; 94465b390aaSDag-Erling Smørgravesac 94565b390aaSDag-Erling Smørgrav 94665b390aaSDag-Erling Smørgrav 947*f44e67d1SCy SchubertAC_ARG_ENABLE(sha2, AS_HELP_STRING([--disable-sha2],[Disable SHA256 and SHA512 RRSIG support])) 948b7579f77SDag-Erling Smørgravcase "$enable_sha2" in 949b7579f77SDag-Erling Smørgrav no) 950b7579f77SDag-Erling Smørgrav ;; 951b7579f77SDag-Erling Smørgrav yes|*) 952b7579f77SDag-Erling Smørgrav AC_DEFINE([USE_SHA2], [1], [Define this to enable SHA256 and SHA512 support.]) 953b7579f77SDag-Erling Smørgrav ;; 954b7579f77SDag-Erling Smørgravesac 955b7579f77SDag-Erling Smørgrav 956*f44e67d1SCy SchubertAC_ARG_ENABLE(subnet, AS_HELP_STRING([--enable-subnet],[Enable client subnet])) 95765b390aaSDag-Erling Smørgravcase "$enable_subnet" in 95865b390aaSDag-Erling Smørgrav yes) 95965b390aaSDag-Erling Smørgrav AC_DEFINE([CLIENT_SUBNET], [1], [Define this to enable client subnet option.]) 96065b390aaSDag-Erling Smørgrav SUBNET_OBJ="edns-subnet.lo subnetmod.lo addrtree.lo subnet-whitelist.lo" 96165b390aaSDag-Erling Smørgrav AC_SUBST(SUBNET_OBJ) 96265b390aaSDag-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' 96365b390aaSDag-Erling Smørgrav AC_SUBST(SUBNET_HEADER) 96465b390aaSDag-Erling Smørgrav ;; 96565b390aaSDag-Erling Smørgrav no|*) 96665b390aaSDag-Erling Smørgrav ;; 96765b390aaSDag-Erling Smørgravesac 96865b390aaSDag-Erling Smørgrav 969b7579f77SDag-Erling Smørgrav# check wether gost also works 970b7579f77SDag-Erling SmørgravAC_DEFUN([AC_CHECK_GOST_WORKS], 971b7579f77SDag-Erling Smørgrav[AC_REQUIRE([AC_PROG_CC]) 972b7579f77SDag-Erling SmørgravAC_MSG_CHECKING([if GOST works]) 973b7579f77SDag-Erling Smørgravif test c${cross_compiling} = cno; then 974b7579f77SDag-Erling SmørgravBAKCFLAGS="$CFLAGS" 975b7579f77SDag-Erling Smørgravif test -n "$ssldir"; then 976b7579f77SDag-Erling Smørgrav CFLAGS="$CFLAGS -Wl,-rpath,$ssldir/lib" 977b7579f77SDag-Erling Smørgravfi 978b7579f77SDag-Erling SmørgravAC_RUN_IFELSE([AC_LANG_SOURCE([[ 979b7579f77SDag-Erling Smørgrav#include <string.h> 980b7579f77SDag-Erling Smørgrav#include <openssl/ssl.h> 981b7579f77SDag-Erling Smørgrav#include <openssl/evp.h> 982b7579f77SDag-Erling Smørgrav#include <openssl/engine.h> 983b7579f77SDag-Erling Smørgrav#include <openssl/conf.h> 98417d15b25SDag-Erling Smørgrav/* routine to load gost (from sldns) */ 985b7579f77SDag-Erling Smørgravint load_gost_id(void) 986b7579f77SDag-Erling Smørgrav{ 987b7579f77SDag-Erling Smørgrav static int gost_id = 0; 988b7579f77SDag-Erling Smørgrav const EVP_PKEY_ASN1_METHOD* meth; 989b7579f77SDag-Erling Smørgrav ENGINE* e; 990b7579f77SDag-Erling Smørgrav 991b7579f77SDag-Erling Smørgrav if(gost_id) return gost_id; 992b7579f77SDag-Erling Smørgrav 993b7579f77SDag-Erling Smørgrav /* see if configuration loaded gost implementation from other engine*/ 994b7579f77SDag-Erling Smørgrav meth = EVP_PKEY_asn1_find_str(NULL, "gost2001", -1); 995b7579f77SDag-Erling Smørgrav if(meth) { 996b7579f77SDag-Erling Smørgrav EVP_PKEY_asn1_get0_info(&gost_id, NULL, NULL, NULL, NULL, meth); 997b7579f77SDag-Erling Smørgrav return gost_id; 998b7579f77SDag-Erling Smørgrav } 999b7579f77SDag-Erling Smørgrav 1000b7579f77SDag-Erling Smørgrav /* see if engine can be loaded already */ 1001b7579f77SDag-Erling Smørgrav e = ENGINE_by_id("gost"); 1002b7579f77SDag-Erling Smørgrav if(!e) { 1003b7579f77SDag-Erling Smørgrav /* load it ourself, in case statically linked */ 1004b7579f77SDag-Erling Smørgrav ENGINE_load_builtin_engines(); 1005b7579f77SDag-Erling Smørgrav ENGINE_load_dynamic(); 1006b7579f77SDag-Erling Smørgrav e = ENGINE_by_id("gost"); 1007b7579f77SDag-Erling Smørgrav } 1008b7579f77SDag-Erling Smørgrav if(!e) { 1009b7579f77SDag-Erling Smørgrav /* no gost engine in openssl */ 1010b7579f77SDag-Erling Smørgrav return 0; 1011b7579f77SDag-Erling Smørgrav } 1012b7579f77SDag-Erling Smørgrav if(!ENGINE_set_default(e, ENGINE_METHOD_ALL)) { 1013b7579f77SDag-Erling Smørgrav ENGINE_finish(e); 1014b7579f77SDag-Erling Smørgrav ENGINE_free(e); 1015b7579f77SDag-Erling Smørgrav return 0; 1016b7579f77SDag-Erling Smørgrav } 1017b7579f77SDag-Erling Smørgrav 1018b7579f77SDag-Erling Smørgrav meth = EVP_PKEY_asn1_find_str(&e, "gost2001", -1); 1019b7579f77SDag-Erling Smørgrav if(!meth) { 1020b7579f77SDag-Erling Smørgrav /* algo not found */ 1021b7579f77SDag-Erling Smørgrav ENGINE_finish(e); 1022b7579f77SDag-Erling Smørgrav ENGINE_free(e); 1023b7579f77SDag-Erling Smørgrav return 0; 1024b7579f77SDag-Erling Smørgrav } 1025b7579f77SDag-Erling Smørgrav EVP_PKEY_asn1_get0_info(&gost_id, NULL, NULL, NULL, NULL, meth); 1026b7579f77SDag-Erling Smørgrav return gost_id; 1027b7579f77SDag-Erling Smørgrav} 1028b7579f77SDag-Erling Smørgravint main(void) { 1029b7579f77SDag-Erling Smørgrav EVP_MD_CTX* ctx; 1030b7579f77SDag-Erling Smørgrav const EVP_MD* md; 1031b7579f77SDag-Erling Smørgrav unsigned char digest[64]; /* its a 256-bit digest, so uses 32 bytes */ 1032b7579f77SDag-Erling Smørgrav const char* str = "Hello world"; 1033b7579f77SDag-Erling Smørgrav const unsigned char check[] = { 1034b7579f77SDag-Erling Smørgrav 0x40 , 0xed , 0xf8 , 0x56 , 0x5a , 0xc5 , 0x36 , 0xe1 , 1035b7579f77SDag-Erling Smørgrav 0x33 , 0x7c , 0x7e , 0x87 , 0x62 , 0x1c , 0x42 , 0xe0 , 1036b7579f77SDag-Erling Smørgrav 0x17 , 0x1b , 0x5e , 0xce , 0xa8 , 0x46 , 0x65 , 0x4d , 1037b7579f77SDag-Erling Smørgrav 0x8d , 0x3e , 0x22 , 0x9b , 0xe1 , 0x30 , 0x19 , 0x9d 1038b7579f77SDag-Erling Smørgrav }; 1039b7579f77SDag-Erling Smørgrav OPENSSL_config(NULL); 1040b7579f77SDag-Erling Smørgrav (void)load_gost_id(); 1041b7579f77SDag-Erling Smørgrav md = EVP_get_digestbyname("md_gost94"); 1042b7579f77SDag-Erling Smørgrav if(!md) return 1; 1043b7579f77SDag-Erling Smørgrav memset(digest, 0, sizeof(digest)); 1044b7579f77SDag-Erling Smørgrav ctx = EVP_MD_CTX_create(); 1045b7579f77SDag-Erling Smørgrav if(!ctx) return 2; 1046b7579f77SDag-Erling Smørgrav if(!EVP_DigestInit_ex(ctx, md, NULL)) return 3; 1047b7579f77SDag-Erling Smørgrav if(!EVP_DigestUpdate(ctx, str, 10)) return 4; 1048b7579f77SDag-Erling Smørgrav if(!EVP_DigestFinal_ex(ctx, digest, NULL)) return 5; 1049b7579f77SDag-Erling Smørgrav /* uncomment to see the hash calculated. 1050b7579f77SDag-Erling Smørgrav {int i; 1051b7579f77SDag-Erling Smørgrav for(i=0; i<32; i++) 1052b7579f77SDag-Erling Smørgrav printf(" %2.2x", (int)digest[i]); 1053b7579f77SDag-Erling Smørgrav printf("\n");} 1054b7579f77SDag-Erling Smørgrav */ 1055b7579f77SDag-Erling Smørgrav if(memcmp(digest, check, sizeof(check)) != 0) 1056b7579f77SDag-Erling Smørgrav return 6; 1057b7579f77SDag-Erling Smørgrav return 0; 1058b7579f77SDag-Erling Smørgrav} 1059b7579f77SDag-Erling Smørgrav]])] , [eval "ac_cv_c_gost_works=yes"], [eval "ac_cv_c_gost_works=no"]) 1060b7579f77SDag-Erling SmørgravCFLAGS="$BAKCFLAGS" 1061b7579f77SDag-Erling Smørgravelse 1062b7579f77SDag-Erling Smørgraveval "ac_cv_c_gost_works=maybe" 1063b7579f77SDag-Erling Smørgravfi 1064b7579f77SDag-Erling SmørgravAC_MSG_RESULT($ac_cv_c_gost_works) 1065b7579f77SDag-Erling Smørgrav])dnl 1066b7579f77SDag-Erling Smørgrav 1067*f44e67d1SCy SchubertAC_ARG_ENABLE(gost, AS_HELP_STRING([--disable-gost],[Disable GOST support])) 1068b7579f77SDag-Erling Smørgravuse_gost="no" 106905ab2901SDag-Erling Smørgravif test $USE_NSS = "no" -a $USE_NETTLE = "no"; then 1070b7579f77SDag-Erling Smørgravcase "$enable_gost" in 1071b7579f77SDag-Erling Smørgrav no) 1072b7579f77SDag-Erling Smørgrav ;; 1073b7579f77SDag-Erling Smørgrav *) 1074b7579f77SDag-Erling Smørgrav AC_CHECK_FUNC(EVP_PKEY_set_type_str, [:],[AC_MSG_ERROR([OpenSSL 1.0.0 is needed for GOST support])]) 1075b7579f77SDag-Erling Smørgrav AC_CHECK_FUNC(EC_KEY_new, [], [AC_MSG_ERROR([OpenSSL does not support ECC, needed for GOST support])]) 1076b7579f77SDag-Erling Smørgrav AC_CHECK_GOST_WORKS 10778ed2b524SDag-Erling Smørgrav if test "$ac_cv_c_gost_works" != no; then 1078b7579f77SDag-Erling Smørgrav use_gost="yes" 1079b7579f77SDag-Erling Smørgrav AC_DEFINE([USE_GOST], [1], [Define this to enable GOST support.]) 1080b7579f77SDag-Erling Smørgrav fi 1081b7579f77SDag-Erling Smørgrav ;; 1082b7579f77SDag-Erling Smørgravesac 108305ab2901SDag-Erling Smørgravfi dnl !USE_NSS && !USE_NETTLE 1084b7579f77SDag-Erling Smørgrav 1085*f44e67d1SCy SchubertAC_ARG_ENABLE(ecdsa, AS_HELP_STRING([--disable-ecdsa],[Disable ECDSA support])) 1086b7579f77SDag-Erling Smørgravuse_ecdsa="no" 1087b7579f77SDag-Erling Smørgravcase "$enable_ecdsa" in 1088b7579f77SDag-Erling Smørgrav no) 1089b7579f77SDag-Erling Smørgrav ;; 1090b7579f77SDag-Erling Smørgrav *) 109105ab2901SDag-Erling Smørgrav if test $USE_NSS = "no" -a $USE_NETTLE = "no"; then 1092b7579f77SDag-Erling Smørgrav AC_CHECK_FUNC(ECDSA_sign, [], [AC_MSG_ERROR([OpenSSL does not support ECDSA: please upgrade or rerun with --disable-ecdsa])]) 1093b7579f77SDag-Erling Smørgrav AC_CHECK_FUNC(SHA384_Init, [], [AC_MSG_ERROR([OpenSSL does not support SHA384: please upgrade or rerun with --disable-ecdsa])]) 1094b7579f77SDag-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 1095b7579f77SDag-Erling Smørgrav#include <openssl/evp.h> 1096b7579f77SDag-Erling Smørgrav ]) 1097b7579f77SDag-Erling Smørgrav # see if OPENSSL 1.0.0 or later (has EVP MD and Verify independency) 1098b7579f77SDag-Erling Smørgrav AC_MSG_CHECKING([if openssl supports SHA2 and ECDSA with EVP]) 1099ff825849SDag-Erling Smørgrav if grep OPENSSL_VERSION_TEXT $ssldir/include/openssl/opensslv.h | grep "OpenSSL" >/dev/null; then 1100b7579f77SDag-Erling Smørgrav if grep OPENSSL_VERSION_NUMBER $ssldir/include/openssl/opensslv.h | grep 0x0 >/dev/null; then 1101b7579f77SDag-Erling Smørgrav AC_MSG_RESULT([no]) 1102b7579f77SDag-Erling Smørgrav AC_DEFINE_UNQUOTED([USE_ECDSA_EVP_WORKAROUND], [1], [Define this to enable an EVP workaround for older openssl]) 1103b7579f77SDag-Erling Smørgrav else 1104b7579f77SDag-Erling Smørgrav AC_MSG_RESULT([yes]) 1105b7579f77SDag-Erling Smørgrav fi 1106ff825849SDag-Erling Smørgrav else 1107ff825849SDag-Erling Smørgrav # not OpenSSL, thus likely LibreSSL, which supports it 1108ff825849SDag-Erling Smørgrav AC_MSG_RESULT([yes]) 1109ff825849SDag-Erling Smørgrav fi 11108ed2b524SDag-Erling Smørgrav fi 1111b7579f77SDag-Erling Smørgrav # we now know we have ECDSA and the required curves. 1112b7579f77SDag-Erling Smørgrav AC_DEFINE_UNQUOTED([USE_ECDSA], [1], [Define this to enable ECDSA support.]) 1113b7579f77SDag-Erling Smørgrav use_ecdsa="yes" 1114b7579f77SDag-Erling Smørgrav ;; 1115b7579f77SDag-Erling Smørgravesac 1116b7579f77SDag-Erling Smørgrav 1117*f44e67d1SCy SchubertAC_ARG_ENABLE(dsa, AS_HELP_STRING([--disable-dsa],[Disable DSA support])) 1118e2d15004SDag-Erling Smørgravuse_dsa="no" 1119bc892140SDag-Erling Smørgravcase "$enable_dsa" in 1120091e9e46SCy Schubert yes) 1121e2d15004SDag-Erling Smørgrav # detect if DSA is supported, and turn it off if not. 1122971980c3SDag-Erling Smørgrav if test $USE_NSS = "no" -a $USE_NETTLE = "no"; then 1123bc892140SDag-Erling Smørgrav AC_CHECK_FUNC(DSA_SIG_new, [ 112457bddd21SDag-Erling Smørgrav AC_CHECK_TYPE(DSA_SIG*, [ 1125e2d15004SDag-Erling Smørgrav AC_DEFINE_UNQUOTED([USE_DSA], [1], [Define this to enable DSA support.]) 1126e2d15004SDag-Erling Smørgrav ], [if test "x$enable_dsa" = "xyes"; then AC_MSG_ERROR([OpenSSL does not support DSA and you used --enable-dsa.]) 112757bddd21SDag-Erling Smørgrav fi ], [ 112857bddd21SDag-Erling SmørgravAC_INCLUDES_DEFAULT 112957bddd21SDag-Erling Smørgrav#ifdef HAVE_OPENSSL_ERR_H 113057bddd21SDag-Erling Smørgrav#include <openssl/err.h> 113157bddd21SDag-Erling Smørgrav#endif 113257bddd21SDag-Erling Smørgrav 113357bddd21SDag-Erling Smørgrav#ifdef HAVE_OPENSSL_RAND_H 113457bddd21SDag-Erling Smørgrav#include <openssl/rand.h> 113557bddd21SDag-Erling Smørgrav#endif 113657bddd21SDag-Erling Smørgrav 113757bddd21SDag-Erling Smørgrav#ifdef HAVE_OPENSSL_CONF_H 113857bddd21SDag-Erling Smørgrav#include <openssl/conf.h> 113957bddd21SDag-Erling Smørgrav#endif 114057bddd21SDag-Erling Smørgrav 114157bddd21SDag-Erling Smørgrav#ifdef HAVE_OPENSSL_ENGINE_H 114257bddd21SDag-Erling Smørgrav#include <openssl/engine.h> 114357bddd21SDag-Erling Smørgrav#endif 114457bddd21SDag-Erling Smørgrav ]) 114557bddd21SDag-Erling Smørgrav ], [if test "x$enable_dsa" = "xyes"; then AC_MSG_ERROR([OpenSSL does not support DSA and you used --enable-dsa.]) 1146e2d15004SDag-Erling Smørgrav fi ]) 1147971980c3SDag-Erling Smørgrav else 1148971980c3SDag-Erling Smørgrav AC_DEFINE_UNQUOTED([USE_DSA], [1], [Define this to enable DSA support.]) 1149971980c3SDag-Erling Smørgrav fi 1150e2d15004SDag-Erling Smørgrav ;; 1151091e9e46SCy Schubert *) 1152091e9e46SCy Schubert # disable dsa by default, RFC 8624 section 3.1, validators MUST NOT 1153091e9e46SCy Schubert # support DSA for DNSSEC Validation. 1154091e9e46SCy Schubert ;; 1155e2d15004SDag-Erling Smørgravesac 1156e2d15004SDag-Erling Smørgrav 1157*f44e67d1SCy SchubertAC_ARG_ENABLE(ed25519, AS_HELP_STRING([--disable-ed25519],[Disable ED25519 support])) 1158c7f4d7adSDag-Erling Smørgravuse_ed25519="no" 1159c7f4d7adSDag-Erling Smørgravcase "$enable_ed25519" in 1160c7f4d7adSDag-Erling Smørgrav no) 1161c7f4d7adSDag-Erling Smørgrav ;; 1162c7f4d7adSDag-Erling Smørgrav *) 1163c7f4d7adSDag-Erling Smørgrav if test $USE_NSS = "no" -a $USE_NETTLE = "no"; then 1164c7f4d7adSDag-Erling Smørgrav AC_CHECK_DECLS([NID_ED25519], [ 1165c7f4d7adSDag-Erling Smørgrav use_ed25519="yes" 1166c7f4d7adSDag-Erling Smørgrav ], [ if test "x$enable_ed25519" = "xyes"; then AC_MSG_ERROR([OpenSSL does not support ED25519 and you used --enable-ed25519.]) 1167c7f4d7adSDag-Erling Smørgrav fi ], [AC_INCLUDES_DEFAULT 1168c7f4d7adSDag-Erling Smørgrav#include <openssl/evp.h> 1169c7f4d7adSDag-Erling Smørgrav ]) 1170c7f4d7adSDag-Erling Smørgrav fi 1171971980c3SDag-Erling Smørgrav if test $USE_NETTLE = "yes"; then 1172971980c3SDag-Erling Smørgrav AC_CHECK_HEADERS([nettle/eddsa.h], use_ed25519="yes",, [AC_INCLUDES_DEFAULT]) 1173971980c3SDag-Erling Smørgrav fi 1174971980c3SDag-Erling Smørgrav if test $use_ed25519 = "yes"; then 1175971980c3SDag-Erling Smørgrav AC_DEFINE_UNQUOTED([USE_ED25519], [1], [Define this to enable ED25519 support.]) 1176971980c3SDag-Erling Smørgrav fi 1177c7f4d7adSDag-Erling Smørgrav ;; 1178c7f4d7adSDag-Erling Smørgravesac 1179e2d15004SDag-Erling Smørgrav 1180*f44e67d1SCy SchubertAC_ARG_ENABLE(ed448, AS_HELP_STRING([--disable-ed448],[Disable ED448 support])) 11810fb34990SDag-Erling Smørgravuse_ed448="no" 11820fb34990SDag-Erling Smørgravcase "$enable_ed448" in 11830fb34990SDag-Erling Smørgrav no) 11840fb34990SDag-Erling Smørgrav ;; 11850fb34990SDag-Erling Smørgrav *) 11860fb34990SDag-Erling Smørgrav if test $USE_NSS = "no" -a $USE_NETTLE = "no"; then 11870fb34990SDag-Erling Smørgrav AC_CHECK_DECLS([NID_ED448], [ 11880fb34990SDag-Erling Smørgrav use_ed448="yes" 11890fb34990SDag-Erling Smørgrav ], [ if test "x$enable_ed448" = "xyes"; then AC_MSG_ERROR([OpenSSL does not support ED448 and you used --enable-ed448.]) 11900fb34990SDag-Erling Smørgrav fi ], [AC_INCLUDES_DEFAULT 11910fb34990SDag-Erling Smørgrav#include <openssl/evp.h> 11920fb34990SDag-Erling Smørgrav ]) 11930fb34990SDag-Erling Smørgrav fi 11940fb34990SDag-Erling Smørgrav if test $use_ed448 = "yes"; then 11950fb34990SDag-Erling Smørgrav AC_DEFINE_UNQUOTED([USE_ED448], [1], [Define this to enable ED448 support.]) 11960fb34990SDag-Erling Smørgrav fi 11970fb34990SDag-Erling Smørgrav ;; 11980fb34990SDag-Erling Smørgravesac 11990fb34990SDag-Erling Smørgrav 1200*f44e67d1SCy SchubertAC_ARG_ENABLE(event-api, AS_HELP_STRING([--enable-event-api],[Enable (experimental) pluggable event base libunbound API installed to unbound-event.h])) 120117d15b25SDag-Erling Smørgravcase "$enable_event_api" in 120217d15b25SDag-Erling Smørgrav yes) 1203e2d15004SDag-Erling Smørgrav AC_SUBST(UNBOUND_EVENT_INSTALL, [unbound-event-install]) 1204e2d15004SDag-Erling Smørgrav AC_SUBST(UNBOUND_EVENT_UNINSTALL, [unbound-event-uninstall]) 120517d15b25SDag-Erling Smørgrav ;; 120617d15b25SDag-Erling Smørgrav *) 120717d15b25SDag-Erling Smørgrav ;; 120817d15b25SDag-Erling Smørgravesac 120917d15b25SDag-Erling Smørgrav 1210*f44e67d1SCy SchubertAC_ARG_ENABLE(tfo-client, AS_HELP_STRING([--enable-tfo-client],[Enable TCP Fast Open for client mode])) 1211b5663de9SDag-Erling Smørgravcase "$enable_tfo_client" in 1212b5663de9SDag-Erling Smørgrav yes) 1213b5663de9SDag-Erling Smørgrav case `uname` in 1214b5663de9SDag-Erling Smørgrav Linux) AC_CHECK_DECL([MSG_FASTOPEN], [AC_MSG_WARN([Check the platform specific TFO kernel parameters are correctly configured to support client mode TFO])], 1215b5663de9SDag-Erling Smørgrav [AC_MSG_ERROR([TCP Fast Open is not available for client mode: please rerun without --enable-tfo-client])], 1216b5663de9SDag-Erling Smørgrav [AC_INCLUDES_DEFAULT 1217b5663de9SDag-Erling Smørgrav#include <netinet/tcp.h> 1218b5663de9SDag-Erling Smørgrav]) 1219b5663de9SDag-Erling Smørgrav AC_DEFINE_UNQUOTED([USE_MSG_FASTOPEN], [1], [Define this to enable client TCP Fast Open.]) 1220b5663de9SDag-Erling Smørgrav ;; 1221b5663de9SDag-Erling Smørgrav 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])], 1222b5663de9SDag-Erling Smørgrav [AC_MSG_ERROR([TCP Fast Open is not available for client mode: please rerun without --enable-tfo-client])], 1223b5663de9SDag-Erling Smørgrav [AC_INCLUDES_DEFAULT 1224b5663de9SDag-Erling Smørgrav#include <sys/socket.h> 1225b5663de9SDag-Erling Smørgrav]) 1226b5663de9SDag-Erling Smørgrav AC_DEFINE_UNQUOTED([USE_OSX_MSG_FASTOPEN], [1], [Define this to enable client TCP Fast Open.]) 1227b5663de9SDag-Erling Smørgrav ;; 1228b5663de9SDag-Erling Smørgrav esac 1229b5663de9SDag-Erling Smørgrav ;; 1230b5663de9SDag-Erling Smørgrav no|*) 1231b5663de9SDag-Erling Smørgrav ;; 1232b5663de9SDag-Erling Smørgravesac 1233b5663de9SDag-Erling Smørgrav 1234*f44e67d1SCy SchubertAC_ARG_ENABLE(tfo-server, AS_HELP_STRING([--enable-tfo-server],[Enable TCP Fast Open for server mode])) 1235b5663de9SDag-Erling Smørgravcase "$enable_tfo_server" in 1236b5663de9SDag-Erling Smørgrav yes) 1237b5663de9SDag-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 1238b5663de9SDag-Erling Smørgrav#include <netinet/tcp.h> 1239b5663de9SDag-Erling Smørgrav ]) 1240b5663de9SDag-Erling Smørgrav AC_DEFINE_UNQUOTED([USE_TCP_FASTOPEN], [1], [Define this to enable server TCP Fast Open.]) 1241b5663de9SDag-Erling Smørgrav ;; 1242b5663de9SDag-Erling Smørgrav no|*) 1243b5663de9SDag-Erling Smørgrav ;; 1244b5663de9SDag-Erling Smørgravesac 1245b5663de9SDag-Erling Smørgrav 1246b7579f77SDag-Erling Smørgrav# check for libevent 1247*f44e67d1SCy 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.]), 124825039b37SCy Schubert [ ],[ with_libevent="no" ]) 124925039b37SCy Schubertif test "x_$with_libevent" != x_no; then 125025039b37SCy Schubert AC_DEFINE([USE_LIBEVENT], [1], [Define if you enable libevent]) 1251b7579f77SDag-Erling Smørgrav AC_MSG_CHECKING(for libevent) 125225039b37SCy Schubert if test "x_$with_libevent" = x_ -o "x_$with_libevent" = x_yes; then 125325039b37SCy Schubert with_libevent="/usr/local /opt/local /usr/lib /usr/pkg /usr/sfw /usr" 1254b7579f77SDag-Erling Smørgrav fi 125525039b37SCy Schubert for dir in $with_libevent; do 1256b7579f77SDag-Erling Smørgrav thedir="$dir" 125717d15b25SDag-Erling Smørgrav if test -f "$dir/include/event.h" -o -f "$dir/include/event2/event.h"; then 1258b7579f77SDag-Erling Smørgrav found_libevent="yes" 1259b7579f77SDag-Erling Smørgrav dnl assume /usr is in default path. 1260b7579f77SDag-Erling Smørgrav if test "$thedir" != "/usr"; then 1261b7579f77SDag-Erling Smørgrav CPPFLAGS="$CPPFLAGS -I$thedir/include" 1262b7579f77SDag-Erling Smørgrav fi 1263b7579f77SDag-Erling Smørgrav break; 1264b7579f77SDag-Erling Smørgrav fi 1265b7579f77SDag-Erling Smørgrav done 1266b7579f77SDag-Erling Smørgrav if test x_$found_libevent != x_yes; then 1267b7579f77SDag-Erling Smørgrav if test -f "$dir/event.h" -a \( -f "$dir/libevent.la" -o -f "$dir/libev.la" \) ; then 1268b7579f77SDag-Erling Smørgrav # libevent source directory 1269b7579f77SDag-Erling Smørgrav AC_MSG_RESULT(found in $thedir) 1270b7579f77SDag-Erling Smørgrav CPPFLAGS="$CPPFLAGS -I$thedir -I$thedir/include" 1271b7579f77SDag-Erling Smørgrav BAK_LDFLAGS_SET="1" 1272b7579f77SDag-Erling Smørgrav BAK_LDFLAGS="$LDFLAGS" 1273b7579f77SDag-Erling Smørgrav # remove evdns from linking 1274b7579f77SDag-Erling Smørgrav mkdir build >/dev/null 2>&1 1275b7579f77SDag-Erling Smørgrav mkdir build/libevent >/dev/null 2>&1 1276b7579f77SDag-Erling Smørgrav mkdir build/libevent/.libs >/dev/null 2>&1 1277b7579f77SDag-Erling Smørgrav ev_files_o=`ls $thedir/*.o | grep -v evdns\.o | grep -v bufferevent_openssl\.o` 1278b7579f77SDag-Erling Smørgrav ev_files_lo=`ls $thedir/*.lo | grep -v evdns\.lo | grep -v bufferevent_openssl\.lo` 1279b7579f77SDag-Erling Smørgrav ev_files_libso=`ls $thedir/.libs/*.o | grep -v evdns\.o | grep -v bufferevent_openssl\.o` 1280b7579f77SDag-Erling Smørgrav cp $ev_files_o build/libevent 1281b7579f77SDag-Erling Smørgrav cp $ev_files_lo build/libevent 1282b7579f77SDag-Erling Smørgrav cp $ev_files_libso build/libevent/.libs 1283b7579f77SDag-Erling Smørgrav LATE_LDFLAGS="build/libevent/*.lo -lm" 1284b7579f77SDag-Erling Smørgrav LDFLAGS="build/libevent/*.o $LDFLAGS -lm" 1285b7579f77SDag-Erling Smørgrav else 128625039b37SCy Schubert AC_MSG_ERROR([Cannot find the libevent library in $with_libevent 1287b7579f77SDag-Erling SmørgravYou can restart ./configure --with-libevent=no to use a builtin alternative. 1288b7579f77SDag-Erling SmørgravPlease note that this alternative is not as capable as libevent when using 1289b7579f77SDag-Erling Smørgravlarge outgoing port ranges. ]) 1290b7579f77SDag-Erling Smørgrav fi 1291b7579f77SDag-Erling Smørgrav else 1292b7579f77SDag-Erling Smørgrav AC_MSG_RESULT(found in $thedir) 129317d15b25SDag-Erling Smørgrav dnl if event2 exists and no event lib in dir itself, use subdir 129417d15b25SDag-Erling Smørgrav if test ! -f $thedir/lib/libevent.a -a ! -f $thedir/lib/libevent.so -a -d "$thedir/lib/event2"; then 129517d15b25SDag-Erling Smørgrav LDFLAGS="$LDFLAGS -L$thedir/lib/event2" 129617d15b25SDag-Erling Smørgrav ACX_RUNTIME_PATH_ADD([$thedir/lib/event2]) 129717d15b25SDag-Erling Smørgrav else 1298b7579f77SDag-Erling Smørgrav dnl assume /usr is in default path, do not add "". 1299b7579f77SDag-Erling Smørgrav if test "$thedir" != "/usr" -a "$thedir" != ""; then 1300b7579f77SDag-Erling Smørgrav LDFLAGS="$LDFLAGS -L$thedir/lib" 1301b7579f77SDag-Erling Smørgrav ACX_RUNTIME_PATH_ADD([$thedir/lib]) 1302b7579f77SDag-Erling Smørgrav fi 1303b7579f77SDag-Erling Smørgrav fi 130417d15b25SDag-Erling Smørgrav fi 1305b7579f77SDag-Erling Smørgrav # check for library used by libevent after 1.3c 1306b7579f77SDag-Erling Smørgrav AC_SEARCH_LIBS([clock_gettime], [rt]) 1307b7579f77SDag-Erling Smørgrav 1308b7579f77SDag-Erling Smørgrav # is the event.h header libev or libevent? 1309b7579f77SDag-Erling Smørgrav AC_CHECK_HEADERS([event.h],,, [AC_INCLUDES_DEFAULT]) 1310b7579f77SDag-Erling Smørgrav AC_CHECK_DECL(EV_VERSION_MAJOR, [ 1311b7579f77SDag-Erling Smørgrav AC_SEARCH_LIBS(event_set, [ev]) 1312b7579f77SDag-Erling Smørgrav ],[ 1313b7579f77SDag-Erling Smørgrav AC_SEARCH_LIBS(event_set, [event]) 1314b7579f77SDag-Erling Smørgrav ],[AC_INCLUDES_DEFAULT 1315b7579f77SDag-Erling Smørgrav#include <event.h> 1316b7579f77SDag-Erling Smørgrav ]) 1317b7579f77SDag-Erling Smørgrav AC_CHECK_FUNCS([event_base_free]) # only in libevent 1.2 and later 1318b7579f77SDag-Erling Smørgrav AC_CHECK_FUNCS([event_base_once]) # only in libevent 1.4.1 and later 1319b7579f77SDag-Erling Smørgrav AC_CHECK_FUNCS([event_base_new]) # only in libevent 1.4.1 and later 1320b7579f77SDag-Erling Smørgrav AC_CHECK_FUNCS([event_base_get_method]) # only in libevent 1.4.3 and later 1321b7579f77SDag-Erling Smørgrav AC_CHECK_FUNCS([ev_loop]) # only in libev. (tested on 3.51) 1322b7579f77SDag-Erling Smørgrav AC_CHECK_FUNCS([ev_default_loop]) # only in libev. (tested on 4.00) 1323e86b9096SDag-Erling Smørgrav AC_CHECK_FUNCS([event_assign]) # in libevent, for thread-safety 1324e86b9096SDag-Erling Smørgrav AC_CHECK_DECLS([evsignal_assign], [], [], [AC_INCLUDES_DEFAULT 1325e86b9096SDag-Erling Smørgrav#ifdef HAVE_EVENT_H 1326e86b9096SDag-Erling Smørgrav# include <event.h> 1327e86b9096SDag-Erling Smørgrav#else 1328e86b9096SDag-Erling Smørgrav# include "event2/event.h" 1329e86b9096SDag-Erling Smørgrav#endif 1330e86b9096SDag-Erling Smørgrav ]) 1331bc892140SDag-Erling Smørgrav PC_LIBEVENT_DEPENDENCY="libevent" 1332bc892140SDag-Erling Smørgrav AC_SUBST(PC_LIBEVENT_DEPENDENCY) 1333b7579f77SDag-Erling Smørgrav if test -n "$BAK_LDFLAGS_SET"; then 1334b7579f77SDag-Erling Smørgrav LDFLAGS="$BAK_LDFLAGS" 1335b7579f77SDag-Erling Smørgrav fi 1336b7579f77SDag-Erling Smørgravelse 1337b7579f77SDag-Erling Smørgrav AC_DEFINE(USE_MINI_EVENT, 1, [Define if you want to use internal select based events]) 1338b7579f77SDag-Erling Smørgravfi 1339b7579f77SDag-Erling Smørgrav 1340b7579f77SDag-Erling Smørgrav# check for libexpat 1341*f44e67d1SCy SchubertAC_ARG_WITH(libexpat, AS_HELP_STRING([--with-libexpat=path],[specify explicit path for libexpat.]), 1342b7579f77SDag-Erling Smørgrav [ ],[ withval="/usr/local /opt/local /usr/lib /usr/pkg /usr/sfw /usr" ]) 1343b7579f77SDag-Erling SmørgravAC_MSG_CHECKING(for libexpat) 1344b7579f77SDag-Erling Smørgravfound_libexpat="no" 1345b7579f77SDag-Erling Smørgravfor dir in $withval ; do 1346b7579f77SDag-Erling Smørgrav if test -f "$dir/include/expat.h"; then 1347b7579f77SDag-Erling Smørgrav found_libexpat="yes" 1348b7579f77SDag-Erling Smørgrav dnl assume /usr is in default path. 1349b7579f77SDag-Erling Smørgrav if test "$dir" != "/usr"; then 1350b7579f77SDag-Erling Smørgrav CPPFLAGS="$CPPFLAGS -I$dir/include" 1351b7579f77SDag-Erling Smørgrav LDFLAGS="$LDFLAGS -L$dir/lib" 1352b7579f77SDag-Erling Smørgrav fi 1353b7579f77SDag-Erling Smørgrav AC_MSG_RESULT(found in $dir) 1354b7579f77SDag-Erling Smørgrav break; 1355b7579f77SDag-Erling Smørgrav fi 1356b7579f77SDag-Erling Smørgravdone 1357b7579f77SDag-Erling Smørgravif test x_$found_libexpat != x_yes; then 1358*f44e67d1SCy Schubert AC_MSG_ERROR([Could not find libexpat, expat.h]) 1359b7579f77SDag-Erling Smørgravfi 1360b7579f77SDag-Erling SmørgravAC_CHECK_HEADERS([expat.h],,, [AC_INCLUDES_DEFAULT]) 136105ab2901SDag-Erling SmørgravAC_CHECK_DECLS([XML_StopParser], [], [], [AC_INCLUDES_DEFAULT 136205ab2901SDag-Erling Smørgrav#include <expat.h> 136305ab2901SDag-Erling Smørgrav]) 1364b7579f77SDag-Erling Smørgrav 13650fb34990SDag-Erling Smørgrav# hiredis (redis C client for cachedb) 1366*f44e67d1SCy SchubertAC_ARG_WITH(libhiredis, AS_HELP_STRING([--with-libhiredis=path],[specify explicit path for libhiredis.]), 13670fb34990SDag-Erling Smørgrav [ ],[ withval="no" ]) 13680fb34990SDag-Erling Smørgravfound_libhiredis="no" 13690fb34990SDag-Erling Smørgravif test x_$withval = x_yes -o x_$withval != x_no; then 13704c75e3aaSDag-Erling Smørgrav AC_MSG_CHECKING(for libhiredis) 13710fb34990SDag-Erling Smørgrav if test x_$withval = x_ -o x_$withval = x_yes; then 13720fb34990SDag-Erling Smørgrav withval="/usr/local /opt/local /usr/lib /usr/pkg /usr/sfw /usr" 13730fb34990SDag-Erling Smørgrav fi 13740fb34990SDag-Erling Smørgrav for dir in $withval ; do 13750fb34990SDag-Erling Smørgrav if test -f "$dir/include/hiredis/hiredis.h"; then 13760fb34990SDag-Erling Smørgrav found_libhiredis="yes" 13770fb34990SDag-Erling Smørgrav dnl assume /usr is in default path. 13780fb34990SDag-Erling Smørgrav if test "$dir" != "/usr"; then 13790fb34990SDag-Erling Smørgrav CPPFLAGS="$CPPFLAGS -I$dir/include" 13800fb34990SDag-Erling Smørgrav LDFLAGS="$LDFLAGS -L$dir/lib" 13810fb34990SDag-Erling Smørgrav fi 13820fb34990SDag-Erling Smørgrav AC_MSG_RESULT(found in $dir) 13830fb34990SDag-Erling Smørgrav AC_DEFINE([USE_REDIS], [1], [Define this to use hiredis client.]) 13840fb34990SDag-Erling Smørgrav LIBS="$LIBS -lhiredis" 13850fb34990SDag-Erling Smørgrav break; 13860fb34990SDag-Erling Smørgrav fi 13870fb34990SDag-Erling Smørgrav done 13880fb34990SDag-Erling Smørgrav if test x_$found_libhiredis != x_yes; then 1389*f44e67d1SCy Schubert AC_MSG_ERROR([Could not find libhiredis, hiredis.h]) 13900fb34990SDag-Erling Smørgrav fi 13910fb34990SDag-Erling Smørgrav AC_CHECK_HEADERS([hiredis/hiredis.h],,, [AC_INCLUDES_DEFAULT]) 13920fb34990SDag-Erling Smørgrav AC_CHECK_DECLS([redisConnect], [], [], [AC_INCLUDES_DEFAULT 13930fb34990SDag-Erling Smørgrav #include <hiredis/hiredis.h> 13940fb34990SDag-Erling Smørgrav ]) 13950fb34990SDag-Erling Smørgravfi 13960fb34990SDag-Erling Smørgrav 1397c0caa2e2SCy Schubert# nghttp2 1398*f44e67d1SCy SchubertAC_ARG_WITH(libnghttp2, AS_HELP_STRING([--with-libnghttp2=path],[specify explicit path for libnghttp2.]), 1399c0caa2e2SCy Schubert [ ],[ withval="no" ]) 1400c0caa2e2SCy Schubertfound_libnghttp2="no" 1401c0caa2e2SCy Schubertif test x_$withval = x_yes -o x_$withval != x_no; then 1402c0caa2e2SCy Schubert AC_MSG_CHECKING(for libnghttp2) 1403c0caa2e2SCy Schubert if test x_$withval = x_ -o x_$withval = x_yes; then 1404c0caa2e2SCy Schubert withval="/usr/local /opt/local /usr/lib /usr/pkg /usr/sfw /usr" 1405c0caa2e2SCy Schubert fi 1406c0caa2e2SCy Schubert for dir in $withval ; do 1407c0caa2e2SCy Schubert if test -f "$dir/include/nghttp2/nghttp2.h"; then 1408c0caa2e2SCy Schubert found_libnghttp2="yes" 1409c0caa2e2SCy Schubert dnl assume /usr is in default path. 1410c0caa2e2SCy Schubert if test "$dir" != "/usr"; then 1411c0caa2e2SCy Schubert CPPFLAGS="$CPPFLAGS -I$dir/include" 1412c0caa2e2SCy Schubert LDFLAGS="$LDFLAGS -L$dir/lib" 1413c0caa2e2SCy Schubert fi 1414c0caa2e2SCy Schubert AC_MSG_RESULT(found in $dir) 1415c0caa2e2SCy Schubert AC_DEFINE([HAVE_NGHTTP2], [1], [Define this to use nghttp2 client.]) 1416c0caa2e2SCy Schubert LIBS="$LIBS -lnghttp2" 1417c0caa2e2SCy Schubert break; 1418c0caa2e2SCy Schubert fi 1419c0caa2e2SCy Schubert done 1420c0caa2e2SCy Schubert if test x_$found_libnghttp2 != x_yes; then 1421*f44e67d1SCy Schubert AC_MSG_ERROR([Could not find libnghttp2, nghttp2.h]) 1422c0caa2e2SCy Schubert fi 1423c0caa2e2SCy Schubert AC_CHECK_HEADERS([nghttp2/nghttp2.h],,, [AC_INCLUDES_DEFAULT]) 1424c0caa2e2SCy Schubert AC_CHECK_DECLS([nghttp2_session_server_new], [], [], [AC_INCLUDES_DEFAULT 1425c0caa2e2SCy Schubert #include <nghttp2/nghttp2.h> 1426c0caa2e2SCy Schubert ]) 1427c0caa2e2SCy Schubertfi 1428c0caa2e2SCy Schubert 14290eefd307SCy Schubert# set static linking for uninstalled libraries if requested 1430b7579f77SDag-Erling SmørgravAC_SUBST(staticexe) 1431b7579f77SDag-Erling Smørgravstaticexe="" 1432*f44e67d1SCy SchubertAC_ARG_ENABLE(static-exe, AS_HELP_STRING([--enable-static-exe],[ enable to compile executables statically against (event) uninstalled libs, for debug purposes ]), 1433b7579f77SDag-Erling Smørgrav , ) 1434b7579f77SDag-Erling Smørgravif test x_$enable_static_exe = x_yes; then 1435b7579f77SDag-Erling Smørgrav staticexe="-static" 1436b7579f77SDag-Erling Smørgrav if test "$on_mingw" = yes; then 1437b7579f77SDag-Erling Smørgrav staticexe="-all-static" 1438b5663de9SDag-Erling Smørgrav # for static compile, include gdi32 and zlib here. 1439971980c3SDag-Erling Smørgrav if echo $LIBS | grep 'lgdi32' >/dev/null; then 1440971980c3SDag-Erling Smørgrav : 1441971980c3SDag-Erling Smørgrav else 1442971980c3SDag-Erling Smørgrav LIBS="$LIBS -lgdi32" 1443971980c3SDag-Erling Smørgrav fi 1444971980c3SDag-Erling Smørgrav LIBS="$LIBS -lz" 1445*f44e67d1SCy Schubert LIBS="$LIBS -l:libssp.a" 1446b7579f77SDag-Erling Smørgrav fi 1447b7579f77SDag-Erling Smørgravfi 1448b7579f77SDag-Erling Smørgrav 14490eefd307SCy Schubert# set full static linking if requested 1450*f44e67d1SCy SchubertAC_ARG_ENABLE(fully-static, AS_HELP_STRING([--enable-fully-static],[ enable to compile fully static ]), 14510eefd307SCy Schubert , ) 14520eefd307SCy Schubertif test x_$enable_fully_static = x_yes; then 14530eefd307SCy Schubert staticexe="-all-static" 14540eefd307SCy Schubert if test "$on_mingw" = yes; then 14550eefd307SCy Schubert # for static compile, include gdi32 and zlib here. 14560eefd307SCy Schubert if echo $LIBS | grep 'lgdi32' >/dev/null; then 14570eefd307SCy Schubert : 14580eefd307SCy Schubert else 14590eefd307SCy Schubert LIBS="$LIBS -lgdi32" 14600eefd307SCy Schubert fi 14610eefd307SCy Schubert LIBS="$LIBS -lz" 1462*f44e67d1SCy Schubert LIBS="$LIBS -l:libssp.a" 14630eefd307SCy Schubert fi 14640eefd307SCy Schubertfi 14653005e0a3SDag-Erling Smørgrav 1466b7579f77SDag-Erling Smørgrav# set lock checking if requested 1467*f44e67d1SCy SchubertAC_ARG_ENABLE(lock_checks, AS_HELP_STRING([--enable-lock-checks],[ enable to check lock and unlock calls, for debug purposes ]), 1468b7579f77SDag-Erling Smørgrav , ) 1469b7579f77SDag-Erling Smørgravif test x_$enable_lock_checks = x_yes; then 1470b7579f77SDag-Erling Smørgrav AC_DEFINE(ENABLE_LOCK_CHECKS, 1, [Define if you want to use debug lock checking (slow).]) 1471b7579f77SDag-Erling Smørgrav CHECKLOCK_OBJ="checklocks.lo" 1472b7579f77SDag-Erling Smørgrav AC_SUBST(CHECKLOCK_OBJ) 1473b7579f77SDag-Erling Smørgravfi 1474b7579f77SDag-Erling Smørgrav 1475b7579f77SDag-Erling SmørgravACX_CHECK_GETADDRINFO_WITH_INCLUDES 1476b7579f77SDag-Erling Smørgravif test "$USE_WINSOCK" = 1; then 1477b7579f77SDag-Erling Smørgrav AC_DEFINE(UB_ON_WINDOWS, 1, [Use win32 resources and API]) 1478b7579f77SDag-Erling Smørgrav AC_CHECK_HEADERS([iphlpapi.h],,, [AC_INCLUDES_DEFAULT 1479b7579f77SDag-Erling Smørgrav#include <windows.h> 1480b7579f77SDag-Erling Smørgrav ]) 1481b7579f77SDag-Erling Smørgrav AC_CHECK_TOOL(WINDRES, windres) 14823bd4df0aSDag-Erling Smørgrav LIBS="$LIBS -liphlpapi -lcrypt32" 1483b7579f77SDag-Erling Smørgrav WINAPPS="unbound-service-install.exe unbound-service-remove.exe anchor-update.exe" 1484b7579f77SDag-Erling Smørgrav AC_SUBST(WINAPPS) 1485b7579f77SDag-Erling Smørgrav WIN_DAEMON_SRC="winrc/win_svc.c winrc/w_inst.c" 1486b7579f77SDag-Erling Smørgrav AC_SUBST(WIN_DAEMON_SRC) 1487b7579f77SDag-Erling Smørgrav WIN_DAEMON_OBJ="win_svc.lo w_inst.lo" 1488b7579f77SDag-Erling Smørgrav AC_SUBST(WIN_DAEMON_OBJ) 1489b7579f77SDag-Erling Smørgrav WIN_DAEMON_OBJ_LINK="rsrc_unbound.o" 1490b7579f77SDag-Erling Smørgrav AC_SUBST(WIN_DAEMON_OBJ_LINK) 1491b7579f77SDag-Erling Smørgrav WIN_HOST_OBJ_LINK="rsrc_unbound_host.o" 1492b7579f77SDag-Erling Smørgrav AC_SUBST(WIN_HOST_OBJ_LINK) 1493b7579f77SDag-Erling Smørgrav WIN_UBANCHOR_OBJ_LINK="rsrc_unbound_anchor.o log.lo locks.lo" 1494b7579f77SDag-Erling Smørgrav AC_SUBST(WIN_UBANCHOR_OBJ_LINK) 1495b7579f77SDag-Erling Smørgrav WIN_CONTROL_OBJ_LINK="rsrc_unbound_control.o" 1496b7579f77SDag-Erling Smørgrav AC_SUBST(WIN_CONTROL_OBJ_LINK) 1497b7579f77SDag-Erling Smørgrav WIN_CHECKCONF_OBJ_LINK="rsrc_unbound_checkconf.o" 1498b7579f77SDag-Erling Smørgrav AC_SUBST(WIN_CHECKCONF_OBJ_LINK) 1499b7579f77SDag-Erling Smørgravfi 1500b7579f77SDag-Erling Smørgravif test $ac_cv_func_getaddrinfo = no; then 1501b7579f77SDag-Erling Smørgrav AC_LIBOBJ([fake-rfc2553]) 1502b7579f77SDag-Erling Smørgravfi 1503b7579f77SDag-Erling Smørgrav# check after getaddrinfo for its libraries 1504b7579f77SDag-Erling SmørgravACX_FUNC_IOCTLSOCKET 1505b7579f77SDag-Erling Smørgrav 1506b7579f77SDag-Erling Smørgrav# see if daemon(3) exists, and if it is deprecated. 1507b7579f77SDag-Erling SmørgravAC_CHECK_FUNCS([daemon]) 1508b7579f77SDag-Erling Smørgravif test $ac_cv_func_daemon = yes; then 1509b7579f77SDag-Erling Smørgrav ACX_FUNC_DEPRECATED([daemon], [(void)daemon(0, 0);], [ 1510b7579f77SDag-Erling Smørgrav#include <stdlib.h> 1511b7579f77SDag-Erling Smørgrav]) 1512b7579f77SDag-Erling Smørgravfi 1513b7579f77SDag-Erling Smørgrav 1514748bd829SDag-Erling SmørgravAC_CHECK_MEMBERS([struct sockaddr_un.sun_len],,,[ 1515748bd829SDag-Erling SmørgravAC_INCLUDES_DEFAULT 1516748bd829SDag-Erling Smørgrav#ifdef HAVE_SYS_UN_H 1517748bd829SDag-Erling Smørgrav#include <sys/un.h> 1518748bd829SDag-Erling Smørgrav#endif 1519748bd829SDag-Erling Smørgrav]) 1520b7579f77SDag-Erling SmørgravAC_CHECK_MEMBERS([struct in_pktinfo.ipi_spec_dst],,,[ 1521b7579f77SDag-Erling SmørgravAC_INCLUDES_DEFAULT 1522b7579f77SDag-Erling Smørgrav#if HAVE_SYS_PARAM_H 1523b7579f77SDag-Erling Smørgrav#include <sys/param.h> 1524b7579f77SDag-Erling Smørgrav#endif 1525b7579f77SDag-Erling Smørgrav 1526b7579f77SDag-Erling Smørgrav#ifdef HAVE_SYS_SOCKET_H 1527b7579f77SDag-Erling Smørgrav#include <sys/socket.h> 1528b7579f77SDag-Erling Smørgrav#endif 1529b7579f77SDag-Erling Smørgrav 1530b7579f77SDag-Erling Smørgrav#ifdef HAVE_SYS_UIO_H 1531b7579f77SDag-Erling Smørgrav#include <sys/uio.h> 1532b7579f77SDag-Erling Smørgrav#endif 1533b7579f77SDag-Erling Smørgrav 1534b7579f77SDag-Erling Smørgrav#ifdef HAVE_NETINET_IN_H 1535b7579f77SDag-Erling Smørgrav#include <netinet/in.h> 1536b7579f77SDag-Erling Smørgrav#endif 1537b7579f77SDag-Erling Smørgrav 1538f61ef7f6SDag-Erling Smørgrav#ifdef HAVE_NETINET_TCP_H 1539f61ef7f6SDag-Erling Smørgrav#include <netinet/tcp.h> 1540f61ef7f6SDag-Erling Smørgrav#endif 1541f61ef7f6SDag-Erling Smørgrav 1542b7579f77SDag-Erling Smørgrav#ifdef HAVE_ARPA_INET_H 1543b7579f77SDag-Erling Smørgrav#include <arpa/inet.h> 1544b7579f77SDag-Erling Smørgrav#endif 1545b7579f77SDag-Erling Smørgrav 1546b7579f77SDag-Erling Smørgrav#ifdef HAVE_WINSOCK2_H 1547b7579f77SDag-Erling Smørgrav#include <winsock2.h> 1548b7579f77SDag-Erling Smørgrav#endif 1549b7579f77SDag-Erling Smørgrav 1550b7579f77SDag-Erling Smørgrav#ifdef HAVE_WS2TCPIP_H 1551b7579f77SDag-Erling Smørgrav#include <ws2tcpip.h> 1552b7579f77SDag-Erling Smørgrav#endif 1553b7579f77SDag-Erling Smørgrav]) 1554091e9e46SCy Schubert 1555091e9e46SCy SchubertAC_MSG_CHECKING([for htobe64]) 1556091e9e46SCy SchubertAC_LINK_IFELSE([AC_LANG_PROGRAM([ 1557091e9e46SCy Schubert#include <stdio.h> 1558091e9e46SCy Schubert#ifdef HAVE_ENDIAN_H 1559091e9e46SCy Schubert# include <endian.h> 1560091e9e46SCy Schubert#endif 1561091e9e46SCy Schubert#ifdef HAVE_SYS_ENDIAN_H 1562091e9e46SCy Schubert# include <sys/endian.h> 1563091e9e46SCy Schubert#endif 1564091e9e46SCy Schubert], [unsigned long long x = htobe64(0); printf("%u", (unsigned)x);])], 1565091e9e46SCy Schubert AC_MSG_RESULT(yes) 1566091e9e46SCy Schubert AC_DEFINE(HAVE_HTOBE64, 1, [If we have htobe64]), 1567091e9e46SCy Schubert AC_MSG_RESULT(no)) 1568091e9e46SCy Schubert 1569091e9e46SCy SchubertAC_MSG_CHECKING([for be64toh]) 1570091e9e46SCy SchubertAC_LINK_IFELSE([AC_LANG_PROGRAM([ 1571091e9e46SCy Schubert#include <stdio.h> 1572091e9e46SCy Schubert#ifdef HAVE_ENDIAN_H 1573091e9e46SCy Schubert# include <endian.h> 1574091e9e46SCy Schubert#endif 1575091e9e46SCy Schubert#ifdef HAVE_SYS_ENDIAN_H 1576091e9e46SCy Schubert# include <sys/endian.h> 1577091e9e46SCy Schubert#endif 1578091e9e46SCy Schubert], [unsigned long long x = be64toh(0); printf("%u", (unsigned)x);])], 1579091e9e46SCy Schubert AC_MSG_RESULT(yes) 1580091e9e46SCy Schubert AC_DEFINE(HAVE_BE64TOH, 1, [If we have be64toh]), 1581091e9e46SCy Schubert AC_MSG_RESULT(no)) 1582091e9e46SCy Schubert 1583b7579f77SDag-Erling SmørgravAC_SEARCH_LIBS([setusercontext], [util]) 1584c0caa2e2SCy 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]) 1585b7579f77SDag-Erling SmørgravAC_CHECK_FUNCS([setresuid],,[AC_CHECK_FUNCS([setreuid])]) 1586b7579f77SDag-Erling SmørgravAC_CHECK_FUNCS([setresgid],,[AC_CHECK_FUNCS([setregid])]) 1587b7579f77SDag-Erling Smørgrav 1588b7579f77SDag-Erling Smørgrav# check if setreuid en setregid fail, on MacOSX10.4(darwin8). 15897da0adf7SDag-Erling Smørgravif echo $target_os | grep darwin8 > /dev/null; then 1590b7579f77SDag-Erling Smørgrav AC_DEFINE(DARWIN_BROKEN_SETREUID, 1, [Define this if on macOSX10.4-darwin8 and setreuid and setregid do not work]) 1591b7579f77SDag-Erling Smørgravfi 15923005e0a3SDag-Erling SmørgravAC_CHECK_DECLS([inet_pton,inet_ntop], [], [], [ 15933005e0a3SDag-Erling SmørgravAC_INCLUDES_DEFAULT 15943005e0a3SDag-Erling Smørgrav#ifdef HAVE_NETINET_IN_H 15953005e0a3SDag-Erling Smørgrav#include <netinet/in.h> 15963005e0a3SDag-Erling Smørgrav#endif 15973005e0a3SDag-Erling Smørgrav 15983005e0a3SDag-Erling Smørgrav#ifdef HAVE_NETINET_TCP_H 15993005e0a3SDag-Erling Smørgrav#include <netinet/tcp.h> 16003005e0a3SDag-Erling Smørgrav#endif 16013005e0a3SDag-Erling Smørgrav 16023005e0a3SDag-Erling Smørgrav#ifdef HAVE_ARPA_INET_H 16033005e0a3SDag-Erling Smørgrav#include <arpa/inet.h> 16043005e0a3SDag-Erling Smørgrav#endif 16053005e0a3SDag-Erling Smørgrav 16063005e0a3SDag-Erling Smørgrav#ifdef HAVE_WINSOCK2_H 16073005e0a3SDag-Erling Smørgrav#include <winsock2.h> 16083005e0a3SDag-Erling Smørgrav#endif 16093005e0a3SDag-Erling Smørgrav 16103005e0a3SDag-Erling Smørgrav#ifdef HAVE_WS2TCPIP_H 16113005e0a3SDag-Erling Smørgrav#include <ws2tcpip.h> 16123005e0a3SDag-Erling Smørgrav#endif 16133005e0a3SDag-Erling Smørgrav]) 1614b7579f77SDag-Erling SmørgravAC_REPLACE_FUNCS(inet_aton) 1615b7579f77SDag-Erling SmørgravAC_REPLACE_FUNCS(inet_pton) 1616b7579f77SDag-Erling SmørgravAC_REPLACE_FUNCS(inet_ntop) 1617b7579f77SDag-Erling SmørgravAC_REPLACE_FUNCS(snprintf) 161805ab2901SDag-Erling Smørgrav# test if snprintf return the proper length 161905ab2901SDag-Erling Smørgravif test "x$ac_cv_func_snprintf" = xyes; then 162005ab2901SDag-Erling Smørgrav if test c${cross_compiling} = cno; then 162105ab2901SDag-Erling Smørgrav AC_MSG_CHECKING([for correct snprintf return value]) 162205ab2901SDag-Erling Smørgrav AC_RUN_IFELSE([AC_LANG_SOURCE(AC_INCLUDES_DEFAULT 162305ab2901SDag-Erling Smørgrav[[ 162405ab2901SDag-Erling Smørgravint main(void) { return !(snprintf(NULL, 0, "test") == 4); } 162505ab2901SDag-Erling Smørgrav]])], [AC_MSG_RESULT(yes)], [ 162605ab2901SDag-Erling Smørgrav AC_MSG_RESULT(no) 162705ab2901SDag-Erling Smørgrav AC_DEFINE([SNPRINTF_RET_BROKEN], [], [define if (v)snprintf does not return length needed, (but length used)]) 162805ab2901SDag-Erling Smørgrav AC_LIBOBJ(snprintf) 162905ab2901SDag-Erling Smørgrav ]) 163005ab2901SDag-Erling Smørgrav fi 163105ab2901SDag-Erling Smørgravfi 163217d15b25SDag-Erling SmørgravAC_REPLACE_FUNCS(strlcat) 1633b7579f77SDag-Erling SmørgravAC_REPLACE_FUNCS(strlcpy) 1634b7579f77SDag-Erling SmørgravAC_REPLACE_FUNCS(memmove) 1635b7579f77SDag-Erling SmørgravAC_REPLACE_FUNCS(gmtime_r) 163605ab2901SDag-Erling SmørgravAC_REPLACE_FUNCS(isblank) 1637a755b6f6SDag-Erling SmørgravAC_REPLACE_FUNCS(explicit_bzero) 163809a3aaf3SDag-Erling Smørgravdnl without CTIME, ARC4-functions and without reallocarray. 1639ff825849SDag-Erling SmørgravLIBOBJ_WITHOUT_CTIMEARC4="$LIBOBJS" 1640ff825849SDag-Erling SmørgravAC_SUBST(LIBOBJ_WITHOUT_CTIMEARC4) 1641e86b9096SDag-Erling SmørgravAC_MSG_CHECKING([for reallocarray]) 1642e86b9096SDag-Erling SmørgravAC_LINK_IFELSE([AC_LANG_SOURCE(AC_INCLUDES_DEFAULT 1643e86b9096SDag-Erling Smørgrav[[ 1644e86b9096SDag-Erling Smørgrav#ifndef _OPENBSD_SOURCE 1645e86b9096SDag-Erling Smørgrav#define _OPENBSD_SOURCE 1 1646e86b9096SDag-Erling Smørgrav#endif 1647e86b9096SDag-Erling Smørgrav#include <stdlib.h> 1648e86b9096SDag-Erling Smørgravint main(void) { 1649e86b9096SDag-Erling Smørgrav void* p = reallocarray(NULL, 10, 100); 1650e86b9096SDag-Erling Smørgrav free(p); 1651e86b9096SDag-Erling Smørgrav return 0; 1652e86b9096SDag-Erling Smørgrav} 1653e86b9096SDag-Erling Smørgrav]])], [AC_MSG_RESULT(yes) 1654e86b9096SDag-Erling Smørgrav AC_DEFINE(HAVE_REALLOCARRAY, 1, [If we have reallocarray(3)]) 1655e86b9096SDag-Erling Smørgrav], [ 1656e86b9096SDag-Erling Smørgrav AC_MSG_RESULT(no) 1657e86b9096SDag-Erling Smørgrav AC_LIBOBJ(reallocarray) 1658e86b9096SDag-Erling Smørgrav]) 16590eefd307SCy SchubertAC_CHECK_DECLS([reallocarray]) 1660ff825849SDag-Erling Smørgravif test "$USE_NSS" = "no"; then 1661ff825849SDag-Erling Smørgrav AC_REPLACE_FUNCS(arc4random) 1662ff825849SDag-Erling Smørgrav AC_REPLACE_FUNCS(arc4random_uniform) 1663ff825849SDag-Erling Smørgrav if test "$ac_cv_func_arc4random" = "no"; then 1664ff825849SDag-Erling Smørgrav AC_LIBOBJ(arc4_lock) 1665ff825849SDag-Erling Smørgrav AC_CHECK_FUNCS([getentropy],,[ 1666ff825849SDag-Erling Smørgrav if test "$USE_WINSOCK" = 1; then 1667ff825849SDag-Erling Smørgrav AC_LIBOBJ(getentropy_win) 1668ff825849SDag-Erling Smørgrav else 16693005e0a3SDag-Erling Smørgrav case "$host" in 16703005e0a3SDag-Erling Smørgrav Darwin|*darwin*) 1671ff825849SDag-Erling Smørgrav AC_LIBOBJ(getentropy_osx) 1672ff825849SDag-Erling Smørgrav ;; 16733005e0a3SDag-Erling Smørgrav *solaris*|*sunos*|SunOS) 1674ff825849SDag-Erling Smørgrav AC_LIBOBJ(getentropy_solaris) 1675ff825849SDag-Erling Smørgrav AC_CHECK_HEADERS([sys/sha2.h],, [ 1676ff825849SDag-Erling Smørgrav AC_CHECK_FUNCS([SHA512_Update],,[ 1677ff825849SDag-Erling Smørgrav AC_LIBOBJ(sha512) 1678ff825849SDag-Erling Smørgrav ]) 1679ff825849SDag-Erling Smørgrav ], [AC_INCLUDES_DEFAULT]) 1680ff825849SDag-Erling Smørgrav if test "$ac_cv_header_sys_sha2_h" = "yes"; then 1681ff825849SDag-Erling Smørgrav # this lib needed for sha2 on solaris 1682ff825849SDag-Erling Smørgrav LIBS="$LIBS -lmd" 1683ff825849SDag-Erling Smørgrav fi 16846480faa8SDag-Erling Smørgrav AC_SEARCH_LIBS([clock_gettime], [rt]) 1685ff825849SDag-Erling Smørgrav ;; 16860eefd307SCy Schubert *freebsd*|*FreeBSD) 16870eefd307SCy Schubert AC_LIBOBJ(getentropy_freebsd) 16880eefd307SCy Schubert ;; 16893005e0a3SDag-Erling Smørgrav *linux*|Linux|*) 1690ff825849SDag-Erling Smørgrav AC_LIBOBJ(getentropy_linux) 1691ff825849SDag-Erling Smørgrav AC_CHECK_FUNCS([SHA512_Update],,[ 1692ff825849SDag-Erling Smørgrav AC_DEFINE([COMPAT_SHA512], [1], [Do sha512 definitions in config.h]) 1693ff825849SDag-Erling Smørgrav AC_LIBOBJ(sha512) 1694ff825849SDag-Erling Smørgrav ]) 1695ff825849SDag-Erling Smørgrav AC_CHECK_HEADERS([sys/sysctl.h],,, [AC_INCLUDES_DEFAULT]) 16966480faa8SDag-Erling Smørgrav AC_CHECK_FUNCS([getauxval]) 1697ff825849SDag-Erling Smørgrav AC_SEARCH_LIBS([clock_gettime], [rt]) 1698ff825849SDag-Erling Smørgrav ;; 1699ff825849SDag-Erling Smørgrav esac 1700ff825849SDag-Erling Smørgrav fi 1701ff825849SDag-Erling Smørgrav ]) 1702ff825849SDag-Erling Smørgrav fi 1703ff825849SDag-Erling Smørgravfi 1704b7579f77SDag-Erling SmørgravLIBOBJ_WITHOUT_CTIME="$LIBOBJS" 1705b7579f77SDag-Erling SmørgravAC_SUBST(LIBOBJ_WITHOUT_CTIME) 1706b7579f77SDag-Erling SmørgravAC_REPLACE_FUNCS(ctime_r) 1707e2d15004SDag-Erling SmørgravAC_REPLACE_FUNCS(strsep) 1708b7579f77SDag-Erling Smørgrav 1709*f44e67d1SCy 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])) 1710b7579f77SDag-Erling Smørgravcase "$enable_allsymbols" in 1711b7579f77SDag-Erling Smørgrav yes) 1712b7579f77SDag-Erling Smørgrav COMMON_OBJ_ALL_SYMBOLS="" 1713b7579f77SDag-Erling Smørgrav UBSYMS="" 1714b7579f77SDag-Erling Smørgrav EXTRALINK="-L. -L.libs -lunbound" 1715b7579f77SDag-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]) 1716b7579f77SDag-Erling Smørgrav ;; 1717b7579f77SDag-Erling Smørgrav no|*) 1718b7579f77SDag-Erling Smørgrav COMMON_OBJ_ALL_SYMBOLS='$(COMMON_OBJ)' 1719b7579f77SDag-Erling Smørgrav UBSYMS='-export-symbols $(srcdir)/libunbound/ubsyms.def' 1720b7579f77SDag-Erling Smørgrav EXTRALINK="" 1721b7579f77SDag-Erling Smørgrav ;; 1722b7579f77SDag-Erling Smørgravesac 1723b7579f77SDag-Erling SmørgravAC_SUBST(COMMON_OBJ_ALL_SYMBOLS) 1724b7579f77SDag-Erling SmørgravAC_SUBST(EXTRALINK) 1725b7579f77SDag-Erling SmørgravAC_SUBST(UBSYMS) 1726b7579f77SDag-Erling Smørgravif test x_$enable_lock_checks = x_yes; then 1727b7579f77SDag-Erling Smørgrav UBSYMS="-export-symbols clubsyms.def" 1728b7579f77SDag-Erling Smørgrav cp ${srcdir}/libunbound/ubsyms.def clubsyms.def 1729b7579f77SDag-Erling Smørgrav echo lock_protect >> clubsyms.def 1730b7579f77SDag-Erling Smørgrav echo lock_unprotect >> clubsyms.def 1731b7579f77SDag-Erling Smørgrav echo lock_get_mem >> clubsyms.def 1732b7579f77SDag-Erling Smørgrav echo checklock_start >> clubsyms.def 1733b7579f77SDag-Erling Smørgrav echo checklock_stop >> clubsyms.def 1734b7579f77SDag-Erling Smørgrav echo checklock_lock >> clubsyms.def 1735b7579f77SDag-Erling Smørgrav echo checklock_unlock >> clubsyms.def 1736b7579f77SDag-Erling Smørgrav echo checklock_init >> clubsyms.def 1737b7579f77SDag-Erling Smørgrav echo checklock_thrcreate >> clubsyms.def 1738b7579f77SDag-Erling Smørgrav echo checklock_thrjoin >> clubsyms.def 1739b7579f77SDag-Erling Smørgravfi 1740b7579f77SDag-Erling Smørgrav 1741ff825849SDag-Erling Smørgrav# check for dnstap if requested 1742ff825849SDag-Erling Smørgravdt_DNSTAP([$UNBOUND_RUN_DIR/dnstap.sock], 1743ff825849SDag-Erling Smørgrav [ 1744ff825849SDag-Erling Smørgrav AC_DEFINE([USE_DNSTAP], [1], [Define to 1 to enable dnstap support]) 1745ff825849SDag-Erling Smørgrav AC_SUBST([ENABLE_DNSTAP], [1]) 1746ff825849SDag-Erling Smørgrav 1747ff825849SDag-Erling Smørgrav AC_SUBST([opt_dnstap_socket_path]) 1748ff825849SDag-Erling Smørgrav ACX_ESCAPE_BACKSLASH($opt_dnstap_socket_path, hdr_dnstap_socket_path) 1749ff825849SDag-Erling Smørgrav AC_DEFINE_UNQUOTED(DNSTAP_SOCKET_PATH, 1750ff825849SDag-Erling Smørgrav ["$hdr_dnstap_socket_path"], [default dnstap socket path]) 175125039b37SCy Schubert AC_SUBST(DNSTAP_SOCKET_PATH,["$hdr_dnstap_socket_path"]) 1752*f44e67d1SCy Schubert AC_SUBST(DNSTAP_SOCKET_TESTBIN,['unbound-dnstap-socket$(EXEEXT)']) 175325039b37SCy Schubert AC_SUBST([DNSTAP_SRC], ["dnstap/dnstap.c dnstap/dnstap.pb-c.c dnstap/dnstap_fstrm.c dnstap/dtstream.c"]) 175425039b37SCy Schubert AC_SUBST([DNSTAP_OBJ], ["dnstap.lo dnstap.pb-c.lo dnstap_fstrm.lo dtstream.lo"]) 1755ff825849SDag-Erling Smørgrav ], 1756ff825849SDag-Erling Smørgrav [ 1757ff825849SDag-Erling Smørgrav AC_SUBST([ENABLE_DNSTAP], [0]) 1758ff825849SDag-Erling Smørgrav ] 1759ff825849SDag-Erling Smørgrav) 1760ff825849SDag-Erling Smørgrav 176165b390aaSDag-Erling Smørgrav# check for dnscrypt if requested 176265b390aaSDag-Erling Smørgravdnsc_DNSCRYPT([ 176365b390aaSDag-Erling Smørgrav AC_DEFINE([USE_DNSCRYPT], [1], [Define to 1 to enable dnscrypt support]) 176465b390aaSDag-Erling Smørgrav AC_SUBST([ENABLE_DNSCRYPT], [1]) 176565b390aaSDag-Erling Smørgrav 176665b390aaSDag-Erling Smørgrav AC_SUBST([DNSCRYPT_SRC], ["dnscrypt/dnscrypt.c"]) 176765b390aaSDag-Erling Smørgrav AC_SUBST([DNSCRYPT_OBJ], ["dnscrypt.lo"]) 176865b390aaSDag-Erling Smørgrav ], 176965b390aaSDag-Erling Smørgrav [ 177065b390aaSDag-Erling Smørgrav AC_SUBST([ENABLE_DNSCRYPT], [0]) 177165b390aaSDag-Erling Smørgrav ] 177265b390aaSDag-Erling Smørgrav) 177365b390aaSDag-Erling Smørgrav 1774e2d15004SDag-Erling Smørgrav# check for cachedb if requested 1775*f44e67d1SCy SchubertAC_ARG_ENABLE(cachedb, AS_HELP_STRING([--enable-cachedb],[enable cachedb module that can use external cache storage])) 17763bd4df0aSDag-Erling Smørgrav# turn on cachedb when hiredis support is enabled. 17773bd4df0aSDag-Erling Smørgravif test "$found_libhiredis" = "yes"; then enable_cachedb="yes"; fi 1778e2d15004SDag-Erling Smørgravcase "$enable_cachedb" in 1779e2d15004SDag-Erling Smørgrav yes) 1780e2d15004SDag-Erling Smørgrav AC_DEFINE([USE_CACHEDB], [1], [Define to 1 to use cachedb support]) 1781e2d15004SDag-Erling Smørgrav ;; 1782e2d15004SDag-Erling Smørgrav no|*) 1783e2d15004SDag-Erling Smørgrav # nothing 1784e2d15004SDag-Erling Smørgrav ;; 1785e2d15004SDag-Erling Smørgravesac 1786e2d15004SDag-Erling Smørgrav 1787c7f4d7adSDag-Erling Smørgrav# check for ipsecmod if requested 1788*f44e67d1SCy SchubertAC_ARG_ENABLE(ipsecmod, AS_HELP_STRING([--enable-ipsecmod],[Enable ipsecmod module that facilitates opportunistic IPsec])) 1789c7f4d7adSDag-Erling Smørgravcase "$enable_ipsecmod" in 1790c7f4d7adSDag-Erling Smørgrav yes) 1791c7f4d7adSDag-Erling Smørgrav AC_DEFINE([USE_IPSECMOD], [1], [Define to 1 to use ipsecmod support.]) 1792c7f4d7adSDag-Erling Smørgrav IPSECMOD_OBJ="ipsecmod.lo ipsecmod-whitelist.lo" 1793c7f4d7adSDag-Erling Smørgrav AC_SUBST(IPSECMOD_OBJ) 1794c7f4d7adSDag-Erling Smørgrav IPSECMOD_HEADER='$(srcdir)/ipsecmod/ipsecmod.h $(srcdir)/ipsecmod/ipsecmod-whitelist.h' 1795c7f4d7adSDag-Erling Smørgrav AC_SUBST(IPSECMOD_HEADER) 1796c7f4d7adSDag-Erling Smørgrav ;; 1797c7f4d7adSDag-Erling Smørgrav no|*) 1798c7f4d7adSDag-Erling Smørgrav # nothing 1799c7f4d7adSDag-Erling Smørgrav ;; 1800c7f4d7adSDag-Erling Smørgravesac 1801c7f4d7adSDag-Erling Smørgrav 18020eefd307SCy Schubert# check for ipset if requested 1803*f44e67d1SCy SchubertAC_ARG_ENABLE(ipset, AS_HELP_STRING([--enable-ipset],[enable ipset module])) 18040eefd307SCy Schubertcase "$enable_ipset" in 18050eefd307SCy Schubert yes) 18060eefd307SCy Schubert AC_DEFINE([USE_IPSET], [1], [Define to 1 to use ipset support]) 18070eefd307SCy Schubert IPSET_SRC="ipset/ipset.c" 18080eefd307SCy Schubert AC_SUBST(IPSET_SRC) 18090eefd307SCy Schubert IPSET_OBJ="ipset.lo" 18100eefd307SCy Schubert AC_SUBST(IPSET_OBJ) 18110eefd307SCy Schubert 18120eefd307SCy Schubert # mnl 1813*f44e67d1SCy Schubert AC_ARG_WITH(libmnl, AS_HELP_STRING([--with-libmnl=path],[specify explicit path for libmnl.]), 18140eefd307SCy Schubert [ ],[ withval="yes" ]) 18150eefd307SCy Schubert found_libmnl="no" 18160eefd307SCy Schubert AC_MSG_CHECKING(for libmnl) 18170eefd307SCy Schubert if test x_$withval = x_ -o x_$withval = x_yes; then 18180eefd307SCy Schubert withval="/usr/local /opt/local /usr/lib /usr/pkg /usr/sfw /usr" 18190eefd307SCy Schubert fi 18200eefd307SCy Schubert for dir in $withval ; do 18210eefd307SCy Schubert if test -f "$dir/include/libmnl/libmnl.h"; then 18220eefd307SCy Schubert found_libmnl="yes" 18230eefd307SCy Schubert dnl assume /usr is in default path. 18240eefd307SCy Schubert if test "$dir" != "/usr"; then 18250eefd307SCy Schubert CPPFLAGS="$CPPFLAGS -I$dir/include" 18260eefd307SCy Schubert LDFLAGS="$LDFLAGS -L$dir/lib" 18270eefd307SCy Schubert fi 18280eefd307SCy Schubert AC_MSG_RESULT(found in $dir) 18290eefd307SCy Schubert LIBS="$LIBS -lmnl" 18300eefd307SCy Schubert break; 18310eefd307SCy Schubert fi 18320eefd307SCy Schubert done 18330eefd307SCy Schubert if test x_$found_libmnl != x_yes; then 1834*f44e67d1SCy Schubert AC_MSG_ERROR([Could not find libmnl, libmnl.h]) 18350eefd307SCy Schubert fi 18360eefd307SCy Schubert ;; 18370eefd307SCy Schubert no|*) 18380eefd307SCy Schubert # nothing 18390eefd307SCy Schubert ;; 18400eefd307SCy Schubertesac 1841*f44e67d1SCy 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])) 184225039b37SCy Schubertcase "$enable_explicit_port_randomisation" in 184325039b37SCy Schubert no) 184425039b37SCy Schubert AC_DEFINE([DISABLE_EXPLICIT_PORT_RANDOMISATION], [1], [Define this to enable kernel based UDP source port randomization.]) 184525039b37SCy Schubert ;; 184625039b37SCy Schubert yes|*) 184725039b37SCy Schubert ;; 184825039b37SCy Schubertesac 184925039b37SCy Schubert 18500eefd307SCy Schubert 1851b7579f77SDag-Erling SmørgravAC_MSG_CHECKING([if ${MAKE:-make} supports $< with implicit rule in scope]) 1852b7579f77SDag-Erling Smørgrav# on openBSD, the implicit rule make $< work. 1853b7579f77SDag-Erling Smørgrav# on Solaris, it does not work ($? is changed sources, $^ lists dependencies). 1854b7579f77SDag-Erling Smørgrav# gmake works. 1855b7579f77SDag-Erling Smørgravcat >conftest.make <<EOF 1856b7579f77SDag-Erling Smørgravall: conftest.lo 1857b7579f77SDag-Erling Smørgrav 1858b7579f77SDag-Erling Smørgravconftest.lo foo.lo bla.lo: 1859b7579f77SDag-Erling Smørgrav if test -f "\$<"; then touch \$@; fi 1860b7579f77SDag-Erling Smørgrav 1861b7579f77SDag-Erling Smørgrav.SUFFIXES: .lo 1862b7579f77SDag-Erling Smørgrav.c.lo: 1863b7579f77SDag-Erling Smørgrav if test -f "\$<"; then touch \$@; fi 1864b7579f77SDag-Erling Smørgrav 1865b7579f77SDag-Erling Smørgravconftest.lo: conftest.dir/conftest.c 1866b7579f77SDag-Erling SmørgravEOF 1867b7579f77SDag-Erling Smørgravmkdir conftest.dir 1868b7579f77SDag-Erling Smørgravtouch conftest.dir/conftest.c 1869b7579f77SDag-Erling Smørgravrm -f conftest.lo conftest.c 1870b7579f77SDag-Erling Smørgrav${MAKE:-make} -f conftest.make >/dev/null 1871b7579f77SDag-Erling Smørgravrm -f conftest.make conftest.c conftest.dir/conftest.c 1872b7579f77SDag-Erling Smørgravrm -rf conftest.dir 1873b7579f77SDag-Erling Smørgravif test ! -f conftest.lo; then 1874b7579f77SDag-Erling Smørgrav AC_MSG_RESULT(no) 1875b7579f77SDag-Erling Smørgrav SOURCEDETERMINE='echo "$^" | awk "-F " "{print \$$1;}" > .source' 1876b7579f77SDag-Erling Smørgrav SOURCEFILE='`cat .source`' 1877b7579f77SDag-Erling Smørgravelse 1878b7579f77SDag-Erling Smørgrav AC_MSG_RESULT(yes) 1879b7579f77SDag-Erling Smørgrav SOURCEDETERMINE=':' 1880b7579f77SDag-Erling Smørgrav SOURCEFILE='$<' 1881b7579f77SDag-Erling Smørgravfi 1882b7579f77SDag-Erling Smørgravrm -f conftest.lo 1883b7579f77SDag-Erling SmørgravAC_SUBST(SOURCEDETERMINE) 1884b7579f77SDag-Erling SmørgravAC_SUBST(SOURCEFILE) 1885b7579f77SDag-Erling Smørgrav 18868ed2b524SDag-Erling Smørgrav# see if we want to build the library or everything 18878ed2b524SDag-Erling SmørgravALLTARGET="alltargets" 188817d15b25SDag-Erling SmørgravINSTALLTARGET="install-all" 1889*f44e67d1SCy SchubertAC_ARG_WITH(libunbound-only, AS_HELP_STRING([--with-libunbound-only],[do not build daemon and tool programs]), 18908ed2b524SDag-Erling Smørgrav [ 18918ed2b524SDag-Erling Smørgrav if test "$withval" = "yes"; then 18928ed2b524SDag-Erling Smørgrav ALLTARGET="lib" 189317d15b25SDag-Erling Smørgrav INSTALLTARGET="install-lib" 18948ed2b524SDag-Erling Smørgrav fi 18958ed2b524SDag-Erling Smørgrav]) 189657bddd21SDag-Erling Smørgravif test $ALLTARGET = "alltargets"; then 189757bddd21SDag-Erling Smørgrav if test $USE_NSS = "yes"; then 1898*f44e67d1SCy Schubert AC_MSG_ERROR([--with-nss can only be used in combination with --with-libunbound-only.]) 189957bddd21SDag-Erling Smørgrav fi 190057bddd21SDag-Erling Smørgrav if test $USE_NETTLE = "yes"; then 1901*f44e67d1SCy Schubert AC_MSG_ERROR([--with-nettle can only be used in combination with --with-libunbound-only.]) 190257bddd21SDag-Erling Smørgrav fi 190357bddd21SDag-Erling Smørgravfi 190457bddd21SDag-Erling Smørgrav 19058ed2b524SDag-Erling SmørgravAC_SUBST(ALLTARGET) 190617d15b25SDag-Erling SmørgravAC_SUBST(INSTALLTARGET) 1907b7579f77SDag-Erling Smørgrav 1908b7579f77SDag-Erling SmørgravACX_STRIP_EXT_FLAGS 1909971980c3SDag-Erling Smørgravif test -n "$LATE_LDFLAGS"; then 1910b7579f77SDag-Erling Smørgrav LDFLAGS="$LATE_LDFLAGS $LDFLAGS" 1911971980c3SDag-Erling Smørgravfi 1912971980c3SDag-Erling Smørgrav# remove start spaces 1913971980c3SDag-Erling SmørgravLDFLAGS=`echo "$LDFLAGS"|sed -e 's/^ *//'` 1914971980c3SDag-Erling SmørgravLIBS=`echo "$LIBS"|sed -e 's/^ *//'` 1915b7579f77SDag-Erling Smørgrav 1916b7579f77SDag-Erling SmørgravAC_DEFINE_UNQUOTED([MAXSYSLOGMSGLEN], [10240], [Define to the maximum message length to pass to syslog.]) 1917b7579f77SDag-Erling Smørgrav 1918b7579f77SDag-Erling SmørgravAH_BOTTOM( 1919b7579f77SDag-Erling Smørgravdnl this must be first AH_CONFIG, to define the flags before any includes. 1920b7579f77SDag-Erling SmørgravAHX_CONFIG_EXT_FLAGS 1921b7579f77SDag-Erling Smørgrav 1922b7579f77SDag-Erling Smørgravdnl includes 1923b7579f77SDag-Erling Smørgrav[ 1924e86b9096SDag-Erling Smørgrav#ifndef _OPENBSD_SOURCE 1925e86b9096SDag-Erling Smørgrav#define _OPENBSD_SOURCE 1 1926e86b9096SDag-Erling Smørgrav#endif 1927e86b9096SDag-Erling Smørgrav 1928b7579f77SDag-Erling Smørgrav#ifndef UNBOUND_DEBUG 1929e86b9096SDag-Erling Smørgrav# ifndef NDEBUG 1930b7579f77SDag-Erling Smørgrav# define NDEBUG 1931b7579f77SDag-Erling Smørgrav# endif 1932e86b9096SDag-Erling Smørgrav#endif 1933b7579f77SDag-Erling Smørgrav 193417d15b25SDag-Erling Smørgrav/** Use small-ldns codebase */ 193517d15b25SDag-Erling Smørgrav#define USE_SLDNS 1 193617d15b25SDag-Erling Smørgrav#ifdef HAVE_SSL 193717d15b25SDag-Erling Smørgrav# define LDNS_BUILD_CONFIG_HAVE_SSL 1 193817d15b25SDag-Erling Smørgrav#endif 193917d15b25SDag-Erling Smørgrav 1940b7579f77SDag-Erling Smørgrav#include <stdio.h> 1941b7579f77SDag-Erling Smørgrav#include <string.h> 1942b7579f77SDag-Erling Smørgrav#include <unistd.h> 1943b7579f77SDag-Erling Smørgrav#include <assert.h> 1944b7579f77SDag-Erling Smørgrav 1945b7579f77SDag-Erling Smørgrav#if STDC_HEADERS 1946b7579f77SDag-Erling Smørgrav#include <stdlib.h> 1947b7579f77SDag-Erling Smørgrav#include <stddef.h> 1948b7579f77SDag-Erling Smørgrav#endif 1949b7579f77SDag-Erling Smørgrav 195017d15b25SDag-Erling Smørgrav#ifdef HAVE_STDARG_H 195117d15b25SDag-Erling Smørgrav#include <stdarg.h> 195217d15b25SDag-Erling Smørgrav#endif 195317d15b25SDag-Erling Smørgrav 1954b7579f77SDag-Erling Smørgrav#ifdef HAVE_STDINT_H 1955b7579f77SDag-Erling Smørgrav#include <stdint.h> 1956b7579f77SDag-Erling Smørgrav#endif 1957b7579f77SDag-Erling Smørgrav 1958b7579f77SDag-Erling Smørgrav#include <errno.h> 1959b7579f77SDag-Erling Smørgrav 1960b7579f77SDag-Erling Smørgrav#if HAVE_SYS_PARAM_H 1961b7579f77SDag-Erling Smørgrav#include <sys/param.h> 1962b7579f77SDag-Erling Smørgrav#endif 1963b7579f77SDag-Erling Smørgrav 1964b7579f77SDag-Erling Smørgrav#ifdef HAVE_SYS_SOCKET_H 1965b7579f77SDag-Erling Smørgrav#include <sys/socket.h> 1966b7579f77SDag-Erling Smørgrav#endif 1967b7579f77SDag-Erling Smørgrav 1968b7579f77SDag-Erling Smørgrav#ifdef HAVE_SYS_UIO_H 1969b7579f77SDag-Erling Smørgrav#include <sys/uio.h> 1970b7579f77SDag-Erling Smørgrav#endif 1971b7579f77SDag-Erling Smørgrav 1972b7579f77SDag-Erling Smørgrav#ifdef HAVE_NETINET_IN_H 1973b7579f77SDag-Erling Smørgrav#include <netinet/in.h> 1974b7579f77SDag-Erling Smørgrav#endif 1975b7579f77SDag-Erling Smørgrav 1976f61ef7f6SDag-Erling Smørgrav#ifdef HAVE_NETINET_TCP_H 1977f61ef7f6SDag-Erling Smørgrav#include <netinet/tcp.h> 1978f61ef7f6SDag-Erling Smørgrav#endif 1979f61ef7f6SDag-Erling Smørgrav 1980b7579f77SDag-Erling Smørgrav#ifdef HAVE_ARPA_INET_H 1981b7579f77SDag-Erling Smørgrav#include <arpa/inet.h> 1982b7579f77SDag-Erling Smørgrav#endif 1983b7579f77SDag-Erling Smørgrav 1984b7579f77SDag-Erling Smørgrav#ifdef HAVE_WINSOCK2_H 1985b7579f77SDag-Erling Smørgrav#include <winsock2.h> 1986b7579f77SDag-Erling Smørgrav#endif 1987b7579f77SDag-Erling Smørgrav 1988b7579f77SDag-Erling Smørgrav#ifdef HAVE_WS2TCPIP_H 1989b7579f77SDag-Erling Smørgrav#include <ws2tcpip.h> 1990b7579f77SDag-Erling Smørgrav#endif 199117d15b25SDag-Erling Smørgrav 199217d15b25SDag-Erling Smørgrav#ifndef USE_WINSOCK 199317d15b25SDag-Erling Smørgrav#define ARG_LL "%ll" 199417d15b25SDag-Erling Smørgrav#else 199517d15b25SDag-Erling Smørgrav#define ARG_LL "%I64" 199617d15b25SDag-Erling Smørgrav#endif 19976480faa8SDag-Erling Smørgrav 19986480faa8SDag-Erling Smørgrav#ifndef AF_LOCAL 19996480faa8SDag-Erling Smørgrav#define AF_LOCAL AF_UNIX 20006480faa8SDag-Erling Smørgrav#endif 2001b7579f77SDag-Erling Smørgrav] 2002b7579f77SDag-Erling Smørgrav 2003b7579f77SDag-Erling SmørgravAHX_CONFIG_FORMAT_ATTRIBUTE 2004b7579f77SDag-Erling SmørgravAHX_CONFIG_UNUSED_ATTRIBUTE 2005b7579f77SDag-Erling SmørgravAHX_CONFIG_FSEEKO 2006b7579f77SDag-Erling SmørgravAHX_CONFIG_MAXHOSTNAMELEN 200705ab2901SDag-Erling Smørgrav#if !defined(HAVE_SNPRINTF) || defined(SNPRINTF_RET_BROKEN) 200805ab2901SDag-Erling Smørgrav#define snprintf snprintf_unbound 200905ab2901SDag-Erling Smørgrav#define vsnprintf vsnprintf_unbound 201005ab2901SDag-Erling Smørgrav#include <stdarg.h> 201105ab2901SDag-Erling Smørgravint snprintf (char *str, size_t count, const char *fmt, ...); 201205ab2901SDag-Erling Smørgravint vsnprintf (char *str, size_t count, const char *fmt, va_list arg); 201305ab2901SDag-Erling Smørgrav#endif /* HAVE_SNPRINTF or SNPRINTF_RET_BROKEN */ 2014b7579f77SDag-Erling SmørgravAHX_CONFIG_INET_PTON(unbound) 2015b7579f77SDag-Erling SmørgravAHX_CONFIG_INET_NTOP(unbound) 2016b7579f77SDag-Erling SmørgravAHX_CONFIG_INET_ATON(unbound) 2017b7579f77SDag-Erling SmørgravAHX_CONFIG_MEMMOVE(unbound) 201817d15b25SDag-Erling SmørgravAHX_CONFIG_STRLCAT(unbound) 2019b7579f77SDag-Erling SmørgravAHX_CONFIG_STRLCPY(unbound) 2020b7579f77SDag-Erling SmørgravAHX_CONFIG_GMTIME_R(unbound) 202109a3aaf3SDag-Erling SmørgravAHX_CONFIG_REALLOCARRAY(unbound) 2022b7579f77SDag-Erling SmørgravAHX_CONFIG_W32_SLEEP 2023b7579f77SDag-Erling SmørgravAHX_CONFIG_W32_USLEEP 2024b7579f77SDag-Erling SmørgravAHX_CONFIG_W32_RANDOM 2025b7579f77SDag-Erling SmørgravAHX_CONFIG_W32_SRANDOM 2026b7579f77SDag-Erling SmørgravAHX_CONFIG_W32_FD_SET_T 2027b7579f77SDag-Erling SmørgravAHX_CONFIG_IPV6_MIN_MTU 2028b7579f77SDag-Erling SmørgravAHX_MEMCMP_BROKEN(unbound) 2029b7579f77SDag-Erling Smørgrav 2030b7579f77SDag-Erling Smørgrav[ 2031b7579f77SDag-Erling Smørgrav#ifndef HAVE_CTIME_R 2032b7579f77SDag-Erling Smørgrav#define ctime_r unbound_ctime_r 2033b7579f77SDag-Erling Smørgravchar *ctime_r(const time_t *timep, char *buf); 2034b7579f77SDag-Erling Smørgrav#endif 2035b7579f77SDag-Erling Smørgrav 2036e2d15004SDag-Erling Smørgrav#ifndef HAVE_STRSEP 2037e2d15004SDag-Erling Smørgrav#define strsep unbound_strsep 2038e2d15004SDag-Erling Smørgravchar *strsep(char **stringp, const char *delim); 2039e2d15004SDag-Erling Smørgrav#endif 2040e2d15004SDag-Erling Smørgrav 204105ab2901SDag-Erling Smørgrav#ifndef HAVE_ISBLANK 204205ab2901SDag-Erling Smørgrav#define isblank unbound_isblank 204305ab2901SDag-Erling Smørgravint isblank(int c); 204405ab2901SDag-Erling Smørgrav#endif 204505ab2901SDag-Erling Smørgrav 2046a755b6f6SDag-Erling Smørgrav#ifndef HAVE_EXPLICIT_BZERO 2047a755b6f6SDag-Erling Smørgrav#define explicit_bzero unbound_explicit_bzero 2048a755b6f6SDag-Erling Smørgravvoid explicit_bzero(void* buf, size_t len); 2049a755b6f6SDag-Erling Smørgrav#endif 2050a755b6f6SDag-Erling Smørgrav 20513005e0a3SDag-Erling Smørgrav#if defined(HAVE_INET_NTOP) && !HAVE_DECL_INET_NTOP 20523005e0a3SDag-Erling Smørgravconst char *inet_ntop(int af, const void *src, char *dst, size_t size); 20533005e0a3SDag-Erling Smørgrav#endif 20543005e0a3SDag-Erling Smørgrav 20553005e0a3SDag-Erling Smørgrav#if defined(HAVE_INET_PTON) && !HAVE_DECL_INET_PTON 20563005e0a3SDag-Erling Smørgravint inet_pton(int af, const char* src, void* dst); 20573005e0a3SDag-Erling Smørgrav#endif 20583005e0a3SDag-Erling Smørgrav 2059b7579f77SDag-Erling Smørgrav#if !defined(HAVE_STRPTIME) || !defined(STRPTIME_WORKS) 2060b7579f77SDag-Erling Smørgrav#define strptime unbound_strptime 2061b7579f77SDag-Erling Smørgravstruct tm; 2062b7579f77SDag-Erling Smørgravchar *strptime(const char *s, const char *format, struct tm *tm); 2063b7579f77SDag-Erling Smørgrav#endif 2064b7579f77SDag-Erling Smørgrav 20650eefd307SCy Schubert#if !HAVE_DECL_REALLOCARRAY 20660eefd307SCy Schubertvoid *reallocarray(void *ptr, size_t nmemb, size_t size); 20670eefd307SCy Schubert#endif 20680eefd307SCy Schubert 2069091e9e46SCy Schubert#ifdef HAVE_LIBBSD 2070091e9e46SCy Schubert#include <bsd/string.h> 2071091e9e46SCy Schubert#include <bsd/stdlib.h> 2072091e9e46SCy Schubert#endif 2073091e9e46SCy Schubert 2074ff825849SDag-Erling Smørgrav#ifdef HAVE_LIBRESSL 2075ff825849SDag-Erling Smørgrav# if !HAVE_DECL_STRLCPY 2076ff825849SDag-Erling Smørgravsize_t strlcpy(char *dst, const char *src, size_t siz); 2077ff825849SDag-Erling Smørgrav# endif 2078ff825849SDag-Erling Smørgrav# if !HAVE_DECL_STRLCAT 2079ff825849SDag-Erling Smørgravsize_t strlcat(char *dst, const char *src, size_t siz); 2080ff825849SDag-Erling Smørgrav# endif 2081ff825849SDag-Erling Smørgrav# if !HAVE_DECL_ARC4RANDOM && defined(HAVE_ARC4RANDOM) 2082ff825849SDag-Erling Smørgravuint32_t arc4random(void); 2083ff825849SDag-Erling Smørgrav# endif 2084ff825849SDag-Erling Smørgrav# if !HAVE_DECL_ARC4RANDOM_UNIFORM && defined(HAVE_ARC4RANDOM_UNIFORM) 2085ff825849SDag-Erling Smørgravuint32_t arc4random_uniform(uint32_t upper_bound); 2086ff825849SDag-Erling Smørgrav# endif 2087ff825849SDag-Erling Smørgrav#endif /* HAVE_LIBRESSL */ 2088ff825849SDag-Erling Smørgrav#ifndef HAVE_ARC4RANDOM 2089ff825849SDag-Erling Smørgravint getentropy(void* buf, size_t len); 2090ff825849SDag-Erling Smørgravuint32_t arc4random(void); 2091ff825849SDag-Erling Smørgravvoid arc4random_buf(void* buf, size_t n); 2092ff825849SDag-Erling Smørgravvoid _ARC4_LOCK(void); 2093ff825849SDag-Erling Smørgravvoid _ARC4_UNLOCK(void); 209457bddd21SDag-Erling Smørgravvoid _ARC4_LOCK_DESTROY(void); 2095ff825849SDag-Erling Smørgrav#endif 2096ff825849SDag-Erling Smørgrav#ifndef HAVE_ARC4RANDOM_UNIFORM 2097ff825849SDag-Erling Smørgravuint32_t arc4random_uniform(uint32_t upper_bound); 2098ff825849SDag-Erling Smørgrav#endif 2099ff825849SDag-Erling Smørgrav#ifdef COMPAT_SHA512 2100ff825849SDag-Erling Smørgrav#ifndef SHA512_DIGEST_LENGTH 2101ff825849SDag-Erling Smørgrav#define SHA512_BLOCK_LENGTH 128 2102ff825849SDag-Erling Smørgrav#define SHA512_DIGEST_LENGTH 64 2103ff825849SDag-Erling Smørgrav#define SHA512_DIGEST_STRING_LENGTH (SHA512_DIGEST_LENGTH * 2 + 1) 2104ff825849SDag-Erling Smørgravtypedef struct _SHA512_CTX { 2105ff825849SDag-Erling Smørgrav uint64_t state[8]; 2106ff825849SDag-Erling Smørgrav uint64_t bitcount[2]; 2107ff825849SDag-Erling Smørgrav uint8_t buffer[SHA512_BLOCK_LENGTH]; 2108ff825849SDag-Erling Smørgrav} SHA512_CTX; 2109ff825849SDag-Erling Smørgrav#endif /* SHA512_DIGEST_LENGTH */ 2110ff825849SDag-Erling Smørgravvoid SHA512_Init(SHA512_CTX*); 2111ff825849SDag-Erling Smørgravvoid SHA512_Update(SHA512_CTX*, void*, size_t); 2112ff825849SDag-Erling Smørgravvoid SHA512_Final(uint8_t[SHA512_DIGEST_LENGTH], SHA512_CTX*); 2113ff825849SDag-Erling Smørgravunsigned char *SHA512(void* data, unsigned int data_len, unsigned char *digest); 2114ff825849SDag-Erling Smørgrav#endif /* COMPAT_SHA512 */ 2115ff825849SDag-Erling Smørgrav 2116ff825849SDag-Erling Smørgrav 2117ff825849SDag-Erling Smørgrav 2118b7579f77SDag-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)) 2119b7579f77SDag-Erling Smørgrav /* using version of libevent that is not threadsafe. */ 2120b7579f77SDag-Erling Smørgrav# define LIBEVENT_SIGNAL_PROBLEM 1 2121b7579f77SDag-Erling Smørgrav#endif 2122b7579f77SDag-Erling Smørgrav 2123b7579f77SDag-Erling Smørgrav#ifndef CHECKED_INET6 2124b7579f77SDag-Erling Smørgrav# define CHECKED_INET6 2125b7579f77SDag-Erling Smørgrav# ifdef AF_INET6 2126b7579f77SDag-Erling Smørgrav# define INET6 2127b7579f77SDag-Erling Smørgrav# else 2128b7579f77SDag-Erling Smørgrav# define AF_INET6 28 2129b7579f77SDag-Erling Smørgrav# endif 2130b7579f77SDag-Erling Smørgrav#endif /* CHECKED_INET6 */ 2131b7579f77SDag-Erling Smørgrav 2132b7579f77SDag-Erling Smørgrav#ifndef HAVE_GETADDRINFO 2133b7579f77SDag-Erling Smørgravstruct sockaddr_storage; 2134b7579f77SDag-Erling Smørgrav#include "compat/fake-rfc2553.h" 2135b7579f77SDag-Erling Smørgrav#endif 2136b7579f77SDag-Erling Smørgrav 2137b7579f77SDag-Erling Smørgrav#ifdef UNBOUND_ALLOC_STATS 2138b7579f77SDag-Erling Smørgrav# define malloc(s) unbound_stat_malloc_log(s, __FILE__, __LINE__, __func__) 2139b7579f77SDag-Erling Smørgrav# define calloc(n,s) unbound_stat_calloc_log(n, s, __FILE__, __LINE__, __func__) 2140b7579f77SDag-Erling Smørgrav# define free(p) unbound_stat_free_log(p, __FILE__, __LINE__, __func__) 2141b7579f77SDag-Erling Smørgrav# define realloc(p,s) unbound_stat_realloc_log(p, s, __FILE__, __LINE__, __func__) 2142b7579f77SDag-Erling Smørgravvoid *unbound_stat_malloc(size_t size); 2143b7579f77SDag-Erling Smørgravvoid *unbound_stat_calloc(size_t nmemb, size_t size); 2144b7579f77SDag-Erling Smørgravvoid unbound_stat_free(void *ptr); 2145b7579f77SDag-Erling Smørgravvoid *unbound_stat_realloc(void *ptr, size_t size); 2146b7579f77SDag-Erling Smørgravvoid *unbound_stat_malloc_log(size_t size, const char* file, int line, 2147b7579f77SDag-Erling Smørgrav const char* func); 2148b7579f77SDag-Erling Smørgravvoid *unbound_stat_calloc_log(size_t nmemb, size_t size, const char* file, 2149b7579f77SDag-Erling Smørgrav int line, const char* func); 2150b7579f77SDag-Erling Smørgravvoid unbound_stat_free_log(void *ptr, const char* file, int line, 2151b7579f77SDag-Erling Smørgrav const char* func); 2152b7579f77SDag-Erling Smørgravvoid *unbound_stat_realloc_log(void *ptr, size_t size, const char* file, 2153b7579f77SDag-Erling Smørgrav int line, const char* func); 2154b7579f77SDag-Erling Smørgrav#elif defined(UNBOUND_ALLOC_LITE) 2155b7579f77SDag-Erling Smørgrav# include "util/alloc.h" 2156b7579f77SDag-Erling Smørgrav#endif /* UNBOUND_ALLOC_LITE and UNBOUND_ALLOC_STATS */ 2157b7579f77SDag-Erling Smørgrav 2158b7579f77SDag-Erling Smørgrav/** default port for DNS traffic. */ 2159b7579f77SDag-Erling Smørgrav#define UNBOUND_DNS_PORT 53 21600fb34990SDag-Erling Smørgrav/** default port for DNS over TLS traffic. */ 21610fb34990SDag-Erling Smørgrav#define UNBOUND_DNS_OVER_TLS_PORT 853 2162c0caa2e2SCy Schubert/** default port for DNS over HTTPS traffic. */ 2163c0caa2e2SCy Schubert#define UNBOUND_DNS_OVER_HTTPS_PORT 443 2164b7579f77SDag-Erling Smørgrav/** default port for unbound control traffic, registered port with IANA, 2165b7579f77SDag-Erling Smørgrav ub-dns-control 8953/tcp unbound dns nameserver control */ 2166b7579f77SDag-Erling Smørgrav#define UNBOUND_CONTROL_PORT 8953 2167b7579f77SDag-Erling Smørgrav/** the version of unbound-control that this software implements */ 2168b7579f77SDag-Erling Smørgrav#define UNBOUND_CONTROL_VERSION 1 2169b7579f77SDag-Erling Smørgrav 2170b7579f77SDag-Erling Smørgrav]) 2171b7579f77SDag-Erling Smørgrav 2172ff825849SDag-Erling Smørgravdnl if we build from source tree, the man pages need @date@ and @version@ 2173ff825849SDag-Erling Smørgravdnl if this is a distro tarball, that was already done by makedist.sh 2174ff825849SDag-Erling SmørgravAC_SUBST(version, [VERSION_MAJOR.VERSION_MINOR.VERSION_MICRO]) 2175ff825849SDag-Erling SmørgravAC_SUBST(date, [`date +'%b %e, %Y'`]) 2176ff825849SDag-Erling Smørgrav 2177091e9e46SCy 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]) 2178*f44e67d1SCy SchubertAC_CONFIG_HEADERS([config.h]) 2179b7579f77SDag-Erling SmørgravAC_OUTPUT 2180