1*00b67f09SDavid van Moolenbroek# Copyright (C) 2004-2015 Internet Systems Consortium, Inc. ("ISC") 2*00b67f09SDavid van Moolenbroek# Copyright (C) 1998-2003 Internet Software Consortium. 3*00b67f09SDavid van Moolenbroek# 4*00b67f09SDavid van Moolenbroek# Permission to use, copy, modify, and/or distribute this software for any 5*00b67f09SDavid van Moolenbroek# purpose with or without fee is hereby granted, provided that the above 6*00b67f09SDavid van Moolenbroek# copyright notice and this permission notice appear in all copies. 7*00b67f09SDavid van Moolenbroek# 8*00b67f09SDavid van Moolenbroek# THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH 9*00b67f09SDavid van Moolenbroek# REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY 10*00b67f09SDavid van Moolenbroek# AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, 11*00b67f09SDavid van Moolenbroek# INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM 12*00b67f09SDavid van Moolenbroek# LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE 13*00b67f09SDavid van Moolenbroek# OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR 14*00b67f09SDavid van Moolenbroek# PERFORMANCE OF THIS SOFTWARE. 15*00b67f09SDavid van Moolenbroek 16*00b67f09SDavid van Moolenbroek# Copyright (C) 1998-2003 Internet Software Consortium. 17*00b67f09SDavid van Moolenbroek# 18*00b67f09SDavid van Moolenbroek# Permission to use, copy, modify, and/or distribute this software for any 19*00b67f09SDavid van Moolenbroek# purpose with or without fee is hereby granted, provided that the above 20*00b67f09SDavid van Moolenbroek# copyright notice and this permission notice appear in all copies. 21*00b67f09SDavid van Moolenbroek# 22*00b67f09SDavid van Moolenbroek# THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH 23*00b67f09SDavid van Moolenbroek# REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY 24*00b67f09SDavid van Moolenbroek# AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, 25*00b67f09SDavid van Moolenbroek# INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM 26*00b67f09SDavid van Moolenbroek# LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE 27*00b67f09SDavid van Moolenbroek# OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR 28*00b67f09SDavid van Moolenbroek# PERFORMANCE OF THIS SOFTWARE. 29*00b67f09SDavid van Moolenbroek 30*00b67f09SDavid van Moolenbroekdnl 31*00b67f09SDavid van MoolenbroekAC_DIVERT_PUSH(1)dnl 32*00b67f09SDavid van Moolenbroekesyscmd([sed -e 's/^/# /' -e '/Portions of this code/,$d' COPYRIGHT])dnl 33*00b67f09SDavid van MoolenbroekAC_DIVERT_POP()dnl 34*00b67f09SDavid van Moolenbroek 35*00b67f09SDavid van MoolenbroekAC_INIT(BIND, [9.10], [bind9-bugs@isc.org], [], [https://www.isc.org/downloads/BIND/]) 36*00b67f09SDavid van MoolenbroekAC_PREREQ(2.59) 37*00b67f09SDavid van Moolenbroek 38*00b67f09SDavid van MoolenbroekAC_CONFIG_HEADER(config.h) 39*00b67f09SDavid van MoolenbroekAC_CONFIG_MACRO_DIR([m4]) 40*00b67f09SDavid van Moolenbroek 41*00b67f09SDavid van MoolenbroekAC_CANONICAL_HOST 42*00b67f09SDavid van Moolenbroek 43*00b67f09SDavid van MoolenbroekAC_PROG_MAKE_SET 44*00b67f09SDavid van Moolenbroek 45*00b67f09SDavid van Moolenbroek# 46*00b67f09SDavid van Moolenbroek# GNU libtool support 47*00b67f09SDavid van Moolenbroek# 48*00b67f09SDavid van Moolenbroekcase $build_os in 49*00b67f09SDavid van Moolenbroeksunos*) 50*00b67f09SDavid van Moolenbroek # Just set the maximum command line length for sunos as it otherwise 51*00b67f09SDavid van Moolenbroek # takes a exceptionally long time to work it out. Required for libtool. 52*00b67f09SDavid van Moolenbroek 53*00b67f09SDavid van Moolenbroek lt_cv_sys_max_cmd_len=4096; 54*00b67f09SDavid van Moolenbroek ;; 55*00b67f09SDavid van Moolenbroekesac 56*00b67f09SDavid van Moolenbroek 57*00b67f09SDavid van MoolenbroekAC_PROG_LIBTOOL 58*00b67f09SDavid van MoolenbroekAC_PROG_INSTALL 59*00b67f09SDavid van MoolenbroekAC_PROG_LN_S 60*00b67f09SDavid van Moolenbroek 61*00b67f09SDavid van MoolenbroekAC_SUBST(STD_CINCLUDES) 62*00b67f09SDavid van MoolenbroekAC_SUBST(STD_CDEFINES) 63*00b67f09SDavid van MoolenbroekAC_SUBST(STD_CWARNINGS) 64*00b67f09SDavid van MoolenbroekAC_SUBST(CCOPT) 65*00b67f09SDavid van MoolenbroekAC_SUBST(CCNOOPT) 66*00b67f09SDavid van MoolenbroekAC_SUBST(BACKTRACECFLAGS) 67*00b67f09SDavid van Moolenbroek 68*00b67f09SDavid van Moolenbroek# Warn if the user specified libbind, which is now deprecated 69*00b67f09SDavid van MoolenbroekAC_ARG_ENABLE(libbind, [ --enable-libbind deprecated]) 70*00b67f09SDavid van Moolenbroek 71*00b67f09SDavid van Moolenbroekcase "$enable_libbind" in 72*00b67f09SDavid van Moolenbroek yes) 73*00b67f09SDavid van Moolenbroek AC_MSG_ERROR(['libbind' is no longer part of the BIND 9 distribution. 74*00b67f09SDavid van MoolenbroekIt is available from http://www.isc.org as a separate download.]) 75*00b67f09SDavid van Moolenbroek ;; 76*00b67f09SDavid van Moolenbroek no|'') 77*00b67f09SDavid van Moolenbroek ;; 78*00b67f09SDavid van Moolenbroekesac 79*00b67f09SDavid van Moolenbroek 80*00b67f09SDavid van MoolenbroekAC_ARG_ENABLE(warn_shadow, [ --enable-warn-shadow turn on -Wshadow when compiling]) 81*00b67f09SDavid van Moolenbroek 82*00b67f09SDavid van MoolenbroekAC_ARG_ENABLE(warn_error, [ --enable-warn-error turn on -Werror when compiling]) 83*00b67f09SDavid van Moolenbroek 84*00b67f09SDavid van MoolenbroekAC_ARG_ENABLE(developer, [ --enable-developer enable developer build settings]) 85*00b67f09SDavid van Moolenbroekcase "$enable_developer" in 86*00b67f09SDavid van Moolenbroekyes) 87*00b67f09SDavid van Moolenbroek STD_CDEFINES="$STD_CDEFINES -DISC_LIST_CHECKINIT=1" 88*00b67f09SDavid van Moolenbroek test "${enable_fixed_rrset+set}" = set || enable_fixed_rrset=yes 89*00b67f09SDavid van Moolenbroek test "${with_atf+set}" = set || with_atf=yes 90*00b67f09SDavid van Moolenbroek test "${enable_filter_aaaa+set}" = set || enable_filter_aaaa=yes 91*00b67f09SDavid van Moolenbroek test "${with_dlz_filesystem+set}" = set || with_dlz_filesystem=yes 92*00b67f09SDavid van Moolenbroek test "${enable_symtable+set}" = set || enable_symtable=all 93*00b67f09SDavid van Moolenbroek test "${enable_sit+set}" = set || enable_sit=yes 94*00b67f09SDavid van Moolenbroek test "${enable_warn_error+set}" = set || enable_warn_error=yes 95*00b67f09SDavid van Moolenbroek test "${enable_warn_shadow+set}" = set || enable_warn_shadow=yes 96*00b67f09SDavid van Moolenbroek ;; 97*00b67f09SDavid van Moolenbroekesac 98*00b67f09SDavid van Moolenbroek 99*00b67f09SDavid van Moolenbroek#libseccomp sandboxing 100*00b67f09SDavid van MoolenbroekAC_ARG_ENABLE(seccomp, 101*00b67f09SDavid van Moolenbroek AS_HELP_STRING([--enable-seccomp],[enable support for libseccomp system call filtering [default=no]])) 102*00b67f09SDavid van Moolenbroekcase "$enable_seccomp" in 103*00b67f09SDavid van Moolenbroek yes) 104*00b67f09SDavid van Moolenbroek case $host_os in 105*00b67f09SDavid van Moolenbroek linux*) 106*00b67f09SDavid van Moolenbroek ;; 107*00b67f09SDavid van Moolenbroek *) 108*00b67f09SDavid van Moolenbroek AC_MSG_WARN([seccomp is not supported on non-linux platforms; disabling it]) 109*00b67f09SDavid van Moolenbroek enable_seccomp=no 110*00b67f09SDavid van Moolenbroek ;; 111*00b67f09SDavid van Moolenbroek esac 112*00b67f09SDavid van Moolenbroek AC_SEARCH_LIBS(seccomp_init, [seccomp]) 113*00b67f09SDavid van Moolenbroek if test "$ac_cv_search_seccomp_init" = "-lseccomp" ; then 114*00b67f09SDavid van Moolenbroek AC_TRY_RUN([ 115*00b67f09SDavid van Moolenbroek #include <stdio.h> 116*00b67f09SDavid van Moolenbroek #include <stdlib.h> 117*00b67f09SDavid van Moolenbroek #include <errno.h> 118*00b67f09SDavid van Moolenbroek #include <sys/prctl.h> 119*00b67f09SDavid van Moolenbroek #include <linux/seccomp.h> 120*00b67f09SDavid van Moolenbroek 121*00b67f09SDavid van Moolenbroek int main(void) 122*00b67f09SDavid van Moolenbroek { 123*00b67f09SDavid van Moolenbroek int ret; 124*00b67f09SDavid van Moolenbroek 125*00b67f09SDavid van Moolenbroek ret = prctl(PR_GET_SECCOMP, 0, 0, 0, 0); 126*00b67f09SDavid van Moolenbroek if (ret < 0) { 127*00b67f09SDavid van Moolenbroek switch (errno) { 128*00b67f09SDavid van Moolenbroek case ENOSYS: 129*00b67f09SDavid van Moolenbroek return 1; 130*00b67f09SDavid van Moolenbroek case EINVAL: 131*00b67f09SDavid van Moolenbroek return 1; 132*00b67f09SDavid van Moolenbroek default: 133*00b67f09SDavid van Moolenbroek return 1; 134*00b67f09SDavid van Moolenbroek } 135*00b67f09SDavid van Moolenbroek } 136*00b67f09SDavid van Moolenbroek ret = 137*00b67f09SDavid van Moolenbroek prctl(PR_SET_SECCOMP, SECCOMP_MODE_FILTER, NULL, 0, 0); 138*00b67f09SDavid van Moolenbroek if (ret < 0) { 139*00b67f09SDavid van Moolenbroek switch (errno) { 140*00b67f09SDavid van Moolenbroek case EINVAL: 141*00b67f09SDavid van Moolenbroek return 1; 142*00b67f09SDavid van Moolenbroek case EFAULT: 143*00b67f09SDavid van Moolenbroek return 0; 144*00b67f09SDavid van Moolenbroek default: 145*00b67f09SDavid van Moolenbroek return 1; 146*00b67f09SDavid van Moolenbroek } 147*00b67f09SDavid van Moolenbroek } 148*00b67f09SDavid van Moolenbroek return 1; 149*00b67f09SDavid van Moolenbroek } 150*00b67f09SDavid van Moolenbroek ] 151*00b67f09SDavid van Moolenbroek , AC_DEFINE([HAVE_LIBSECCOMP], 1, 152*00b67f09SDavid van Moolenbroek [Define to use libseccomp system call filtering.]) 153*00b67f09SDavid van Moolenbroek , [] 154*00b67f09SDavid van Moolenbroek ) 155*00b67f09SDavid van Moolenbroek fi 156*00b67f09SDavid van Moolenbroek ;; 157*00b67f09SDavid van Moolenbroek *) 158*00b67f09SDavid van Moolenbroek ;; 159*00b67f09SDavid van Moolenbroekesac 160*00b67f09SDavid van Moolenbroek 161*00b67f09SDavid van Moolenbroek# 162*00b67f09SDavid van Moolenbroek# Make very sure that these are the first files processed by 163*00b67f09SDavid van Moolenbroek# config.status, since we use the processed output as the input for 164*00b67f09SDavid van Moolenbroek# AC_SUBST_FILE() substitutions in other files. 165*00b67f09SDavid van Moolenbroek# 166*00b67f09SDavid van MoolenbroekAC_CONFIG_FILES([make/rules make/includes]) 167*00b67f09SDavid van Moolenbroek 168*00b67f09SDavid van MoolenbroekAC_PATH_PROG(AR, ar) 169*00b67f09SDavid van MoolenbroekARFLAGS="cruv" 170*00b67f09SDavid van MoolenbroekAC_SUBST(AR) 171*00b67f09SDavid van MoolenbroekAC_SUBST(ARFLAGS) 172*00b67f09SDavid van Moolenbroek 173*00b67f09SDavid van Moolenbroek# The POSIX ln(1) program. Non-POSIX systems may substitute 174*00b67f09SDavid van Moolenbroek# "copy" or something. 175*00b67f09SDavid van MoolenbroekLN=ln 176*00b67f09SDavid van MoolenbroekAC_SUBST(LN) 177*00b67f09SDavid van Moolenbroek 178*00b67f09SDavid van Moolenbroekcase "$AR" in 179*00b67f09SDavid van Moolenbroek "") 180*00b67f09SDavid van Moolenbroek AC_MSG_ERROR([ 181*00b67f09SDavid van Moolenbroekar program not found. Please fix your PATH to include the directory in 182*00b67f09SDavid van Moolenbroekwhich ar resides, or set AR in the environment with the full path to ar. 183*00b67f09SDavid van Moolenbroek]) 184*00b67f09SDavid van Moolenbroek 185*00b67f09SDavid van Moolenbroek ;; 186*00b67f09SDavid van Moolenbroekesac 187*00b67f09SDavid van Moolenbroek 188*00b67f09SDavid van Moolenbroek# 189*00b67f09SDavid van Moolenbroek# Etags. 190*00b67f09SDavid van Moolenbroek# 191*00b67f09SDavid van MoolenbroekAC_PATH_PROGS(ETAGS, etags emacs-etags) 192*00b67f09SDavid van Moolenbroek 193*00b67f09SDavid van Moolenbroek# 194*00b67f09SDavid van Moolenbroek# Some systems, e.g. RH7, have the Exuberant Ctags etags instead of 195*00b67f09SDavid van Moolenbroek# GNU emacs etags, and it requires the -L flag. 196*00b67f09SDavid van Moolenbroek# 197*00b67f09SDavid van Moolenbroekif test "X$ETAGS" != "X"; then 198*00b67f09SDavid van Moolenbroek AC_MSG_CHECKING(for Exuberant Ctags etags) 199*00b67f09SDavid van Moolenbroek if $ETAGS --version 2>&1 | grep 'Exuberant Ctags' >/dev/null 2>&1; then 200*00b67f09SDavid van Moolenbroek AC_MSG_RESULT(yes) 201*00b67f09SDavid van Moolenbroek ETAGS="$ETAGS -L" 202*00b67f09SDavid van Moolenbroek else 203*00b67f09SDavid van Moolenbroek AC_MSG_RESULT(no) 204*00b67f09SDavid van Moolenbroek fi 205*00b67f09SDavid van Moolenbroekfi 206*00b67f09SDavid van MoolenbroekAC_SUBST(ETAGS) 207*00b67f09SDavid van Moolenbroek 208*00b67f09SDavid van Moolenbroek# 209*00b67f09SDavid van Moolenbroek# Perl is optional; it is used only by some of the system test scripts. 210*00b67f09SDavid van Moolenbroek# Note: the backtrace feature (see below) uses perl to build the symbol table, 211*00b67f09SDavid van Moolenbroek# but it still compiles without perl, in which case an empty table will be used. 212*00b67f09SDavid van Moolenbroek# 213*00b67f09SDavid van MoolenbroekAC_PATH_PROGS(PERL, perl5 perl) 214*00b67f09SDavid van MoolenbroekAC_SUBST(PERL) 215*00b67f09SDavid van Moolenbroek 216*00b67f09SDavid van Moolenbroek# 217*00b67f09SDavid van Moolenbroek# Python is also optional; it is used by the tools in bin/python. 218*00b67f09SDavid van Moolenbroek# If python is unavailable, we simply don't build those. 219*00b67f09SDavid van Moolenbroek# 220*00b67f09SDavid van MoolenbroekAC_ARG_WITH(python, 221*00b67f09SDavid van Moolenbroek[ --with-python=PATH specify path to python interpreter], 222*00b67f09SDavid van Moolenbroek use_python="$withval", use_python="unspec") 223*00b67f09SDavid van Moolenbroek 224*00b67f09SDavid van Moolenbroekpython="python python3 python3.4 python3.3 python3.2 python3.1 python3.0 python2 python2.7 python2.6 python2.5 python2.4" 225*00b67f09SDavid van Moolenbroektestscript='try: import argparse 226*00b67f09SDavid van Moolenbroekexcept: exit(1)' 227*00b67f09SDavid van Moolenbroekcase "$use_python" in 228*00b67f09SDavid van Moolenbroek no) 229*00b67f09SDavid van Moolenbroek AC_MSG_CHECKING([for python support]) 230*00b67f09SDavid van Moolenbroek AC_MSG_RESULT(disabled) 231*00b67f09SDavid van Moolenbroek ;; 232*00b67f09SDavid van Moolenbroek unspec|yes|*) 233*00b67f09SDavid van Moolenbroek case "$use_python" in 234*00b67f09SDavid van Moolenbroek unspec|yes|'') 235*00b67f09SDavid van Moolenbroek for p in $python 236*00b67f09SDavid van Moolenbroek do 237*00b67f09SDavid van Moolenbroek AC_PATH_PROGS(PYTHON, $p) 238*00b67f09SDavid van Moolenbroek if test "X$PYTHON" == "X"; then 239*00b67f09SDavid van Moolenbroek continue; 240*00b67f09SDavid van Moolenbroek fi 241*00b67f09SDavid van Moolenbroek AC_MSG_CHECKING([python module 'argparse']) 242*00b67f09SDavid van Moolenbroek if ${PYTHON:-false} -c "$testscript"; then 243*00b67f09SDavid van Moolenbroek AC_MSG_RESULT([found, using $PYTHON]) 244*00b67f09SDavid van Moolenbroek break 245*00b67f09SDavid van Moolenbroek fi 246*00b67f09SDavid van Moolenbroek AC_MSG_RESULT([not found]) 247*00b67f09SDavid van Moolenbroek unset ac_cv_path_PYTHON 248*00b67f09SDavid van Moolenbroek unset PYTHON 249*00b67f09SDavid van Moolenbroek done 250*00b67f09SDavid van Moolenbroek if test "X$PYTHON" == "X" 251*00b67f09SDavid van Moolenbroek then 252*00b67f09SDavid van Moolenbroek AC_MSG_CHECKING([for python support]) 253*00b67f09SDavid van Moolenbroek case "$use_python" in 254*00b67f09SDavid van Moolenbroek unspec) 255*00b67f09SDavid van Moolenbroek AC_MSG_RESULT(disabled) 256*00b67f09SDavid van Moolenbroek ;; 257*00b67f09SDavid van Moolenbroek yes) 258*00b67f09SDavid van Moolenbroek AC_MSG_ERROR([missing python]) 259*00b67f09SDavid van Moolenbroek ;; 260*00b67f09SDavid van Moolenbroek esac 261*00b67f09SDavid van Moolenbroek fi 262*00b67f09SDavid van Moolenbroek ;; 263*00b67f09SDavid van Moolenbroek *) 264*00b67f09SDavid van Moolenbroek case "$use_python" in 265*00b67f09SDavid van Moolenbroek /*) 266*00b67f09SDavid van Moolenbroek PYTHON="$use_python" 267*00b67f09SDavid van Moolenbroek ;; 268*00b67f09SDavid van Moolenbroek *) 269*00b67f09SDavid van Moolenbroek AC_PATH_PROGS(PYTHON, $use_python) 270*00b67f09SDavid van Moolenbroek ;; 271*00b67f09SDavid van Moolenbroek esac 272*00b67f09SDavid van Moolenbroek AC_MSG_CHECKING([python module 'argparse']) 273*00b67f09SDavid van Moolenbroek if ${PYTHON:-false} -c "$testscript"; then 274*00b67f09SDavid van Moolenbroek AC_MSG_RESULT([found, using $PYTHON]) 275*00b67f09SDavid van Moolenbroek break 276*00b67f09SDavid van Moolenbroek else 277*00b67f09SDavid van Moolenbroek AC_MSG_ERROR([not found]) 278*00b67f09SDavid van Moolenbroek fi 279*00b67f09SDavid van Moolenbroek ;; 280*00b67f09SDavid van Moolenbroek esac 281*00b67f09SDavid van Moolenbroek ;; 282*00b67f09SDavid van Moolenbroekesac 283*00b67f09SDavid van Moolenbroek 284*00b67f09SDavid van MoolenbroekPYTHON_TOOLS='' 285*00b67f09SDavid van MoolenbroekCHECKDS='' 286*00b67f09SDavid van MoolenbroekCOVERAGE='' 287*00b67f09SDavid van Moolenbroekif test "X$PYTHON" != "X"; then 288*00b67f09SDavid van Moolenbroek PYTHON_TOOLS=python 289*00b67f09SDavid van Moolenbroek CHECKDS=checkds 290*00b67f09SDavid van Moolenbroek COVERAGE=coverage 291*00b67f09SDavid van Moolenbroekfi 292*00b67f09SDavid van MoolenbroekAC_SUBST(CHECKDS) 293*00b67f09SDavid van MoolenbroekAC_SUBST(COVERAGE) 294*00b67f09SDavid van MoolenbroekAC_SUBST(PYTHON_TOOLS) 295*00b67f09SDavid van Moolenbroek 296*00b67f09SDavid van Moolenbroek# 297*00b67f09SDavid van Moolenbroek# Special processing of paths depending on whether --prefix, 298*00b67f09SDavid van Moolenbroek# --sysconfdir or --localstatedir arguments were given. What's 299*00b67f09SDavid van Moolenbroek# desired is some compatibility with the way previous versions 300*00b67f09SDavid van Moolenbroek# of BIND built; they defaulted to /usr/local for most parts of 301*00b67f09SDavid van Moolenbroek# the installation, but named.boot/named.conf was in /etc 302*00b67f09SDavid van Moolenbroek# and named.pid was in /var/run. 303*00b67f09SDavid van Moolenbroek# 304*00b67f09SDavid van Moolenbroek# So ... if none of --prefix, --sysconfdir or --localstatedir are 305*00b67f09SDavid van Moolenbroek# specified, set things up that way. If --prefix is given, use 306*00b67f09SDavid van Moolenbroek# it for sysconfdir and localstatedir the way configure normally 307*00b67f09SDavid van Moolenbroek# would. To change the prefix for everything but leave named.conf 308*00b67f09SDavid van Moolenbroek# in /etc or named.pid in /var/run, then do this the usual configure way: 309*00b67f09SDavid van Moolenbroek# ./configure --prefix=/somewhere --sysconfdir=/etc 310*00b67f09SDavid van Moolenbroek# ./configure --prefix=/somewhere --localstatedir=/var 311*00b67f09SDavid van Moolenbroek# 312*00b67f09SDavid van Moolenbroek# To put named.conf and named.pid in /usr/local with everything else, 313*00b67f09SDavid van Moolenbroek# set the prefix explicitly to /usr/local even though that's the default: 314*00b67f09SDavid van Moolenbroek# ./configure --prefix=/usr/local 315*00b67f09SDavid van Moolenbroek# 316*00b67f09SDavid van Moolenbroekcase "$prefix" in 317*00b67f09SDavid van Moolenbroek NONE) 318*00b67f09SDavid van Moolenbroek case "$sysconfdir" in 319*00b67f09SDavid van Moolenbroek '${prefix}/etc') 320*00b67f09SDavid van Moolenbroek sysconfdir=/etc 321*00b67f09SDavid van Moolenbroek ;; 322*00b67f09SDavid van Moolenbroek esac 323*00b67f09SDavid van Moolenbroek case "$localstatedir" in 324*00b67f09SDavid van Moolenbroek '${prefix}/var') 325*00b67f09SDavid van Moolenbroek localstatedir=/var 326*00b67f09SDavid van Moolenbroek ;; 327*00b67f09SDavid van Moolenbroek esac 328*00b67f09SDavid van Moolenbroek ;; 329*00b67f09SDavid van Moolenbroekesac 330*00b67f09SDavid van Moolenbroek 331*00b67f09SDavid van Moolenbroek# 332*00b67f09SDavid van Moolenbroek# Make sure INSTALL uses an absolute path, else it will be wrong in all 333*00b67f09SDavid van Moolenbroek# Makefiles, since they use make/rules.in and INSTALL will be adjusted by 334*00b67f09SDavid van Moolenbroek# configure based on the location of the file where it is substituted. 335*00b67f09SDavid van Moolenbroek# Since in BIND9 INSTALL is only substituted into make/rules.in, an immediate 336*00b67f09SDavid van Moolenbroek# subdirectory of install-sh, This relative path will be wrong for all 337*00b67f09SDavid van Moolenbroek# directories more than one level down from install-sh. 338*00b67f09SDavid van Moolenbroek# 339*00b67f09SDavid van Moolenbroekcase "$INSTALL" in 340*00b67f09SDavid van Moolenbroek /*) 341*00b67f09SDavid van Moolenbroek ;; 342*00b67f09SDavid van Moolenbroek *) 343*00b67f09SDavid van Moolenbroek # 344*00b67f09SDavid van Moolenbroek # Not all systems have dirname. 345*00b67f09SDavid van Moolenbroek # 346*00b67f09SDavid van Moolenbroek changequote({, }) 347*00b67f09SDavid van Moolenbroek ac_dir="`echo $INSTALL | sed 's%/[^/]*$%%'`" 348*00b67f09SDavid van Moolenbroek changequote([, ]) 349*00b67f09SDavid van Moolenbroek 350*00b67f09SDavid van Moolenbroek ac_prog="`echo $INSTALL | sed 's%.*/%%'`" 351*00b67f09SDavid van Moolenbroek test "$ac_dir" = "$ac_prog" && ac_dir=. 352*00b67f09SDavid van Moolenbroek test -d "$ac_dir" && ac_dir="`(cd \"$ac_dir\" && pwd)`" 353*00b67f09SDavid van Moolenbroek INSTALL="$ac_dir/$ac_prog" 354*00b67f09SDavid van Moolenbroek ;; 355*00b67f09SDavid van Moolenbroekesac 356*00b67f09SDavid van Moolenbroek 357*00b67f09SDavid van Moolenbroek# 358*00b67f09SDavid van Moolenbroek# On these hosts, we really want to use cc, not gcc, even if it is 359*00b67f09SDavid van Moolenbroek# found. The gcc that these systems have will not correctly handle 360*00b67f09SDavid van Moolenbroek# pthreads. 361*00b67f09SDavid van Moolenbroek# 362*00b67f09SDavid van Moolenbroek# However, if the user sets $CC to be something, let that override 363*00b67f09SDavid van Moolenbroek# our change. 364*00b67f09SDavid van Moolenbroek# 365*00b67f09SDavid van Moolenbroekif test "X$CC" = "X" ; then 366*00b67f09SDavid van Moolenbroek case "$host" in 367*00b67f09SDavid van Moolenbroek *-dec-osf*) 368*00b67f09SDavid van Moolenbroek CC="cc" 369*00b67f09SDavid van Moolenbroek ;; 370*00b67f09SDavid van Moolenbroek *-solaris*) 371*00b67f09SDavid van Moolenbroek # Use Sun's cc if it is available, but watch 372*00b67f09SDavid van Moolenbroek # out for /usr/ucb/cc; it will never be the right 373*00b67f09SDavid van Moolenbroek # compiler to use. 374*00b67f09SDavid van Moolenbroek # 375*00b67f09SDavid van Moolenbroek # If setting CC here fails, the AC_PROG_CC done 376*00b67f09SDavid van Moolenbroek # below might still find gcc. 377*00b67f09SDavid van Moolenbroek IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" 378*00b67f09SDavid van Moolenbroek for ac_dir in $PATH; do 379*00b67f09SDavid van Moolenbroek test -z "$ac_dir" && ac_dir=. 380*00b67f09SDavid van Moolenbroek case "$ac_dir" in 381*00b67f09SDavid van Moolenbroek /usr/ucb) 382*00b67f09SDavid van Moolenbroek # exclude 383*00b67f09SDavid van Moolenbroek ;; 384*00b67f09SDavid van Moolenbroek *) 385*00b67f09SDavid van Moolenbroek if test -f "$ac_dir/cc"; then 386*00b67f09SDavid van Moolenbroek CC="$ac_dir/cc" 387*00b67f09SDavid van Moolenbroek break 388*00b67f09SDavid van Moolenbroek fi 389*00b67f09SDavid van Moolenbroek ;; 390*00b67f09SDavid van Moolenbroek esac 391*00b67f09SDavid van Moolenbroek done 392*00b67f09SDavid van Moolenbroek IFS="$ac_save_ifs" 393*00b67f09SDavid van Moolenbroek ;; 394*00b67f09SDavid van Moolenbroek *-hp-hpux*) 395*00b67f09SDavid van Moolenbroek CC="cc" 396*00b67f09SDavid van Moolenbroek ;; 397*00b67f09SDavid van Moolenbroek mips-sgi-irix*) 398*00b67f09SDavid van Moolenbroek CC="cc" 399*00b67f09SDavid van Moolenbroek ;; 400*00b67f09SDavid van Moolenbroek esac 401*00b67f09SDavid van Moolenbroekfi 402*00b67f09SDavid van Moolenbroek 403*00b67f09SDavid van MoolenbroekAC_PROG_CC 404*00b67f09SDavid van Moolenbroek 405*00b67f09SDavid van Moolenbroek# 406*00b67f09SDavid van Moolenbroek# gcc's optimiser is broken at -02 for ultrasparc 407*00b67f09SDavid van Moolenbroek# 408*00b67f09SDavid van Moolenbroekif test "$ac_env_CFLAGS_set" != set -a "X$GCC" = "Xyes"; then 409*00b67f09SDavid van Moolenbroek case "$host" in 410*00b67f09SDavid van Moolenbroek sparc-*) 411*00b67f09SDavid van Moolenbroek CCFLAGS="-g -O1" 412*00b67f09SDavid van Moolenbroek ;; 413*00b67f09SDavid van Moolenbroek esac 414*00b67f09SDavid van Moolenbroekfi 415*00b67f09SDavid van Moolenbroek 416*00b67f09SDavid van Moolenbroek# 417*00b67f09SDavid van Moolenbroek# OS dependent CC flags 418*00b67f09SDavid van Moolenbroek# 419*00b67f09SDavid van Moolenbroekcase "$host" in 420*00b67f09SDavid van Moolenbroek # OSF 5.0: recv/send are only available with -D_POSIX_PII_SOCKET or 421*00b67f09SDavid van Moolenbroek # -D_XOPEN_SOURCE_EXTENDED. 422*00b67f09SDavid van Moolenbroek *-dec-osf*) 423*00b67f09SDavid van Moolenbroek STD_CDEFINES="$STD_CDEFINES -D_POSIX_PII_SOCKET" 424*00b67f09SDavid van Moolenbroek CPPFLAGS="$CPPFLAGS -D_POSIX_PII_SOCKET" 425*00b67f09SDavid van Moolenbroek ;; 426*00b67f09SDavid van Moolenbroek #HP-UX: need -D_XOPEN_SOURCE_EXTENDED and -lxnet for CMSG macros 427*00b67f09SDavid van Moolenbroek *-hp-hpux*) 428*00b67f09SDavid van Moolenbroek STD_CDEFINES="$STD_CDEFINES -D_XOPEN_SOURCE_EXTENDED" 429*00b67f09SDavid van Moolenbroek CPPFLAGS="$CPPFLAGS -D_XOPEN_SOURCE_EXTENDED" 430*00b67f09SDavid van Moolenbroek LIBS="-lxnet $LIBS" 431*00b67f09SDavid van Moolenbroek ;; 432*00b67f09SDavid van Moolenbroek # Solaris: need -D_XPG4_2 and -D__EXTENSIONS__ for CMSG macros 433*00b67f09SDavid van Moolenbroek *-solaris*) 434*00b67f09SDavid van Moolenbroek STD_CDEFINES="$STD_CDEFINES -D_XPG4_2 -D__EXTENSIONS__" 435*00b67f09SDavid van Moolenbroek CPPFLAGS="$CPPFLAGS -D_XPG4_2 -D__EXTENSIONS__" 436*00b67f09SDavid van Moolenbroek ;; 437*00b67f09SDavid van Moolenbroek # POSIX doesn't include the IPv6 Advanced Socket API and glibc hides 438*00b67f09SDavid van Moolenbroek # parts of the IPv6 Advanced Socket API as a result. This is stupid 439*00b67f09SDavid van Moolenbroek # as it breaks how the two halves (Basic and Advanced) of the IPv6 440*00b67f09SDavid van Moolenbroek # Socket API were designed to be used but we have to live with it. 441*00b67f09SDavid van Moolenbroek # Define _GNU_SOURCE to pull in the IPv6 Advanced Socket API. 442*00b67f09SDavid van Moolenbroek *-linux* | *-kfreebsd*-gnu*) 443*00b67f09SDavid van Moolenbroek STD_CDEFINES="$STD_CDEFINES -D_GNU_SOURCE" 444*00b67f09SDavid van Moolenbroek CPPFLAGS="$CPPFLAGS -D_GNU_SOURCE" 445*00b67f09SDavid van Moolenbroek ;; 446*00b67f09SDavid van Moolenbroek # 447*00b67f09SDavid van Moolenbroek # Starting with OSX 10.7 (Lion) we must choose which IPv6 API to use. 448*00b67f09SDavid van Moolenbroek # Setting this is sufficient to select the correct behavior for BIND 9. 449*00b67f09SDavid van Moolenbroek # 450*00b67f09SDavid van Moolenbroek *-darwin*) 451*00b67f09SDavid van Moolenbroek STD_CDEFINES="$STD_CDEFINES -D__APPLE_USE_RFC_3542" 452*00b67f09SDavid van Moolenbroek CPPFLAGS="$CPPFLAGS -D__APPLE_USE_RFC_3542" 453*00b67f09SDavid van Moolenbroek ;; 454*00b67f09SDavid van Moolenbroekesac 455*00b67f09SDavid van Moolenbroek 456*00b67f09SDavid van Moolenbroek# 457*00b67f09SDavid van Moolenbroek# CCNOOPT defaults to -O0 on gcc and disables optimization when is last 458*00b67f09SDavid van Moolenbroek# 459*00b67f09SDavid van Moolenbroekif test "X$CCNOOPT" = "X" -a "X$GCC" = "Xyes"; then 460*00b67f09SDavid van Moolenbroek CCNOOPT="-O0" 461*00b67f09SDavid van Moolenbroekfi 462*00b67f09SDavid van Moolenbroek 463*00b67f09SDavid van MoolenbroekAC_HEADER_STDC 464*00b67f09SDavid van Moolenbroek 465*00b67f09SDavid van MoolenbroekAC_CHECK_HEADERS(fcntl.h regex.h sys/time.h unistd.h sys/mman.h sys/sockio.h sys/select.h sys/param.h sys/sysctl.h net/if6.h sys/socket.h net/route.h linux/netlink.h linux/rtnetlink.h,,, 466*00b67f09SDavid van Moolenbroek[$ac_includes_default 467*00b67f09SDavid van Moolenbroek#ifdef HAVE_SYS_PARAM_H 468*00b67f09SDavid van Moolenbroek# include <sys/param.h> 469*00b67f09SDavid van Moolenbroek#endif 470*00b67f09SDavid van Moolenbroek#ifdef HAVE_SYS_SOCKET_H 471*00b67f09SDavid van Moolenbroek# include <sys/socket.h> 472*00b67f09SDavid van Moolenbroek#endif 473*00b67f09SDavid van Moolenbroek]) 474*00b67f09SDavid van Moolenbroek 475*00b67f09SDavid van MoolenbroekAC_C_CONST 476*00b67f09SDavid van MoolenbroekAC_C_INLINE 477*00b67f09SDavid van MoolenbroekAC_C_VOLATILE 478*00b67f09SDavid van MoolenbroekAC_CHECK_FUNC(sysctlbyname, AC_DEFINE(HAVE_SYSCTLBYNAME)) 479*00b67f09SDavid van MoolenbroekAC_C_FLEXIBLE_ARRAY_MEMBER 480*00b67f09SDavid van Moolenbroek 481*00b67f09SDavid van Moolenbroek# 482*00b67f09SDavid van Moolenbroek# Check for the existence of mmap to enable the fast format zones 483*00b67f09SDavid van Moolenbroek# 484*00b67f09SDavid van MoolenbroekAC_CHECK_FUNCS(mmap) 485*00b67f09SDavid van Moolenbroek 486*00b67f09SDavid van Moolenbroek# 487*00b67f09SDavid van Moolenbroek# Older versions of HP/UX don't define seteuid() and setegid() 488*00b67f09SDavid van Moolenbroek# 489*00b67f09SDavid van MoolenbroekAC_CHECK_FUNCS(seteuid setresuid) 490*00b67f09SDavid van MoolenbroekAC_CHECK_FUNCS(setegid setresgid) 491*00b67f09SDavid van Moolenbroek 492*00b67f09SDavid van Moolenbroek# BSDI doesn't have ftello fseeko 493*00b67f09SDavid van MoolenbroekAC_CHECK_FUNCS(ftello fseeko) 494*00b67f09SDavid van Moolenbroek 495*00b67f09SDavid van Moolenbroek# 496*00b67f09SDavid van Moolenbroek# UnixWare 7.1.1 with the feature supplement to the UDK compiler 497*00b67f09SDavid van Moolenbroek# is reported to not support "static inline" (RT #1212). 498*00b67f09SDavid van Moolenbroek# 499*00b67f09SDavid van MoolenbroekAC_MSG_CHECKING(for static inline breakage) 500*00b67f09SDavid van MoolenbroekAC_TRY_COMPILE([ 501*00b67f09SDavid van Moolenbroek static inline int foo1() { 502*00b67f09SDavid van Moolenbroek return 0; 503*00b67f09SDavid van Moolenbroek } 504*00b67f09SDavid van Moolenbroek 505*00b67f09SDavid van Moolenbroek static inline int foo2() { 506*00b67f09SDavid van Moolenbroek return foo1(); 507*00b67f09SDavid van Moolenbroek } 508*00b67f09SDavid van Moolenbroek ], [foo1();], 509*00b67f09SDavid van Moolenbroek [AC_MSG_RESULT(no)], 510*00b67f09SDavid van Moolenbroek [AC_MSG_RESULT(yes) 511*00b67f09SDavid van Moolenbroek AC_DEFINE(inline, ,[Define to empty if your compiler does not support "static inline".])]) 512*00b67f09SDavid van Moolenbroek 513*00b67f09SDavid van MoolenbroekAC_TYPE_SIZE_T 514*00b67f09SDavid van MoolenbroekAC_CHECK_TYPE(ssize_t, int) 515*00b67f09SDavid van MoolenbroekAC_CHECK_TYPE(uintptr_t,unsigned long) 516*00b67f09SDavid van MoolenbroekAC_CHECK_TYPE(socklen_t, 517*00b67f09SDavid van Moolenbroek[AC_DEFINE(ISC_SOCKADDR_LEN_T, socklen_t)], 518*00b67f09SDavid van Moolenbroek[ 519*00b67f09SDavid van MoolenbroekAC_TRY_COMPILE( 520*00b67f09SDavid van Moolenbroek[ 521*00b67f09SDavid van Moolenbroek#include <sys/types.h> 522*00b67f09SDavid van Moolenbroek#include <sys/socket.h> 523*00b67f09SDavid van Moolenbroekint getsockname(int, struct sockaddr *, size_t *); 524*00b67f09SDavid van Moolenbroek],[], 525*00b67f09SDavid van Moolenbroek[AC_DEFINE(ISC_SOCKADDR_LEN_T, size_t)], 526*00b67f09SDavid van Moolenbroek[AC_DEFINE(ISC_SOCKADDR_LEN_T, int)]) 527*00b67f09SDavid van Moolenbroek], 528*00b67f09SDavid van Moolenbroek[ 529*00b67f09SDavid van Moolenbroek#include <sys/types.h> 530*00b67f09SDavid van Moolenbroek#include <sys/socket.h> 531*00b67f09SDavid van Moolenbroek]) 532*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_SOCKADDR_LEN_T) 533*00b67f09SDavid van MoolenbroekAC_HEADER_TIME 534*00b67f09SDavid van MoolenbroekAC_MSG_CHECKING(for long long) 535*00b67f09SDavid van MoolenbroekAC_TRY_COMPILE([],[long long i = 0; return (0);], 536*00b67f09SDavid van Moolenbroek [AC_MSG_RESULT(yes) 537*00b67f09SDavid van Moolenbroek ISC_PLATFORM_HAVELONGLONG="#define ISC_PLATFORM_HAVELONGLONG 1"], 538*00b67f09SDavid van Moolenbroek [AC_MSG_RESULT(no) 539*00b67f09SDavid van Moolenbroek ISC_PLATFORM_HAVELONGLONG="#undef ISC_PLATFORM_HAVELONGLONG"]) 540*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_PLATFORM_HAVELONGLONG) 541*00b67f09SDavid van Moolenbroek 542*00b67f09SDavid van Moolenbroek# 543*00b67f09SDavid van Moolenbroek# check for GCC noreturn attribute 544*00b67f09SDavid van Moolenbroek# 545*00b67f09SDavid van MoolenbroekAC_MSG_CHECKING(for GCC noreturn attribute) 546*00b67f09SDavid van MoolenbroekAC_TRY_COMPILE([],[void foo() __attribute__((noreturn));], 547*00b67f09SDavid van Moolenbroek [AC_MSG_RESULT(yes) 548*00b67f09SDavid van Moolenbroek ISC_PLATFORM_NORETURN_PRE="#define ISC_PLATFORM_NORETURN_PRE" 549*00b67f09SDavid van Moolenbroek ISC_PLATFORM_NORETURN_POST="#define ISC_PLATFORM_NORETURN_POST __attribute__((noreturn))"], 550*00b67f09SDavid van Moolenbroek [AC_MSG_RESULT(no) 551*00b67f09SDavid van Moolenbroek ISC_PLATFORM_NORETURN_PRE="#define ISC_PLATFORM_NORETURN_PRE" 552*00b67f09SDavid van Moolenbroek ISC_PLATFORM_NORETURN_POST="#define ISC_PLATFORM_NORETURN_POST"]) 553*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_PLATFORM_NORETURN_PRE) 554*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_PLATFORM_NORETURN_POST) 555*00b67f09SDavid van Moolenbroek 556*00b67f09SDavid van Moolenbroek# 557*00b67f09SDavid van Moolenbroek# check if we have lifconf 558*00b67f09SDavid van Moolenbroek# 559*00b67f09SDavid van MoolenbroekAC_MSG_CHECKING(for struct lifconf) 560*00b67f09SDavid van MoolenbroekAC_TRY_COMPILE([ 561*00b67f09SDavid van Moolenbroek#include <sys/types.h> 562*00b67f09SDavid van Moolenbroek#include <sys/socket.h> 563*00b67f09SDavid van Moolenbroek#include <net/if.h> 564*00b67f09SDavid van Moolenbroek], 565*00b67f09SDavid van Moolenbroek[ 566*00b67f09SDavid van Moolenbroekstruct lifconf lifconf; 567*00b67f09SDavid van Moolenbroeklifconf.lifc_len = 0; 568*00b67f09SDavid van Moolenbroek] 569*00b67f09SDavid van Moolenbroek, 570*00b67f09SDavid van Moolenbroek [AC_MSG_RESULT(yes) 571*00b67f09SDavid van Moolenbroek ISC_PLATFORM_HAVELIFCONF="#define ISC_PLATFORM_HAVELIFCONF 1"], 572*00b67f09SDavid van Moolenbroek [AC_MSG_RESULT(no) 573*00b67f09SDavid van Moolenbroek ISC_PLATFORM_HAVELIFCONF="#undef ISC_PLATFORM_HAVELIFCONF"]) 574*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_PLATFORM_HAVELIFCONF) 575*00b67f09SDavid van Moolenbroek 576*00b67f09SDavid van Moolenbroek# 577*00b67f09SDavid van Moolenbroek# check if we have kqueue 578*00b67f09SDavid van Moolenbroek# 579*00b67f09SDavid van MoolenbroekAC_ARG_ENABLE(kqueue, 580*00b67f09SDavid van Moolenbroek [ --enable-kqueue use BSD kqueue when available [[default=yes]]], 581*00b67f09SDavid van Moolenbroek want_kqueue="$enableval", want_kqueue="yes") 582*00b67f09SDavid van Moolenbroekcase $want_kqueue in 583*00b67f09SDavid van Moolenbroekyes) 584*00b67f09SDavid van Moolenbroek AC_CHECK_FUNC(kqueue, ac_cv_have_kqueue=yes, ac_cv_have_kqueue=no) 585*00b67f09SDavid van Moolenbroek case $ac_cv_have_kqueue in 586*00b67f09SDavid van Moolenbroek yes) 587*00b67f09SDavid van Moolenbroek ISC_PLATFORM_HAVEKQUEUE="#define ISC_PLATFORM_HAVEKQUEUE 1" 588*00b67f09SDavid van Moolenbroek ;; 589*00b67f09SDavid van Moolenbroek *) 590*00b67f09SDavid van Moolenbroek ISC_PLATFORM_HAVEKQUEUE="#undef ISC_PLATFORM_HAVEKQUEUE" 591*00b67f09SDavid van Moolenbroek ;; 592*00b67f09SDavid van Moolenbroek esac 593*00b67f09SDavid van Moolenbroek ;; 594*00b67f09SDavid van Moolenbroek*) 595*00b67f09SDavid van Moolenbroek ISC_PLATFORM_HAVEKQUEUE="#undef ISC_PLATFORM_HAVEKQUEUE" 596*00b67f09SDavid van Moolenbroek ;; 597*00b67f09SDavid van Moolenbroekesac 598*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_PLATFORM_HAVEKQUEUE) 599*00b67f09SDavid van Moolenbroek 600*00b67f09SDavid van Moolenbroek# 601*00b67f09SDavid van Moolenbroek# check if we have epoll. Linux kernel 2.4 has epoll_create() which fails, 602*00b67f09SDavid van Moolenbroek# so we need to try running the code, not just test its existence. 603*00b67f09SDavid van Moolenbroek# 604*00b67f09SDavid van MoolenbroekAC_ARG_ENABLE(epoll, 605*00b67f09SDavid van Moolenbroek[ --enable-epoll use Linux epoll when available [[default=auto]]], 606*00b67f09SDavid van Moolenbroek want_epoll="$enableval", want_epoll="auto") 607*00b67f09SDavid van Moolenbroekcase $want_epoll in 608*00b67f09SDavid van Moolenbroekauto) 609*00b67f09SDavid van Moolenbroek AC_MSG_CHECKING(epoll support) 610*00b67f09SDavid van Moolenbroek AC_TRY_RUN([ 611*00b67f09SDavid van Moolenbroek#include <sys/epoll.h> 612*00b67f09SDavid van Moolenbroekint main() { 613*00b67f09SDavid van Moolenbroek if (epoll_create(1) < 0) 614*00b67f09SDavid van Moolenbroek return (1); 615*00b67f09SDavid van Moolenbroek return (0); 616*00b67f09SDavid van Moolenbroek} 617*00b67f09SDavid van Moolenbroek], 618*00b67f09SDavid van Moolenbroek [AC_MSG_RESULT(yes) 619*00b67f09SDavid van Moolenbroek ISC_PLATFORM_HAVEEPOLL="#define ISC_PLATFORM_HAVEEPOLL 1"], 620*00b67f09SDavid van Moolenbroek [AC_MSG_RESULT(no) 621*00b67f09SDavid van Moolenbroek ISC_PLATFORM_HAVEEPOLL="#undef ISC_PLATFORM_HAVEEPOLL"], 622*00b67f09SDavid van Moolenbroek [AC_MSG_RESULT(no) 623*00b67f09SDavid van Moolenbroek ISC_PLATFORM_HAVEEPOLL="#undef ISC_PLATFORM_HAVEEPOLL"]) 624*00b67f09SDavid van Moolenbroek ;; 625*00b67f09SDavid van Moolenbroekyes) 626*00b67f09SDavid van Moolenbroek ISC_PLATFORM_HAVEEPOLL="#define ISC_PLATFORM_HAVEEPOLL 1" 627*00b67f09SDavid van Moolenbroek ;; 628*00b67f09SDavid van Moolenbroek*) 629*00b67f09SDavid van Moolenbroek ISC_PLATFORM_HAVEEPOLL="#undef ISC_PLATFORM_HAVEEPOLL" 630*00b67f09SDavid van Moolenbroek ;; 631*00b67f09SDavid van Moolenbroekesac 632*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_PLATFORM_HAVEEPOLL) 633*00b67f09SDavid van Moolenbroek 634*00b67f09SDavid van Moolenbroek# 635*00b67f09SDavid van Moolenbroek# check if we support /dev/poll 636*00b67f09SDavid van Moolenbroek# 637*00b67f09SDavid van MoolenbroekAC_ARG_ENABLE(devpoll, 638*00b67f09SDavid van Moolenbroek [ --enable-devpoll use /dev/poll when available [[default=yes]]], 639*00b67f09SDavid van Moolenbroek want_devpoll="$enableval", want_devpoll="yes") 640*00b67f09SDavid van Moolenbroekcase $want_devpoll in 641*00b67f09SDavid van Moolenbroekyes) 642*00b67f09SDavid van Moolenbroek AC_CHECK_HEADERS(sys/devpoll.h devpoll.h, 643*00b67f09SDavid van Moolenbroek ISC_PLATFORM_HAVEDEVPOLL="#define ISC_PLATFORM_HAVEDEVPOLL 1" 644*00b67f09SDavid van Moolenbroek , 645*00b67f09SDavid van Moolenbroek ISC_PLATFORM_HAVEDEVPOLL="#undef ISC_PLATFORM_HAVEDEVPOLL" 646*00b67f09SDavid van Moolenbroek ) 647*00b67f09SDavid van Moolenbroek ;; 648*00b67f09SDavid van Moolenbroek*) 649*00b67f09SDavid van Moolenbroek ISC_PLATFORM_HAVEDEVPOLL="#undef ISC_PLATFORM_HAVEDEVPOLL" 650*00b67f09SDavid van Moolenbroek ;; 651*00b67f09SDavid van Moolenbroekesac 652*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_PLATFORM_HAVEDEVPOLL) 653*00b67f09SDavid van Moolenbroek 654*00b67f09SDavid van Moolenbroek# 655*00b67f09SDavid van Moolenbroek# check if we need to #include sys/select.h explicitly 656*00b67f09SDavid van Moolenbroek# 657*00b67f09SDavid van Moolenbroekcase $ac_cv_header_unistd_h in 658*00b67f09SDavid van Moolenbroekyes) 659*00b67f09SDavid van MoolenbroekAC_MSG_CHECKING(if unistd.h or sys/types.h defines fd_set) 660*00b67f09SDavid van MoolenbroekAC_TRY_COMPILE([ 661*00b67f09SDavid van Moolenbroek#include <sys/types.h> /* Ultrix */ 662*00b67f09SDavid van Moolenbroek#include <unistd.h>], 663*00b67f09SDavid van Moolenbroek[fd_set read_set; return (0);], 664*00b67f09SDavid van Moolenbroek [AC_MSG_RESULT(yes) 665*00b67f09SDavid van Moolenbroek ISC_PLATFORM_NEEDSYSSELECTH="#undef ISC_PLATFORM_NEEDSYSSELECTH" 666*00b67f09SDavid van Moolenbroek LWRES_PLATFORM_NEEDSYSSELECTH="#undef LWRES_PLATFORM_NEEDSYSSELECTH"], 667*00b67f09SDavid van Moolenbroek [AC_MSG_RESULT(no) 668*00b67f09SDavid van Moolenbroek case $ac_cv_header_sys_select_h in 669*00b67f09SDavid van Moolenbroek yes) 670*00b67f09SDavid van Moolenbroek ISC_PLATFORM_NEEDSYSSELECTH="#define ISC_PLATFORM_NEEDSYSSELECTH 1" 671*00b67f09SDavid van Moolenbroek LWRES_PLATFORM_NEEDSYSSELECTH="#define LWRES_PLATFORM_NEEDSYSSELECTH 1" 672*00b67f09SDavid van Moolenbroek ;; 673*00b67f09SDavid van Moolenbroek no) 674*00b67f09SDavid van Moolenbroek AC_MSG_ERROR([need either working unistd.h or sys/select.h]) 675*00b67f09SDavid van Moolenbroek ;; 676*00b67f09SDavid van Moolenbroek esac 677*00b67f09SDavid van Moolenbroek ]) 678*00b67f09SDavid van Moolenbroek ;; 679*00b67f09SDavid van Moolenbroekno) 680*00b67f09SDavid van Moolenbroek case $ac_cv_header_sys_select_h in 681*00b67f09SDavid van Moolenbroek yes) 682*00b67f09SDavid van Moolenbroek ISC_PLATFORM_NEEDSYSSELECTH="#define ISC_PLATFORM_NEEDSYSSELECTH 1" 683*00b67f09SDavid van Moolenbroek LWRES_PLATFORM_NEEDSYSSELECTH="#define LWRES_PLATFORM_NEEDSYSSELECTH 1" 684*00b67f09SDavid van Moolenbroek ;; 685*00b67f09SDavid van Moolenbroek no) 686*00b67f09SDavid van Moolenbroek AC_MSG_ERROR([need either unistd.h or sys/select.h]) 687*00b67f09SDavid van Moolenbroek ;; 688*00b67f09SDavid van Moolenbroek esac 689*00b67f09SDavid van Moolenbroek ;; 690*00b67f09SDavid van Moolenbroekesac 691*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_PLATFORM_NEEDSYSSELECTH) 692*00b67f09SDavid van MoolenbroekAC_SUBST(LWRES_PLATFORM_NEEDSYSSELECTH) 693*00b67f09SDavid van Moolenbroek 694*00b67f09SDavid van Moolenbroek# 695*00b67f09SDavid van Moolenbroek# Find the machine's endian flavor. 696*00b67f09SDavid van Moolenbroek# 697*00b67f09SDavid van MoolenbroekAC_C_BIGENDIAN 698*00b67f09SDavid van Moolenbroek 699*00b67f09SDavid van Moolenbroek# 700*00b67f09SDavid van Moolenbroek# GeoIP support? 701*00b67f09SDavid van Moolenbroek# 702*00b67f09SDavid van MoolenbroekGEOIPLINKSRCS= 703*00b67f09SDavid van MoolenbroekGEOIPLINKOBJS= 704*00b67f09SDavid van MoolenbroekAC_ARG_WITH(geoip, 705*00b67f09SDavid van Moolenbroek[ --with-geoip=PATH Build with GeoIP support (yes|no|path)], 706*00b67f09SDavid van Moolenbroek use_geoip="$withval", use_geoip="no") 707*00b67f09SDavid van Moolenbroek 708*00b67f09SDavid van Moolenbroekif test "$use_geoip" = "yes" 709*00b67f09SDavid van Moolenbroekthen 710*00b67f09SDavid van Moolenbroek for d in /usr /usr/local /opt/local 711*00b67f09SDavid van Moolenbroek do 712*00b67f09SDavid van Moolenbroek if test -f $d/include/GeoIP.h 713*00b67f09SDavid van Moolenbroek then 714*00b67f09SDavid van Moolenbroek use_geoip=$d 715*00b67f09SDavid van Moolenbroek break 716*00b67f09SDavid van Moolenbroek fi 717*00b67f09SDavid van Moolenbroek done 718*00b67f09SDavid van Moolenbroekfi 719*00b67f09SDavid van Moolenbroek 720*00b67f09SDavid van Moolenbroekcase "$use_geoip" in 721*00b67f09SDavid van Moolenbroek no|'') 722*00b67f09SDavid van Moolenbroek AC_MSG_CHECKING([for GeoIP support]) 723*00b67f09SDavid van Moolenbroek AC_MSG_RESULT([disabled]) 724*00b67f09SDavid van Moolenbroek ;; 725*00b67f09SDavid van Moolenbroek *) 726*00b67f09SDavid van Moolenbroek if test -d "$use_geoip" -o -L "$use_geoip" 727*00b67f09SDavid van Moolenbroek then 728*00b67f09SDavid van Moolenbroek CFLAGS="$CFLAGS -I$use_geoip/include" 729*00b67f09SDavid van Moolenbroek CPPFLAGS="$CPPFLAGS -I$use_geoip/include" 730*00b67f09SDavid van Moolenbroek LIBS="$LIBS -L$use_geoip/lib" 731*00b67f09SDavid van Moolenbroek case "$host_os" in 732*00b67f09SDavid van Moolenbroek netbsd*|openbsd*|solaris*) 733*00b67f09SDavid van Moolenbroek LIBS="$LIBS -Wl,-rpath=$use_geoip/lib" 734*00b67f09SDavid van Moolenbroek ;; 735*00b67f09SDavid van Moolenbroek esac 736*00b67f09SDavid van Moolenbroek elif test "$use_geoip" = "yes" 737*00b67f09SDavid van Moolenbroek then 738*00b67f09SDavid van Moolenbroek AC_MSG_ERROR([GeoIP path not found]) 739*00b67f09SDavid van Moolenbroek else 740*00b67f09SDavid van Moolenbroek AC_MSG_ERROR([GeoIP path $use_geoip does not exist]) 741*00b67f09SDavid van Moolenbroek fi 742*00b67f09SDavid van Moolenbroek AC_CHECK_HEADER(GeoIP.h, [], 743*00b67f09SDavid van Moolenbroek [AC_MSG_ERROR([GeoIP header file not found])] 744*00b67f09SDavid van Moolenbroek ) 745*00b67f09SDavid van Moolenbroek AC_SEARCH_LIBS(GeoIP_open, GeoIP, [], 746*00b67f09SDavid van Moolenbroek [AC_MSG_ERROR([GeoIP library not found])] 747*00b67f09SDavid van Moolenbroek ) 748*00b67f09SDavid van Moolenbroek AC_SEARCH_LIBS(fabsf, m, [], 749*00b67f09SDavid van Moolenbroek [AC_MSG_ERROR([Math library not found])] 750*00b67f09SDavid van Moolenbroek ) 751*00b67f09SDavid van Moolenbroek AC_DEFINE(HAVE_GEOIP, 1, Build with GeoIP support) 752*00b67f09SDavid van Moolenbroek GEOIPLINKSRCS='${GEOIPLINKSRCS}' 753*00b67f09SDavid van Moolenbroek GEOIPLINKOBJS='${GEOIPLINKOBJS}' 754*00b67f09SDavid van Moolenbroek AC_MSG_CHECKING([for GeoIP support]) 755*00b67f09SDavid van Moolenbroek AC_MSG_RESULT([yes]) 756*00b67f09SDavid van Moolenbroek 757*00b67f09SDavid van Moolenbroek AC_MSG_CHECKING([for GeoIP Country IPv6 support]) 758*00b67f09SDavid van Moolenbroek AC_COMPILE_IFELSE( 759*00b67f09SDavid van Moolenbroek [AC_LANG_PROGRAM([ 760*00b67f09SDavid van Moolenbroek #include <GeoIP.h> 761*00b67f09SDavid van Moolenbroek #include <netinet/in.h> 762*00b67f09SDavid van Moolenbroek ], [ 763*00b67f09SDavid van Moolenbroek struct in6_addr in6; 764*00b67f09SDavid van Moolenbroek GeoIP_country_name_by_ipnum_v6(NULL, in6); 765*00b67f09SDavid van Moolenbroek ])], 766*00b67f09SDavid van Moolenbroek [ 767*00b67f09SDavid van Moolenbroek AC_MSG_RESULT([yes]) 768*00b67f09SDavid van Moolenbroek AC_DEFINE(HAVE_GEOIP_V6, 1, Build with GeoIP Country IPv6 support) 769*00b67f09SDavid van Moolenbroek ], 770*00b67f09SDavid van Moolenbroek [AC_MSG_RESULT([no])] 771*00b67f09SDavid van Moolenbroek ) 772*00b67f09SDavid van Moolenbroek 773*00b67f09SDavid van Moolenbroek AC_MSG_CHECKING([for GeoIP City IPv6 support]) 774*00b67f09SDavid van Moolenbroek AC_COMPILE_IFELSE( 775*00b67f09SDavid van Moolenbroek [AC_LANG_PROGRAM([ 776*00b67f09SDavid van Moolenbroek #include <GeoIP.h> 777*00b67f09SDavid van Moolenbroek #include <GeoIPCity.h> 778*00b67f09SDavid van Moolenbroek #include <netinet/in.h> 779*00b67f09SDavid van Moolenbroek ], [ 780*00b67f09SDavid van Moolenbroek struct in6_addr in6; 781*00b67f09SDavid van Moolenbroek int i = GEOIP_CITY_EDITION_REV0_V6; 782*00b67f09SDavid van Moolenbroek GeoIP_record_by_ipnum_v6(NULL, in6); 783*00b67f09SDavid van Moolenbroek ])], 784*00b67f09SDavid van Moolenbroek [ 785*00b67f09SDavid van Moolenbroek AC_MSG_RESULT([yes]) 786*00b67f09SDavid van Moolenbroek AC_DEFINE(HAVE_GEOIP_CITY_V6, 1, Build with GeoIP City IPv6 support) 787*00b67f09SDavid van Moolenbroek ], 788*00b67f09SDavid van Moolenbroek [AC_MSG_RESULT([no])] 789*00b67f09SDavid van Moolenbroek ) 790*00b67f09SDavid van Moolenbroek ;; 791*00b67f09SDavid van Moolenbroekesac 792*00b67f09SDavid van MoolenbroekAC_SUBST(GEOIPLINKSRCS) 793*00b67f09SDavid van MoolenbroekAC_SUBST(GEOIPLINKOBJS) 794*00b67f09SDavid van Moolenbroek 795*00b67f09SDavid van MoolenbroekAC_MSG_CHECKING(for GSSAPI library) 796*00b67f09SDavid van MoolenbroekAC_ARG_WITH(gssapi, 797*00b67f09SDavid van Moolenbroek[ --with-gssapi=PATH Specify path for system-supplied GSSAPI [[default=yes]]], 798*00b67f09SDavid van Moolenbroek use_gssapi="$withval", use_gssapi="yes") 799*00b67f09SDavid van Moolenbroek 800*00b67f09SDavid van Moolenbroek# gssapi is just the framework, we really require kerberos v5, so 801*00b67f09SDavid van Moolenbroek# look for those headers (the gssapi headers must be there, too) 802*00b67f09SDavid van Moolenbroek# The problem with this implementation is that it doesn't allow 803*00b67f09SDavid van Moolenbroek# for the specification of gssapi and krb5 headers in different locations, 804*00b67f09SDavid van Moolenbroek# which probably ought to be fixed although fixing might raise the issue of 805*00b67f09SDavid van Moolenbroek# trying to build with incompatible versions of gssapi and krb5. 806*00b67f09SDavid van Moolenbroekif test "$use_gssapi" = "yes" 807*00b67f09SDavid van Moolenbroekthen 808*00b67f09SDavid van Moolenbroek # first, deal with the obvious 809*00b67f09SDavid van Moolenbroek if test \( -f /usr/include/kerberosv5/krb5.h -o \ 810*00b67f09SDavid van Moolenbroek -f /usr/include/krb5/krb5.h -o \ 811*00b67f09SDavid van Moolenbroek -f /usr/include/krb5.h \) -a \ 812*00b67f09SDavid van Moolenbroek \( -f /usr/include/gssapi.h -o \ 813*00b67f09SDavid van Moolenbroek -f /usr/include/gssapi/gssapi.h \) 814*00b67f09SDavid van Moolenbroek then 815*00b67f09SDavid van Moolenbroek use_gssapi=/usr 816*00b67f09SDavid van Moolenbroek else 817*00b67f09SDavid van Moolenbroek krb5dirs="/usr/local /usr/local/krb5 /usr/local/kerberosv5 /usr/local/kerberos /usr/pkg /usr/krb5 /usr/kerberosv5 /usr/kerberos /usr" 818*00b67f09SDavid van Moolenbroek for d in $krb5dirs 819*00b67f09SDavid van Moolenbroek do 820*00b67f09SDavid van Moolenbroek if test -f $d/include/gssapi/gssapi_krb5.h -o \ 821*00b67f09SDavid van Moolenbroek -f $d/include/krb5.h 822*00b67f09SDavid van Moolenbroek then 823*00b67f09SDavid van Moolenbroek if test -f $d/include/gssapi/gssapi.h -o \ 824*00b67f09SDavid van Moolenbroek -f $d/include/gssapi.h 825*00b67f09SDavid van Moolenbroek then 826*00b67f09SDavid van Moolenbroek use_gssapi=$d 827*00b67f09SDavid van Moolenbroek break 828*00b67f09SDavid van Moolenbroek fi 829*00b67f09SDavid van Moolenbroek fi 830*00b67f09SDavid van Moolenbroek use_gssapi="no" 831*00b67f09SDavid van Moolenbroek done 832*00b67f09SDavid van Moolenbroek fi 833*00b67f09SDavid van Moolenbroekfi 834*00b67f09SDavid van Moolenbroek 835*00b67f09SDavid van Moolenbroekcase "$use_gssapi" in 836*00b67f09SDavid van Moolenbroek no) 837*00b67f09SDavid van Moolenbroek AC_MSG_RESULT(disabled) 838*00b67f09SDavid van Moolenbroek USE_GSSAPI='' 839*00b67f09SDavid van Moolenbroek ;; 840*00b67f09SDavid van Moolenbroek yes) 841*00b67f09SDavid van Moolenbroek AC_MSG_ERROR([--with-gssapi must specify a path]) 842*00b67f09SDavid van Moolenbroek ;; 843*00b67f09SDavid van Moolenbroek *) 844*00b67f09SDavid van Moolenbroek AC_MSG_RESULT(looking in $use_gssapi/lib) 845*00b67f09SDavid van Moolenbroek USE_GSSAPI='-DGSSAPI' 846*00b67f09SDavid van Moolenbroek saved_cppflags="$CPPFLAGS" 847*00b67f09SDavid van Moolenbroek CPPFLAGS="-I$use_gssapi/include $CPPFLAGS" 848*00b67f09SDavid van Moolenbroek AC_CHECK_HEADERS(gssapi.h gssapi/gssapi.h, 849*00b67f09SDavid van Moolenbroek [ISC_PLATFORM_GSSAPIHEADER="#define ISC_PLATFORM_GSSAPIHEADER <$ac_header>" 850*00b67f09SDavid van Moolenbroek gssapi_hack="#include <$ac_header>"]) 851*00b67f09SDavid van Moolenbroek 852*00b67f09SDavid van Moolenbroek if test "$ISC_PLATFORM_GSSAPIHEADER" = ""; then 853*00b67f09SDavid van Moolenbroek AC_MSG_ERROR([gssapi.h not found]) 854*00b67f09SDavid van Moolenbroek fi 855*00b67f09SDavid van Moolenbroek 856*00b67f09SDavid van Moolenbroek AC_CHECK_HEADERS(gssapi_krb5.h gssapi/gssapi_krb5.h, 857*00b67f09SDavid van Moolenbroek [ISC_PLATFORM_GSSAPI_KRB5_HEADER="#define ISC_PLATFORM_GSSAPI_KRB5_HEADER <$ac_header>" 858*00b67f09SDavid van Moolenbroek gssapi_krb5_hack="#include <$ac_header>"]) 859*00b67f09SDavid van Moolenbroek 860*00b67f09SDavid van Moolenbroek AC_CHECK_HEADERS(krb5.h krb5/krb5.h kerberosv5/krb5.h, 861*00b67f09SDavid van Moolenbroek [ISC_PLATFORM_KRB5HEADER="#define ISC_PLATFORM_KRB5HEADER <$ac_header>" 862*00b67f09SDavid van Moolenbroek krb5_hack="#include <$ac_header>"]) 863*00b67f09SDavid van Moolenbroek 864*00b67f09SDavid van Moolenbroek if test "$ISC_PLATFORM_KRB5HEADER" = ""; then 865*00b67f09SDavid van Moolenbroek AC_MSG_ERROR([krb5.h not found]) 866*00b67f09SDavid van Moolenbroek fi 867*00b67f09SDavid van Moolenbroek 868*00b67f09SDavid van Moolenbroek # 869*00b67f09SDavid van Moolenbroek # XXXDCL This probably doesn't work right on all systems. 870*00b67f09SDavid van Moolenbroek # It will need to be worked on as problems become evident. 871*00b67f09SDavid van Moolenbroek # 872*00b67f09SDavid van Moolenbroek # Essentially the problems here relate to two different 873*00b67f09SDavid van Moolenbroek # areas. The first area is building with either KTH 874*00b67f09SDavid van Moolenbroek # or MIT Kerberos, particularly when both are present on 875*00b67f09SDavid van Moolenbroek # the machine. The other is static versus dynamic linking. 876*00b67f09SDavid van Moolenbroek # 877*00b67f09SDavid van Moolenbroek # On the KTH vs MIT issue, Both have libkrb5 that can mess 878*00b67f09SDavid van Moolenbroek # up the works if one implementation ends up trying to 879*00b67f09SDavid van Moolenbroek # use the other's krb. This is unfortunately a situation 880*00b67f09SDavid van Moolenbroek # that very easily arises. 881*00b67f09SDavid van Moolenbroek # 882*00b67f09SDavid van Moolenbroek # Dynamic linking when the dependency information is built 883*00b67f09SDavid van Moolenbroek # into MIT's libgssapi_krb5 or KTH's libgssapi magically makes 884*00b67f09SDavid van Moolenbroek # all such problems go away, but when that setup is not 885*00b67f09SDavid van Moolenbroek # present, because either the dynamic libraries lack 886*00b67f09SDavid van Moolenbroek # dependencies or static linking is being done, then the 887*00b67f09SDavid van Moolenbroek # problems start to show up. 888*00b67f09SDavid van Moolenbroek saved_libs="$LIBS" 889*00b67f09SDavid van Moolenbroek for TRY_LIBS in \ 890*00b67f09SDavid van Moolenbroek "-lgssapi_krb5" \ 891*00b67f09SDavid van Moolenbroek "-lgssapi_krb5 -lkrb5 -lk5crypto -lcom_err" \ 892*00b67f09SDavid van Moolenbroek "-lgssapi_krb5 -lkrb5 -lk5crypto -lcom_err -lresolv" \ 893*00b67f09SDavid van Moolenbroek "-lgssapi" \ 894*00b67f09SDavid van Moolenbroek "-lgssapi -lkrb5 -ldes -lcrypt -lasn1 -lroken -lcom_err" \ 895*00b67f09SDavid van Moolenbroek "-lgssapi -lkrb5 -lcrypto -lcrypt -lasn1 -lroken -lcom_err" \ 896*00b67f09SDavid van Moolenbroek "-lgssapi -lkrb5 -lgssapi_krb5 -lcrypto -lcrypt -lasn1 -lroken -lcom_err" \ 897*00b67f09SDavid van Moolenbroek "-lgssapi -lkrb5 -lhx509 -lcrypto -lcrypt -lasn1 -lroken -lcom_err" \ 898*00b67f09SDavid van Moolenbroek "-lgss -lkrb5" 899*00b67f09SDavid van Moolenbroek do 900*00b67f09SDavid van Moolenbroek # Note that this does not include $saved_libs, because 901*00b67f09SDavid van Moolenbroek # on FreeBSD machines this configure script has added 902*00b67f09SDavid van Moolenbroek # -L/usr/local/lib to LIBS, which can make the 903*00b67f09SDavid van Moolenbroek # -lgssapi_krb5 test succeed with shared libraries even 904*00b67f09SDavid van Moolenbroek # when you are trying to build with KTH in /usr/lib. 905*00b67f09SDavid van Moolenbroek if test "$use_gssapi" = "/usr" 906*00b67f09SDavid van Moolenbroek then 907*00b67f09SDavid van Moolenbroek LIBS="$TRY_LIBS" 908*00b67f09SDavid van Moolenbroek else 909*00b67f09SDavid van Moolenbroek LIBS="-L$use_gssapi/lib $TRY_LIBS" 910*00b67f09SDavid van Moolenbroek fi 911*00b67f09SDavid van Moolenbroek AC_MSG_CHECKING(linking as $TRY_LIBS) 912*00b67f09SDavid van Moolenbroek AC_TRY_LINK([ 913*00b67f09SDavid van Moolenbroek#include <sys/types.h> 914*00b67f09SDavid van Moolenbroek$gssapi_hack 915*00b67f09SDavid van Moolenbroek$gssapi_krb5_hack 916*00b67f09SDavid van Moolenbroek$krb5_hack 917*00b67f09SDavid van Moolenbroek ] , [gss_acquire_cred(NULL, NULL, 0, NULL, 0, NULL, NULL, NULL);krb5_init_context(NULL); 918*00b67f09SDavid van Moolenbroek#if defined(HAVE_GSSAPI_KRB5_H) || defined(HAVE_GSSAPI_GSSAPI_KRB5_H) 919*00b67f09SDavid van Moolenbroekgsskrb5_register_acceptor_identity(NULL); 920*00b67f09SDavid van Moolenbroek#endif], 921*00b67f09SDavid van Moolenbroek gssapi_linked=yes, gssapi_linked=no) 922*00b67f09SDavid van Moolenbroek case $gssapi_linked in 923*00b67f09SDavid van Moolenbroek yes) AC_MSG_RESULT(yes); break ;; 924*00b67f09SDavid van Moolenbroek no) AC_MSG_RESULT(no) ;; 925*00b67f09SDavid van Moolenbroek esac 926*00b67f09SDavid van Moolenbroek done 927*00b67f09SDavid van Moolenbroek 928*00b67f09SDavid van Moolenbroek CPPFLAGS="$saved_cppflags" 929*00b67f09SDavid van Moolenbroek 930*00b67f09SDavid van Moolenbroek case $gssapi_linked in 931*00b67f09SDavid van Moolenbroek no) AC_MSG_ERROR(could not determine proper GSSAPI linkage) ;; 932*00b67f09SDavid van Moolenbroek esac 933*00b67f09SDavid van Moolenbroek 934*00b67f09SDavid van Moolenbroek # 935*00b67f09SDavid van Moolenbroek # XXXDCL Major kludge. Tries to cope with KTH in /usr/lib 936*00b67f09SDavid van Moolenbroek # but MIT in /usr/local/lib and trying to build with KTH. 937*00b67f09SDavid van Moolenbroek # /usr/local/lib can end up earlier on the link lines. 938*00b67f09SDavid van Moolenbroek # Like most kludges, this one is not only inelegant it 939*00b67f09SDavid van Moolenbroek # is also likely to be the wrong thing to do at least as 940*00b67f09SDavid van Moolenbroek # many times as it is the right thing. Something better 941*00b67f09SDavid van Moolenbroek # needs to be done. 942*00b67f09SDavid van Moolenbroek # 943*00b67f09SDavid van Moolenbroek if test "$use_gssapi" = "/usr" -a \ 944*00b67f09SDavid van Moolenbroek -f /usr/local/lib/libkrb5.a; then 945*00b67f09SDavid van Moolenbroek FIX_KTH_VS_MIT=yes 946*00b67f09SDavid van Moolenbroek fi 947*00b67f09SDavid van Moolenbroek 948*00b67f09SDavid van Moolenbroek case "$FIX_KTH_VS_MIT" in 949*00b67f09SDavid van Moolenbroek yes) 950*00b67f09SDavid van Moolenbroek case "$enable_static_linking" in 951*00b67f09SDavid van Moolenbroek yes) gssapi_lib_suffix=".a" ;; 952*00b67f09SDavid van Moolenbroek *) gssapi_lib_suffix=".so" ;; 953*00b67f09SDavid van Moolenbroek esac 954*00b67f09SDavid van Moolenbroek 955*00b67f09SDavid van Moolenbroek for lib in $LIBS; do 956*00b67f09SDavid van Moolenbroek case $lib in 957*00b67f09SDavid van Moolenbroek -L*) 958*00b67f09SDavid van Moolenbroek ;; 959*00b67f09SDavid van Moolenbroek -l*) 960*00b67f09SDavid van Moolenbroek new_lib=`echo $lib | 961*00b67f09SDavid van Moolenbroek sed -e s%^-l%$use_gssapi/lib/lib% \ 962*00b67f09SDavid van Moolenbroek -e s%$%$gssapi_lib_suffix%` 963*00b67f09SDavid van Moolenbroek NEW_LIBS="$NEW_LIBS $new_lib" 964*00b67f09SDavid van Moolenbroek ;; 965*00b67f09SDavid van Moolenbroek *) 966*00b67f09SDavid van Moolenbroek AC_MSG_ERROR([KTH vs MIT Kerberos confusion!]) 967*00b67f09SDavid van Moolenbroek ;; 968*00b67f09SDavid van Moolenbroek esac 969*00b67f09SDavid van Moolenbroek done 970*00b67f09SDavid van Moolenbroek LIBS="$NEW_LIBS" 971*00b67f09SDavid van Moolenbroek ;; 972*00b67f09SDavid van Moolenbroek esac 973*00b67f09SDavid van Moolenbroek 974*00b67f09SDavid van Moolenbroek DST_GSSAPI_INC="-I$use_gssapi/include" 975*00b67f09SDavid van Moolenbroek DNS_GSSAPI_LIBS="$LIBS" 976*00b67f09SDavid van Moolenbroek 977*00b67f09SDavid van Moolenbroek AC_MSG_RESULT(using GSSAPI from $use_gssapi/lib and $use_gssapi/include) 978*00b67f09SDavid van Moolenbroek LIBS="$saved_libs" 979*00b67f09SDavid van Moolenbroek ;; 980*00b67f09SDavid van Moolenbroekesac 981*00b67f09SDavid van Moolenbroek 982*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_PLATFORM_HAVEGSSAPI) 983*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_PLATFORM_GSSAPIHEADER) 984*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_PLATFORM_GSSAPI_KRB5_HEADER) 985*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_PLATFORM_KRB5HEADER) 986*00b67f09SDavid van Moolenbroek 987*00b67f09SDavid van MoolenbroekAC_SUBST(USE_GSSAPI) 988*00b67f09SDavid van MoolenbroekAC_SUBST(DST_GSSAPI_INC) 989*00b67f09SDavid van MoolenbroekAC_SUBST(DNS_GSSAPI_LIBS) 990*00b67f09SDavid van MoolenbroekDNS_CRYPTO_LIBS="$DNS_GSSAPI_LIBS $DNS_CRYPTO_LIBS" 991*00b67f09SDavid van Moolenbroek 992*00b67f09SDavid van Moolenbroek# 993*00b67f09SDavid van Moolenbroek# Applications linking with libdns also need to link with these libraries. 994*00b67f09SDavid van Moolenbroek# 995*00b67f09SDavid van Moolenbroek 996*00b67f09SDavid van MoolenbroekAC_SUBST(DNS_CRYPTO_LIBS) 997*00b67f09SDavid van Moolenbroek 998*00b67f09SDavid van Moolenbroek# 999*00b67f09SDavid van Moolenbroek# was --with-randomdev specified? 1000*00b67f09SDavid van Moolenbroek# 1001*00b67f09SDavid van MoolenbroekAC_MSG_CHECKING(for random device) 1002*00b67f09SDavid van MoolenbroekAC_ARG_WITH(randomdev, 1003*00b67f09SDavid van Moolenbroek[ --with-randomdev=PATH Specify path for random device], 1004*00b67f09SDavid van Moolenbroek use_randomdev="$withval", use_randomdev="unspec") 1005*00b67f09SDavid van Moolenbroek 1006*00b67f09SDavid van Moolenbroekcase "$use_randomdev" in 1007*00b67f09SDavid van Moolenbroek unspec) 1008*00b67f09SDavid van Moolenbroek case "$cross_compiling" in 1009*00b67f09SDavid van Moolenbroek yes) 1010*00b67f09SDavid van Moolenbroek AC_MSG_RESULT(unspecified) 1011*00b67f09SDavid van Moolenbroek AC_MSG_ERROR([ need --with-randomdev=PATH or --with-randomdev=no]) 1012*00b67f09SDavid van Moolenbroek esac 1013*00b67f09SDavid van Moolenbroek case "$host" in 1014*00b67f09SDavid van Moolenbroek *-openbsd*) 1015*00b67f09SDavid van Moolenbroek devrandom=/dev/arandom 1016*00b67f09SDavid van Moolenbroek ;; 1017*00b67f09SDavid van Moolenbroek *) 1018*00b67f09SDavid van Moolenbroek devrandom=/dev/urandom 1019*00b67f09SDavid van Moolenbroek ;; 1020*00b67f09SDavid van Moolenbroek esac 1021*00b67f09SDavid van Moolenbroek AC_MSG_RESULT($devrandom) 1022*00b67f09SDavid van Moolenbroek AC_CHECK_FILE($devrandom, 1023*00b67f09SDavid van Moolenbroek AC_DEFINE_UNQUOTED(PATH_RANDOMDEV, 1024*00b67f09SDavid van Moolenbroek "$devrandom"),) 1025*00b67f09SDavid van Moolenbroek 1026*00b67f09SDavid van Moolenbroek ;; 1027*00b67f09SDavid van Moolenbroek yes) 1028*00b67f09SDavid van Moolenbroek AC_MSG_ERROR([--with-randomdev must specify a path]) 1029*00b67f09SDavid van Moolenbroek ;; 1030*00b67f09SDavid van Moolenbroek no) 1031*00b67f09SDavid van Moolenbroek AC_MSG_RESULT(disabled) 1032*00b67f09SDavid van Moolenbroek ;; 1033*00b67f09SDavid van Moolenbroek *) 1034*00b67f09SDavid van Moolenbroek AC_DEFINE_UNQUOTED(PATH_RANDOMDEV, "$use_randomdev") 1035*00b67f09SDavid van Moolenbroek AC_MSG_RESULT(using "$use_randomdev") 1036*00b67f09SDavid van Moolenbroek ;; 1037*00b67f09SDavid van Moolenbroekesac 1038*00b67f09SDavid van Moolenbroek 1039*00b67f09SDavid van Moolenbroek# 1040*00b67f09SDavid van Moolenbroek# Only check dsa signature generation on these platforms when performing 1041*00b67f09SDavid van Moolenbroek# system tests. 1042*00b67f09SDavid van Moolenbroek# 1043*00b67f09SDavid van MoolenbroekCHECK_DSA=0 1044*00b67f09SDavid van Moolenbroekif grep "#define PATH_RANDOMDEV " confdefs.h > /dev/null 1045*00b67f09SDavid van Moolenbroekthen 1046*00b67f09SDavid van Moolenbroek case "$host" in 1047*00b67f09SDavid van Moolenbroek *darwin*|*freebsd*) 1048*00b67f09SDavid van Moolenbroek CHECK_DSA=1 1049*00b67f09SDavid van Moolenbroek ;; 1050*00b67f09SDavid van Moolenbroek esac 1051*00b67f09SDavid van Moolenbroekfi 1052*00b67f09SDavid van MoolenbroekAC_SUBST(CHECK_DSA) 1053*00b67f09SDavid van Moolenbroek 1054*00b67f09SDavid van Moolenbroek# 1055*00b67f09SDavid van Moolenbroek# Do we have arc4random(), etc ? arc4random_addrandom() has been removed 1056*00b67f09SDavid van Moolenbroek# from OpenBSD 5.5 onwards. 1057*00b67f09SDavid van Moolenbroek# 1058*00b67f09SDavid van MoolenbroekAC_CHECK_FUNC(arc4random, AC_DEFINE(HAVE_ARC4RANDOM)) 1059*00b67f09SDavid van MoolenbroekAC_CHECK_FUNC(arc4random_addrandom, AC_DEFINE(HAVE_ARC4RANDOM_ADDRANDOM)) 1060*00b67f09SDavid van Moolenbroek 1061*00b67f09SDavid van Moolenbroeksinclude(config.threads.in)dnl 1062*00b67f09SDavid van Moolenbroek 1063*00b67f09SDavid van Moolenbroekif $use_threads 1064*00b67f09SDavid van Moolenbroekthen 1065*00b67f09SDavid van Moolenbroek if test "X$GCC" = "Xyes"; then 1066*00b67f09SDavid van Moolenbroek case "$host" in 1067*00b67f09SDavid van Moolenbroek *-freebsd*) 1068*00b67f09SDavid van Moolenbroek CC="$CC -pthread" 1069*00b67f09SDavid van Moolenbroek CCOPT="$CCOPT -pthread" 1070*00b67f09SDavid van Moolenbroek CCNOOPT="$CCNOOPT -pthread" 1071*00b67f09SDavid van Moolenbroek STD_CDEFINES="$STD_CDEFINES -D_THREAD_SAFE" 1072*00b67f09SDavid van Moolenbroek ;; 1073*00b67f09SDavid van Moolenbroek *-openbsd*) 1074*00b67f09SDavid van Moolenbroek CC="$CC -pthread" 1075*00b67f09SDavid van Moolenbroek CCOPT="$CCOPT -pthread" 1076*00b67f09SDavid van Moolenbroek CCNOOPT="$CCNOOPT -pthread" 1077*00b67f09SDavid van Moolenbroek ;; 1078*00b67f09SDavid van Moolenbroek *-solaris*) 1079*00b67f09SDavid van Moolenbroek LIBS="$LIBS -lthread" 1080*00b67f09SDavid van Moolenbroek ;; 1081*00b67f09SDavid van Moolenbroek *-ibm-aix*) 1082*00b67f09SDavid van Moolenbroek STD_CDEFINES="$STD_CDEFINES -D_THREAD_SAFE" 1083*00b67f09SDavid van Moolenbroek ;; 1084*00b67f09SDavid van Moolenbroek esac 1085*00b67f09SDavid van Moolenbroek else 1086*00b67f09SDavid van Moolenbroek case $host in 1087*00b67f09SDavid van Moolenbroek *-dec-osf*) 1088*00b67f09SDavid van Moolenbroek CC="$CC -pthread" 1089*00b67f09SDavid van Moolenbroek CCOPT="$CCOPT -pthread" 1090*00b67f09SDavid van Moolenbroek CCNOOPT="$CCNOOPT -pthread" 1091*00b67f09SDavid van Moolenbroek ;; 1092*00b67f09SDavid van Moolenbroek *-solaris*) 1093*00b67f09SDavid van Moolenbroek CC="$CC -mt" 1094*00b67f09SDavid van Moolenbroek CCOPT="$CCOPT -mt" 1095*00b67f09SDavid van Moolenbroek CCNOOPT="$CCNOOPT -mt" 1096*00b67f09SDavid van Moolenbroek ;; 1097*00b67f09SDavid van Moolenbroek *-ibm-aix*) 1098*00b67f09SDavid van Moolenbroek STD_CDEFINES="$STD_CDEFINES -D_THREAD_SAFE" 1099*00b67f09SDavid van Moolenbroek ;; 1100*00b67f09SDavid van Moolenbroek *-sco-sysv*uw*|*-*-sysv*UnixWare*) 1101*00b67f09SDavid van Moolenbroek CC="$CC -Kthread" 1102*00b67f09SDavid van Moolenbroek CCOPT="$CCOPT -Kthread" 1103*00b67f09SDavid van Moolenbroek CCNOOPT="$CCNOOPT -Kthread" 1104*00b67f09SDavid van Moolenbroek ;; 1105*00b67f09SDavid van Moolenbroek *-*-sysv*OpenUNIX*) 1106*00b67f09SDavid van Moolenbroek CC="$CC -Kpthread" 1107*00b67f09SDavid van Moolenbroek CCOPT="$CCOPT -Kpthread" 1108*00b67f09SDavid van Moolenbroek CCNOOPT="$CCNOOPT -Kpthread" 1109*00b67f09SDavid van Moolenbroek ;; 1110*00b67f09SDavid van Moolenbroek esac 1111*00b67f09SDavid van Moolenbroek fi 1112*00b67f09SDavid van Moolenbroek ALWAYS_DEFINES="-D_REENTRANT" 1113*00b67f09SDavid van Moolenbroek ISC_PLATFORM_USETHREADS="#define ISC_PLATFORM_USETHREADS 1" 1114*00b67f09SDavid van Moolenbroek THREADOPTOBJS='${THREADOPTOBJS}' 1115*00b67f09SDavid van Moolenbroek THREADOPTSRCS='${THREADOPTSRCS}' 1116*00b67f09SDavid van Moolenbroek thread_dir=pthreads 1117*00b67f09SDavid van Moolenbroek # 1118*00b67f09SDavid van Moolenbroek # We'd like to use sigwait() too 1119*00b67f09SDavid van Moolenbroek # 1120*00b67f09SDavid van Moolenbroek AC_CHECK_FUNC(sigwait, 1121*00b67f09SDavid van Moolenbroek AC_DEFINE(HAVE_SIGWAIT), 1122*00b67f09SDavid van Moolenbroek AC_CHECK_LIB(c, sigwait, 1123*00b67f09SDavid van Moolenbroek AC_DEFINE(HAVE_SIGWAIT), 1124*00b67f09SDavid van Moolenbroek AC_CHECK_LIB(pthread, sigwait, 1125*00b67f09SDavid van Moolenbroek AC_DEFINE(HAVE_SIGWAIT), 1126*00b67f09SDavid van Moolenbroek AC_CHECK_LIB(pthread, _Psigwait, 1127*00b67f09SDavid van Moolenbroek AC_DEFINE(HAVE_SIGWAIT),)))) 1128*00b67f09SDavid van Moolenbroek 1129*00b67f09SDavid van Moolenbroek AC_CHECK_FUNC(pthread_attr_getstacksize, 1130*00b67f09SDavid van Moolenbroek AC_DEFINE(HAVE_PTHREAD_ATTR_GETSTACKSIZE),) 1131*00b67f09SDavid van Moolenbroek 1132*00b67f09SDavid van Moolenbroek AC_CHECK_FUNC(pthread_attr_setstacksize, 1133*00b67f09SDavid van Moolenbroek AC_DEFINE(HAVE_PTHREAD_ATTR_SETSTACKSIZE),) 1134*00b67f09SDavid van Moolenbroek 1135*00b67f09SDavid van Moolenbroek AC_ARG_WITH(locktype, 1136*00b67f09SDavid van Moolenbroek [ --with-locktype=ARG Specify mutex lock type (adaptive or standard)], 1137*00b67f09SDavid van Moolenbroek locktype="$withval", locktype="adaptive") 1138*00b67f09SDavid van Moolenbroek 1139*00b67f09SDavid van Moolenbroek case "$locktype" in 1140*00b67f09SDavid van Moolenbroek adaptive) 1141*00b67f09SDavid van Moolenbroek AC_MSG_CHECKING([for PTHREAD_MUTEX_ADAPTIVE_NP]) 1142*00b67f09SDavid van Moolenbroek 1143*00b67f09SDavid van Moolenbroek AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ 1144*00b67f09SDavid van Moolenbroek #define _GNU_SOURCE 1145*00b67f09SDavid van Moolenbroek #include <pthread.h> 1146*00b67f09SDavid van Moolenbroek ]], [[ 1147*00b67f09SDavid van Moolenbroek return (PTHREAD_MUTEX_ADAPTIVE_NP); 1148*00b67f09SDavid van Moolenbroek ]])], 1149*00b67f09SDavid van Moolenbroek [ AC_MSG_RESULT(using adaptive lock type) 1150*00b67f09SDavid van Moolenbroek AC_DEFINE([HAVE_PTHREAD_MUTEX_ADAPTIVE_NP], 1, 1151*00b67f09SDavid van Moolenbroek [Support for PTHREAD_MUTEX_ADAPTIVE_NP]) ], 1152*00b67f09SDavid van Moolenbroek [ AC_MSG_RESULT(using standard lock type) ]) 1153*00b67f09SDavid van Moolenbroek ;; 1154*00b67f09SDavid van Moolenbroek standard) 1155*00b67f09SDavid van Moolenbroek AC_MSG_RESULT(using standard lock type) 1156*00b67f09SDavid van Moolenbroek ;; 1157*00b67f09SDavid van Moolenbroek *) 1158*00b67f09SDavid van Moolenbroek AC_MSG_ERROR([You must specify "adaptive" or "standard" for --with-locktype.]) 1159*00b67f09SDavid van Moolenbroek ;; 1160*00b67f09SDavid van Moolenbroek esac 1161*00b67f09SDavid van Moolenbroek 1162*00b67f09SDavid van Moolenbroek AC_CHECK_HEADERS(sched.h) 1163*00b67f09SDavid van Moolenbroek 1164*00b67f09SDavid van Moolenbroek case "$host" in 1165*00b67f09SDavid van Moolenbroek *solaris-*) 1166*00b67f09SDavid van Moolenbroek AC_CHECK_LIB(rt, sched_yield) 1167*00b67f09SDavid van Moolenbroek ;; 1168*00b67f09SDavid van Moolenbroek esac 1169*00b67f09SDavid van Moolenbroek 1170*00b67f09SDavid van Moolenbroek AC_CHECK_FUNCS(sched_yield pthread_yield pthread_yield_np) 1171*00b67f09SDavid van Moolenbroek 1172*00b67f09SDavid van Moolenbroek # 1173*00b67f09SDavid van Moolenbroek # Additional OS-specific issues related to pthreads and sigwait. 1174*00b67f09SDavid van Moolenbroek # 1175*00b67f09SDavid van Moolenbroek case "$host" in 1176*00b67f09SDavid van Moolenbroek # 1177*00b67f09SDavid van Moolenbroek # One more place to look for sigwait. 1178*00b67f09SDavid van Moolenbroek # 1179*00b67f09SDavid van Moolenbroek *-freebsd*) 1180*00b67f09SDavid van Moolenbroek AC_CHECK_LIB(c_r, sigwait, AC_DEFINE(HAVE_SIGWAIT),) 1181*00b67f09SDavid van Moolenbroek case $host in 1182*00b67f09SDavid van Moolenbroek *-freebsd5.[[012]]|*-freebsd5.[[012]].*);; 1183*00b67f09SDavid van Moolenbroek *-freebsd5.[[3456789]]|*-freebsd5.[[3456789]].*) 1184*00b67f09SDavid van Moolenbroek AC_DEFINE(NEED_PTHREAD_SCOPE_SYSTEM) 1185*00b67f09SDavid van Moolenbroek ;; 1186*00b67f09SDavid van Moolenbroek *-freebsd6.*) 1187*00b67f09SDavid van Moolenbroek AC_DEFINE(NEED_PTHREAD_SCOPE_SYSTEM) 1188*00b67f09SDavid van Moolenbroek ;; 1189*00b67f09SDavid van Moolenbroek esac 1190*00b67f09SDavid van Moolenbroek ;; 1191*00b67f09SDavid van Moolenbroek # 1192*00b67f09SDavid van Moolenbroek # BSDI 3.0 through 4.0.1 needs pthread_init() to be 1193*00b67f09SDavid van Moolenbroek # called before certain pthreads calls. This is deprecated 1194*00b67f09SDavid van Moolenbroek # in BSD/OS 4.1. 1195*00b67f09SDavid van Moolenbroek # 1196*00b67f09SDavid van Moolenbroek *-bsdi3.*|*-bsdi4.0*) 1197*00b67f09SDavid van Moolenbroek AC_DEFINE(NEED_PTHREAD_INIT) 1198*00b67f09SDavid van Moolenbroek ;; 1199*00b67f09SDavid van Moolenbroek # 1200*00b67f09SDavid van Moolenbroek # LinuxThreads requires some changes to the way we 1201*00b67f09SDavid van Moolenbroek # deal with signals. 1202*00b67f09SDavid van Moolenbroek # 1203*00b67f09SDavid van Moolenbroek *-linux*) 1204*00b67f09SDavid van Moolenbroek AC_DEFINE(HAVE_LINUXTHREADS) 1205*00b67f09SDavid van Moolenbroek ;; 1206*00b67f09SDavid van Moolenbroek # 1207*00b67f09SDavid van Moolenbroek # Ensure the right sigwait() semantics on Solaris and make 1208*00b67f09SDavid van Moolenbroek # sure we call pthread_setconcurrency. 1209*00b67f09SDavid van Moolenbroek # 1210*00b67f09SDavid van Moolenbroek *-solaris*) 1211*00b67f09SDavid van Moolenbroek AC_DEFINE(_POSIX_PTHREAD_SEMANTICS) 1212*00b67f09SDavid van Moolenbroek AC_CHECK_FUNC(pthread_setconcurrency, 1213*00b67f09SDavid van Moolenbroek AC_DEFINE(CALL_PTHREAD_SETCONCURRENCY)) 1214*00b67f09SDavid van Moolenbroek ;; 1215*00b67f09SDavid van Moolenbroek # 1216*00b67f09SDavid van Moolenbroek # UnixWare does things its own way. 1217*00b67f09SDavid van Moolenbroek # 1218*00b67f09SDavid van Moolenbroek *-sco-sysv*uw*|*-*-sysv*UnixWare*|*-*-sysv*OpenUNIX*) 1219*00b67f09SDavid van Moolenbroek AC_DEFINE(HAVE_UNIXWARE_SIGWAIT) 1220*00b67f09SDavid van Moolenbroek ;; 1221*00b67f09SDavid van Moolenbroek esac 1222*00b67f09SDavid van Moolenbroek 1223*00b67f09SDavid van Moolenbroek # 1224*00b67f09SDavid van Moolenbroek # Look for sysconf to allow detection of the number of processors. 1225*00b67f09SDavid van Moolenbroek # 1226*00b67f09SDavid van Moolenbroek AC_CHECK_FUNC(sysconf, AC_DEFINE(HAVE_SYSCONF),) 1227*00b67f09SDavid van Moolenbroek 1228*00b67f09SDavid van Moolenbroekelse 1229*00b67f09SDavid van Moolenbroek ISC_PLATFORM_USETHREADS="#undef ISC_PLATFORM_USETHREADS" 1230*00b67f09SDavid van Moolenbroek thread_dir=nothreads 1231*00b67f09SDavid van Moolenbroek THREADOPTOBJS="" 1232*00b67f09SDavid van Moolenbroek THREADOPTSRCS="" 1233*00b67f09SDavid van Moolenbroek ALWAYS_DEFINES="" 1234*00b67f09SDavid van Moolenbroekfi 1235*00b67f09SDavid van Moolenbroek 1236*00b67f09SDavid van MoolenbroekAC_SUBST(ALWAYS_DEFINES) 1237*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_PLATFORM_USETHREADS) 1238*00b67f09SDavid van MoolenbroekAC_SUBST(THREADOPTOBJS) 1239*00b67f09SDavid van MoolenbroekAC_SUBST(THREADOPTSRCS) 1240*00b67f09SDavid van MoolenbroekISC_THREAD_DIR=$thread_dir 1241*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_THREAD_DIR) 1242*00b67f09SDavid van Moolenbroek 1243*00b67f09SDavid van MoolenbroekAC_MSG_CHECKING(for libtool) 1244*00b67f09SDavid van MoolenbroekAC_ARG_WITH(libtool, 1245*00b67f09SDavid van Moolenbroek [ --with-libtool use GNU libtool], 1246*00b67f09SDavid van Moolenbroek use_libtool="$withval", use_libtool="no") 1247*00b67f09SDavid van Moolenbroek 1248*00b67f09SDavid van Moolenbroekcase $use_libtool in 1249*00b67f09SDavid van Moolenbroek yes) 1250*00b67f09SDavid van Moolenbroek AC_MSG_RESULT(yes) 1251*00b67f09SDavid van Moolenbroek AM_PROG_LIBTOOL 1252*00b67f09SDavid van Moolenbroek O=lo 1253*00b67f09SDavid van Moolenbroek A=la 1254*00b67f09SDavid van Moolenbroek LIBTOOL_MKDEP_SED='s;\.o;\.lo;' 1255*00b67f09SDavid van Moolenbroek LIBTOOL_MODE_COMPILE='--mode=compile --tag=CC' 1256*00b67f09SDavid van Moolenbroek LIBTOOL_MODE_INSTALL='--mode=install --tag=CC' 1257*00b67f09SDavid van Moolenbroek LIBTOOL_MODE_LINK='--mode=link --tag=CC' 1258*00b67f09SDavid van Moolenbroek INSTALL_LIBRARY='${INSTALL_PROGRAM}' 1259*00b67f09SDavid van Moolenbroek case "$host" in 1260*00b67f09SDavid van Moolenbroek *) LIBTOOL_ALLOW_UNDEFINED= ;; 1261*00b67f09SDavid van Moolenbroek esac 1262*00b67f09SDavid van Moolenbroek case "$host" in 1263*00b67f09SDavid van Moolenbroek *-ibm-aix*) LIBTOOL_IN_MAIN="-Wl,-bI:T_testlist.imp" ;; 1264*00b67f09SDavid van Moolenbroek *) LIBTOOL_IN_MAIN= ;; 1265*00b67f09SDavid van Moolenbroek esac; 1266*00b67f09SDavid van Moolenbroek ;; 1267*00b67f09SDavid van Moolenbroek *) 1268*00b67f09SDavid van Moolenbroek AC_MSG_RESULT(no) 1269*00b67f09SDavid van Moolenbroek O=o 1270*00b67f09SDavid van Moolenbroek A=a 1271*00b67f09SDavid van Moolenbroek LIBTOOL= 1272*00b67f09SDavid van Moolenbroek AC_SUBST(LIBTOOL) 1273*00b67f09SDavid van Moolenbroek LIBTOOL_MKDEP_SED= 1274*00b67f09SDavid van Moolenbroek LIBTOOL_MODE_COMPILE= 1275*00b67f09SDavid van Moolenbroek LIBTOOL_MODE_INSTALL= 1276*00b67f09SDavid van Moolenbroek LIBTOOL_MODE_LINK= 1277*00b67f09SDavid van Moolenbroek LIBTOOL_ALLOW_UNDEFINED= 1278*00b67f09SDavid van Moolenbroek LIBTOOL_IN_MAIN= 1279*00b67f09SDavid van Moolenbroek INSTALL_LIBRARY='${INSTALL_DATA}' 1280*00b67f09SDavid van Moolenbroek ;; 1281*00b67f09SDavid van Moolenbroekesac 1282*00b67f09SDavid van MoolenbroekAC_SUBST(INSTALL_LIBRARY) 1283*00b67f09SDavid van Moolenbroek 1284*00b67f09SDavid van Moolenbroek# 1285*00b67f09SDavid van Moolenbroek# was --enable-native-pkcs11 specified? 1286*00b67f09SDavid van Moolenbroek# (note it implies both --without-openssl and --with-pkcs11) 1287*00b67f09SDavid van Moolenbroek# 1288*00b67f09SDavid van MoolenbroekAC_ARG_ENABLE(native-pkcs11, 1289*00b67f09SDavid van Moolenbroek [ --enable-native-pkcs11 use native PKCS11 for all crypto [[default=no]]], 1290*00b67f09SDavid van Moolenbroek want_native_pkcs11="$enableval", want_native_pkcs11="no") 1291*00b67f09SDavid van Moolenbroek 1292*00b67f09SDavid van Moolenbroek# 1293*00b67f09SDavid van Moolenbroek# was --with-openssl specified? 1294*00b67f09SDavid van Moolenbroek# 1295*00b67f09SDavid van MoolenbroekAC_ARG_WITH(openssl, 1296*00b67f09SDavid van Moolenbroek[ --with-openssl[=PATH] Build with OpenSSL [yes|no|path]. 1297*00b67f09SDavid van Moolenbroek (Crypto is required for DNSSEC)], 1298*00b67f09SDavid van Moolenbroek use_openssl="$withval", use_openssl="auto") 1299*00b67f09SDavid van Moolenbroek 1300*00b67f09SDavid van Moolenbroek# 1301*00b67f09SDavid van Moolenbroek# was --with-pkcs11 specified? 1302*00b67f09SDavid van Moolenbroek# 1303*00b67f09SDavid van MoolenbroekAC_ARG_WITH(pkcs11, 1304*00b67f09SDavid van Moolenbroek[ --with-pkcs11[=PATH] Build with PKCS11 support [yes|no|path] 1305*00b67f09SDavid van Moolenbroek (PATH is for the PKCS11 provider)], 1306*00b67f09SDavid van Moolenbroek use_pkcs11="$withval", use_pkcs11="auto") 1307*00b67f09SDavid van Moolenbroek 1308*00b67f09SDavid van Moolenbroek# 1309*00b67f09SDavid van Moolenbroek# were --with-ecdsa, --with-gost, --with-aes specified 1310*00b67f09SDavid van Moolenbroek# 1311*00b67f09SDavid van MoolenbroekAC_ARG_WITH(ecdsa, [ --with-ecdsa Crypto ECDSA], 1312*00b67f09SDavid van Moolenbroek with_ecdsa="$withval", with_ecdsa="auto") 1313*00b67f09SDavid van MoolenbroekAC_ARG_WITH(gost, [ --with-gost Crypto GOST [yes|no|raw|asn1].], 1314*00b67f09SDavid van Moolenbroek with_gost="$withval", with_gost="auto") 1315*00b67f09SDavid van MoolenbroekAC_ARG_WITH(aes, [ --with-aes Crypto AES], 1316*00b67f09SDavid van Moolenbroek with_aes="$withval", with_aes="checksit") 1317*00b67f09SDavid van Moolenbroek 1318*00b67f09SDavid van Moolenbroek# 1319*00b67f09SDavid van Moolenbroek# was --enable-openssl-hash specified? 1320*00b67f09SDavid van Moolenbroek# 1321*00b67f09SDavid van MoolenbroekAC_ARG_ENABLE(openssl-hash, 1322*00b67f09SDavid van Moolenbroek [ --enable-openssl-hash use OpenSSL for hash functions [[default=no]]], 1323*00b67f09SDavid van Moolenbroek want_openssl_hash="$enableval", want_openssl_hash="checksit") 1324*00b67f09SDavid van Moolenbroek 1325*00b67f09SDavid van Moolenbroek# 1326*00b67f09SDavid van Moolenbroek# Enable Source Identity Token support 1327*00b67f09SDavid van Moolenbroek# 1328*00b67f09SDavid van MoolenbroekAC_MSG_CHECKING(for Source Identity Token support) 1329*00b67f09SDavid van MoolenbroekAC_ARG_ENABLE(sit, 1330*00b67f09SDavid van Moolenbroek [ --enable-sit enable source identity token [[default=no]]], 1331*00b67f09SDavid van Moolenbroek enable_sit="$enableval", enable_sit="no") 1332*00b67f09SDavid van MoolenbroekHAVE_SIT= 1333*00b67f09SDavid van MoolenbroekISC_PLATFORM_USESIT="#undef ISC_PLATFORM_USESIT" 1334*00b67f09SDavid van Moolenbroek 1335*00b67f09SDavid van Moolenbroekcase "$enable_sit" in 1336*00b67f09SDavid van Moolenbroekyes) 1337*00b67f09SDavid van Moolenbroek AC_MSG_RESULT(yes) 1338*00b67f09SDavid van Moolenbroek ISC_PLATFORM_USESIT="#define ISC_PLATFORM_USESIT 1" 1339*00b67f09SDavid van Moolenbroek HAVE_SIT=1 1340*00b67f09SDavid van Moolenbroek ;; 1341*00b67f09SDavid van Moolenbroekno) 1342*00b67f09SDavid van Moolenbroek AC_MSG_RESULT(no) 1343*00b67f09SDavid van Moolenbroek ;; 1344*00b67f09SDavid van Moolenbroek*) 1345*00b67f09SDavid van Moolenbroek AC_MSG_ERROR("enable-sit requires yes or no") 1346*00b67f09SDavid van Moolenbroek ;; 1347*00b67f09SDavid van Moolenbroekesac 1348*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_PLATFORM_USESIT) 1349*00b67f09SDavid van MoolenbroekAC_SUBST(HAVE_SIT) 1350*00b67f09SDavid van Moolenbroek 1351*00b67f09SDavid van Moolenbroek# 1352*00b67f09SDavid van Moolenbroek# Source Identity Token algorithm choice 1353*00b67f09SDavid van Moolenbroek# 1354*00b67f09SDavid van MoolenbroekAC_ARG_WITH(sit-alg, 1355*00b67f09SDavid van Moolenbroek [ --with-sit-alg=ALG choose the algorithm for SIT [[aes|sha1|sha256]]], 1356*00b67f09SDavid van Moolenbroek with_sit_alg="$withval", with_sit_alg="auto") 1357*00b67f09SDavid van Moolenbroek 1358*00b67f09SDavid van Moolenbroekif test "$enable_sit" = "yes" 1359*00b67f09SDavid van Moolenbroekthen 1360*00b67f09SDavid van Moolenbroek case $with_sit_alg in 1361*00b67f09SDavid van Moolenbroek *1) 1362*00b67f09SDavid van Moolenbroek with_sit_alg="sha1" 1363*00b67f09SDavid van Moolenbroek ;; 1364*00b67f09SDavid van Moolenbroek *2*) 1365*00b67f09SDavid van Moolenbroek with_sit_alg="sha256" 1366*00b67f09SDavid van Moolenbroek ;; 1367*00b67f09SDavid van Moolenbroek auto) 1368*00b67f09SDavid van Moolenbroek if test "$with_aes" != "no" 1369*00b67f09SDavid van Moolenbroek then 1370*00b67f09SDavid van Moolenbroek with_aes="yes" 1371*00b67f09SDavid van Moolenbroek fi 1372*00b67f09SDavid van Moolenbroek ;; 1373*00b67f09SDavid van Moolenbroek *) 1374*00b67f09SDavid van Moolenbroek with_sit_alg="aes" 1375*00b67f09SDavid van Moolenbroek if test "$with_aes" != "no" 1376*00b67f09SDavid van Moolenbroek then 1377*00b67f09SDavid van Moolenbroek with_aes="yes" 1378*00b67f09SDavid van Moolenbroek fi 1379*00b67f09SDavid van Moolenbroek ;; 1380*00b67f09SDavid van Moolenbroek esac 1381*00b67f09SDavid van Moolenbroekfi 1382*00b67f09SDavid van Moolenbroekif test "with_aes" = "checksit" 1383*00b67f09SDavid van Moolenbroekthen 1384*00b67f09SDavid van Moolenbroek with_aes="no" 1385*00b67f09SDavid van Moolenbroekfi 1386*00b67f09SDavid van Moolenbroek 1387*00b67f09SDavid van MoolenbroekAC_MSG_CHECKING(for OpenSSL library) 1388*00b67f09SDavid van MoolenbroekOPENSSL_WARNING= 1389*00b67f09SDavid van Moolenbroekopenssldirs="/usr /usr/local /usr/local/ssl /usr/pkg /usr/sfw" 1390*00b67f09SDavid van Moolenbroekif test "$use_openssl" = "auto" 1391*00b67f09SDavid van Moolenbroekthen 1392*00b67f09SDavid van Moolenbroek if test "$want_native_pkcs11" = "yes" 1393*00b67f09SDavid van Moolenbroek then 1394*00b67f09SDavid van Moolenbroek use_openssl="native_pkcs11" 1395*00b67f09SDavid van Moolenbroek else 1396*00b67f09SDavid van Moolenbroek for d in $openssldirs 1397*00b67f09SDavid van Moolenbroek do 1398*00b67f09SDavid van Moolenbroek if test -f $d/include/openssl/opensslv.h 1399*00b67f09SDavid van Moolenbroek then 1400*00b67f09SDavid van Moolenbroek use_openssl=$d 1401*00b67f09SDavid van Moolenbroek break 1402*00b67f09SDavid van Moolenbroek fi 1403*00b67f09SDavid van Moolenbroek done 1404*00b67f09SDavid van Moolenbroek fi 1405*00b67f09SDavid van Moolenbroekfi 1406*00b67f09SDavid van MoolenbroekOPENSSL_ECDSA="" 1407*00b67f09SDavid van MoolenbroekOPENSSL_GOST="" 1408*00b67f09SDavid van Moolenbroekgosttype="raw" 1409*00b67f09SDavid van Moolenbroekcase "$with_gost" in 1410*00b67f09SDavid van Moolenbroek raw) 1411*00b67f09SDavid van Moolenbroek with_gost="yes" 1412*00b67f09SDavid van Moolenbroek ;; 1413*00b67f09SDavid van Moolenbroek asn1) 1414*00b67f09SDavid van Moolenbroek AC_DEFINE(PREFER_GOSTASN1, 1, 1415*00b67f09SDavid van Moolenbroek [Define if GOST private keys are encoded in ASN.1.]) 1416*00b67f09SDavid van Moolenbroek gosttype="asn1" 1417*00b67f09SDavid van Moolenbroek with_gost="yes" 1418*00b67f09SDavid van Moolenbroek ;; 1419*00b67f09SDavid van Moolenbroek auto|yes|no) 1420*00b67f09SDavid van Moolenbroek ;; 1421*00b67f09SDavid van Moolenbroek *) 1422*00b67f09SDavid van Moolenbroek AC_MSG_ERROR(unknown GOST private key encoding) 1423*00b67f09SDavid van Moolenbroek ;; 1424*00b67f09SDavid van Moolenbroekesac 1425*00b67f09SDavid van Moolenbroek 1426*00b67f09SDavid van Moolenbroekcase "$use_openssl" in 1427*00b67f09SDavid van Moolenbroek native_pkcs11) 1428*00b67f09SDavid van Moolenbroek AC_MSG_RESULT(disabled because of native PKCS11) 1429*00b67f09SDavid van Moolenbroek DST_OPENSSL_INC="" 1430*00b67f09SDavid van Moolenbroek CRYPTO="-DPKCS11CRYPTO" 1431*00b67f09SDavid van Moolenbroek OPENSSLGOSTLINKOBJS="" 1432*00b67f09SDavid van Moolenbroek OPENSSLGOSTLINKSRS="" 1433*00b67f09SDavid van Moolenbroek OPENSSLLINKOBJS="" 1434*00b67f09SDavid van Moolenbroek OPENSSLLINKSRCS="" 1435*00b67f09SDavid van Moolenbroek ;; 1436*00b67f09SDavid van Moolenbroek no) 1437*00b67f09SDavid van Moolenbroek AC_MSG_RESULT(no) 1438*00b67f09SDavid van Moolenbroek DST_OPENSSL_INC="" 1439*00b67f09SDavid van Moolenbroek CRYPTO="" 1440*00b67f09SDavid van Moolenbroek OPENSSLGOSTLINKOBJS="" 1441*00b67f09SDavid van Moolenbroek OPENSSLGOSTLINKSRS="" 1442*00b67f09SDavid van Moolenbroek OPENSSLLINKOBJS="" 1443*00b67f09SDavid van Moolenbroek OPENSSLLINKSRCS="" 1444*00b67f09SDavid van Moolenbroek ;; 1445*00b67f09SDavid van Moolenbroek auto) 1446*00b67f09SDavid van Moolenbroek DST_OPENSSL_INC="" 1447*00b67f09SDavid van Moolenbroek CRYPTO="" 1448*00b67f09SDavid van Moolenbroek OPENSSLGOSTLINKOBJS="" 1449*00b67f09SDavid van Moolenbroek OPENSSLGOSTLINKSRS="" 1450*00b67f09SDavid van Moolenbroek OPENSSLLINKOBJS="" 1451*00b67f09SDavid van Moolenbroek OPENSSLLINKSRCS="" 1452*00b67f09SDavid van Moolenbroek AC_MSG_ERROR( 1453*00b67f09SDavid van Moolenbroek[OpenSSL was not found in any of $openssldirs; use --with-openssl=/path 1454*00b67f09SDavid van MoolenbroekIf you don't want OpenSSL, use --without-openssl]) 1455*00b67f09SDavid van Moolenbroek ;; 1456*00b67f09SDavid van Moolenbroek *) 1457*00b67f09SDavid van Moolenbroek if test "$want_native_pkcs11" = "yes" 1458*00b67f09SDavid van Moolenbroek then 1459*00b67f09SDavid van Moolenbroek AC_MSG_RESULT() 1460*00b67f09SDavid van Moolenbroek AC_MSG_ERROR([OpenSSL and native PKCS11 cannot be used together.]) 1461*00b67f09SDavid van Moolenbroek fi 1462*00b67f09SDavid van Moolenbroek if test "$use_openssl" = "yes" 1463*00b67f09SDavid van Moolenbroek then 1464*00b67f09SDavid van Moolenbroek # User did not specify a path - guess it 1465*00b67f09SDavid van Moolenbroek for d in $openssldirs 1466*00b67f09SDavid van Moolenbroek do 1467*00b67f09SDavid van Moolenbroek if test -f $d/include/openssl/opensslv.h 1468*00b67f09SDavid van Moolenbroek then 1469*00b67f09SDavid van Moolenbroek use_openssl=$d 1470*00b67f09SDavid van Moolenbroek break 1471*00b67f09SDavid van Moolenbroek fi 1472*00b67f09SDavid van Moolenbroek done 1473*00b67f09SDavid van Moolenbroek if test "$use_openssl" = "yes" 1474*00b67f09SDavid van Moolenbroek then 1475*00b67f09SDavid van Moolenbroek AC_MSG_RESULT(not found) 1476*00b67f09SDavid van Moolenbroek AC_MSG_ERROR( 1477*00b67f09SDavid van Moolenbroek[OpenSSL was not found in any of $openssldirs; use --with-openssl=/path]) 1478*00b67f09SDavid van Moolenbroek fi 1479*00b67f09SDavid van Moolenbroek elif ! test -f "$use_openssl"/include/openssl/opensslv.h 1480*00b67f09SDavid van Moolenbroek then 1481*00b67f09SDavid van Moolenbroek AC_MSG_ERROR(["$use_openssl/include/openssl/opensslv.h" not found]) 1482*00b67f09SDavid van Moolenbroek fi 1483*00b67f09SDavid van Moolenbroek CRYPTO='-DOPENSSL' 1484*00b67f09SDavid van Moolenbroek if test "$use_openssl" = "/usr" 1485*00b67f09SDavid van Moolenbroek then 1486*00b67f09SDavid van Moolenbroek DST_OPENSSL_INC="" 1487*00b67f09SDavid van Moolenbroek DST_OPENSSL_LIBS="-lcrypto" 1488*00b67f09SDavid van Moolenbroek else 1489*00b67f09SDavid van Moolenbroek DST_OPENSSL_INC="-I$use_openssl/include" 1490*00b67f09SDavid van Moolenbroek case $host in 1491*00b67f09SDavid van Moolenbroek *-solaris*) 1492*00b67f09SDavid van Moolenbroek DST_OPENSSL_LIBS="-L$use_openssl/lib -R$use_openssl/lib -lcrypto" 1493*00b67f09SDavid van Moolenbroek ;; 1494*00b67f09SDavid van Moolenbroek *-hp-hpux*) 1495*00b67f09SDavid van Moolenbroek DST_OPENSSL_LIBS="-L$use_openssl/lib -Wl,+b: -lcrypto" 1496*00b67f09SDavid van Moolenbroek ;; 1497*00b67f09SDavid van Moolenbroek *-apple-darwin*) 1498*00b67f09SDavid van Moolenbroek # 1499*00b67f09SDavid van Moolenbroek # Apple's ld seaches for serially for dynamic 1500*00b67f09SDavid van Moolenbroek # then static libraries. This means you can't 1501*00b67f09SDavid van Moolenbroek # use -L to override dynamic system libraries 1502*00b67f09SDavid van Moolenbroek # with static ones when linking. Instead 1503*00b67f09SDavid van Moolenbroek # we specify a absolute path. 1504*00b67f09SDavid van Moolenbroek # 1505*00b67f09SDavid van Moolenbroek if test -f "$use_openssl/lib/libcrypto.dylib" 1506*00b67f09SDavid van Moolenbroek then 1507*00b67f09SDavid van Moolenbroek DST_OPENSSL_LIBS="-L$use_openssl/lib -lcrypto" 1508*00b67f09SDavid van Moolenbroek else 1509*00b67f09SDavid van Moolenbroek DST_OPENSSL_LIBS="$use_openssl/lib/libcrypto.a" 1510*00b67f09SDavid van Moolenbroek fi 1511*00b67f09SDavid van Moolenbroek ;; 1512*00b67f09SDavid van Moolenbroek *) 1513*00b67f09SDavid van Moolenbroek DST_OPENSSL_LIBS="-L$use_openssl/lib -lcrypto" 1514*00b67f09SDavid van Moolenbroek ;; 1515*00b67f09SDavid van Moolenbroek esac 1516*00b67f09SDavid van Moolenbroek fi 1517*00b67f09SDavid van Moolenbroek AC_MSG_RESULT(using OpenSSL from $use_openssl/lib and $use_openssl/include) 1518*00b67f09SDavid van Moolenbroek 1519*00b67f09SDavid van Moolenbroek saved_cc="$CC" 1520*00b67f09SDavid van Moolenbroek saved_cflags="$CFLAGS" 1521*00b67f09SDavid van Moolenbroek saved_libs="$LIBS" 1522*00b67f09SDavid van Moolenbroek CFLAGS="$CFLAGS $DST_OPENSSL_INC" 1523*00b67f09SDavid van Moolenbroek LIBS="$LIBS $DST_OPENSSL_LIBS" 1524*00b67f09SDavid van Moolenbroek AC_MSG_CHECKING(whether linking with OpenSSL works) 1525*00b67f09SDavid van Moolenbroek AC_TRY_RUN([ 1526*00b67f09SDavid van Moolenbroek#include <openssl/err.h> 1527*00b67f09SDavid van Moolenbroekint main() { 1528*00b67f09SDavid van Moolenbroek ERR_clear_error(); 1529*00b67f09SDavid van Moolenbroek return (0); 1530*00b67f09SDavid van Moolenbroek} 1531*00b67f09SDavid van Moolenbroek], 1532*00b67f09SDavid van Moolenbroek [AC_MSG_RESULT(yes)], 1533*00b67f09SDavid van Moolenbroek [AC_MSG_RESULT(no) 1534*00b67f09SDavid van Moolenbroek AC_MSG_ERROR(Could not run test program using OpenSSL from 1535*00b67f09SDavid van Moolenbroek$use_openssl/lib and $use_openssl/include. 1536*00b67f09SDavid van MoolenbroekPlease check the argument to --with-openssl and your 1537*00b67f09SDavid van Moolenbroekshared library configuration (e.g., LD_LIBRARY_PATH).)], 1538*00b67f09SDavid van Moolenbroek [AC_MSG_RESULT(assuming it does work on target platform)]) 1539*00b67f09SDavid van Moolenbroek 1540*00b67f09SDavid van Moolenbroek AC_MSG_CHECKING(whether linking with OpenSSL requires -ldl) 1541*00b67f09SDavid van Moolenbroek AC_TRY_LINK([ 1542*00b67f09SDavid van Moolenbroek#include <openssl/err.h>], 1543*00b67f09SDavid van Moolenbroek[ DSO_METHOD_dlfcn(); ], 1544*00b67f09SDavid van Moolenbroek [AC_MSG_RESULT(no)], 1545*00b67f09SDavid van Moolenbroek [LIBS="$LIBS -ldl" 1546*00b67f09SDavid van Moolenbroek AC_TRY_LINK([ 1547*00b67f09SDavid van Moolenbroek#include <openssl/err.h> 1548*00b67f09SDavid van Moolenbroek],[ DSO_METHOD_dlfcn(); ], 1549*00b67f09SDavid van Moolenbroek [AC_MSG_RESULT(yes) 1550*00b67f09SDavid van Moolenbroek DST_OPENSSL_LIBS="$DST_OPENSSL_LIBS -ldl" 1551*00b67f09SDavid van Moolenbroek ], 1552*00b67f09SDavid van Moolenbroek [AC_MSG_RESULT(unknown) 1553*00b67f09SDavid van Moolenbroek AC_MSG_ERROR(OpenSSL has unsupported dynamic loading)], 1554*00b67f09SDavid van Moolenbroek [AC_MSG_RESULT(assuming it does work on target platform)]) 1555*00b67f09SDavid van Moolenbroek ], 1556*00b67f09SDavid van Moolenbroek [AC_MSG_RESULT(assuming it does work on target platform)] 1557*00b67f09SDavid van Moolenbroek ) 1558*00b67f09SDavid van Moolenbroek 1559*00b67f09SDavid van MoolenbroekAC_ARG_ENABLE(openssl-version-check, 1560*00b67f09SDavid van Moolenbroek[AC_HELP_STRING([--enable-openssl-version-check], 1561*00b67f09SDavid van Moolenbroek [check OpenSSL version @<:@default=yes@:>@])]) 1562*00b67f09SDavid van Moolenbroekcase "$enable_openssl_version_check" in 1563*00b67f09SDavid van Moolenbroekyes|'') 1564*00b67f09SDavid van Moolenbroek AC_MSG_CHECKING(OpenSSL library version) 1565*00b67f09SDavid van Moolenbroek AC_TRY_RUN([ 1566*00b67f09SDavid van Moolenbroek#include <stdio.h> 1567*00b67f09SDavid van Moolenbroek#include <openssl/opensslv.h> 1568*00b67f09SDavid van Moolenbroekint main() { 1569*00b67f09SDavid van Moolenbroek if ((OPENSSL_VERSION_NUMBER >= 0x009070cfL && 1570*00b67f09SDavid van Moolenbroek OPENSSL_VERSION_NUMBER < 0x00908000L) || 1571*00b67f09SDavid van Moolenbroek OPENSSL_VERSION_NUMBER >= 0x0090804fL) 1572*00b67f09SDavid van Moolenbroek return (0); 1573*00b67f09SDavid van Moolenbroek printf("\n\nFound OPENSSL_VERSION_NUMBER %#010x\n", 1574*00b67f09SDavid van Moolenbroek OPENSSL_VERSION_NUMBER); 1575*00b67f09SDavid van Moolenbroek printf("Require OPENSSL_VERSION_NUMBER 0x009070cf or greater (0.9.7l)\n" 1576*00b67f09SDavid van Moolenbroek "Require OPENSSL_VERSION_NUMBER 0x0090804f or greater (0.9.8d)\n\n"); 1577*00b67f09SDavid van Moolenbroek return (1); 1578*00b67f09SDavid van Moolenbroek} 1579*00b67f09SDavid van Moolenbroek ], 1580*00b67f09SDavid van Moolenbroek [AC_MSG_RESULT(ok)], 1581*00b67f09SDavid van Moolenbroek [AC_MSG_RESULT(not compatible) 1582*00b67f09SDavid van Moolenbroek OPENSSL_WARNING=yes 1583*00b67f09SDavid van Moolenbroek ], 1584*00b67f09SDavid van Moolenbroek [AC_MSG_RESULT(assuming target platform has compatible version)]) 1585*00b67f09SDavid van Moolenbroek;; 1586*00b67f09SDavid van Moolenbroekno) 1587*00b67f09SDavid van Moolenbroek AC_MSG_RESULT(Skipped OpenSSL version check) 1588*00b67f09SDavid van Moolenbroek;; 1589*00b67f09SDavid van Moolenbroekesac 1590*00b67f09SDavid van Moolenbroek 1591*00b67f09SDavid van Moolenbroek AC_MSG_CHECKING(for OpenSSL DSA support) 1592*00b67f09SDavid van Moolenbroek if test -f $use_openssl/include/openssl/dsa.h 1593*00b67f09SDavid van Moolenbroek then 1594*00b67f09SDavid van Moolenbroek AC_DEFINE(HAVE_OPENSSL_DSA) 1595*00b67f09SDavid van Moolenbroek AC_MSG_RESULT(yes) 1596*00b67f09SDavid van Moolenbroek else 1597*00b67f09SDavid van Moolenbroek AC_MSG_RESULT(no) 1598*00b67f09SDavid van Moolenbroek fi 1599*00b67f09SDavid van Moolenbroek 1600*00b67f09SDavid van Moolenbroek AC_CHECK_FUNCS(EVP_sha256 EVP_sha384 EVP_sha512) 1601*00b67f09SDavid van Moolenbroek 1602*00b67f09SDavid van Moolenbroek AC_MSG_CHECKING(for OpenSSL ECDSA support) 1603*00b67f09SDavid van Moolenbroek have_ecdsa="" 1604*00b67f09SDavid van Moolenbroek AC_TRY_RUN([ 1605*00b67f09SDavid van Moolenbroek#include <openssl/ecdsa.h> 1606*00b67f09SDavid van Moolenbroek#include <openssl/objects.h> 1607*00b67f09SDavid van Moolenbroekint main() { 1608*00b67f09SDavid van Moolenbroek EC_KEY *ec256, *ec384; 1609*00b67f09SDavid van Moolenbroek 1610*00b67f09SDavid van Moolenbroek#if !defined(HAVE_EVP_SHA256) || !defined(HAVE_EVP_SHA384) 1611*00b67f09SDavid van Moolenbroek return (1); 1612*00b67f09SDavid van Moolenbroek#endif 1613*00b67f09SDavid van Moolenbroek ec256 = EC_KEY_new_by_curve_name(NID_X9_62_prime256v1); 1614*00b67f09SDavid van Moolenbroek ec384 = EC_KEY_new_by_curve_name(NID_secp384r1); 1615*00b67f09SDavid van Moolenbroek if (ec256 == NULL || ec384 == NULL) 1616*00b67f09SDavid van Moolenbroek return (2); 1617*00b67f09SDavid van Moolenbroek return (0); 1618*00b67f09SDavid van Moolenbroek} 1619*00b67f09SDavid van Moolenbroek], 1620*00b67f09SDavid van Moolenbroek [AC_MSG_RESULT(yes) 1621*00b67f09SDavid van Moolenbroek have_ecdsa="yes"], 1622*00b67f09SDavid van Moolenbroek [AC_MSG_RESULT(no) 1623*00b67f09SDavid van Moolenbroek have_ecdsa="no"], 1624*00b67f09SDavid van Moolenbroek [AC_MSG_RESULT(using --with-ecdsa)]) 1625*00b67f09SDavid van Moolenbroek case "$with_ecdsa" in 1626*00b67f09SDavid van Moolenbroek yes) 1627*00b67f09SDavid van Moolenbroek case "$have_ecdsa" in 1628*00b67f09SDavid van Moolenbroek no) AC_MSG_ERROR([ecdsa not supported]) ;; 1629*00b67f09SDavid van Moolenbroek *) have_ecdsa=yes ;; 1630*00b67f09SDavid van Moolenbroek esac 1631*00b67f09SDavid van Moolenbroek ;; 1632*00b67f09SDavid van Moolenbroek no) 1633*00b67f09SDavid van Moolenbroek have_ecdsa=no ;; 1634*00b67f09SDavid van Moolenbroek *) 1635*00b67f09SDavid van Moolenbroek case "$have_ecdsa" in 1636*00b67f09SDavid van Moolenbroek yes|no) ;; 1637*00b67f09SDavid van Moolenbroek *) AC_MSG_ERROR([need --with-ecdsa=[[yes or no]]]) ;; 1638*00b67f09SDavid van Moolenbroek esac 1639*00b67f09SDavid van Moolenbroek ;; 1640*00b67f09SDavid van Moolenbroek esac 1641*00b67f09SDavid van Moolenbroek case $have_ecdsa in 1642*00b67f09SDavid van Moolenbroek yes) 1643*00b67f09SDavid van Moolenbroek OPENSSL_ECDSA="yes" 1644*00b67f09SDavid van Moolenbroek AC_DEFINE(HAVE_OPENSSL_ECDSA, 1, 1645*00b67f09SDavid van Moolenbroek [Define if your OpenSSL version supports ECDSA.]) 1646*00b67f09SDavid van Moolenbroek ;; 1647*00b67f09SDavid van Moolenbroek *) 1648*00b67f09SDavid van Moolenbroek ;; 1649*00b67f09SDavid van Moolenbroek esac 1650*00b67f09SDavid van Moolenbroek 1651*00b67f09SDavid van Moolenbroek AC_MSG_CHECKING(for OpenSSL GOST support) 1652*00b67f09SDavid van Moolenbroek have_gost="" 1653*00b67f09SDavid van Moolenbroek case "$use_pkcs11" in 1654*00b67f09SDavid van Moolenbroek auto|no) 1655*00b67f09SDavid van Moolenbroek ;; 1656*00b67f09SDavid van Moolenbroek *) 1657*00b67f09SDavid van Moolenbroek if $use_threads; then 1658*00b67f09SDavid van Moolenbroek CC="$CC -pthread" 1659*00b67f09SDavid van Moolenbroek fi 1660*00b67f09SDavid van Moolenbroek ;; 1661*00b67f09SDavid van Moolenbroek esac 1662*00b67f09SDavid van Moolenbroek AC_TRY_RUN([ 1663*00b67f09SDavid van Moolenbroek#include <openssl/conf.h> 1664*00b67f09SDavid van Moolenbroek#include <openssl/engine.h> 1665*00b67f09SDavid van Moolenbroekint main() { 1666*00b67f09SDavid van Moolenbroek#if (OPENSSL_VERSION_NUMBER >= 0x10000000L) 1667*00b67f09SDavid van Moolenbroek ENGINE *e; 1668*00b67f09SDavid van Moolenbroek EC_KEY *ek; 1669*00b67f09SDavid van Moolenbroek 1670*00b67f09SDavid van Moolenbroek ek = NULL; 1671*00b67f09SDavid van Moolenbroek OPENSSL_config(NULL); 1672*00b67f09SDavid van Moolenbroek 1673*00b67f09SDavid van Moolenbroek e = ENGINE_by_id("gost"); 1674*00b67f09SDavid van Moolenbroek if (e == NULL) 1675*00b67f09SDavid van Moolenbroek return (1); 1676*00b67f09SDavid van Moolenbroek if (ENGINE_init(e) <= 0) 1677*00b67f09SDavid van Moolenbroek return (1); 1678*00b67f09SDavid van Moolenbroek return (0); 1679*00b67f09SDavid van Moolenbroek#else 1680*00b67f09SDavid van Moolenbroek return (1); 1681*00b67f09SDavid van Moolenbroek#endif 1682*00b67f09SDavid van Moolenbroek} 1683*00b67f09SDavid van Moolenbroek], 1684*00b67f09SDavid van Moolenbroek [AC_MSG_RESULT(yes) 1685*00b67f09SDavid van Moolenbroek have_gost="yes"], 1686*00b67f09SDavid van Moolenbroek [AC_MSG_RESULT(no) 1687*00b67f09SDavid van Moolenbroek have_gost="no"], 1688*00b67f09SDavid van Moolenbroek [AC_MSG_RESULT(using --with-gost)]) 1689*00b67f09SDavid van Moolenbroek case "$with_gost" in 1690*00b67f09SDavid van Moolenbroek yes) 1691*00b67f09SDavid van Moolenbroek case "$have_gost" in 1692*00b67f09SDavid van Moolenbroek no) AC_MSG_ERROR([gost not supported]) ;; 1693*00b67f09SDavid van Moolenbroek *) have_gost=yes ;; 1694*00b67f09SDavid van Moolenbroek esac 1695*00b67f09SDavid van Moolenbroek ;; 1696*00b67f09SDavid van Moolenbroek no) 1697*00b67f09SDavid van Moolenbroek have_gost=no ;; 1698*00b67f09SDavid van Moolenbroek *) 1699*00b67f09SDavid van Moolenbroek case "$have_gost" in 1700*00b67f09SDavid van Moolenbroek yes|no) ;; 1701*00b67f09SDavid van Moolenbroek *) AC_MSG_ERROR([need --with-gost=[[yes, no, raw or asn1]]]) ;; 1702*00b67f09SDavid van Moolenbroek esac 1703*00b67f09SDavid van Moolenbroek ;; 1704*00b67f09SDavid van Moolenbroek esac 1705*00b67f09SDavid van Moolenbroek case $have_gost in 1706*00b67f09SDavid van Moolenbroek yes) 1707*00b67f09SDavid van Moolenbroek OPENSSL_GOST="yes" 1708*00b67f09SDavid van Moolenbroek OPENSSLGOSTLINKOBJS='${OPENSSLGOSTLINKOBJS}' 1709*00b67f09SDavid van Moolenbroek OPENSSLGOSTLINKSRCS='${OPENSSLGOSTLINKSRCS}' 1710*00b67f09SDavid van Moolenbroek AC_DEFINE(HAVE_OPENSSL_GOST, 1, 1711*00b67f09SDavid van Moolenbroek [Define if your OpenSSL version supports GOST.]) 1712*00b67f09SDavid van Moolenbroek ;; 1713*00b67f09SDavid van Moolenbroek *) 1714*00b67f09SDavid van Moolenbroek ;; 1715*00b67f09SDavid van Moolenbroek esac 1716*00b67f09SDavid van Moolenbroek 1717*00b67f09SDavid van Moolenbroek have_aes="no" 1718*00b67f09SDavid van Moolenbroek AC_MSG_CHECKING(for OpenSSL AES support) 1719*00b67f09SDavid van Moolenbroek AC_TRY_RUN([ 1720*00b67f09SDavid van Moolenbroek#include <openssl/evp.h> 1721*00b67f09SDavid van Moolenbroekint main() { 1722*00b67f09SDavid van Moolenbroek EVP_CIPHER *aes128, *aes192, *aes256; 1723*00b67f09SDavid van Moolenbroek 1724*00b67f09SDavid van Moolenbroek aes128 = EVP_aes_128_ecb(); 1725*00b67f09SDavid van Moolenbroek aes192 = EVP_aes_192_ecb(); 1726*00b67f09SDavid van Moolenbroek aes256 = EVP_aes_256_ecb(); 1727*00b67f09SDavid van Moolenbroek if (aes128 == NULL || aes192 == NULL || aes256 == NULL) 1728*00b67f09SDavid van Moolenbroek return (1); 1729*00b67f09SDavid van Moolenbroek return (0); 1730*00b67f09SDavid van Moolenbroek} 1731*00b67f09SDavid van Moolenbroek], 1732*00b67f09SDavid van Moolenbroek [AC_MSG_RESULT(yes) 1733*00b67f09SDavid van Moolenbroek have_aes="evp"], 1734*00b67f09SDavid van Moolenbroek [AC_CHECK_FUNC(AES_encrypt, 1735*00b67f09SDavid van Moolenbroek [AC_MSG_RESULT(yes) 1736*00b67f09SDavid van Moolenbroek have_aes="yes"], 1737*00b67f09SDavid van Moolenbroek [AC_MSG_RESULT(no)])], 1738*00b67f09SDavid van Moolenbroek [AC_MSG_RESULT(using --with-aes)]) 1739*00b67f09SDavid van Moolenbroek 1740*00b67f09SDavid van Moolenbroek ISC_OPENSSL_INC="" 1741*00b67f09SDavid van Moolenbroek ISC_OPENSSL_LIBS="" 1742*00b67f09SDavid van Moolenbroek if test "$with_aes" = "yes" 1743*00b67f09SDavid van Moolenbroek then 1744*00b67f09SDavid van Moolenbroek case "$have_aes" in 1745*00b67f09SDavid van Moolenbroek evp) 1746*00b67f09SDavid van Moolenbroek AC_DEFINE(HAVE_OPENSSL_EVP_AES, 1, 1747*00b67f09SDavid van Moolenbroek [Define if your OpenSSL version supports EVP AES]) 1748*00b67f09SDavid van Moolenbroek ISC_OPENSSL_INC="$DST_OPENSSL_INC" 1749*00b67f09SDavid van Moolenbroek ISC_OPENSSL_LIBS="$DST_OPENSSL_LIBS" 1750*00b67f09SDavid van Moolenbroek ;; 1751*00b67f09SDavid van Moolenbroek yes) 1752*00b67f09SDavid van Moolenbroek AC_DEFINE(HAVE_OPENSSL_AES, 1, 1753*00b67f09SDavid van Moolenbroek [Define if your OpenSSL version supports AES]) 1754*00b67f09SDavid van Moolenbroek ISC_OPENSSL_INC="$DST_OPENSSL_INC" 1755*00b67f09SDavid van Moolenbroek ISC_OPENSSL_LIBS="$DST_OPENSSL_LIBS" 1756*00b67f09SDavid van Moolenbroek ;; 1757*00b67f09SDavid van Moolenbroek *) 1758*00b67f09SDavid van Moolenbroek ;; 1759*00b67f09SDavid van Moolenbroek esac 1760*00b67f09SDavid van Moolenbroek fi 1761*00b67f09SDavid van Moolenbroek 1762*00b67f09SDavid van Moolenbroek CC="$saved_cc" 1763*00b67f09SDavid van Moolenbroek CFLAGS="$saved_cflags" 1764*00b67f09SDavid van Moolenbroek LIBS="$saved_libs" 1765*00b67f09SDavid van Moolenbroek OPENSSLLINKOBJS='${OPENSSLLINKOBJS}' 1766*00b67f09SDavid van Moolenbroek OPENSSLLINKSRCS='${OPENSSLLINKSRCS}' 1767*00b67f09SDavid van Moolenbroek 1768*00b67f09SDavid van Moolenbroek ;; 1769*00b67f09SDavid van Moolenbroekesac 1770*00b67f09SDavid van Moolenbroek 1771*00b67f09SDavid van Moolenbroek# 1772*00b67f09SDavid van Moolenbroek# This would include the system openssl path (and linker options to use 1773*00b67f09SDavid van Moolenbroek# it as needed) if it is found. 1774*00b67f09SDavid van Moolenbroek# 1775*00b67f09SDavid van Moolenbroek 1776*00b67f09SDavid van MoolenbroekAC_SUBST(DST_OPENSSL_INC) 1777*00b67f09SDavid van MoolenbroekAC_SUBST(OPENSSLGOSTLINKOBJS) 1778*00b67f09SDavid van MoolenbroekAC_SUBST(OPENSSLGOSTLINKSRCS) 1779*00b67f09SDavid van MoolenbroekAC_SUBST(OPENSSLLINKOBJS) 1780*00b67f09SDavid van MoolenbroekAC_SUBST(OPENSSLLINKSRCS) 1781*00b67f09SDavid van MoolenbroekAC_SUBST(OPENSSL_ECDSA) 1782*00b67f09SDavid van MoolenbroekAC_SUBST(OPENSSL_GOST) 1783*00b67f09SDavid van Moolenbroek 1784*00b67f09SDavid van MoolenbroekDNS_CRYPTO_LIBS="$DNS_CRYPTO_LIBS $DST_OPENSSL_LIBS" 1785*00b67f09SDavid van Moolenbroek 1786*00b67f09SDavid van MoolenbroekISC_PLATFORM_WANTAES="#undef ISC_PLATFORM_WANTAES" 1787*00b67f09SDavid van Moolenbroekif test "$with_aes" = "yes" 1788*00b67f09SDavid van Moolenbroekthen 1789*00b67f09SDavid van Moolenbroek if test "X$CRYPTO" = "X" 1790*00b67f09SDavid van Moolenbroek then 1791*00b67f09SDavid van Moolenbroek with_aes="no" 1792*00b67f09SDavid van Moolenbroek fi 1793*00b67f09SDavid van Moolenbroekfi 1794*00b67f09SDavid van Moolenbroekif test "$with_aes" = "yes" 1795*00b67f09SDavid van Moolenbroekthen 1796*00b67f09SDavid van Moolenbroek ISC_PLATFORM_WANTAES="#define ISC_PLATFORM_WANTAES 1" 1797*00b67f09SDavid van Moolenbroekfi 1798*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_PLATFORM_WANTAES) 1799*00b67f09SDavid van Moolenbroek 1800*00b67f09SDavid van Moolenbroek# 1801*00b67f09SDavid van Moolenbroek# Choose SIT algorithm 1802*00b67f09SDavid van Moolenbroek# 1803*00b67f09SDavid van Moolenbroek 1804*00b67f09SDavid van Moolenbroekif test "$enable_sit" = "yes" 1805*00b67f09SDavid van Moolenbroekthen 1806*00b67f09SDavid van Moolenbroek AC_MSG_CHECKING(for the Algorithm for SIT) 1807*00b67f09SDavid van Moolenbroek if test "$with_sit_alg" = "auto" 1808*00b67f09SDavid van Moolenbroek then 1809*00b67f09SDavid van Moolenbroek if test "$with_aes" = "yes" 1810*00b67f09SDavid van Moolenbroek then 1811*00b67f09SDavid van Moolenbroek with_sit_alg="aes" 1812*00b67f09SDavid van Moolenbroek else 1813*00b67f09SDavid van Moolenbroek with_sit_alg="sha256" 1814*00b67f09SDavid van Moolenbroek fi 1815*00b67f09SDavid van Moolenbroek fi 1816*00b67f09SDavid van Moolenbroekfi 1817*00b67f09SDavid van Moolenbroekcase $with_sit_alg in 1818*00b67f09SDavid van Moolenbroek sha1) 1819*00b67f09SDavid van Moolenbroek if test "$enable_sit" != "yes" 1820*00b67f09SDavid van Moolenbroek then 1821*00b67f09SDavid van Moolenbroek AC_MSG_ERROR("with-sit-alg requires enable-sit"); 1822*00b67f09SDavid van Moolenbroek fi 1823*00b67f09SDavid van Moolenbroek AC_MSG_RESULT(sha1) 1824*00b67f09SDavid van Moolenbroek if test "$CRYPTO" = "-DOPENSSL" 1825*00b67f09SDavid van Moolenbroek then 1826*00b67f09SDavid van Moolenbroek if test "$want_openssl_hash" = "checksit" 1827*00b67f09SDavid van Moolenbroek then 1828*00b67f09SDavid van Moolenbroek want_openssl_hash="yes" 1829*00b67f09SDavid van Moolenbroek fi 1830*00b67f09SDavid van Moolenbroek fi 1831*00b67f09SDavid van Moolenbroek AC_DEFINE(HMAC_SHA1_SIT, 1, 1832*00b67f09SDavid van Moolenbroek [Use HMAC-SHA1 for Source Identity Token generation]) 1833*00b67f09SDavid van Moolenbroek ;; 1834*00b67f09SDavid van Moolenbroek sha256) 1835*00b67f09SDavid van Moolenbroek if test "$enable_sit" != "yes" 1836*00b67f09SDavid van Moolenbroek then 1837*00b67f09SDavid van Moolenbroek AC_MSG_ERROR("with-sit-alg requires enable-sit"); 1838*00b67f09SDavid van Moolenbroek fi 1839*00b67f09SDavid van Moolenbroek AC_MSG_RESULT(sha256) 1840*00b67f09SDavid van Moolenbroek if test "$CRYPTO" = "-DOPENSSL" 1841*00b67f09SDavid van Moolenbroek then 1842*00b67f09SDavid van Moolenbroek if test "$want_openssl_hash" = "checksit" 1843*00b67f09SDavid van Moolenbroek then 1844*00b67f09SDavid van Moolenbroek want_openssl_hash="yes" 1845*00b67f09SDavid van Moolenbroek fi 1846*00b67f09SDavid van Moolenbroek fi 1847*00b67f09SDavid van Moolenbroek AC_DEFINE(HMAC_SHA256_SIT, 1, 1848*00b67f09SDavid van Moolenbroek [Use HMAC-SHA256 for Source Identity Token generation]) 1849*00b67f09SDavid van Moolenbroek ;; 1850*00b67f09SDavid van Moolenbroek aes) 1851*00b67f09SDavid van Moolenbroek if test "$enable_sit" != "yes" 1852*00b67f09SDavid van Moolenbroek then 1853*00b67f09SDavid van Moolenbroek AC_MSG_ERROR("with-sit-alg requires enable-sit"); 1854*00b67f09SDavid van Moolenbroek fi 1855*00b67f09SDavid van Moolenbroek AC_MSG_RESULT(aes) 1856*00b67f09SDavid van Moolenbroek if test "$with_aes" != "yes" 1857*00b67f09SDavid van Moolenbroek then 1858*00b67f09SDavid van Moolenbroek AC_MSG_ERROR("SIT wants to use unavailable AES"); 1859*00b67f09SDavid van Moolenbroek fi 1860*00b67f09SDavid van Moolenbroek AC_DEFINE(AES_SIT, 1, 1861*00b67f09SDavid van Moolenbroek [Use AES for Source Identity Token generation]) 1862*00b67f09SDavid van Moolenbroek ;; 1863*00b67f09SDavid van Moolenbroekesac 1864*00b67f09SDavid van Moolenbroekif test "$want_openssl_hash" = "checksit" 1865*00b67f09SDavid van Moolenbroekthen 1866*00b67f09SDavid van Moolenbroek want_openssl_hash="no" 1867*00b67f09SDavid van Moolenbroekfi 1868*00b67f09SDavid van Moolenbroek 1869*00b67f09SDavid van Moolenbroek# 1870*00b67f09SDavid van Moolenbroek# Use OpenSSL for hash functions 1871*00b67f09SDavid van Moolenbroek# 1872*00b67f09SDavid van Moolenbroek 1873*00b67f09SDavid van MoolenbroekAC_MSG_CHECKING(for using OpenSSL for hash functions) 1874*00b67f09SDavid van MoolenbroekISC_PLATFORM_OPENSSLHASH="#undef ISC_PLATFORM_OPENSSLHASH" 1875*00b67f09SDavid van Moolenbroekcase $want_openssl_hash in 1876*00b67f09SDavid van Moolenbroek yes) 1877*00b67f09SDavid van Moolenbroek if test "$CRYPTO" != "-DOPENSSL" 1878*00b67f09SDavid van Moolenbroek then 1879*00b67f09SDavid van Moolenbroek AC_MSG_ERROR([No OpenSSL for hash functions]) 1880*00b67f09SDavid van Moolenbroek fi 1881*00b67f09SDavid van Moolenbroek AC_MSG_RESULT(yes) 1882*00b67f09SDavid van Moolenbroek ISC_PLATFORM_OPENSSLHASH="#define ISC_PLATFORM_OPENSSLHASH 1" 1883*00b67f09SDavid van Moolenbroek ISC_OPENSSL_INC="$DST_OPENSSL_INC" 1884*00b67f09SDavid van Moolenbroek ISC_OPENSSL_LIBS="$DST_OPENSSL_LIBS" 1885*00b67f09SDavid van Moolenbroek saved_cflags="$CFLAGS" 1886*00b67f09SDavid van Moolenbroek save_libs="$LIBS" 1887*00b67f09SDavid van Moolenbroek CFLAGS="$CFLAGS $ISC_OPENSSL_INC" 1888*00b67f09SDavid van Moolenbroek LIBS="$LIBS $ISC_OPENSSL_LIBS" 1889*00b67f09SDavid van Moolenbroek AC_MSG_CHECKING([HMAC_Init() return type]) 1890*00b67f09SDavid van Moolenbroek AC_TRY_COMPILE([ 1891*00b67f09SDavid van Moolenbroek #include <openssl/hmac.h>],[ 1892*00b67f09SDavid van Moolenbroek HMAC_CTX ctx; 1893*00b67f09SDavid van Moolenbroek int n = HMAC_Init(&ctx, NULL, 0, NULL); 1894*00b67f09SDavid van Moolenbroek n += HMAC_Update(&ctx, NULL, 0); 1895*00b67f09SDavid van Moolenbroek n += HMAC_Final(&ctx, NULL, NULL);],[ 1896*00b67f09SDavid van Moolenbroek AC_MSG_RESULT(int) 1897*00b67f09SDavid van Moolenbroek AC_DEFINE(HMAC_RETURN_INT, 1, [HMAC_*() return ints])],[ 1898*00b67f09SDavid van Moolenbroek AC_MSG_RESULT(void)]) 1899*00b67f09SDavid van Moolenbroek CFLAGS="$saved_cflags" 1900*00b67f09SDavid van Moolenbroek LIBS="$save_libs" 1901*00b67f09SDavid van Moolenbroek ;; 1902*00b67f09SDavid van Moolenbroek no) 1903*00b67f09SDavid van Moolenbroek AC_MSG_RESULT(no) 1904*00b67f09SDavid van Moolenbroek ;; 1905*00b67f09SDavid van Moolenbroekesac 1906*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_PLATFORM_OPENSSLHASH) 1907*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_OPENSSL_INC) 1908*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_OPENSSL_LIBS) 1909*00b67f09SDavid van Moolenbroek 1910*00b67f09SDavid van Moolenbroek# 1911*00b67f09SDavid van Moolenbroek# PKCS11 (aka crypto hardware) support (--with moved just after openssl) 1912*00b67f09SDavid van Moolenbroek# 1913*00b67f09SDavid van MoolenbroekAC_MSG_CHECKING(for PKCS11 support) 1914*00b67f09SDavid van Moolenbroek 1915*00b67f09SDavid van Moolenbroekif test "$use_pkcs11" = "auto" 1916*00b67f09SDavid van Moolenbroekthen 1917*00b67f09SDavid van Moolenbroek if test "$want_native_pkcs11" = "yes" 1918*00b67f09SDavid van Moolenbroek then 1919*00b67f09SDavid van Moolenbroek use_pkcs11="yes" 1920*00b67f09SDavid van Moolenbroek else 1921*00b67f09SDavid van Moolenbroek use_pkcs11="no" 1922*00b67f09SDavid van Moolenbroek fi 1923*00b67f09SDavid van Moolenbroekfi 1924*00b67f09SDavid van Moolenbroek 1925*00b67f09SDavid van Moolenbroekcase "$use_pkcs11" in 1926*00b67f09SDavid van Moolenbroek no) 1927*00b67f09SDavid van Moolenbroek AC_MSG_RESULT(no) 1928*00b67f09SDavid van Moolenbroek USE_PKCS11="" 1929*00b67f09SDavid van Moolenbroek PKCS11_TEST="" 1930*00b67f09SDavid van Moolenbroek PKCS11_TOOLS="" 1931*00b67f09SDavid van Moolenbroek ISC_PK11_C="" 1932*00b67f09SDavid van Moolenbroek ISC_PK11_O="" 1933*00b67f09SDavid van Moolenbroek ISC_PK11_API_C="" 1934*00b67f09SDavid van Moolenbroek ISC_PK11_API_O="" 1935*00b67f09SDavid van Moolenbroek ISC_PK11_RESULT_C="" 1936*00b67f09SDavid van Moolenbroek ISC_PK11_RESULT_O="" 1937*00b67f09SDavid van Moolenbroek ISC_ISCPK11_API_C="" 1938*00b67f09SDavid van Moolenbroek ISC_ISCPK11_API_O="" 1939*00b67f09SDavid van Moolenbroek ;; 1940*00b67f09SDavid van Moolenbroek yes|*) 1941*00b67f09SDavid van Moolenbroek AC_MSG_RESULT(yes) 1942*00b67f09SDavid van Moolenbroek if ! $use_threads; then 1943*00b67f09SDavid van Moolenbroek AC_MSG_ERROR([PKCS11 requires thread support]) 1944*00b67f09SDavid van Moolenbroek fi 1945*00b67f09SDavid van Moolenbroek if test "$CRYPTO" = "-DOPENSSL" 1946*00b67f09SDavid van Moolenbroek then 1947*00b67f09SDavid van Moolenbroek AC_MSG_CHECKING(for OpenSSL with PKCS11 support) 1948*00b67f09SDavid van Moolenbroek saved_cc="$CC" 1949*00b67f09SDavid van Moolenbroek saved_cflags="$CFLAGS" 1950*00b67f09SDavid van Moolenbroek saved_libs="$LIBS" 1951*00b67f09SDavid van Moolenbroek CC="$CC -pthread" 1952*00b67f09SDavid van Moolenbroek CFLAGS="$CFLAGS $DST_OPENSSL_INC" 1953*00b67f09SDavid van Moolenbroek LIBS="$LIBS $DST_OPENSSL_LIBS" 1954*00b67f09SDavid van Moolenbroek AC_TRY_RUN([ 1955*00b67f09SDavid van Moolenbroek#include <openssl/conf.h> 1956*00b67f09SDavid van Moolenbroek#include <openssl/engine.h> 1957*00b67f09SDavid van Moolenbroekint main() { 1958*00b67f09SDavid van Moolenbroek ENGINE *e; 1959*00b67f09SDavid van Moolenbroek 1960*00b67f09SDavid van Moolenbroek OPENSSL_config(NULL); 1961*00b67f09SDavid van Moolenbroek e = ENGINE_by_id("pkcs11"); 1962*00b67f09SDavid van Moolenbroek if (e == NULL) 1963*00b67f09SDavid van Moolenbroek return (1); 1964*00b67f09SDavid van Moolenbroek if (ENGINE_init(e) <= 0) 1965*00b67f09SDavid van Moolenbroek return (1); 1966*00b67f09SDavid van Moolenbroek return (0); 1967*00b67f09SDavid van Moolenbroek} 1968*00b67f09SDavid van Moolenbroek], 1969*00b67f09SDavid van Moolenbroek [AC_MSG_RESULT(yes) 1970*00b67f09SDavid van Moolenbroek PKCS11_TEST=pkcs11ssl 1971*00b67f09SDavid van Moolenbroek PKCS11_ENGINE='-DPKCS11_ENGINE="\"pkcs11\""'], 1972*00b67f09SDavid van Moolenbroek [AC_MSG_RESULT(no) 1973*00b67f09SDavid van Moolenbroek PKCS11_TEST='' 1974*00b67f09SDavid van Moolenbroek PKCS11_ENGINE='-DPKCS11_ENGINE=NULL'], 1975*00b67f09SDavid van Moolenbroek [AC_MSG_RESULT(cross compile, defaulting to no) 1976*00b67f09SDavid van Moolenbroek PKCS11_TEST='' 1977*00b67f09SDavid van Moolenbroek PKCS11_ENGINE='-DPKCS11_ENGINE=NULL']) 1978*00b67f09SDavid van Moolenbroek CC="$saved_cc" 1979*00b67f09SDavid van Moolenbroek CFLAGS="$saved_cflags" 1980*00b67f09SDavid van Moolenbroek LIBS="$saved_libs" 1981*00b67f09SDavid van Moolenbroek else 1982*00b67f09SDavid van Moolenbroek PKCS11_TEST='' 1983*00b67f09SDavid van Moolenbroek PKCS11_ENGINE='-DPKCS11_ENGINE=NULL' 1984*00b67f09SDavid van Moolenbroek 1985*00b67f09SDavid van Moolenbroek fi 1986*00b67f09SDavid van Moolenbroek USE_PKCS11='-DUSE_PKCS11' 1987*00b67f09SDavid van Moolenbroek PKCS11_TOOLS=pkcs11 1988*00b67f09SDavid van Moolenbroek AC_CHECK_FUNC(getpassphrase, AC_DEFINE(HAVE_GETPASSPHRASE),) 1989*00b67f09SDavid van Moolenbroek ISC_PK11_C="pk11.c" 1990*00b67f09SDavid van Moolenbroek ISC_PK11_O="pk11.$O" 1991*00b67f09SDavid van Moolenbroek ISC_PK11_API_C="pk11_api.c" 1992*00b67f09SDavid van Moolenbroek ISC_PK11_API_O="pk11_api.$O" 1993*00b67f09SDavid van Moolenbroek ISC_PK11_RESULT_C="pk11_result.c" 1994*00b67f09SDavid van Moolenbroek ISC_PK11_RESULT_O="pk11_result.$O" 1995*00b67f09SDavid van Moolenbroek ISC_ISCPK11_API_C="unix/pk11_api.c" 1996*00b67f09SDavid van Moolenbroek ISC_ISCPK11_API_O="unix/pk11_api.$O" 1997*00b67f09SDavid van Moolenbroek ;; 1998*00b67f09SDavid van Moolenbroekesac 1999*00b67f09SDavid van MoolenbroekAC_SUBST(USE_PKCS11) 2000*00b67f09SDavid van MoolenbroekAC_SUBST(PKCS11_TOOLS) 2001*00b67f09SDavid van MoolenbroekAC_SUBST(PKCS11_ENGINE) 2002*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_PK11_C) 2003*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_PK11_O) 2004*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_PK11_API_C) 2005*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_PK11_API_O) 2006*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_PK11_RESULT_C) 2007*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_PK11_RESULT_O) 2008*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_ISCPK11_API_C) 2009*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_ISCPK11_API_O) 2010*00b67f09SDavid van Moolenbroek 2011*00b67f09SDavid van MoolenbroekAC_MSG_CHECKING(for PKCS11 tools) 2012*00b67f09SDavid van Moolenbroekcase "$use_pkcs11" in 2013*00b67f09SDavid van Moolenbroek no) 2014*00b67f09SDavid van Moolenbroek PKCS11_PROVIDER="undefined" 2015*00b67f09SDavid van Moolenbroek AC_MSG_RESULT(disabled) 2016*00b67f09SDavid van Moolenbroek ;; 2017*00b67f09SDavid van Moolenbroek yes|'') 2018*00b67f09SDavid van Moolenbroek PKCS11_PROVIDER="undefined" 2019*00b67f09SDavid van Moolenbroek AC_MSG_RESULT(enabled) 2020*00b67f09SDavid van Moolenbroek ;; 2021*00b67f09SDavid van Moolenbroek *) 2022*00b67f09SDavid van Moolenbroek PKCS11_PROVIDER="$use_pkcs11" 2023*00b67f09SDavid van Moolenbroek AC_MSG_RESULT([enabled, PKCS11 provider is $PKCS11_PROVIDER]) 2024*00b67f09SDavid van Moolenbroek ;; 2025*00b67f09SDavid van Moolenbroekesac 2026*00b67f09SDavid van Moolenbroek 2027*00b67f09SDavid van MoolenbroekAC_SUBST(PKCS11_PROVIDER) 2028*00b67f09SDavid van Moolenbroek 2029*00b67f09SDavid van MoolenbroekPKCS11_ECDSA="" 2030*00b67f09SDavid van MoolenbroekPKCS11_GOST="" 2031*00b67f09SDavid van MoolenbroekAC_MSG_CHECKING(for native PKCS11) 2032*00b67f09SDavid van Moolenbroek 2033*00b67f09SDavid van Moolenbroekcase "$want_native_pkcs11" in 2034*00b67f09SDavid van Moolenbroek yes) 2035*00b67f09SDavid van Moolenbroek AC_MSG_RESULT(using native PKCS11 crypto) 2036*00b67f09SDavid van Moolenbroek PKCS11LINKOBJS='${PKCS11LINKOBJS}' 2037*00b67f09SDavid van Moolenbroek PKCS11LINKSRCS='${PKCS11LINKSRCS}' 2038*00b67f09SDavid van Moolenbroek PKCS11_TEST=pkcs11 2039*00b67f09SDavid van Moolenbroek AC_MSG_CHECKING(for PKCS11 ECDSA) 2040*00b67f09SDavid van Moolenbroek case "$with_ecdsa" in 2041*00b67f09SDavid van Moolenbroek no) 2042*00b67f09SDavid van Moolenbroek AC_MSG_RESULT(disabled) 2043*00b67f09SDavid van Moolenbroek ;; 2044*00b67f09SDavid van Moolenbroek *) 2045*00b67f09SDavid van Moolenbroek AC_MSG_RESULT(enabled) 2046*00b67f09SDavid van Moolenbroek PKCS11_ECDSA="yes" 2047*00b67f09SDavid van Moolenbroek AC_DEFINE(HAVE_PKCS11_ECDSA, 1, 2048*00b67f09SDavid van Moolenbroek [Define if your PKCS11 provider supports ECDSA.]) 2049*00b67f09SDavid van Moolenbroek ;; 2050*00b67f09SDavid van Moolenbroek esac 2051*00b67f09SDavid van Moolenbroek AC_MSG_CHECKING(for PKCS11 GOST) 2052*00b67f09SDavid van Moolenbroek case "$with_gost" in 2053*00b67f09SDavid van Moolenbroek yes) 2054*00b67f09SDavid van Moolenbroek AC_MSG_RESULT(enabled) 2055*00b67f09SDavid van Moolenbroek PKCS11_GOST="yes" 2056*00b67f09SDavid van Moolenbroek AC_DEFINE(HAVE_PKCS11_GOST, 1, 2057*00b67f09SDavid van Moolenbroek [Define if your PKCS11 provider supports GOST.]) 2058*00b67f09SDavid van Moolenbroek ;; 2059*00b67f09SDavid van Moolenbroek *) 2060*00b67f09SDavid van Moolenbroek AC_MSG_RESULT(disabled) 2061*00b67f09SDavid van Moolenbroek ;; 2062*00b67f09SDavid van Moolenbroek esac 2063*00b67f09SDavid van Moolenbroek ;; 2064*00b67f09SDavid van Moolenbroek no|'') 2065*00b67f09SDavid van Moolenbroek AC_MSG_RESULT(disabled) 2066*00b67f09SDavid van Moolenbroek ;; 2067*00b67f09SDavid van Moolenbroekesac 2068*00b67f09SDavid van Moolenbroek 2069*00b67f09SDavid van MoolenbroekAC_SUBST(PKCS11LINKOBJS) 2070*00b67f09SDavid van MoolenbroekAC_SUBST(PKCS11LINKSRCS) 2071*00b67f09SDavid van MoolenbroekAC_SUBST(CRYPTO) 2072*00b67f09SDavid van MoolenbroekAC_SUBST(PKCS11_ECDSA) 2073*00b67f09SDavid van MoolenbroekAC_SUBST(PKCS11_GOST) 2074*00b67f09SDavid van MoolenbroekAC_SUBST(PKCS11_TEST) 2075*00b67f09SDavid van Moolenbroek 2076*00b67f09SDavid van Moolenbroek# for PKCS11 benchmarks 2077*00b67f09SDavid van Moolenbroek 2078*00b67f09SDavid van Moolenbroekhave_clock_gt=no 2079*00b67f09SDavid van MoolenbroekAC_CHECK_FUNC(clock_gettime,have_clock_gt=yes,) 2080*00b67f09SDavid van Moolenbroekif test "$have_clock_gt" = "no"; then 2081*00b67f09SDavid van Moolenbroek AC_CHECK_LIB(rt,clock_gettime,have_clock_gt=rt,) 2082*00b67f09SDavid van Moolenbroekfi 2083*00b67f09SDavid van Moolenbroek 2084*00b67f09SDavid van Moolenbroekif test "$have_clock_gt" != "no"; then 2085*00b67f09SDavid van Moolenbroek AC_DEFINE(HAVE_CLOCK_GETTIME, 1, [Define if clock_gettime is available.]) 2086*00b67f09SDavid van Moolenbroekfi 2087*00b67f09SDavid van Moolenbroek 2088*00b67f09SDavid van Moolenbroekif test "$have_clock_gt" = "rt"; then 2089*00b67f09SDavid van Moolenbroek LIBS="-lrt $LIBS" 2090*00b67f09SDavid van Moolenbroekfi 2091*00b67f09SDavid van Moolenbroek 2092*00b67f09SDavid van Moolenbroek# 2093*00b67f09SDavid van Moolenbroek# was --with-libxml2 specified? 2094*00b67f09SDavid van Moolenbroek# 2095*00b67f09SDavid van MoolenbroekAC_MSG_CHECKING(for libxml2 library) 2096*00b67f09SDavid van MoolenbroekAC_ARG_WITH(libxml2, 2097*00b67f09SDavid van Moolenbroek[ --with-libxml2[=PATH] build with libxml2 library [yes|no|path]], 2098*00b67f09SDavid van Moolenbroek use_libxml2="$withval", use_libxml2="auto") 2099*00b67f09SDavid van Moolenbroek 2100*00b67f09SDavid van Moolenbroekcase "$use_libxml2" in 2101*00b67f09SDavid van Moolenbroek no) 2102*00b67f09SDavid van Moolenbroek DST_LIBXML2_INC="" 2103*00b67f09SDavid van Moolenbroek ;; 2104*00b67f09SDavid van Moolenbroek auto|yes) 2105*00b67f09SDavid van Moolenbroek case X`(xml2-config --version) 2>/dev/null` in 2106*00b67f09SDavid van Moolenbroek X2.[[6789]].*) 2107*00b67f09SDavid van Moolenbroek libxml2_libs=`xml2-config --libs` 2108*00b67f09SDavid van Moolenbroek libxml2_cflags=`xml2-config --cflags` 2109*00b67f09SDavid van Moolenbroek ;; 2110*00b67f09SDavid van Moolenbroek *) 2111*00b67f09SDavid van Moolenbroek libxml2_libs= 2112*00b67f09SDavid van Moolenbroek libxml2_cflags= 2113*00b67f09SDavid van Moolenbroek ;; 2114*00b67f09SDavid van Moolenbroek esac 2115*00b67f09SDavid van Moolenbroek ;; 2116*00b67f09SDavid van Moolenbroek *) 2117*00b67f09SDavid van Moolenbroek if test -f "$use_libxml2/bin/xml2-config" ; then 2118*00b67f09SDavid van Moolenbroek libxml2_libs=`$use_libxml2/bin/xml2-config --libs` 2119*00b67f09SDavid van Moolenbroek libxml2_cflags=`$use_libxml2/bin/xml2-config --cflags` 2120*00b67f09SDavid van Moolenbroek fi 2121*00b67f09SDavid van Moolenbroek ;; 2122*00b67f09SDavid van Moolenbroekesac 2123*00b67f09SDavid van Moolenbroek 2124*00b67f09SDavid van Moolenbroekif test "X$libxml2_libs" != "X" 2125*00b67f09SDavid van Moolenbroekthen 2126*00b67f09SDavid van Moolenbroek CFLAGS="$CFLAGS $libxml2_cflags" 2127*00b67f09SDavid van Moolenbroek LIBS="$LIBS $libxml2_libs" 2128*00b67f09SDavid van Moolenbroek # 2129*00b67f09SDavid van Moolenbroek # Sanity check xml2-config output. 2130*00b67f09SDavid van Moolenbroek # 2131*00b67f09SDavid van Moolenbroek AC_TRY_LINK([#include <libxml/xmlwriter.h>], 2132*00b67f09SDavid van Moolenbroek [return(xmlTextWriterStartElement(NULL, NULL));], 2133*00b67f09SDavid van Moolenbroek AC_MSG_RESULT(yes), 2134*00b67f09SDavid van Moolenbroek AC_MSG_ERROR(xml2-config returns badness)) 2135*00b67f09SDavid van Moolenbroek AC_DEFINE(HAVE_LIBXML2, 1, [Define if libxml2 was found]) 2136*00b67f09SDavid van Moolenbroekelse 2137*00b67f09SDavid van Moolenbroek AC_MSG_RESULT(no) 2138*00b67f09SDavid van Moolenbroekfi 2139*00b67f09SDavid van Moolenbroek 2140*00b67f09SDavid van Moolenbroek# 2141*00b67f09SDavid van Moolenbroek# was --with-libjson specified? 2142*00b67f09SDavid van Moolenbroek# 2143*00b67f09SDavid van MoolenbroekAC_MSG_CHECKING(for json library) 2144*00b67f09SDavid van MoolenbroekAC_ARG_WITH(libjson, 2145*00b67f09SDavid van Moolenbroek[ --with-libjson[=PATH] build with libjson0 library [yes|no|path]], 2146*00b67f09SDavid van Moolenbroek use_libjson="$withval", use_libjson="auto") 2147*00b67f09SDavid van Moolenbroek 2148*00b67f09SDavid van Moolenbroekhave_libjson="" 2149*00b67f09SDavid van Moolenbroekcase "$use_libjson" in 2150*00b67f09SDavid van Moolenbroek no) 2151*00b67f09SDavid van Moolenbroek libjson_libs="" 2152*00b67f09SDavid van Moolenbroek ;; 2153*00b67f09SDavid van Moolenbroek auto|yes) 2154*00b67f09SDavid van Moolenbroek for d in /usr /usr/local /opt/local 2155*00b67f09SDavid van Moolenbroek do 2156*00b67f09SDavid van Moolenbroek if test -f "${d}/include/json/json.h" 2157*00b67f09SDavid van Moolenbroek then 2158*00b67f09SDavid van Moolenbroek libjson_cflags="-I ${d}/include/json" 2159*00b67f09SDavid van Moolenbroek if test ${d} != /usr 2160*00b67f09SDavid van Moolenbroek then 2161*00b67f09SDavid van Moolenbroek LIBS="$LIBS -L${d}/lib" 2162*00b67f09SDavid van Moolenbroek fi 2163*00b67f09SDavid van Moolenbroek have_libjson="yes" 2164*00b67f09SDavid van Moolenbroek elif test -f "${d}/include/json-c/json.h" 2165*00b67f09SDavid van Moolenbroek then 2166*00b67f09SDavid van Moolenbroek libjson_cflags="-I ${d}/include/json-c" 2167*00b67f09SDavid van Moolenbroek if test ${d} != /usr 2168*00b67f09SDavid van Moolenbroek then 2169*00b67f09SDavid van Moolenbroek LIBS="$LIBS -L${d}/lib" 2170*00b67f09SDavid van Moolenbroek fi 2171*00b67f09SDavid van Moolenbroek have_libjson="yes" 2172*00b67f09SDavid van Moolenbroek fi 2173*00b67f09SDavid van Moolenbroek done 2174*00b67f09SDavid van Moolenbroek ;; 2175*00b67f09SDavid van Moolenbroek *) 2176*00b67f09SDavid van Moolenbroek if test -f "${use_libjson}/include/json/json.h" 2177*00b67f09SDavid van Moolenbroek then 2178*00b67f09SDavid van Moolenbroek libjson_cflags="-I${use_libjson}/include/json" 2179*00b67f09SDavid van Moolenbroek LIBS="$LIBS -L${use_libjson}/lib" 2180*00b67f09SDavid van Moolenbroek have_libjson="yes" 2181*00b67f09SDavid van Moolenbroek elif test -f "${use_libjson}/include/json-c/json.h" 2182*00b67f09SDavid van Moolenbroek then 2183*00b67f09SDavid van Moolenbroek libjson_cflags="-I${use_libjson}/include/json-c" 2184*00b67f09SDavid van Moolenbroek LIBS="$LIBS -L${use_libjson}/lib" 2185*00b67f09SDavid van Moolenbroek have_libjson="yes" 2186*00b67f09SDavid van Moolenbroek else 2187*00b67f09SDavid van Moolenbroek AC_MSG_ERROR([$use_libjson/include/json{,-c}/json.h not found.]) 2188*00b67f09SDavid van Moolenbroek fi 2189*00b67f09SDavid van Moolenbroek ;; 2190*00b67f09SDavid van Moolenbroekesac 2191*00b67f09SDavid van Moolenbroek 2192*00b67f09SDavid van Moolenbroekif test "X${have_libjson}" != "X" 2193*00b67f09SDavid van Moolenbroekthen 2194*00b67f09SDavid van Moolenbroek AC_MSG_RESULT(yes) 2195*00b67f09SDavid van Moolenbroek AC_SEARCH_LIBS([json_object_new_int64], [json json-c], [], 2196*00b67f09SDavid van Moolenbroek [AC_MSG_ERROR([found libjson include but not library.]) 2197*00b67f09SDavid van Moolenbroek have_libjson=""]) 2198*00b67f09SDavid van Moolenbroekelif test "X$use_libjson" = Xyes 2199*00b67f09SDavid van Moolenbroekthen 2200*00b67f09SDavid van Moolenbroek AC_MSG_ERROR([include/json{,-c}/json.h not found.]) 2201*00b67f09SDavid van Moolenbroekelse 2202*00b67f09SDavid van Moolenbroek AC_MSG_RESULT(no) 2203*00b67f09SDavid van Moolenbroekfi 2204*00b67f09SDavid van Moolenbroek 2205*00b67f09SDavid van Moolenbroekif test "X${have_libjson}" != "X" 2206*00b67f09SDavid van Moolenbroekthen 2207*00b67f09SDavid van Moolenbroek CFLAGS="$CFLAGS $libjson_cflags" 2208*00b67f09SDavid van Moolenbroek AC_DEFINE(HAVE_JSON, 1, [Define if libjson was found]) 2209*00b67f09SDavid van Moolenbroekfi 2210*00b67f09SDavid van Moolenbroek 2211*00b67f09SDavid van Moolenbroek# 2212*00b67f09SDavid van Moolenbroek# In solaris 10, SMF can manage named service 2213*00b67f09SDavid van Moolenbroek# 2214*00b67f09SDavid van MoolenbroekAC_CHECK_LIB(scf, smf_enable_instance) 2215*00b67f09SDavid van Moolenbroek 2216*00b67f09SDavid van Moolenbroek# 2217*00b67f09SDavid van Moolenbroek# flockfile is usually provided by pthreads, but we may want to use it 2218*00b67f09SDavid van Moolenbroek# even if compiled with --disable-threads. getc_unlocked might also not 2219*00b67f09SDavid van Moolenbroek# be defined. 2220*00b67f09SDavid van Moolenbroek# 2221*00b67f09SDavid van MoolenbroekAC_CHECK_FUNC(flockfile, AC_DEFINE(HAVE_FLOCKFILE),) 2222*00b67f09SDavid van MoolenbroekAC_CHECK_FUNC(getc_unlocked, AC_DEFINE(HAVE_GETCUNLOCKED),) 2223*00b67f09SDavid van Moolenbroek 2224*00b67f09SDavid van Moolenbroek# 2225*00b67f09SDavid van Moolenbroek# Indicate what the final decision was regarding threads. 2226*00b67f09SDavid van Moolenbroek# 2227*00b67f09SDavid van MoolenbroekAC_MSG_CHECKING(whether to build with threads) 2228*00b67f09SDavid van Moolenbroekif $use_threads; then 2229*00b67f09SDavid van Moolenbroek AC_MSG_RESULT(yes) 2230*00b67f09SDavid van Moolenbroekelse 2231*00b67f09SDavid van Moolenbroek AC_MSG_RESULT(no) 2232*00b67f09SDavid van Moolenbroekfi 2233*00b67f09SDavid van Moolenbroek 2234*00b67f09SDavid van Moolenbroek# 2235*00b67f09SDavid van Moolenbroek# End of pthreads stuff. 2236*00b67f09SDavid van Moolenbroek# 2237*00b67f09SDavid van Moolenbroek 2238*00b67f09SDavid van Moolenbroek# 2239*00b67f09SDavid van Moolenbroek# Large File 2240*00b67f09SDavid van Moolenbroek# 2241*00b67f09SDavid van MoolenbroekAC_ARG_ENABLE(largefile, [ --enable-largefile 64-bit file support], 2242*00b67f09SDavid van Moolenbroek want_largefile="yes", want_largefile="no") 2243*00b67f09SDavid van Moolenbroekcase $want_largefile in 2244*00b67f09SDavid van Moolenbroek yes) 2245*00b67f09SDavid van Moolenbroek ALWAYS_DEFINES="$ALWAYS_DEFINES -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64" 2246*00b67f09SDavid van Moolenbroek ;; 2247*00b67f09SDavid van Moolenbroek *) 2248*00b67f09SDavid van Moolenbroek ;; 2249*00b67f09SDavid van Moolenbroekesac 2250*00b67f09SDavid van Moolenbroek 2251*00b67f09SDavid van Moolenbroek# 2252*00b67f09SDavid van Moolenbroek# Additional compiler settings. 2253*00b67f09SDavid van Moolenbroek# 2254*00b67f09SDavid van MoolenbroekMKDEPCC="$CC" 2255*00b67f09SDavid van MoolenbroekMKDEPCFLAGS="-M" 2256*00b67f09SDavid van MoolenbroekIRIX_DNSSEC_WARNINGS_HACK="" 2257*00b67f09SDavid van Moolenbroek 2258*00b67f09SDavid van Moolenbroekif test "X$GCC" = "Xyes"; then 2259*00b67f09SDavid van Moolenbroek STD_CWARNINGS="$STD_CWARNINGS -W -Wall -Wmissing-prototypes -Wcast-qual -Wwrite-strings -Wformat -Wpointer-arith" 2260*00b67f09SDavid van Moolenbroek AC_MSG_CHECKING(if "$CC" supports -fno-strict-aliasing) 2261*00b67f09SDavid van Moolenbroek SAVE_CFLAGS="$CFLAGS" 2262*00b67f09SDavid van Moolenbroek CFLAGS="$CFLAGS -fno-strict-aliasing" 2263*00b67f09SDavid van Moolenbroek AC_TRY_COMPILE(,, [FNOSTRICTALIASING=yes],[FNOSTRICTALIASING=no]) 2264*00b67f09SDavid van Moolenbroek CFLAGS="$SAVE_CFLAGS" 2265*00b67f09SDavid van Moolenbroek if test "$FNOSTRICTALIASING" = "yes"; then 2266*00b67f09SDavid van Moolenbroek AC_MSG_RESULT(yes) 2267*00b67f09SDavid van Moolenbroek STD_CWARNINGS="$STD_CWARNINGS -fno-strict-aliasing" 2268*00b67f09SDavid van Moolenbroek else 2269*00b67f09SDavid van Moolenbroek AC_MSG_RESULT(no) 2270*00b67f09SDavid van Moolenbroek fi 2271*00b67f09SDavid van Moolenbroek # 2272*00b67f09SDavid van Moolenbroek # turn off delete null pointer checks 2273*00b67f09SDavid van Moolenbroek # 2274*00b67f09SDavid van Moolenbroek AC_MSG_CHECKING(if "$CC" supports -fno-delete-null-pointer-checks) 2275*00b67f09SDavid van Moolenbroek SAVE_CFLAGS="$CFLAGS" 2276*00b67f09SDavid van Moolenbroek CFLAGS="$CFLAGS -fno-delete-null-pointer-checks" 2277*00b67f09SDavid van Moolenbroek AC_TRY_COMPILE(,, [FNODELETENULLPOINTERCHECKS=yes], 2278*00b67f09SDavid van Moolenbroek [FNODELETENULLPOINTERCHECKS=no]) 2279*00b67f09SDavid van Moolenbroek CFLAGS="$SAVE_CFLAGS" 2280*00b67f09SDavid van Moolenbroek if test "$FNODELETENULLPOINTERCHECKS" = "yes"; then 2281*00b67f09SDavid van Moolenbroek AC_MSG_RESULT(yes) 2282*00b67f09SDavid van Moolenbroek STD_CWARNINGS="$STD_CWARNINGS -fno-delete-null-pointer-checks" 2283*00b67f09SDavid van Moolenbroek else 2284*00b67f09SDavid van Moolenbroek AC_MSG_RESULT(no) 2285*00b67f09SDavid van Moolenbroek fi 2286*00b67f09SDavid van Moolenbroek case "$host" in 2287*00b67f09SDavid van Moolenbroek *-hp-hpux*) 2288*00b67f09SDavid van Moolenbroek CFLAGS="$CFLAGS -Wl,+vnocompatwarnings" 2289*00b67f09SDavid van Moolenbroek BACKTRACECFLAGS="$BACKTRACECFLAGS -Wl,+vnocompatwarnings" 2290*00b67f09SDavid van Moolenbroek ;; 2291*00b67f09SDavid van Moolenbroek esac 2292*00b67f09SDavid van Moolenbroek if test "X$enable_warn_shadow" = Xyes; then 2293*00b67f09SDavid van Moolenbroek STD_CWARNINGS="$STD_CWARNINGS -Wshadow" 2294*00b67f09SDavid van Moolenbroek fi 2295*00b67f09SDavid van Moolenbroek if test "X$enable_warn_error" = Xyes; then 2296*00b67f09SDavid van Moolenbroek STD_CWARNINGS="$STD_CWARNINGS -Werror" 2297*00b67f09SDavid van Moolenbroek fi 2298*00b67f09SDavid van Moolenbroekelse 2299*00b67f09SDavid van Moolenbroek case $host in 2300*00b67f09SDavid van Moolenbroek *-dec-osf*) 2301*00b67f09SDavid van Moolenbroek CC="$CC -std" 2302*00b67f09SDavid van Moolenbroek CCOPT="$CCOPT -std" 2303*00b67f09SDavid van Moolenbroek CCNOOPT="$CCNOOPT -std" 2304*00b67f09SDavid van Moolenbroek MKDEPCC="$CC" 2305*00b67f09SDavid van Moolenbroek ;; 2306*00b67f09SDavid van Moolenbroek *-hp-hpux*) 2307*00b67f09SDavid van Moolenbroek CC="$CC -Ae -z" 2308*00b67f09SDavid van Moolenbroek # The version of the C compiler that constantly warns about 2309*00b67f09SDavid van Moolenbroek # 'const' as well as alignment issues is unfortunately not 2310*00b67f09SDavid van Moolenbroek # able to be discerned via the version of the operating 2311*00b67f09SDavid van Moolenbroek # system, nor does cc have a version flag. 2312*00b67f09SDavid van Moolenbroek case "`$CC +W 123 2>&1`" in 2313*00b67f09SDavid van Moolenbroek *Unknown?option*) 2314*00b67f09SDavid van Moolenbroek STD_CWARNINGS="+w1" 2315*00b67f09SDavid van Moolenbroek ;; 2316*00b67f09SDavid van Moolenbroek *) 2317*00b67f09SDavid van Moolenbroek # Turn off the pointlessly noisy warnings. 2318*00b67f09SDavid van Moolenbroek STD_CWARNINGS="+w1 +W 474,530,2193,2236" 2319*00b67f09SDavid van Moolenbroek ;; 2320*00b67f09SDavid van Moolenbroek esac 2321*00b67f09SDavid van Moolenbroek CCOPT="$CCOPT -Ae -z" 2322*00b67f09SDavid van Moolenbroek CCNOOPT="$CCNOOPT -Ae -z" 2323*00b67f09SDavid van Moolenbroek CFLAGS="$CFLAGS -Wl,+vnocompatwarnings" 2324*00b67f09SDavid van Moolenbroek BACKTRACECFLAGS="$BACKTRACECFLAGS -Wl,+vnocompatwarnings" 2325*00b67f09SDavid van Moolenbroek MKDEPPROG='cc -Ae -E -Wp,-M >/dev/null 2>>$TMP' 2326*00b67f09SDavid van Moolenbroek ;; 2327*00b67f09SDavid van Moolenbroek *-sgi-irix*) 2328*00b67f09SDavid van Moolenbroek STD_CWARNINGS="-fullwarn -woff 1209" 2329*00b67f09SDavid van Moolenbroek # 2330*00b67f09SDavid van Moolenbroek # Silence more than 250 instances of 2331*00b67f09SDavid van Moolenbroek # "prototyped function redeclared without prototype" 2332*00b67f09SDavid van Moolenbroek # and 11 instances of 2333*00b67f09SDavid van Moolenbroek # "variable ... was set but never used" 2334*00b67f09SDavid van Moolenbroek # from lib/dns/sec/openssl. 2335*00b67f09SDavid van Moolenbroek # 2336*00b67f09SDavid van Moolenbroek IRIX_DNSSEC_WARNINGS_HACK="-woff 1692,1552" 2337*00b67f09SDavid van Moolenbroek ;; 2338*00b67f09SDavid van Moolenbroek *-solaris*) 2339*00b67f09SDavid van Moolenbroek MKDEPCFLAGS="-xM" 2340*00b67f09SDavid van Moolenbroek ;; 2341*00b67f09SDavid van Moolenbroek *-sco-sysv*uw*|*-*-sysv*UnixWare*|*-*-sysv*OpenUNIX*) 2342*00b67f09SDavid van Moolenbroek # UnixWare 2343*00b67f09SDavid van Moolenbroek CC="$CC -w" 2344*00b67f09SDavid van Moolenbroek ;; 2345*00b67f09SDavid van Moolenbroek esac 2346*00b67f09SDavid van Moolenbroekfi 2347*00b67f09SDavid van Moolenbroek 2348*00b67f09SDavid van MoolenbroekAC_SUBST(MKDEPCC) 2349*00b67f09SDavid van MoolenbroekAC_SUBST(MKDEPCFLAGS) 2350*00b67f09SDavid van MoolenbroekAC_SUBST(MKDEPPROG) 2351*00b67f09SDavid van MoolenbroekAC_SUBST(IRIX_DNSSEC_WARNINGS_HACK) 2352*00b67f09SDavid van Moolenbroek 2353*00b67f09SDavid van Moolenbroek# 2354*00b67f09SDavid van Moolenbroek# NLS 2355*00b67f09SDavid van Moolenbroek# 2356*00b67f09SDavid van MoolenbroekAC_CHECK_FUNC(catgets, AC_DEFINE(HAVE_CATGETS),) 2357*00b67f09SDavid van Moolenbroek 2358*00b67f09SDavid van Moolenbroek# 2359*00b67f09SDavid van Moolenbroek# -lxnet buys us one big porting headache... standards, gotta love 'em. 2360*00b67f09SDavid van Moolenbroek# 2361*00b67f09SDavid van Moolenbroek# AC_CHECK_LIB(xnet, socket, , 2362*00b67f09SDavid van Moolenbroek# AC_CHECK_LIB(socket, socket) 2363*00b67f09SDavid van Moolenbroek# ) 2364*00b67f09SDavid van Moolenbroek# 2365*00b67f09SDavid van Moolenbroek# Use this for now, instead: 2366*00b67f09SDavid van Moolenbroek# 2367*00b67f09SDavid van Moolenbroekcase "$host" in 2368*00b67f09SDavid van Moolenbroek mips-sgi-irix*) 2369*00b67f09SDavid van Moolenbroek ;; 2370*00b67f09SDavid van Moolenbroek *-linux*) 2371*00b67f09SDavid van Moolenbroek ;; 2372*00b67f09SDavid van Moolenbroek *) 2373*00b67f09SDavid van Moolenbroek AC_CHECK_LIB(socket, socket) 2374*00b67f09SDavid van Moolenbroek AC_CHECK_LIB(nsl, inet_addr) 2375*00b67f09SDavid van Moolenbroek ;; 2376*00b67f09SDavid van Moolenbroekesac 2377*00b67f09SDavid van Moolenbroek 2378*00b67f09SDavid van Moolenbroek# 2379*00b67f09SDavid van Moolenbroek# Work around Solaris's select() limitations. 2380*00b67f09SDavid van Moolenbroek# 2381*00b67f09SDavid van Moolenbroekcase "$host" in 2382*00b67f09SDavid van Moolenbroek *-solaris2.[[89]]|*-solaris2.1?) 2383*00b67f09SDavid van Moolenbroek AC_DEFINE(FD_SETSIZE, 65536, 2384*00b67f09SDavid van Moolenbroek [Solaris hack to get select_large_fdset.]) 2385*00b67f09SDavid van Moolenbroek ;; 2386*00b67f09SDavid van Moolenbroekesac 2387*00b67f09SDavid van Moolenbroek 2388*00b67f09SDavid van Moolenbroek# 2389*00b67f09SDavid van Moolenbroek# Purify support 2390*00b67f09SDavid van Moolenbroek# 2391*00b67f09SDavid van MoolenbroekAC_MSG_CHECKING(whether to use purify) 2392*00b67f09SDavid van MoolenbroekAC_ARG_WITH(purify, 2393*00b67f09SDavid van Moolenbroek [ --with-purify[=PATH] use Rational purify], 2394*00b67f09SDavid van Moolenbroek use_purify="$withval", use_purify="no") 2395*00b67f09SDavid van Moolenbroek 2396*00b67f09SDavid van Moolenbroekcase "$use_purify" in 2397*00b67f09SDavid van Moolenbroek no) 2398*00b67f09SDavid van Moolenbroek ;; 2399*00b67f09SDavid van Moolenbroek yes) 2400*00b67f09SDavid van Moolenbroek AC_PATH_PROG(purify_path, purify, purify) 2401*00b67f09SDavid van Moolenbroek ;; 2402*00b67f09SDavid van Moolenbroek *) 2403*00b67f09SDavid van Moolenbroek purify_path="$use_purify" 2404*00b67f09SDavid van Moolenbroek ;; 2405*00b67f09SDavid van Moolenbroekesac 2406*00b67f09SDavid van Moolenbroek 2407*00b67f09SDavid van Moolenbroekcase "$use_purify" in 2408*00b67f09SDavid van Moolenbroek no) 2409*00b67f09SDavid van Moolenbroek AC_MSG_RESULT(no) 2410*00b67f09SDavid van Moolenbroek PURIFY="" 2411*00b67f09SDavid van Moolenbroek ;; 2412*00b67f09SDavid van Moolenbroek *) 2413*00b67f09SDavid van Moolenbroek if test -f $purify_path || test $purify_path = purify; then 2414*00b67f09SDavid van Moolenbroek AC_MSG_RESULT($purify_path) 2415*00b67f09SDavid van Moolenbroek PURIFYFLAGS="`echo $PURIFYOPTIONS`" 2416*00b67f09SDavid van Moolenbroek PURIFY="$purify_path $PURIFYFLAGS" 2417*00b67f09SDavid van Moolenbroek else 2418*00b67f09SDavid van Moolenbroek AC_MSG_ERROR([$purify_path not found. 2419*00b67f09SDavid van Moolenbroek 2420*00b67f09SDavid van MoolenbroekPlease choose the proper path with the following command: 2421*00b67f09SDavid van Moolenbroek 2422*00b67f09SDavid van Moolenbroek configure --with-purify=PATH 2423*00b67f09SDavid van Moolenbroek]) 2424*00b67f09SDavid van Moolenbroek fi 2425*00b67f09SDavid van Moolenbroek ;; 2426*00b67f09SDavid van Moolenbroekesac 2427*00b67f09SDavid van Moolenbroek 2428*00b67f09SDavid van MoolenbroekAC_SUBST(PURIFY) 2429*00b67f09SDavid van Moolenbroek 2430*00b67f09SDavid van Moolenbroek# 2431*00b67f09SDavid van Moolenbroek# Google/Great Performance Tools CPU Profiler 2432*00b67f09SDavid van Moolenbroek# 2433*00b67f09SDavid van MoolenbroekAC_MSG_CHECKING(whether to use gperftools profiler) 2434*00b67f09SDavid van MoolenbroekAC_ARG_WITH(gperftools-profiler, 2435*00b67f09SDavid van Moolenbroek [ --with-gperftools-profiler use gperftools CPU profiler], 2436*00b67f09SDavid van Moolenbroek use_profiler="$withval", use_profiler="no") 2437*00b67f09SDavid van Moolenbroek 2438*00b67f09SDavid van Moolenbroekcase $use_profiler in 2439*00b67f09SDavid van Moolenbroek yes) 2440*00b67f09SDavid van Moolenbroek AC_MSG_RESULT(yes) 2441*00b67f09SDavid van Moolenbroek AC_DEFINE([HAVE_GPERFTOOLS_PROFILER], 1, 2442*00b67f09SDavid van Moolenbroek [Define to use gperftools CPU profiler.]) 2443*00b67f09SDavid van Moolenbroek LIBS="$LIBS -lprofiler" 2444*00b67f09SDavid van Moolenbroek ;; 2445*00b67f09SDavid van Moolenbroek *) 2446*00b67f09SDavid van Moolenbroek AC_MSG_RESULT(no) 2447*00b67f09SDavid van Moolenbroek ;; 2448*00b67f09SDavid van Moolenbroekesac 2449*00b67f09SDavid van Moolenbroek 2450*00b67f09SDavid van Moolenbroek# 2451*00b67f09SDavid van Moolenbroek# enable/disable dumping stack backtrace. Also check if the system supports 2452*00b67f09SDavid van Moolenbroek# glibc-compatible backtrace() function. 2453*00b67f09SDavid van Moolenbroek# 2454*00b67f09SDavid van MoolenbroekAC_ARG_ENABLE(backtrace, 2455*00b67f09SDavid van Moolenbroek[ --enable-backtrace log stack backtrace on abort [[default=yes]]], 2456*00b67f09SDavid van Moolenbroek want_backtrace="$enableval", want_backtrace="yes") 2457*00b67f09SDavid van Moolenbroekcase $want_backtrace in 2458*00b67f09SDavid van Moolenbroekyes) 2459*00b67f09SDavid van Moolenbroek ISC_PLATFORM_USEBACKTRACE="#define ISC_PLATFORM_USEBACKTRACE 1" 2460*00b67f09SDavid van Moolenbroek AC_TRY_LINK([#include <execinfo.h>], 2461*00b67f09SDavid van Moolenbroek [return (backtrace((void **)0, 0));], 2462*00b67f09SDavid van Moolenbroek [AC_DEFINE([HAVE_LIBCTRACE], [], [if system have backtrace function])],) 2463*00b67f09SDavid van Moolenbroek ;; 2464*00b67f09SDavid van Moolenbroek*) 2465*00b67f09SDavid van Moolenbroek ISC_PLATFORM_USEBACKTRACE="#undef ISC_PLATFORM_USEBACKTRACE" 2466*00b67f09SDavid van Moolenbroek ;; 2467*00b67f09SDavid van Moolenbroekesac 2468*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_PLATFORM_USEBACKTRACE) 2469*00b67f09SDavid van Moolenbroek 2470*00b67f09SDavid van MoolenbroekAC_ARG_ENABLE(symtable, 2471*00b67f09SDavid van Moolenbroek[ --enable-symtable use internal symbol table for backtrace 2472*00b67f09SDavid van Moolenbroek [[all|minimal(default)|none]]], 2473*00b67f09SDavid van Moolenbroek want_symtable="$enableval", want_symtable="minimal") 2474*00b67f09SDavid van Moolenbroekcase $want_symtable in 2475*00b67f09SDavid van Moolenbroekyes|all|minimal) # "yes" is a hidden value equivalent to "minimal" 2476*00b67f09SDavid van Moolenbroek if test "$PERL" = "" 2477*00b67f09SDavid van Moolenbroek then 2478*00b67f09SDavid van Moolenbroek AC_MSG_ERROR([Internal symbol table requires perl but no perl is found. 2479*00b67f09SDavid van MoolenbroekInstall perl or explicitly disable the feature by --disable-symtable.]) 2480*00b67f09SDavid van Moolenbroek fi 2481*00b67f09SDavid van Moolenbroek if test "$use_libtool" = "yes"; then 2482*00b67f09SDavid van Moolenbroek AC_MSG_WARN([Internal symbol table does not work with libtool. Disabling symbol table.]) 2483*00b67f09SDavid van Moolenbroek else 2484*00b67f09SDavid van Moolenbroek # we generate the internal symbol table only for those systems 2485*00b67f09SDavid van Moolenbroek # known to work to avoid unexpected build failure. Also, warn 2486*00b67f09SDavid van Moolenbroek # about unsupported systems when the feature is enabled 2487*00b67f09SDavid van Moolenbroek # manually. 2488*00b67f09SDavid van Moolenbroek case $host_os in 2489*00b67f09SDavid van Moolenbroek freebsd*|netbsd*|openbsd*|linux*|solaris*|darwin*) 2490*00b67f09SDavid van Moolenbroek MKSYMTBL_PROGRAM="$PERL" 2491*00b67f09SDavid van Moolenbroek if test $want_symtable = all; then 2492*00b67f09SDavid van Moolenbroek ALWAYS_MAKE_SYMTABLE="yes" 2493*00b67f09SDavid van Moolenbroek fi 2494*00b67f09SDavid van Moolenbroek ;; 2495*00b67f09SDavid van Moolenbroek *) 2496*00b67f09SDavid van Moolenbroek if test $want_symtable = yes -o $want_symtable = all 2497*00b67f09SDavid van Moolenbroek then 2498*00b67f09SDavid van Moolenbroek AC_MSG_WARN([this system is not known to generate internal symbol table safely; disabling it]) 2499*00b67f09SDavid van Moolenbroek fi 2500*00b67f09SDavid van Moolenbroek esac 2501*00b67f09SDavid van Moolenbroek fi 2502*00b67f09SDavid van Moolenbroek ;; 2503*00b67f09SDavid van Moolenbroek*) 2504*00b67f09SDavid van Moolenbroek ;; 2505*00b67f09SDavid van Moolenbroekesac 2506*00b67f09SDavid van MoolenbroekAC_SUBST(MKSYMTBL_PROGRAM) 2507*00b67f09SDavid van MoolenbroekAC_SUBST(ALWAYS_MAKE_SYMTABLE) 2508*00b67f09SDavid van Moolenbroek 2509*00b67f09SDavid van Moolenbroek# 2510*00b67f09SDavid van Moolenbroek# File name extension for static archive files, for those few places 2511*00b67f09SDavid van Moolenbroek# where they are treated differently from dynamic ones. 2512*00b67f09SDavid van Moolenbroek# 2513*00b67f09SDavid van MoolenbroekSA=a 2514*00b67f09SDavid van Moolenbroek 2515*00b67f09SDavid van MoolenbroekAC_SUBST(O) 2516*00b67f09SDavid van MoolenbroekAC_SUBST(A) 2517*00b67f09SDavid van MoolenbroekAC_SUBST(SA) 2518*00b67f09SDavid van MoolenbroekAC_SUBST(LIBTOOL_MKDEP_SED) 2519*00b67f09SDavid van MoolenbroekAC_SUBST(LIBTOOL_MODE_COMPILE) 2520*00b67f09SDavid van MoolenbroekAC_SUBST(LIBTOOL_MODE_INSTALL) 2521*00b67f09SDavid van MoolenbroekAC_SUBST(LIBTOOL_MODE_LINK) 2522*00b67f09SDavid van MoolenbroekAC_SUBST(LIBTOOL_ALLOW_UNDEFINED) 2523*00b67f09SDavid van MoolenbroekAC_SUBST(LIBTOOL_IN_MAIN) 2524*00b67f09SDavid van Moolenbroek 2525*00b67f09SDavid van MoolenbroekBIND9_CO_RULE=".c.$O:" 2526*00b67f09SDavid van MoolenbroekAC_SUBST(BIND9_CO_RULE) 2527*00b67f09SDavid van Moolenbroek 2528*00b67f09SDavid van Moolenbroek# 2529*00b67f09SDavid van Moolenbroek# Here begins a very long section to determine the system's networking 2530*00b67f09SDavid van Moolenbroek# capabilities. The order of the tests is significant. 2531*00b67f09SDavid van Moolenbroek# 2532*00b67f09SDavid van Moolenbroek 2533*00b67f09SDavid van Moolenbroek# 2534*00b67f09SDavid van Moolenbroek# IPv6 2535*00b67f09SDavid van Moolenbroek# 2536*00b67f09SDavid van MoolenbroekAC_ARG_ENABLE(ipv6, 2537*00b67f09SDavid van Moolenbroek [ --enable-ipv6 use IPv6 [default=autodetect]]) 2538*00b67f09SDavid van Moolenbroek 2539*00b67f09SDavid van Moolenbroekcase "$enable_ipv6" in 2540*00b67f09SDavid van Moolenbroek yes|''|autodetect) 2541*00b67f09SDavid van Moolenbroek AC_DEFINE(WANT_IPV6) 2542*00b67f09SDavid van Moolenbroek ;; 2543*00b67f09SDavid van Moolenbroek no) 2544*00b67f09SDavid van Moolenbroek ;; 2545*00b67f09SDavid van Moolenbroekesac 2546*00b67f09SDavid van Moolenbroek 2547*00b67f09SDavid van Moolenbroek# 2548*00b67f09SDavid van Moolenbroek# We do the IPv6 compilation checking after libtool so that we can put 2549*00b67f09SDavid van Moolenbroek# the right suffix on the files. 2550*00b67f09SDavid van Moolenbroek# 2551*00b67f09SDavid van MoolenbroekAC_MSG_CHECKING(for IPv6 structures) 2552*00b67f09SDavid van MoolenbroekAC_TRY_COMPILE([ 2553*00b67f09SDavid van Moolenbroek#include <sys/types.h> 2554*00b67f09SDavid van Moolenbroek#include <sys/socket.h> 2555*00b67f09SDavid van Moolenbroek#include <netinet/in.h>], 2556*00b67f09SDavid van Moolenbroek[struct sockaddr_in6 sin6; return (0);], 2557*00b67f09SDavid van Moolenbroek [AC_MSG_RESULT(yes) 2558*00b67f09SDavid van Moolenbroek found_ipv6=yes], 2559*00b67f09SDavid van Moolenbroek [AC_MSG_RESULT(no) 2560*00b67f09SDavid van Moolenbroek found_ipv6=no]) 2561*00b67f09SDavid van Moolenbroek 2562*00b67f09SDavid van Moolenbroek# 2563*00b67f09SDavid van Moolenbroek# See whether IPv6 support is provided via a Kame add-on. 2564*00b67f09SDavid van Moolenbroek# This is done before other IPv6 linking tests to LIBS is properly set. 2565*00b67f09SDavid van Moolenbroek# 2566*00b67f09SDavid van MoolenbroekAC_MSG_CHECKING(for Kame IPv6 support) 2567*00b67f09SDavid van MoolenbroekAC_ARG_WITH(kame, 2568*00b67f09SDavid van Moolenbroek [ --with-kame[=PATH] use Kame IPv6 [default path /usr/local/v6]], 2569*00b67f09SDavid van Moolenbroek use_kame="$withval", use_kame="no") 2570*00b67f09SDavid van Moolenbroek 2571*00b67f09SDavid van Moolenbroekcase "$use_kame" in 2572*00b67f09SDavid van Moolenbroek no) 2573*00b67f09SDavid van Moolenbroek ;; 2574*00b67f09SDavid van Moolenbroek yes) 2575*00b67f09SDavid van Moolenbroek kame_path=/usr/local/v6 2576*00b67f09SDavid van Moolenbroek ;; 2577*00b67f09SDavid van Moolenbroek *) 2578*00b67f09SDavid van Moolenbroek kame_path="$use_kame" 2579*00b67f09SDavid van Moolenbroek ;; 2580*00b67f09SDavid van Moolenbroekesac 2581*00b67f09SDavid van Moolenbroek 2582*00b67f09SDavid van Moolenbroekcase "$use_kame" in 2583*00b67f09SDavid van Moolenbroek no) 2584*00b67f09SDavid van Moolenbroek AC_MSG_RESULT(no) 2585*00b67f09SDavid van Moolenbroek ;; 2586*00b67f09SDavid van Moolenbroek *) 2587*00b67f09SDavid van Moolenbroek if test -f $kame_path/lib/libinet6.a; then 2588*00b67f09SDavid van Moolenbroek AC_MSG_RESULT($kame_path/lib/libinet6.a) 2589*00b67f09SDavid van Moolenbroek LIBS="-L$kame_path/lib -linet6 $LIBS" 2590*00b67f09SDavid van Moolenbroek else 2591*00b67f09SDavid van Moolenbroek AC_MSG_ERROR([$kame_path/lib/libinet6.a not found. 2592*00b67f09SDavid van Moolenbroek 2593*00b67f09SDavid van MoolenbroekPlease choose the proper path with the following command: 2594*00b67f09SDavid van Moolenbroek 2595*00b67f09SDavid van Moolenbroek configure --with-kame=PATH 2596*00b67f09SDavid van Moolenbroek]) 2597*00b67f09SDavid van Moolenbroek fi 2598*00b67f09SDavid van Moolenbroek ;; 2599*00b67f09SDavid van Moolenbroekesac 2600*00b67f09SDavid van Moolenbroek 2601*00b67f09SDavid van Moolenbroek# 2602*00b67f09SDavid van Moolenbroek# Whether netinet6/in6.h is needed has to be defined in isc/platform.h. 2603*00b67f09SDavid van Moolenbroek# Including it on Kame-using platforms is very bad, though, because 2604*00b67f09SDavid van Moolenbroek# Kame uses #error against direct inclusion. So include it on only 2605*00b67f09SDavid van Moolenbroek# the platform that is otherwise broken without it -- BSD/OS 4.0 through 4.1. 2606*00b67f09SDavid van Moolenbroek# This is done before the in6_pktinfo check because that's what 2607*00b67f09SDavid van Moolenbroek# netinet6/in6.h is needed for. 2608*00b67f09SDavid van Moolenbroek# 2609*00b67f09SDavid van Moolenbroekchangequote({, }) 2610*00b67f09SDavid van Moolenbroekcase "$host" in 2611*00b67f09SDavid van Moolenbroek*-bsdi4.[01]*) 2612*00b67f09SDavid van Moolenbroek ISC_PLATFORM_NEEDNETINET6IN6H="#define ISC_PLATFORM_NEEDNETINET6IN6H 1" 2613*00b67f09SDavid van Moolenbroek LWRES_PLATFORM_NEEDNETINET6IN6H="#define LWRES_PLATFORM_NEEDNETINET6IN6H 1" 2614*00b67f09SDavid van Moolenbroek isc_netinet6in6_hack="#include <netinet6/in6.h>" 2615*00b67f09SDavid van Moolenbroek ;; 2616*00b67f09SDavid van Moolenbroek*) 2617*00b67f09SDavid van Moolenbroek ISC_PLATFORM_NEEDNETINET6IN6H="#undef ISC_PLATFORM_NEEDNETINET6IN6H" 2618*00b67f09SDavid van Moolenbroek LWRES_PLATFORM_NEEDNETINET6IN6H="#undef LWRES_PLATFORM_NEEDNETINET6IN6H" 2619*00b67f09SDavid van Moolenbroek isc_netinet6in6_hack="" 2620*00b67f09SDavid van Moolenbroek ;; 2621*00b67f09SDavid van Moolenbroekesac 2622*00b67f09SDavid van Moolenbroekchangequote([, ]) 2623*00b67f09SDavid van Moolenbroek 2624*00b67f09SDavid van Moolenbroek# 2625*00b67f09SDavid van Moolenbroek# This is similar to the netinet6/in6.h issue. 2626*00b67f09SDavid van Moolenbroek# 2627*00b67f09SDavid van Moolenbroekcase "$host" in 2628*00b67f09SDavid van Moolenbroek*-sco-sysv*uw*|*-*-sysv*UnixWare*|*-*-sysv*OpenUNIX*) 2629*00b67f09SDavid van Moolenbroek # UnixWare 2630*00b67f09SDavid van Moolenbroek ISC_PLATFORM_NEEDNETINETIN6H="#define ISC_PLATFORM_NEEDNETINETIN6H 1" 2631*00b67f09SDavid van Moolenbroek LWRES_PLATFORM_NEEDNETINETIN6H="#define LWRES_PLATFORM_NEEDNETINETIN6H 1" 2632*00b67f09SDavid van Moolenbroek ISC_PLATFORM_FIXIN6ISADDR="#define ISC_PLATFORM_FIXIN6ISADDR 1" 2633*00b67f09SDavid van Moolenbroek isc_netinetin6_hack="#include <netinet/in6.h>" 2634*00b67f09SDavid van Moolenbroek ;; 2635*00b67f09SDavid van Moolenbroek*) 2636*00b67f09SDavid van Moolenbroek ISC_PLATFORM_NEEDNETINETIN6H="#undef ISC_PLATFORM_NEEDNETINETIN6H" 2637*00b67f09SDavid van Moolenbroek LWRES_PLATFORM_NEEDNETINETIN6H="#undef LWRES_PLATFORM_NEEDNETINETIN6H" 2638*00b67f09SDavid van Moolenbroek ISC_PLATFORM_FIXIN6ISADDR="#undef ISC_PLATFORM_FIXIN6ISADDR" 2639*00b67f09SDavid van Moolenbroek isc_netinetin6_hack="" 2640*00b67f09SDavid van Moolenbroek ;; 2641*00b67f09SDavid van Moolenbroekesac 2642*00b67f09SDavid van Moolenbroek 2643*00b67f09SDavid van Moolenbroek# 2644*00b67f09SDavid van Moolenbroek# Now delve deeper into the suitability of the IPv6 support. 2645*00b67f09SDavid van Moolenbroek# 2646*00b67f09SDavid van Moolenbroekcase "$found_ipv6" in 2647*00b67f09SDavid van Moolenbroek yes) 2648*00b67f09SDavid van Moolenbroek ISC_PLATFORM_HAVEIPV6="#define ISC_PLATFORM_HAVEIPV6 1" 2649*00b67f09SDavid van Moolenbroek LWRES_PLATFORM_HAVEIPV6="#define LWRES_PLATFORM_HAVEIPV6 1" 2650*00b67f09SDavid van Moolenbroek 2651*00b67f09SDavid van Moolenbroek AC_MSG_CHECKING(for in6_addr) 2652*00b67f09SDavid van Moolenbroek AC_TRY_COMPILE([ 2653*00b67f09SDavid van Moolenbroek#include <sys/types.h> 2654*00b67f09SDavid van Moolenbroek#include <sys/socket.h> 2655*00b67f09SDavid van Moolenbroek#include <netinet/in.h> 2656*00b67f09SDavid van Moolenbroek$isc_netinetin6_hack 2657*00b67f09SDavid van Moolenbroek$isc_netinet6in6_hack 2658*00b67f09SDavid van Moolenbroek], 2659*00b67f09SDavid van Moolenbroek[struct in6_addr in6; return (0);], 2660*00b67f09SDavid van Moolenbroek [AC_MSG_RESULT(yes) 2661*00b67f09SDavid van Moolenbroek ISC_PLATFORM_HAVEINADDR6="#undef ISC_PLATFORM_HAVEINADDR6" 2662*00b67f09SDavid van Moolenbroek LWRES_PLATFORM_HAVEINADDR6="#undef LWRES_PLATFORM_HAVEINADDR6" 2663*00b67f09SDavid van Moolenbroek isc_in_addr6_hack=""], 2664*00b67f09SDavid van Moolenbroek [AC_MSG_RESULT(no) 2665*00b67f09SDavid van Moolenbroek ISC_PLATFORM_HAVEINADDR6="#define ISC_PLATFORM_HAVEINADDR6 1" 2666*00b67f09SDavid van Moolenbroek LWRES_PLATFORM_HAVEINADDR6="#define LWRES_PLATFORM_HAVEINADDR6 1" 2667*00b67f09SDavid van Moolenbroek isc_in_addr6_hack="#define in6_addr in_addr6"]) 2668*00b67f09SDavid van Moolenbroek 2669*00b67f09SDavid van Moolenbroek AC_MSG_CHECKING(for in6addr_any) 2670*00b67f09SDavid van Moolenbroek AC_TRY_LINK([ 2671*00b67f09SDavid van Moolenbroek#include <sys/types.h> 2672*00b67f09SDavid van Moolenbroek#include <sys/socket.h> 2673*00b67f09SDavid van Moolenbroek#include <netinet/in.h> 2674*00b67f09SDavid van Moolenbroek$isc_netinetin6_hack 2675*00b67f09SDavid van Moolenbroek$isc_netinet6in6_hack 2676*00b67f09SDavid van Moolenbroek$isc_in_addr6_hack 2677*00b67f09SDavid van Moolenbroek], 2678*00b67f09SDavid van Moolenbroek [struct in6_addr in6; in6 = in6addr_any; return (in6.s6_addr[0]);], 2679*00b67f09SDavid van Moolenbroek [AC_MSG_RESULT(yes) 2680*00b67f09SDavid van Moolenbroek ISC_PLATFORM_NEEDIN6ADDRANY="#undef ISC_PLATFORM_NEEDIN6ADDRANY" 2681*00b67f09SDavid van Moolenbroek LWRES_PLATFORM_NEEDIN6ADDRANY="#undef LWRES_PLATFORM_NEEDIN6ADDRANY"], 2682*00b67f09SDavid van Moolenbroek [AC_MSG_RESULT(no) 2683*00b67f09SDavid van Moolenbroek ISC_PLATFORM_NEEDIN6ADDRANY="#define ISC_PLATFORM_NEEDIN6ADDRANY 1" 2684*00b67f09SDavid van Moolenbroek LWRES_PLATFORM_NEEDIN6ADDRANY="#define LWRES_PLATFORM_NEEDIN6ADDRANY 1"]) 2685*00b67f09SDavid van Moolenbroek 2686*00b67f09SDavid van Moolenbroek AC_MSG_CHECKING(for in6addr_loopback) 2687*00b67f09SDavid van Moolenbroek AC_TRY_LINK([ 2688*00b67f09SDavid van Moolenbroek#include <sys/types.h> 2689*00b67f09SDavid van Moolenbroek#include <sys/socket.h> 2690*00b67f09SDavid van Moolenbroek#include <netinet/in.h> 2691*00b67f09SDavid van Moolenbroek$isc_netinetin6_hack 2692*00b67f09SDavid van Moolenbroek$isc_netinet6in6_hack 2693*00b67f09SDavid van Moolenbroek$isc_in_addr6_hack 2694*00b67f09SDavid van Moolenbroek], 2695*00b67f09SDavid van Moolenbroek [struct in6_addr in6; in6 = in6addr_loopback; return (in6.s6_addr[0]);], 2696*00b67f09SDavid van Moolenbroek [AC_MSG_RESULT(yes) 2697*00b67f09SDavid van Moolenbroek ISC_PLATFORM_NEEDIN6ADDRLOOPBACK="#undef ISC_PLATFORM_NEEDIN6ADDRLOOPBACK" 2698*00b67f09SDavid van Moolenbroek LWRES_PLATFORM_NEEDIN6ADDRLOOPBACK="#undef LWRES_PLATFORM_NEEDIN6ADDRLOOPBACK"], 2699*00b67f09SDavid van Moolenbroek [AC_MSG_RESULT(no) 2700*00b67f09SDavid van Moolenbroek ISC_PLATFORM_NEEDIN6ADDRLOOPBACK="#define ISC_PLATFORM_NEEDIN6ADDRLOOPBACK 1" 2701*00b67f09SDavid van Moolenbroek LWRES_PLATFORM_NEEDIN6ADDRLOOPBACK="#define LWRES_PLATFORM_NEEDIN6ADDRLOOPBACK 1"]) 2702*00b67f09SDavid van Moolenbroek 2703*00b67f09SDavid van Moolenbroek AC_MSG_CHECKING(for sin6_scope_id in struct sockaddr_in6) 2704*00b67f09SDavid van Moolenbroek AC_TRY_COMPILE([ 2705*00b67f09SDavid van Moolenbroek#include <sys/types.h> 2706*00b67f09SDavid van Moolenbroek#include <sys/socket.h> 2707*00b67f09SDavid van Moolenbroek#include <netinet/in.h> 2708*00b67f09SDavid van Moolenbroek$isc_netinetin6_hack 2709*00b67f09SDavid van Moolenbroek$isc_netinet6in6_hack 2710*00b67f09SDavid van Moolenbroek], 2711*00b67f09SDavid van Moolenbroek [struct sockaddr_in6 xyzzy; xyzzy.sin6_scope_id = 0; return (0);], 2712*00b67f09SDavid van Moolenbroek [AC_MSG_RESULT(yes) 2713*00b67f09SDavid van Moolenbroek ISC_PLATFORM_HAVESCOPEID="#define ISC_PLATFORM_HAVESCOPEID 1" 2714*00b67f09SDavid van Moolenbroek result="#define LWRES_HAVE_SIN6_SCOPE_ID 1"], 2715*00b67f09SDavid van Moolenbroek [AC_MSG_RESULT(no) 2716*00b67f09SDavid van Moolenbroek ISC_PLATFORM_HAVESCOPEID="#undef ISC_PLATFORM_HAVESCOPEID" 2717*00b67f09SDavid van Moolenbroek result="#undef LWRES_HAVE_SIN6_SCOPE_ID"]) 2718*00b67f09SDavid van Moolenbroek LWRES_HAVE_SIN6_SCOPE_ID="$result" 2719*00b67f09SDavid van Moolenbroek 2720*00b67f09SDavid van Moolenbroek AC_MSG_CHECKING(for in6_pktinfo) 2721*00b67f09SDavid van Moolenbroek AC_TRY_COMPILE([ 2722*00b67f09SDavid van Moolenbroek#include <sys/types.h> 2723*00b67f09SDavid van Moolenbroek#include <sys/socket.h> 2724*00b67f09SDavid van Moolenbroek#include <netinet/in.h> 2725*00b67f09SDavid van Moolenbroek$isc_netinetin6_hack 2726*00b67f09SDavid van Moolenbroek$isc_netinet6in6_hack 2727*00b67f09SDavid van Moolenbroek], 2728*00b67f09SDavid van Moolenbroek [struct in6_pktinfo xyzzy; return (0);], 2729*00b67f09SDavid van Moolenbroek [AC_MSG_RESULT(yes) 2730*00b67f09SDavid van Moolenbroek ISC_PLATFORM_HAVEIN6PKTINFO="#define ISC_PLATFORM_HAVEIN6PKTINFO 1"], 2731*00b67f09SDavid van Moolenbroek [AC_MSG_RESULT(no -- disabling runtime ipv6 support) 2732*00b67f09SDavid van Moolenbroek ISC_PLATFORM_HAVEIN6PKTINFO="#undef ISC_PLATFORM_HAVEIN6PKTINFO"]) 2733*00b67f09SDavid van Moolenbroek ;; 2734*00b67f09SDavid van Moolenbroek no) 2735*00b67f09SDavid van Moolenbroek ISC_PLATFORM_HAVEIPV6="#undef ISC_PLATFORM_HAVEIPV6" 2736*00b67f09SDavid van Moolenbroek LWRES_PLATFORM_HAVEIPV6="#undef LWRES_PLATFORM_HAVEIPV6" 2737*00b67f09SDavid van Moolenbroek ISC_PLATFORM_NEEDIN6ADDRANY="#undef ISC_PLATFORM_NEEDIN6ADDRANY" 2738*00b67f09SDavid van Moolenbroek LWRES_PLATFORM_NEEDIN6ADDRANY="#undef LWRES_PLATFORM_NEEDIN6ADDRANY" 2739*00b67f09SDavid van Moolenbroek ISC_PLATFORM_HAVEIN6PKTINFO="#undef ISC_PLATFORM_HAVEIN6PKTINFO" 2740*00b67f09SDavid van Moolenbroek LWRES_HAVE_SIN6_SCOPE_ID="#define LWRES_HAVE_SIN6_SCOPE_ID 1" 2741*00b67f09SDavid van Moolenbroek ISC_PLATFORM_HAVESCOPEID="#define ISC_PLATFORM_HAVESCOPEID 1" 2742*00b67f09SDavid van Moolenbroek ISC_IPV6_H="ipv6.h" 2743*00b67f09SDavid van Moolenbroek ISC_IPV6_O="ipv6.$O" 2744*00b67f09SDavid van Moolenbroek ISC_ISCIPV6_O="unix/ipv6.$O" 2745*00b67f09SDavid van Moolenbroek ISC_IPV6_C="ipv6.c" 2746*00b67f09SDavid van Moolenbroek ;; 2747*00b67f09SDavid van Moolenbroekesac 2748*00b67f09SDavid van Moolenbroek 2749*00b67f09SDavid van MoolenbroekAC_MSG_CHECKING(for struct sockaddr_storage) 2750*00b67f09SDavid van MoolenbroekAC_TRY_COMPILE([ 2751*00b67f09SDavid van Moolenbroek#include <sys/types.h> 2752*00b67f09SDavid van Moolenbroek#include <sys/socket.h> 2753*00b67f09SDavid van Moolenbroek$isc_netinetin6_hack 2754*00b67f09SDavid van Moolenbroek$isc_netinet6in6_hack 2755*00b67f09SDavid van Moolenbroek], 2756*00b67f09SDavid van Moolenbroek[struct sockaddr_storage storage; return (0);], 2757*00b67f09SDavid van Moolenbroek[AC_MSG_RESULT(yes) 2758*00b67f09SDavid van MoolenbroekISC_PLATFORM_HAVESOCKADDRSTORAGE="#define ISC_PLATFORM_HAVESOCKADDRSTORAGE 1"], 2759*00b67f09SDavid van Moolenbroek[AC_MSG_RESULT(no) 2760*00b67f09SDavid van MoolenbroekISC_PLATFORM_HAVESOCKADDRSTORAGE="#undef ISC_PLATFORM_HAVESOCKADDRSTORAGE"]) 2761*00b67f09SDavid van Moolenbroek 2762*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_PLATFORM_HAVEIPV6) 2763*00b67f09SDavid van MoolenbroekAC_SUBST(LWRES_PLATFORM_HAVEIPV6) 2764*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_PLATFORM_NEEDNETINETIN6H) 2765*00b67f09SDavid van MoolenbroekAC_SUBST(LWRES_PLATFORM_NEEDNETINETIN6H) 2766*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_PLATFORM_NEEDNETINET6IN6H) 2767*00b67f09SDavid van MoolenbroekAC_SUBST(LWRES_PLATFORM_NEEDNETINET6IN6H) 2768*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_PLATFORM_HAVEINADDR6) 2769*00b67f09SDavid van MoolenbroekAC_SUBST(LWRES_PLATFORM_HAVEINADDR6) 2770*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_PLATFORM_NEEDIN6ADDRANY) 2771*00b67f09SDavid van MoolenbroekAC_SUBST(LWRES_PLATFORM_NEEDIN6ADDRANY) 2772*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_PLATFORM_NEEDIN6ADDRLOOPBACK) 2773*00b67f09SDavid van MoolenbroekAC_SUBST(LWRES_PLATFORM_NEEDIN6ADDRLOOPBACK) 2774*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_PLATFORM_HAVEIN6PKTINFO) 2775*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_PLATFORM_FIXIN6ISADDR) 2776*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_PLATFORM_HAVESOCKADDRSTORAGE) 2777*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_IPV6_H) 2778*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_IPV6_O) 2779*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_ISCIPV6_O) 2780*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_IPV6_C) 2781*00b67f09SDavid van MoolenbroekAC_SUBST(LWRES_HAVE_SIN6_SCOPE_ID) 2782*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_PLATFORM_HAVESCOPEID) 2783*00b67f09SDavid van Moolenbroek 2784*00b67f09SDavid van MoolenbroekAC_MSG_CHECKING([for struct if_laddrreq]) 2785*00b67f09SDavid van MoolenbroekAC_TRY_LINK([ 2786*00b67f09SDavid van Moolenbroek#include <sys/types.h> 2787*00b67f09SDavid van Moolenbroek#include <net/if6.h> 2788*00b67f09SDavid van Moolenbroek],[ struct if_laddrreq a; ], 2789*00b67f09SDavid van Moolenbroek [AC_MSG_RESULT(yes) 2790*00b67f09SDavid van Moolenbroek ISC_PLATFORM_HAVEIF_LADDRREQ="#define ISC_PLATFORM_HAVEIF_LADDRREQ 1"], 2791*00b67f09SDavid van Moolenbroek [AC_MSG_RESULT(no) 2792*00b67f09SDavid van Moolenbroek ISC_PLATFORM_HAVEIF_LADDRREQ="#undef ISC_PLATFORM_HAVEIF_LADDRREQ"]) 2793*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_PLATFORM_HAVEIF_LADDRREQ) 2794*00b67f09SDavid van Moolenbroek 2795*00b67f09SDavid van MoolenbroekAC_MSG_CHECKING([for struct if_laddrconf]) 2796*00b67f09SDavid van MoolenbroekAC_TRY_LINK([ 2797*00b67f09SDavid van Moolenbroek#include <sys/types.h> 2798*00b67f09SDavid van Moolenbroek#include <net/if6.h> 2799*00b67f09SDavid van Moolenbroek],[ struct if_laddrconf a; ], 2800*00b67f09SDavid van Moolenbroek [AC_MSG_RESULT(yes) 2801*00b67f09SDavid van Moolenbroek ISC_PLATFORM_HAVEIF_LADDRCONF="#define ISC_PLATFORM_HAVEIF_LADDRCONF 1"], 2802*00b67f09SDavid van Moolenbroek [AC_MSG_RESULT(no) 2803*00b67f09SDavid van Moolenbroek ISC_PLATFORM_HAVEIF_LADDRCONF="#undef ISC_PLATFORM_HAVEIF_LADDRCONF"]) 2804*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_PLATFORM_HAVEIF_LADDRCONF) 2805*00b67f09SDavid van Moolenbroek 2806*00b67f09SDavid van Moolenbroek# 2807*00b67f09SDavid van Moolenbroek# Check for network functions that are often missing. We do this 2808*00b67f09SDavid van Moolenbroek# after the libtool checking, so we can put the right suffix on 2809*00b67f09SDavid van Moolenbroek# the files. It also needs to come after checking for a Kame add-on, 2810*00b67f09SDavid van Moolenbroek# which provides some (all?) of the desired functions. 2811*00b67f09SDavid van Moolenbroek# 2812*00b67f09SDavid van Moolenbroek 2813*00b67f09SDavid van MoolenbroekAC_MSG_CHECKING([for inet_ntop with IPv6 support]) 2814*00b67f09SDavid van MoolenbroekAC_TRY_RUN([ 2815*00b67f09SDavid van Moolenbroek#include <sys/types.h> 2816*00b67f09SDavid van Moolenbroek#include <sys/socket.h> 2817*00b67f09SDavid van Moolenbroek#include <netinet/in.h> 2818*00b67f09SDavid van Moolenbroek#include <arpa/inet.h> 2819*00b67f09SDavid van Moolenbroekmain() { 2820*00b67f09SDavid van Moolenbroekchar a[16],b[64]; return(inet_ntop(AF_INET6, a, b, sizeof(b)) == (char*)0);}], 2821*00b67f09SDavid van Moolenbroek [AC_MSG_RESULT(yes) 2822*00b67f09SDavid van Moolenbroek ISC_PLATFORM_NEEDNTOP="#undef ISC_PLATFORM_NEEDNTOP"], 2823*00b67f09SDavid van Moolenbroek 2824*00b67f09SDavid van Moolenbroek [AC_MSG_RESULT(no) 2825*00b67f09SDavid van Moolenbroek ISC_EXTRA_OBJS="$ISC_EXTRA_OBJS inet_ntop.$O" 2826*00b67f09SDavid van Moolenbroek ISC_EXTRA_SRCS="$ISC_EXTRA_SRCS inet_ntop.c" 2827*00b67f09SDavid van Moolenbroek ISC_PLATFORM_NEEDNTOP="#define ISC_PLATFORM_NEEDNTOP 1"], 2828*00b67f09SDavid van Moolenbroek [AC_MSG_RESULT(assuming inet_ntop not needed) 2829*00b67f09SDavid van Moolenbroek ISC_PLATFORM_NEEDNTOP="#undef ISC_PLATFORM_NEEDNTOP"]) 2830*00b67f09SDavid van Moolenbroek 2831*00b67f09SDavid van Moolenbroek 2832*00b67f09SDavid van Moolenbroek# On NetBSD 1.4.2 and maybe others, inet_pton() incorrectly accepts 2833*00b67f09SDavid van Moolenbroek# addresses with less than four octets, like "1.2.3". Also leading 2834*00b67f09SDavid van Moolenbroek# zeros should also be rejected. 2835*00b67f09SDavid van Moolenbroek 2836*00b67f09SDavid van MoolenbroekAC_MSG_CHECKING([for working inet_pton with IPv6 support]) 2837*00b67f09SDavid van MoolenbroekAC_TRY_RUN([ 2838*00b67f09SDavid van Moolenbroek#include <sys/types.h> 2839*00b67f09SDavid van Moolenbroek#include <sys/socket.h> 2840*00b67f09SDavid van Moolenbroek#include <netinet/in.h> 2841*00b67f09SDavid van Moolenbroek#include <arpa/inet.h> 2842*00b67f09SDavid van Moolenbroekmain() { char a[16]; return (inet_pton(AF_INET, "1.2.3", a) == 1 ? 1 : 2843*00b67f09SDavid van Moolenbroek inet_pton(AF_INET, "1.2.3.04", a) == 1 ? 1 : 2844*00b67f09SDavid van Moolenbroek (inet_pton(AF_INET6, "::1.2.3.4", a) != 1)); }], 2845*00b67f09SDavid van Moolenbroek [AC_MSG_RESULT(yes) 2846*00b67f09SDavid van Moolenbroek ISC_PLATFORM_NEEDPTON="#undef ISC_PLATFORM_NEEDPTON"], 2847*00b67f09SDavid van Moolenbroek [AC_MSG_RESULT(no) 2848*00b67f09SDavid van Moolenbroek ISC_EXTRA_OBJS="$ISC_EXTRA_OBJS inet_pton.$O" 2849*00b67f09SDavid van Moolenbroek ISC_EXTRA_SRCS="$ISC_EXTRA_SRCS inet_pton.c" 2850*00b67f09SDavid van Moolenbroek ISC_PLATFORM_NEEDPTON="#define ISC_PLATFORM_NEEDPTON 1"], 2851*00b67f09SDavid van Moolenbroek [AC_MSG_RESULT(assuming inet_pton needed) 2852*00b67f09SDavid van Moolenbroek ISC_EXTRA_OBJS="$ISC_EXTRA_OBJS inet_pton.$O" 2853*00b67f09SDavid van Moolenbroek ISC_EXTRA_SRCS="$ISC_EXTRA_SRCS inet_pton.c" 2854*00b67f09SDavid van Moolenbroek ISC_PLATFORM_NEEDPTON="#define ISC_PLATFORM_NEEDPTON 1"]) 2855*00b67f09SDavid van Moolenbroek 2856*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_PLATFORM_NEEDNTOP) 2857*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_PLATFORM_NEEDPTON) 2858*00b67f09SDavid van Moolenbroek 2859*00b67f09SDavid van Moolenbroek# 2860*00b67f09SDavid van Moolenbroek# Look for a 4.4BSD-style sa_len member in struct sockaddr. 2861*00b67f09SDavid van Moolenbroek# 2862*00b67f09SDavid van Moolenbroekcase "$host" in 2863*00b67f09SDavid van Moolenbroek *-dec-osf*) 2864*00b67f09SDavid van Moolenbroek # Turn on 4.4BSD style sa_len support. 2865*00b67f09SDavid van Moolenbroek AC_DEFINE(_SOCKADDR_LEN) 2866*00b67f09SDavid van Moolenbroek ;; 2867*00b67f09SDavid van Moolenbroekesac 2868*00b67f09SDavid van Moolenbroek 2869*00b67f09SDavid van MoolenbroekAC_MSG_CHECKING(for sa_len in struct sockaddr) 2870*00b67f09SDavid van MoolenbroekAC_TRY_COMPILE([ 2871*00b67f09SDavid van Moolenbroek#include <sys/types.h> 2872*00b67f09SDavid van Moolenbroek#include <sys/socket.h>], 2873*00b67f09SDavid van Moolenbroek[struct sockaddr sa; sa.sa_len = 0; return (0);], 2874*00b67f09SDavid van Moolenbroek [AC_MSG_RESULT(yes) 2875*00b67f09SDavid van Moolenbroek ISC_PLATFORM_HAVESALEN="#define ISC_PLATFORM_HAVESALEN 1" 2876*00b67f09SDavid van Moolenbroek LWRES_PLATFORM_HAVESALEN="#define LWRES_PLATFORM_HAVESALEN 1"], 2877*00b67f09SDavid van Moolenbroek [AC_MSG_RESULT(no) 2878*00b67f09SDavid van Moolenbroek ISC_PLATFORM_HAVESALEN="#undef ISC_PLATFORM_HAVESALEN" 2879*00b67f09SDavid van Moolenbroek LWRES_PLATFORM_HAVESALEN="#undef LWRES_PLATFORM_HAVESALEN"]) 2880*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_PLATFORM_HAVESALEN) 2881*00b67f09SDavid van MoolenbroekAC_SUBST(LWRES_PLATFORM_HAVESALEN) 2882*00b67f09SDavid van Moolenbroek 2883*00b67f09SDavid van Moolenbroek# 2884*00b67f09SDavid van Moolenbroek# Look for a 4.4BSD or 4.3BSD struct msghdr 2885*00b67f09SDavid van Moolenbroek# 2886*00b67f09SDavid van MoolenbroekAC_MSG_CHECKING(for struct msghdr flavor) 2887*00b67f09SDavid van MoolenbroekAC_TRY_COMPILE([ 2888*00b67f09SDavid van Moolenbroek#include <sys/types.h> 2889*00b67f09SDavid van Moolenbroek#include <sys/socket.h>], 2890*00b67f09SDavid van Moolenbroek[struct msghdr msg; msg.msg_flags = 0; return (0);], 2891*00b67f09SDavid van Moolenbroek [AC_MSG_RESULT(4.4BSD) 2892*00b67f09SDavid van Moolenbroek ISC_PLATFORM_MSGHDRFLAVOR="#define ISC_NET_BSD44MSGHDR 1"], 2893*00b67f09SDavid van Moolenbroek [AC_MSG_RESULT(4.3BSD) 2894*00b67f09SDavid van Moolenbroek ISC_PLATFORM_MSGHDRFLAVOR="#define ISC_NET_BSD43MSGHDR 1"]) 2895*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_PLATFORM_MSGHDRFLAVOR) 2896*00b67f09SDavid van Moolenbroek 2897*00b67f09SDavid van Moolenbroek# 2898*00b67f09SDavid van Moolenbroek# Look for in_port_t. 2899*00b67f09SDavid van Moolenbroek# 2900*00b67f09SDavid van MoolenbroekAC_MSG_CHECKING(for type in_port_t) 2901*00b67f09SDavid van MoolenbroekAC_TRY_COMPILE([ 2902*00b67f09SDavid van Moolenbroek#include <sys/types.h> 2903*00b67f09SDavid van Moolenbroek#include <netinet/in.h>], 2904*00b67f09SDavid van Moolenbroek[in_port_t port = 25; return (0);], 2905*00b67f09SDavid van Moolenbroek [AC_MSG_RESULT(yes) 2906*00b67f09SDavid van Moolenbroek ISC_PLATFORM_NEEDPORTT="#undef ISC_PLATFORM_NEEDPORTT"], 2907*00b67f09SDavid van Moolenbroek [AC_MSG_RESULT(no) 2908*00b67f09SDavid van Moolenbroek ISC_PLATFORM_NEEDPORTT="#define ISC_PLATFORM_NEEDPORTT 1"]) 2909*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_PLATFORM_NEEDPORTT) 2910*00b67f09SDavid van Moolenbroek 2911*00b67f09SDavid van Moolenbroek# 2912*00b67f09SDavid van Moolenbroek# Check for addrinfo 2913*00b67f09SDavid van Moolenbroek# 2914*00b67f09SDavid van MoolenbroekAC_MSG_CHECKING(for struct addrinfo) 2915*00b67f09SDavid van MoolenbroekAC_TRY_COMPILE([ 2916*00b67f09SDavid van Moolenbroek#include <netdb.h>], 2917*00b67f09SDavid van Moolenbroek[struct addrinfo a; return (0);], 2918*00b67f09SDavid van Moolenbroek [AC_MSG_RESULT(yes) 2919*00b67f09SDavid van Moolenbroek ISC_LWRES_NEEDADDRINFO="#undef ISC_LWRES_NEEDADDRINFO" 2920*00b67f09SDavid van Moolenbroek ISC_IRS_NEEDADDRINFO="#undef ISC_IRS_NEEDADDRINFO" 2921*00b67f09SDavid van Moolenbroek AC_DEFINE(HAVE_ADDRINFO)], 2922*00b67f09SDavid van Moolenbroek [AC_MSG_RESULT(no) 2923*00b67f09SDavid van Moolenbroek ISC_LWRES_NEEDADDRINFO="#define ISC_LWRES_NEEDADDRINFO 1" 2924*00b67f09SDavid van Moolenbroek ISC_IRS_NEEDADDRINFO="#define ISC_IRS_NEEDADDRINFO 1"]) 2925*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_LWRES_NEEDADDRINFO) 2926*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_IRS_NEEDADDRINFO) 2927*00b67f09SDavid van Moolenbroek 2928*00b67f09SDavid van Moolenbroek# 2929*00b67f09SDavid van Moolenbroek# Check for rrsetinfo 2930*00b67f09SDavid van Moolenbroek# 2931*00b67f09SDavid van MoolenbroekAC_MSG_CHECKING(for struct rrsetinfo) 2932*00b67f09SDavid van MoolenbroekAC_TRY_COMPILE([ 2933*00b67f09SDavid van Moolenbroek#include <netdb.h>], 2934*00b67f09SDavid van Moolenbroek[struct rrsetinfo r; return (0);], 2935*00b67f09SDavid van Moolenbroek [AC_MSG_RESULT(yes) 2936*00b67f09SDavid van Moolenbroek ISC_LWRES_NEEDRRSETINFO="#undef ISC_LWRES_NEEDRRSETINFO"], 2937*00b67f09SDavid van Moolenbroek [AC_MSG_RESULT(no) 2938*00b67f09SDavid van Moolenbroek ISC_LWRES_NEEDRRSETINFO="#define ISC_LWRES_NEEDRRSETINFO 1"]) 2939*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_LWRES_NEEDRRSETINFO) 2940*00b67f09SDavid van Moolenbroek 2941*00b67f09SDavid van MoolenbroekAC_MSG_CHECKING(for int sethostent) 2942*00b67f09SDavid van MoolenbroekAC_TRY_COMPILE([ 2943*00b67f09SDavid van Moolenbroek#include <netdb.h>], 2944*00b67f09SDavid van Moolenbroek[int i = sethostent(0); return(0);], 2945*00b67f09SDavid van Moolenbroek [AC_MSG_RESULT(yes) 2946*00b67f09SDavid van Moolenbroek ISC_LWRES_SETHOSTENTINT="#define ISC_LWRES_SETHOSTENTINT 1"], 2947*00b67f09SDavid van Moolenbroek [AC_MSG_RESULT(no) 2948*00b67f09SDavid van Moolenbroek ISC_LWRES_SETHOSTENTINT="#undef ISC_LWRES_SETHOSTENTINT"]) 2949*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_LWRES_SETHOSTENTINT) 2950*00b67f09SDavid van Moolenbroek 2951*00b67f09SDavid van MoolenbroekAC_MSG_CHECKING(for int endhostent) 2952*00b67f09SDavid van MoolenbroekAC_TRY_COMPILE([ 2953*00b67f09SDavid van Moolenbroek#include <netdb.h>], 2954*00b67f09SDavid van Moolenbroek[int i = endhostent(); return(0);], 2955*00b67f09SDavid van Moolenbroek [AC_MSG_RESULT(yes) 2956*00b67f09SDavid van Moolenbroek ISC_LWRES_ENDHOSTENTINT="#define ISC_LWRES_ENDHOSTENTINT 1"], 2957*00b67f09SDavid van Moolenbroek [AC_MSG_RESULT(no) 2958*00b67f09SDavid van Moolenbroek ISC_LWRES_ENDHOSTENTINT="#undef ISC_LWRES_ENDHOSTENTINT"]) 2959*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_LWRES_ENDHOSTENTINT) 2960*00b67f09SDavid van Moolenbroek 2961*00b67f09SDavid van MoolenbroekAC_MSG_CHECKING(for getnetbyaddr(in_addr_t, ...)) 2962*00b67f09SDavid van MoolenbroekAC_TRY_COMPILE([ 2963*00b67f09SDavid van Moolenbroek#include <netdb.h> 2964*00b67f09SDavid van Moolenbroekstruct netent *getnetbyaddr(in_addr_t, int);], 2965*00b67f09SDavid van Moolenbroek[], 2966*00b67f09SDavid van Moolenbroek [AC_MSG_RESULT(yes) 2967*00b67f09SDavid van Moolenbroek ISC_LWRES_GETNETBYADDRINADDR="#define ISC_LWRES_GETNETBYADDRINADDR 1"], 2968*00b67f09SDavid van Moolenbroek [AC_MSG_RESULT(no) 2969*00b67f09SDavid van Moolenbroek ISC_LWRES_GETNETBYADDRINADDR="#undef ISC_LWRES_GETNETBYADDRINADDR"]) 2970*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_LWRES_GETNETBYADDRINADDR) 2971*00b67f09SDavid van Moolenbroek 2972*00b67f09SDavid van MoolenbroekAC_MSG_CHECKING(for int setnetent) 2973*00b67f09SDavid van MoolenbroekAC_TRY_COMPILE([ 2974*00b67f09SDavid van Moolenbroek#include <netdb.h>], 2975*00b67f09SDavid van Moolenbroek[int i = setnetent(0); return(0);], 2976*00b67f09SDavid van Moolenbroek [AC_MSG_RESULT(yes) 2977*00b67f09SDavid van Moolenbroek ISC_LWRES_SETNETENTINT="#define ISC_LWRES_SETNETENTINT 1"], 2978*00b67f09SDavid van Moolenbroek [AC_MSG_RESULT(no) 2979*00b67f09SDavid van Moolenbroek ISC_LWRES_SETNETENTINT="#undef ISC_LWRES_SETNETENTINT"]) 2980*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_LWRES_SETNETENTINT) 2981*00b67f09SDavid van Moolenbroek 2982*00b67f09SDavid van MoolenbroekAC_MSG_CHECKING(for int endnetent) 2983*00b67f09SDavid van MoolenbroekAC_TRY_COMPILE([ 2984*00b67f09SDavid van Moolenbroek#include <netdb.h>], 2985*00b67f09SDavid van Moolenbroek[int i = endnetent(); return(0);], 2986*00b67f09SDavid van Moolenbroek [AC_MSG_RESULT(yes) 2987*00b67f09SDavid van Moolenbroek ISC_LWRES_ENDNETENTINT="#define ISC_LWRES_ENDNETENTINT 1"], 2988*00b67f09SDavid van Moolenbroek [AC_MSG_RESULT(no) 2989*00b67f09SDavid van Moolenbroek ISC_LWRES_ENDNETENTINT="#undef ISC_LWRES_ENDNETENTINT"]) 2990*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_LWRES_ENDNETENTINT) 2991*00b67f09SDavid van Moolenbroek 2992*00b67f09SDavid van MoolenbroekAC_MSG_CHECKING(for gethostbyaddr(const void *, size_t, ...)) 2993*00b67f09SDavid van MoolenbroekAC_TRY_COMPILE([ 2994*00b67f09SDavid van Moolenbroek#include <netdb.h> 2995*00b67f09SDavid van Moolenbroekstruct hostent *gethostbyaddr(const void *, size_t, int);], 2996*00b67f09SDavid van Moolenbroek[return(0);], 2997*00b67f09SDavid van Moolenbroek [AC_MSG_RESULT(yes) 2998*00b67f09SDavid van Moolenbroek ISC_LWRES_GETHOSTBYADDRVOID="#define ISC_LWRES_GETHOSTBYADDRVOID 1"], 2999*00b67f09SDavid van Moolenbroek [AC_MSG_RESULT(no) 3000*00b67f09SDavid van Moolenbroek ISC_LWRES_GETHOSTBYADDRVOID="#undef ISC_LWRES_GETHOSTBYADDRVOID"]) 3001*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_LWRES_GETHOSTBYADDRVOID) 3002*00b67f09SDavid van Moolenbroek 3003*00b67f09SDavid van MoolenbroekAC_MSG_CHECKING(for h_errno in netdb.h) 3004*00b67f09SDavid van MoolenbroekAC_TRY_COMPILE([ 3005*00b67f09SDavid van Moolenbroek#include <netdb.h>], 3006*00b67f09SDavid van Moolenbroek[h_errno = 1; return(0);], 3007*00b67f09SDavid van Moolenbroek [AC_MSG_RESULT(yes) 3008*00b67f09SDavid van Moolenbroek ISC_LWRES_NEEDHERRNO="#undef ISC_LWRES_NEEDHERRNO"], 3009*00b67f09SDavid van Moolenbroek [AC_MSG_RESULT(no) 3010*00b67f09SDavid van Moolenbroek ISC_LWRES_NEEDHERRNO="#define ISC_LWRES_NEEDHERRNO 1"]) 3011*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_LWRES_NEEDHERRNO) 3012*00b67f09SDavid van Moolenbroek 3013*00b67f09SDavid van Moolenbroek# 3014*00b67f09SDavid van Moolenbroek# Sadly, the definitions of system-supplied getnameinfo(3) vary. Try to catch 3015*00b67f09SDavid van Moolenbroek# known variations here: 3016*00b67f09SDavid van Moolenbroek# 3017*00b67f09SDavid van MoolenbroekAC_MSG_CHECKING(for getnameinfo prototype definitions) 3018*00b67f09SDavid van MoolenbroekAC_TRY_COMPILE([ 3019*00b67f09SDavid van Moolenbroek#include <sys/types.h> 3020*00b67f09SDavid van Moolenbroek#include <sys/socket.h> 3021*00b67f09SDavid van Moolenbroek#include <netdb.h> 3022*00b67f09SDavid van Moolenbroekint getnameinfo(const struct sockaddr *, socklen_t, char *, 3023*00b67f09SDavid van Moolenbroek socklen_t, char *, socklen_t, unsigned int);], 3024*00b67f09SDavid van Moolenbroek[ return (0);], 3025*00b67f09SDavid van Moolenbroek [AC_MSG_RESULT(socklen_t for buflen; u_int for flags) 3026*00b67f09SDavid van Moolenbroek AC_DEFINE(IRS_GETNAMEINFO_SOCKLEN_T, socklen_t, 3027*00b67f09SDavid van Moolenbroek [Define to the sockaddr length type used by getnameinfo(3).]) 3028*00b67f09SDavid van Moolenbroek AC_DEFINE(IRS_GETNAMEINFO_BUFLEN_T, socklen_t, 3029*00b67f09SDavid van Moolenbroek [Define to the buffer length type used by getnameinfo(3).]) 3030*00b67f09SDavid van Moolenbroek AC_DEFINE(IRS_GETNAMEINFO_FLAGS_T, unsigned int, 3031*00b67f09SDavid van Moolenbroek [Define to the flags type used by getnameinfo(3).])], 3032*00b67f09SDavid van Moolenbroek[AC_TRY_COMPILE([ 3033*00b67f09SDavid van Moolenbroek#include <sys/types.h> 3034*00b67f09SDavid van Moolenbroek#include <sys/socket.h> 3035*00b67f09SDavid van Moolenbroek#include <netdb.h> 3036*00b67f09SDavid van Moolenbroekint getnameinfo(const struct sockaddr *, socklen_t, char *, 3037*00b67f09SDavid van Moolenbroek size_t, char *, size_t, int);], 3038*00b67f09SDavid van Moolenbroek[ return (0);], 3039*00b67f09SDavid van Moolenbroek [AC_MSG_RESULT(size_t for buflen; int for flags) 3040*00b67f09SDavid van Moolenbroek AC_DEFINE(IRS_GETNAMEINFO_SOCKLEN_T, socklen_t) 3041*00b67f09SDavid van Moolenbroek AC_DEFINE(IRS_GETNAMEINFO_BUFLEN_T, size_t) 3042*00b67f09SDavid van Moolenbroek AC_DEFINE(IRS_GETNAMEINFO_FLAGS_T, int)], 3043*00b67f09SDavid van Moolenbroek[AC_TRY_COMPILE([ 3044*00b67f09SDavid van Moolenbroek#include <sys/types.h> 3045*00b67f09SDavid van Moolenbroek#include <sys/socket.h> 3046*00b67f09SDavid van Moolenbroek#include <netdb.h> 3047*00b67f09SDavid van Moolenbroekint getnameinfo(const struct sockaddr *, size_t, char *, 3048*00b67f09SDavid van Moolenbroek size_t, char *, size_t, int);], 3049*00b67f09SDavid van Moolenbroek[ return (0);], 3050*00b67f09SDavid van Moolenbroek [AC_MSG_RESULT(size_t for buflen; int for flags) 3051*00b67f09SDavid van Moolenbroek AC_DEFINE(IRS_GETNAMEINFO_SOCKLEN_T, size_t) 3052*00b67f09SDavid van Moolenbroek AC_DEFINE(IRS_GETNAMEINFO_BUFLEN_T, size_t) 3053*00b67f09SDavid van Moolenbroek AC_DEFINE(IRS_GETNAMEINFO_FLAGS_T, int)], 3054*00b67f09SDavid van Moolenbroek[AC_MSG_RESULT(not match any subspecies; assume standard definition) 3055*00b67f09SDavid van MoolenbroekAC_DEFINE(IRS_GETNAMEINFO_SOCKLEN_T, socklen_t) 3056*00b67f09SDavid van MoolenbroekAC_DEFINE(IRS_GETNAMEINFO_BUFLEN_T, socklen_t) 3057*00b67f09SDavid van MoolenbroekAC_DEFINE(IRS_GETNAMEINFO_FLAGS_T, int)])])]) 3058*00b67f09SDavid van Moolenbroek 3059*00b67f09SDavid van Moolenbroek# 3060*00b67f09SDavid van Moolenbroek# ...and same for gai_strerror(). 3061*00b67f09SDavid van Moolenbroek# 3062*00b67f09SDavid van MoolenbroekAC_MSG_CHECKING(for gai_strerror prototype definitions) 3063*00b67f09SDavid van MoolenbroekAC_TRY_COMPILE([ 3064*00b67f09SDavid van Moolenbroek#include <sys/types.h> 3065*00b67f09SDavid van Moolenbroek#include <sys/socket.h> 3066*00b67f09SDavid van Moolenbroek#include <netdb.h> 3067*00b67f09SDavid van Moolenbroekchar *gai_strerror(int ecode);], 3068*00b67f09SDavid van Moolenbroek[ return (0); ], 3069*00b67f09SDavid van Moolenbroek [AC_MSG_RESULT(returning char *) 3070*00b67f09SDavid van Moolenbroek AC_DEFINE([IRS_GAISTRERROR_RETURN_T], [char *], 3071*00b67f09SDavid van Moolenbroek [return type of gai_strerror])], 3072*00b67f09SDavid van Moolenbroek[AC_MSG_RESULT(not match any subspecies; assume standard definition) 3073*00b67f09SDavid van MoolenbroekAC_DEFINE([IRS_GAISTRERROR_RETURN_T], [const char *])]) 3074*00b67f09SDavid van Moolenbroek 3075*00b67f09SDavid van MoolenbroekAC_CHECK_FUNC(getipnodebyname, 3076*00b67f09SDavid van Moolenbroek [ISC_LWRES_GETIPNODEPROTO="#undef ISC_LWRES_GETIPNODEPROTO"], 3077*00b67f09SDavid van Moolenbroek [ISC_LWRES_GETIPNODEPROTO="#define ISC_LWRES_GETIPNODEPROTO 1"]) 3078*00b67f09SDavid van MoolenbroekAC_CHECK_FUNC(getnameinfo, 3079*00b67f09SDavid van Moolenbroek [ISC_LWRES_GETNAMEINFOPROTO="#undef ISC_LWRES_GETNAMEINFOPROTO"], 3080*00b67f09SDavid van Moolenbroek [ISC_LWRES_GETNAMEINFOPROTO="#define ISC_LWRES_GETNAMEINFOPROTO 1"]) 3081*00b67f09SDavid van MoolenbroekAC_CHECK_FUNC(getaddrinfo, 3082*00b67f09SDavid van Moolenbroek [ISC_LWRES_GETADDRINFOPROTO="#undef ISC_LWRES_GETADDRINFOPROTO" 3083*00b67f09SDavid van Moolenbroek AC_DEFINE(HAVE_GETADDRINFO)], 3084*00b67f09SDavid van Moolenbroek [ISC_LWRES_GETADDRINFOPROTO="#define ISC_LWRES_GETADDRINFOPROTO 1"]) 3085*00b67f09SDavid van MoolenbroekAC_CHECK_FUNC(gai_strerror, AC_DEFINE(HAVE_GAISTRERROR)) 3086*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_LWRES_GETIPNODEPROTO) 3087*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_LWRES_GETADDRINFOPROTO) 3088*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_LWRES_GETNAMEINFOPROTO) 3089*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_IRS_GETNAMEINFOSOCKLEN) 3090*00b67f09SDavid van Moolenbroek 3091*00b67f09SDavid van MoolenbroekAC_ARG_ENABLE(getifaddrs, 3092*00b67f09SDavid van Moolenbroek[ --enable-getifaddrs enable the use of getifaddrs() [[yes|no]].], 3093*00b67f09SDavid van Moolenbroek want_getifaddrs="$enableval", want_getifaddrs="yes") 3094*00b67f09SDavid van Moolenbroek 3095*00b67f09SDavid van Moolenbroek# 3096*00b67f09SDavid van Moolenbroek# This interface iteration code for getifaddrs() will fall back to using 3097*00b67f09SDavid van Moolenbroek# /proc/net/if_inet6 if getifaddrs() in glibc doesn't return any IPv6 3098*00b67f09SDavid van Moolenbroek# addresses. 3099*00b67f09SDavid van Moolenbroek# 3100*00b67f09SDavid van Moolenbroekcase $want_getifaddrs in 3101*00b67f09SDavid van Moolenbroekglibc) 3102*00b67f09SDavid van MoolenbroekAC_MSG_WARN("--enable-getifaddrs=glibc is no longer required") 3103*00b67f09SDavid van MoolenbroekAC_CHECK_FUNC(getifaddrs, AC_DEFINE(HAVE_GETIFADDRS)) 3104*00b67f09SDavid van Moolenbroek;; 3105*00b67f09SDavid van Moolenbroekyes) 3106*00b67f09SDavid van MoolenbroekAC_CHECK_FUNC(getifaddrs, AC_DEFINE(HAVE_GETIFADDRS)) 3107*00b67f09SDavid van Moolenbroek;; 3108*00b67f09SDavid van Moolenbroekno) 3109*00b67f09SDavid van Moolenbroek;; 3110*00b67f09SDavid van Moolenbroekesac 3111*00b67f09SDavid van Moolenbroek 3112*00b67f09SDavid van Moolenbroek# 3113*00b67f09SDavid van Moolenbroek# Look for a sysctl call to get the list of network interfaces. 3114*00b67f09SDavid van Moolenbroek# 3115*00b67f09SDavid van Moolenbroekcase $ac_cv_header_sys_sysctl_h in 3116*00b67f09SDavid van Moolenbroekyes) 3117*00b67f09SDavid van MoolenbroekAC_MSG_CHECKING(for interface list sysctl) 3118*00b67f09SDavid van MoolenbroekAC_EGREP_CPP(found_rt_iflist, [ 3119*00b67f09SDavid van Moolenbroek#include <sys/param.h> 3120*00b67f09SDavid van Moolenbroek#include <sys/sysctl.h> 3121*00b67f09SDavid van Moolenbroek#include <sys/socket.h> 3122*00b67f09SDavid van Moolenbroek#ifdef NET_RT_IFLIST 3123*00b67f09SDavid van Moolenbroekfound_rt_iflist 3124*00b67f09SDavid van Moolenbroek#endif 3125*00b67f09SDavid van Moolenbroek], 3126*00b67f09SDavid van Moolenbroek [AC_MSG_RESULT(yes) 3127*00b67f09SDavid van Moolenbroek AC_DEFINE(HAVE_IFLIST_SYSCTL)], 3128*00b67f09SDavid van Moolenbroek [AC_MSG_RESULT(no)]) 3129*00b67f09SDavid van Moolenbroek;; 3130*00b67f09SDavid van Moolenbroekesac 3131*00b67f09SDavid van Moolenbroek 3132*00b67f09SDavid van Moolenbroek# 3133*00b67f09SDavid van Moolenbroek# Check for some other useful functions that are not ever-present. 3134*00b67f09SDavid van Moolenbroek# 3135*00b67f09SDavid van Moolenbroek 3136*00b67f09SDavid van Moolenbroek# We test for strsep() using AC_TRY_LINK instead of AC_CHECK_FUNC 3137*00b67f09SDavid van Moolenbroek# because AIX 4.3.3 with patches for bos.adt.include to version 4.3.3.77 3138*00b67f09SDavid van Moolenbroek# reportedly defines strsep() without declaring it in <string.h> when 3139*00b67f09SDavid van Moolenbroek# -D_LINUX_SOURCE_COMPAT is not defined [RT #2190], and 3140*00b67f09SDavid van Moolenbroek# AC_CHECK_FUNC() incorrectly succeeds because it declares 3141*00b67f09SDavid van Moolenbroek# the function itself. 3142*00b67f09SDavid van MoolenbroekAC_MSG_CHECKING(for correctly declared strsep()) 3143*00b67f09SDavid van MoolenbroekAC_TRY_LINK([#include <string.h>], [char *sp; char *foo = strsep(&sp, ".");], 3144*00b67f09SDavid van Moolenbroek [AC_MSG_RESULT(yes); ISC_PLATFORM_NEEDSTRSEP="#undef ISC_PLATFORM_NEEDSTRSEP"], 3145*00b67f09SDavid van Moolenbroek [AC_MSG_RESULT(no); ISC_PLATFORM_NEEDSTRSEP="#define ISC_PLATFORM_NEEDSTRSEP 1"]) 3146*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_PLATFORM_NEEDSTRSEP) 3147*00b67f09SDavid van Moolenbroek 3148*00b67f09SDavid van MoolenbroekAC_CHECK_FUNC(memmove, 3149*00b67f09SDavid van Moolenbroek [ISC_PLATFORM_NEEDMEMMOVE="#undef ISC_PLATFORM_NEEDMEMMOVE"], 3150*00b67f09SDavid van Moolenbroek [ISC_PLATFORM_NEEDMEMMOVE="#define ISC_PLATFORM_NEEDMEMMOVE 1"]) 3151*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_PLATFORM_NEEDMEMMOVE) 3152*00b67f09SDavid van Moolenbroek 3153*00b67f09SDavid van MoolenbroekAC_CHECK_FUNC(strtoul, 3154*00b67f09SDavid van Moolenbroek [ISC_PLATFORM_NEEDSTRTOUL="#undef ISC_PLATFORM_NEEDSTRTOUL" 3155*00b67f09SDavid van Moolenbroek LWRES_PLATFORM_NEEDSTRTOUL="#undef LWRES_PLATFORM_NEEDSTRTOUL" 3156*00b67f09SDavid van Moolenbroek GENRANDOMLIB=""], 3157*00b67f09SDavid van Moolenbroek [ISC_PLATFORM_NEEDSTRTOUL="#define ISC_PLATFORM_NEEDSTRTOUL 1" 3158*00b67f09SDavid van Moolenbroek LWRES_PLATFORM_NEEDSTRTOUL="#define LWRES_PLATFORM_NEEDSTRTOUL 1" 3159*00b67f09SDavid van Moolenbroek GENRANDOMLIB='${ISCLIBS}']) 3160*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_PLATFORM_NEEDSTRTOUL) 3161*00b67f09SDavid van MoolenbroekAC_SUBST(LWRES_PLATFORM_NEEDSTRTOUL) 3162*00b67f09SDavid van MoolenbroekAC_SUBST(GENRANDOMLIB) 3163*00b67f09SDavid van Moolenbroek 3164*00b67f09SDavid van MoolenbroekAC_CHECK_FUNC(strlcpy, 3165*00b67f09SDavid van Moolenbroek [ISC_PLATFORM_NEEDSTRLCPY="#undef ISC_PLATFORM_NEEDSTRLCPY" 3166*00b67f09SDavid van Moolenbroek LWRES_PLATFORM_NEEDSTRLCPY="#undef LWRES_PLATFORM_NEEDSTRLCPY"], 3167*00b67f09SDavid van Moolenbroek [ISC_PLATFORM_NEEDSTRLCPY="#define ISC_PLATFORM_NEEDSTRLCPY 1" 3168*00b67f09SDavid van Moolenbroek LWRES_PLATFORM_NEEDSTRLCPY="#define LWRES_PLATFORM_NEEDSTRLCPY 1"]) 3169*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_PLATFORM_NEEDSTRLCPY) 3170*00b67f09SDavid van MoolenbroekAC_SUBST(LWRES_PLATFORM_NEEDSTRLCPY) 3171*00b67f09SDavid van Moolenbroek 3172*00b67f09SDavid van MoolenbroekAC_CHECK_FUNC(strlcat, 3173*00b67f09SDavid van Moolenbroek [ISC_PLATFORM_NEEDSTRLCAT="#undef ISC_PLATFORM_NEEDSTRLCAT"], 3174*00b67f09SDavid van Moolenbroek [ISC_PLATFORM_NEEDSTRLCAT="#define ISC_PLATFORM_NEEDSTRLCAT 1"]) 3175*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_PLATFORM_NEEDSTRLCAT) 3176*00b67f09SDavid van Moolenbroek 3177*00b67f09SDavid van MoolenbroekAC_CHECK_FUNC(strcasestr, 3178*00b67f09SDavid van Moolenbroek [ISC_PLATFORM_NEEDSTRCASESTR="#undef ISC_PLATFORM_NEEDSTRCASESTR"], 3179*00b67f09SDavid van Moolenbroek [ISC_PLATFORM_NEEDSTRCASESTR="#define ISC_PLATFORM_NEEDSTRCASESTR 1"]) 3180*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_PLATFORM_NEEDSTRCASESTR) 3181*00b67f09SDavid van Moolenbroek 3182*00b67f09SDavid van MoolenbroekAC_SUBST(READLINE_LIB) 3183*00b67f09SDavid van MoolenbroekAC_ARG_WITH(readline, 3184*00b67f09SDavid van Moolenbroek [ --with-readline[=LIBSPEC] specify readline library [default -lreadline]], 3185*00b67f09SDavid van Moolenbroek readline="$withval", readline="-lreadline") 3186*00b67f09SDavid van Moolenbroekcase "$readline" in 3187*00b67f09SDavid van Moolenbroekno) ;; 3188*00b67f09SDavid van Moolenbroek*) 3189*00b67f09SDavid van Moolenbroek if test "x$readline" = "xyes" 3190*00b67f09SDavid van Moolenbroek then 3191*00b67f09SDavid van Moolenbroek readline=-lreadline 3192*00b67f09SDavid van Moolenbroek fi 3193*00b67f09SDavid van Moolenbroek saved_LIBS="$LIBS" 3194*00b67f09SDavid van Moolenbroek LIBS="$readline" 3195*00b67f09SDavid van Moolenbroek AC_CHECK_FUNCS(readline) 3196*00b67f09SDavid van Moolenbroek if test "$ac_cv_func_readline" = "yes" 3197*00b67f09SDavid van Moolenbroek then 3198*00b67f09SDavid van Moolenbroek READLINE_LIB="$readline" 3199*00b67f09SDavid van Moolenbroek fi 3200*00b67f09SDavid van Moolenbroek LIBS="$saved_LIBS" 3201*00b67f09SDavid van Moolenbroek ;; 3202*00b67f09SDavid van Moolenbroekesac 3203*00b67f09SDavid van Moolenbroek 3204*00b67f09SDavid van Moolenbroek 3205*00b67f09SDavid van MoolenbroekISC_PRINT_OBJS= 3206*00b67f09SDavid van MoolenbroekISC_PRINT_SRCS= 3207*00b67f09SDavid van MoolenbroekAC_MSG_CHECKING(sprintf) 3208*00b67f09SDavid van MoolenbroekAC_TRY_COMPILE([ 3209*00b67f09SDavid van Moolenbroek#include <stdio.h> 3210*00b67f09SDavid van Moolenbroek], 3211*00b67f09SDavid van Moolenbroek[ char buf[2]; return(*sprintf(buf,"x"));], 3212*00b67f09SDavid van Moolenbroek[ 3213*00b67f09SDavid van MoolenbroekISC_PRINT_OBJS="print.$O" 3214*00b67f09SDavid van MoolenbroekISC_PRINT_SRCS="print.c" 3215*00b67f09SDavid van MoolenbroekISC_PLATFORM_NEEDSPRINTF="#define ISC_PLATFORM_NEEDSPRINTF" 3216*00b67f09SDavid van MoolenbroekLWRES_PLATFORM_NEEDSPRINTF="#define LWRES_PLATFORM_NEEDSPRINTF" 3217*00b67f09SDavid van Moolenbroek], 3218*00b67f09SDavid van Moolenbroek[ISC_PLATFORM_NEEDSPRINTF="#undef ISC_PLATFORM_NEEDSPRINTF" 3219*00b67f09SDavid van Moolenbroek LWRES_PLATFORM_NEEDSPRINTF="#undef LWRES_PLATFORM_NEEDSPRINTF"] 3220*00b67f09SDavid van Moolenbroek) 3221*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_PLATFORM_NEEDSPRINTF) 3222*00b67f09SDavid van MoolenbroekAC_SUBST(LWRES_PLATFORM_NEEDSPRINTF) 3223*00b67f09SDavid van Moolenbroek 3224*00b67f09SDavid van MoolenbroekAC_CHECK_FUNC(vsnprintf, 3225*00b67f09SDavid van Moolenbroek [ISC_PLATFORM_NEEDVSNPRINTF="#undef ISC_PLATFORM_NEEDVSNPRINTF" 3226*00b67f09SDavid van Moolenbroek LWRES_PLATFORM_NEEDVSNPRINTF="#undef LWRES_PLATFORM_NEEDVSNPRINTF"], 3227*00b67f09SDavid van Moolenbroek [ISC_PRINT_OBJS="print.$O" 3228*00b67f09SDavid van Moolenbroek ISC_PRINT_SRCS="print.c" 3229*00b67f09SDavid van Moolenbroek ISC_PLATFORM_NEEDVSNPRINTF="#define ISC_PLATFORM_NEEDVSNPRINTF 1" 3230*00b67f09SDavid van Moolenbroek LWRES_PLATFORM_NEEDVSNPRINTF="#define LWRES_PLATFORM_NEEDVSNPRINTF 1"]) 3231*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_PLATFORM_NEEDVSNPRINTF) 3232*00b67f09SDavid van MoolenbroekAC_SUBST(LWRES_PLATFORM_NEEDVSNPRINTF) 3233*00b67f09SDavid van MoolenbroekISC_EXTRA_OBJS="$ISC_EXTRA_OBJS $ISC_PRINT_OBJS" 3234*00b67f09SDavid van MoolenbroekISC_EXTRA_SRCS="$ISC_EXTRA_SRCS $ISC_PRINT_SRCS" 3235*00b67f09SDavid van Moolenbroek 3236*00b67f09SDavid van MoolenbroekAC_CHECK_FUNC(strerror, AC_DEFINE(HAVE_STRERROR)) 3237*00b67f09SDavid van Moolenbroek 3238*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_EXTRA_OBJS) 3239*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_EXTRA_SRCS) 3240*00b67f09SDavid van Moolenbroek 3241*00b67f09SDavid van Moolenbroek# 3242*00b67f09SDavid van Moolenbroek# Use our own SPNEGO implementation? 3243*00b67f09SDavid van Moolenbroek# 3244*00b67f09SDavid van MoolenbroekAC_ARG_ENABLE(isc-spnego, 3245*00b67f09SDavid van Moolenbroek [ --disable-isc-spnego use SPNEGO from GSSAPI library]) 3246*00b67f09SDavid van Moolenbroek 3247*00b67f09SDavid van Moolenbroekif test -n "$USE_GSSAPI" 3248*00b67f09SDavid van Moolenbroekthen 3249*00b67f09SDavid van Moolenbroek case "$enable_isc_spnego" in 3250*00b67f09SDavid van Moolenbroek yes|'') 3251*00b67f09SDavid van Moolenbroek USE_ISC_SPNEGO='-DUSE_ISC_SPNEGO' 3252*00b67f09SDavid van Moolenbroek DST_EXTRA_OBJS="$DST_EXTRA_OBJS spnego.$O" 3253*00b67f09SDavid van Moolenbroek DST_EXTRA_SRCS="$DST_EXTRA_SRCS spnego.c" 3254*00b67f09SDavid van Moolenbroek AC_MSG_RESULT(using SPNEGO from lib/dns) 3255*00b67f09SDavid van Moolenbroek ;; 3256*00b67f09SDavid van Moolenbroek no) 3257*00b67f09SDavid van Moolenbroek AC_MSG_RESULT(using SPNEGO from GSSAPI library) 3258*00b67f09SDavid van Moolenbroek ;; 3259*00b67f09SDavid van Moolenbroek esac 3260*00b67f09SDavid van Moolenbroekfi 3261*00b67f09SDavid van Moolenbroek 3262*00b67f09SDavid van MoolenbroekAC_SUBST(USE_ISC_SPNEGO) 3263*00b67f09SDavid van Moolenbroek 3264*00b67f09SDavid van MoolenbroekAC_SUBST(DST_EXTRA_OBJS) 3265*00b67f09SDavid van MoolenbroekAC_SUBST(DST_EXTRA_SRCS) 3266*00b67f09SDavid van Moolenbroek 3267*00b67f09SDavid van Moolenbroek# Determine the printf format characters to use when printing 3268*00b67f09SDavid van Moolenbroek# values of type isc_int64_t. This will normally be "ll", but where 3269*00b67f09SDavid van Moolenbroek# the compiler treats "long long" as a alias for "long" and printf 3270*00b67f09SDavid van Moolenbroek# doesn't know about "long long" use "l". Hopefully the sprintf 3271*00b67f09SDavid van Moolenbroek# will produce a inconsistent result in the later case. If the compiler 3272*00b67f09SDavid van Moolenbroek# fails due to seeing "%lld" we fall back to "l". 3273*00b67f09SDavid van Moolenbroek# 3274*00b67f09SDavid van Moolenbroek# Digital Unix 4.0 (gcc?) (long long) is 64 bits as is its long. It uses 3275*00b67f09SDavid van Moolenbroek# %ld even for (long long)/ 3276*00b67f09SDavid van Moolenbroek# 3277*00b67f09SDavid van Moolenbroek# Win32 uses "%I64d", but that's defined elsewhere since we don't use 3278*00b67f09SDavid van Moolenbroek# configure on Win32. 3279*00b67f09SDavid van Moolenbroek# 3280*00b67f09SDavid van MoolenbroekAC_MSG_CHECKING(printf format modifier for 64-bit integers) 3281*00b67f09SDavid van MoolenbroekAC_TRY_RUN([ 3282*00b67f09SDavid van Moolenbroek#include <stdio.h> 3283*00b67f09SDavid van Moolenbroekmain() { 3284*00b67f09SDavid van Moolenbroek long long int j = 0; 3285*00b67f09SDavid van Moolenbroek char buf[100]; 3286*00b67f09SDavid van Moolenbroek buf[0] = 0; 3287*00b67f09SDavid van Moolenbroek sprintf(buf, "%lld", j); 3288*00b67f09SDavid van Moolenbroek exit((sizeof(long long int) != sizeof(long int))? 0 : 3289*00b67f09SDavid van Moolenbroek (strcmp(buf, "0") != 0)); 3290*00b67f09SDavid van Moolenbroek} 3291*00b67f09SDavid van Moolenbroek], 3292*00b67f09SDavid van Moolenbroek [AC_MSG_RESULT(ll) 3293*00b67f09SDavid van Moolenbroek ISC_PLATFORM_QUADFORMAT='#define ISC_PLATFORM_QUADFORMAT "ll"' 3294*00b67f09SDavid van Moolenbroek LWRES_PLATFORM_QUADFORMAT='#define LWRES_PLATFORM_QUADFORMAT "ll"'], 3295*00b67f09SDavid van Moolenbroek [AC_MSG_RESULT(l) 3296*00b67f09SDavid van Moolenbroek ISC_PLATFORM_QUADFORMAT='#define ISC_PLATFORM_QUADFORMAT "l"' 3297*00b67f09SDavid van Moolenbroek LWRES_PLATFORM_QUADFORMAT='#define LWRES_PLATFORM_QUADFORMAT "l"'], 3298*00b67f09SDavid van Moolenbroek [AC_MSG_RESULT(assuming target platform uses ll) 3299*00b67f09SDavid van Moolenbroek ISC_PLATFORM_QUADFORMAT='#define ISC_PLATFORM_QUADFORMAT "ll"' 3300*00b67f09SDavid van Moolenbroek LWRES_PLATFORM_QUADFORMAT='#define LWRES_PLATFORM_QUADFORMAT "ll"']) 3301*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_PLATFORM_QUADFORMAT) 3302*00b67f09SDavid van MoolenbroekAC_SUBST(LWRES_PLATFORM_QUADFORMAT) 3303*00b67f09SDavid van Moolenbroek 3304*00b67f09SDavid van Moolenbroek# 3305*00b67f09SDavid van Moolenbroek# Security Stuff 3306*00b67f09SDavid van Moolenbroek# 3307*00b67f09SDavid van Moolenbroek# Note it is very recommended to *not* disable chroot(), 3308*00b67f09SDavid van Moolenbroek# this is only because chroot() was made obsolete by Posix. 3309*00b67f09SDavid van MoolenbroekAC_ARG_ENABLE(chroot, 3310*00b67f09SDavid van Moolenbroek [ --disable-chroot disable chroot]) 3311*00b67f09SDavid van Moolenbroekcase "$enable_chroot" in 3312*00b67f09SDavid van Moolenbroek yes|'') 3313*00b67f09SDavid van Moolenbroek AC_CHECK_FUNCS(chroot) 3314*00b67f09SDavid van Moolenbroek ;; 3315*00b67f09SDavid van Moolenbroek no) 3316*00b67f09SDavid van Moolenbroek ;; 3317*00b67f09SDavid van Moolenbroekesac 3318*00b67f09SDavid van MoolenbroekAC_ARG_ENABLE(linux-caps, 3319*00b67f09SDavid van Moolenbroek [ --disable-linux-caps disable linux capabilities]) 3320*00b67f09SDavid van Moolenbroekcase "$enable_linux_caps" in 3321*00b67f09SDavid van Moolenbroek yes|'') 3322*00b67f09SDavid van Moolenbroek AC_CHECK_HEADERS(linux/types.h) 3323*00b67f09SDavid van Moolenbroek AC_CHECK_HEADERS([sys/capability.h]) 3324*00b67f09SDavid van Moolenbroek AC_CHECK_HEADERS([linux/capability.h], [], [], 3325*00b67f09SDavid van Moolenbroek [#ifdef HAVE_LINUX_TYPES_H 3326*00b67f09SDavid van Moolenbroek #include <linux/types.h> 3327*00b67f09SDavid van Moolenbroek #endif 3328*00b67f09SDavid van Moolenbroek ]) 3329*00b67f09SDavid van Moolenbroek AC_CHECK_LIB(cap, cap_set_proc) 3330*00b67f09SDavid van Moolenbroek ;; 3331*00b67f09SDavid van Moolenbroek no) 3332*00b67f09SDavid van Moolenbroek ;; 3333*00b67f09SDavid van Moolenbroekesac 3334*00b67f09SDavid van MoolenbroekAC_CHECK_HEADERS(sys/prctl.h) 3335*00b67f09SDavid van Moolenbroek 3336*00b67f09SDavid van MoolenbroekAC_CHECK_HEADERS(sys/un.h, 3337*00b67f09SDavid van MoolenbroekISC_PLATFORM_HAVESYSUNH="#define ISC_PLATFORM_HAVESYSUNH 1" 3338*00b67f09SDavid van Moolenbroek, 3339*00b67f09SDavid van MoolenbroekISC_PLATFORM_HAVESYSUNH="#undef ISC_PLATFORM_HAVESYSUNH" 3340*00b67f09SDavid van Moolenbroek) 3341*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_PLATFORM_HAVESYSUNH) 3342*00b67f09SDavid van Moolenbroek 3343*00b67f09SDavid van Moolenbroekcase "$host" in 3344*00b67f09SDavid van Moolenbroek*-solaris*) 3345*00b67f09SDavid van Moolenbroek AC_DEFINE(NEED_SECURE_DIRECTORY, 1, 3346*00b67f09SDavid van Moolenbroek [Define if connect does not honour the permission on the UNIX domain socket.]) 3347*00b67f09SDavid van Moolenbroek ;; 3348*00b67f09SDavid van Moolenbroek*-sunos*) 3349*00b67f09SDavid van Moolenbroek AC_DEFINE(NEED_SECURE_DIRECTORY, 1, 3350*00b67f09SDavid van Moolenbroek [Define if connect does not honour the permission on the UNIX domain socket.]) 3351*00b67f09SDavid van Moolenbroek ;; 3352*00b67f09SDavid van Moolenbroekesac 3353*00b67f09SDavid van Moolenbroek 3354*00b67f09SDavid van Moolenbroek# 3355*00b67f09SDavid van Moolenbroek# Time Zone Stuff 3356*00b67f09SDavid van Moolenbroek# 3357*00b67f09SDavid van MoolenbroekAC_CHECK_FUNC(tzset, AC_DEFINE(HAVE_TZSET)) 3358*00b67f09SDavid van Moolenbroek 3359*00b67f09SDavid van MoolenbroekAC_MSG_CHECKING(for optarg declaration) 3360*00b67f09SDavid van MoolenbroekAC_TRY_COMPILE([ 3361*00b67f09SDavid van Moolenbroek#include <unistd.h> 3362*00b67f09SDavid van Moolenbroek], 3363*00b67f09SDavid van Moolenbroek[optarg = 0;], 3364*00b67f09SDavid van Moolenbroek[AC_MSG_RESULT(yes)], 3365*00b67f09SDavid van Moolenbroek[AC_MSG_RESULT(no) 3366*00b67f09SDavid van MoolenbroekGEN_NEED_OPTARG="-DNEED_OPTARG=1" 3367*00b67f09SDavid van MoolenbroekAC_DEFINE(NEED_OPTARG, 1, [Defined if extern char *optarg is not declared.])]) 3368*00b67f09SDavid van Moolenbroek 3369*00b67f09SDavid van Moolenbroek# 3370*00b67f09SDavid van Moolenbroek# BSD/OS, and perhaps some others, don't define rlim_t. 3371*00b67f09SDavid van Moolenbroek# 3372*00b67f09SDavid van MoolenbroekAC_MSG_CHECKING(for type rlim_t) 3373*00b67f09SDavid van MoolenbroekAC_TRY_COMPILE([ 3374*00b67f09SDavid van Moolenbroek#include <sys/types.h> 3375*00b67f09SDavid van Moolenbroek#include <sys/time.h> 3376*00b67f09SDavid van Moolenbroek#include <sys/resource.h>], 3377*00b67f09SDavid van Moolenbroek[rlim_t rl = 19671212; return (0);], 3378*00b67f09SDavid van Moolenbroek[AC_MSG_RESULT(yes) 3379*00b67f09SDavid van Moolenbroek ISC_PLATFORM_RLIMITTYPE="#define ISC_PLATFORM_RLIMITTYPE rlim_t"], 3380*00b67f09SDavid van Moolenbroek[AC_MSG_RESULT(no) 3381*00b67f09SDavid van Moolenbroek 3382*00b67f09SDavid van MoolenbroekAC_MSG_CHECKING(type of rlim_cur) 3383*00b67f09SDavid van MoolenbroekAC_TRY_RUN([ 3384*00b67f09SDavid van Moolenbroek#include <sys/types.h> 3385*00b67f09SDavid van Moolenbroek#include <sys/time.h> 3386*00b67f09SDavid van Moolenbroek#include <sys/resource.h> 3387*00b67f09SDavid van Moolenbroekmain() { struct rlimit r; exit(!(sizeof(r.rlim_cur) == sizeof(int)));}], 3388*00b67f09SDavid van Moolenbroek[AC_MSG_RESULT(int) 3389*00b67f09SDavid van MoolenbroekISC_PLATFORM_RLIMITTYPE="#define ISC_PLATFORM_RLIMITTYPE int"], 3390*00b67f09SDavid van Moolenbroek[ 3391*00b67f09SDavid van MoolenbroekAC_TRY_RUN([ 3392*00b67f09SDavid van Moolenbroek#include <sys/types.h> 3393*00b67f09SDavid van Moolenbroek#include <sys/time.h> 3394*00b67f09SDavid van Moolenbroek#include <sys/resource.h> 3395*00b67f09SDavid van Moolenbroekmain() { struct rlimit r; exit(!(sizeof(r.rlim_cur) == sizeof(long int)));}], 3396*00b67f09SDavid van Moolenbroek[AC_MSG_RESULT(long int) 3397*00b67f09SDavid van MoolenbroekISC_PLATFORM_RLIMITTYPE="#define ISC_PLATFORM_RLIMITTYPE long int"], 3398*00b67f09SDavid van Moolenbroek[ 3399*00b67f09SDavid van MoolenbroekAC_TRY_RUN([ 3400*00b67f09SDavid van Moolenbroek#include <sys/types.h> 3401*00b67f09SDavid van Moolenbroek#include <sys/time.h> 3402*00b67f09SDavid van Moolenbroek#include <sys/resource.h> 3403*00b67f09SDavid van Moolenbroekmain() { struct rlimit r; exit((!sizeof(r.rlim_cur) == sizeof(long long int)));}], 3404*00b67f09SDavid van Moolenbroek[AC_MSG_RESULT(long long int) 3405*00b67f09SDavid van MoolenbroekISC_PLATFORM_RLIMITTYPE="#define ISC_PLATFORM_RLIMITTYPE long long int"], 3406*00b67f09SDavid van Moolenbroek[AC_MSG_ERROR([unable to determine sizeof rlim_cur]) 3407*00b67f09SDavid van Moolenbroek],[AC_MSG_ERROR(this cannot happen)]) 3408*00b67f09SDavid van Moolenbroek],[AC_MSG_ERROR(this cannot happen)]) 3409*00b67f09SDavid van Moolenbroek],[ 3410*00b67f09SDavid van MoolenbroekAC_ARG_WITH(rlimtype, , rlimtype="$withval", rlimtype="long long int") 3411*00b67f09SDavid van MoolenbroekISC_PLATFORM_RLIMITTYPE="#define ISC_PLATFORM_RLIMITTYPE $rlimtype" 3412*00b67f09SDavid van MoolenbroekAC_MSG_RESULT(cannot determine type of rlim_cur when cross compiling - assuming $rlimtype)]) 3413*00b67f09SDavid van Moolenbroek]) 3414*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_PLATFORM_RLIMITTYPE) 3415*00b67f09SDavid van Moolenbroek 3416*00b67f09SDavid van Moolenbroek# 3417*00b67f09SDavid van Moolenbroek# Older HP-UX doesn't have gettune 3418*00b67f09SDavid van Moolenbroek# 3419*00b67f09SDavid van Moolenbroekcase "$host" in 3420*00b67f09SDavid van Moolenbroek *-hp-hpux*) 3421*00b67f09SDavid van Moolenbroek AC_CHECK_HEADERS(sys/dyntune.h) 3422*00b67f09SDavid van Moolenbroek ;; 3423*00b67f09SDavid van Moolenbroek *) 3424*00b67f09SDavid van Moolenbroek ;; 3425*00b67f09SDavid van Moolenbroekesac 3426*00b67f09SDavid van Moolenbroek 3427*00b67f09SDavid van Moolenbroek 3428*00b67f09SDavid van Moolenbroek# 3429*00b67f09SDavid van Moolenbroek# Compaq TruCluster requires more code for handling cluster IP aliases 3430*00b67f09SDavid van Moolenbroek# 3431*00b67f09SDavid van Moolenbroekcase "$host" in 3432*00b67f09SDavid van Moolenbroek *-dec-osf*) 3433*00b67f09SDavid van Moolenbroek AC_CHECK_LIB(clua, clua_getaliasaddress, LIBS="-lclua $LIBS") 3434*00b67f09SDavid van Moolenbroek AC_CHECK_FUNC(clua_getaliasaddress, 3435*00b67f09SDavid van Moolenbroek AC_DEFINE(HAVE_TRUCLUSTER, 1, 3436*00b67f09SDavid van Moolenbroek [Define if running under Compaq TruCluster])) 3437*00b67f09SDavid van Moolenbroek ;; 3438*00b67f09SDavid van Moolenbroek *) 3439*00b67f09SDavid van Moolenbroek ;; 3440*00b67f09SDavid van Moolenbroekesac 3441*00b67f09SDavid van Moolenbroek 3442*00b67f09SDavid van Moolenbroek# 3443*00b67f09SDavid van Moolenbroek# Some hosts need msg_namelen to match the size of the socket structure. 3444*00b67f09SDavid van Moolenbroek# Some hosts don't set msg_namelen appropriately on return from recvmsg(). 3445*00b67f09SDavid van Moolenbroek# 3446*00b67f09SDavid van Moolenbroekcase $host in 3447*00b67f09SDavid van Moolenbroek*os2*|*hp-mpeix*) 3448*00b67f09SDavid van Moolenbroek AC_DEFINE(BROKEN_RECVMSG, 1, 3449*00b67f09SDavid van Moolenbroek [Define if recvmsg() does not meet all of the BSD socket API specifications.]) 3450*00b67f09SDavid van Moolenbroek ;; 3451*00b67f09SDavid van Moolenbroekesac 3452*00b67f09SDavid van Moolenbroek 3453*00b67f09SDavid van Moolenbroek# 3454*00b67f09SDavid van Moolenbroek# Microsoft has their own way of handling shared libraries that requires 3455*00b67f09SDavid van Moolenbroek# additional qualifiers on extern variables. Unix systems don't need it. 3456*00b67f09SDavid van Moolenbroek# 3457*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_PLATFORM_USEDECLSPEC) 3458*00b67f09SDavid van MoolenbroekISC_PLATFORM_USEDECLSPEC="#undef ISC_PLATFORM_USEDECLSPEC" 3459*00b67f09SDavid van MoolenbroekAC_SUBST(LWRES_PLATFORM_USEDECLSPEC) 3460*00b67f09SDavid van MoolenbroekLWRES_PLATFORM_USEDECLSPEC="#undef LWRES_PLATFORM_USEDECLSPEC" 3461*00b67f09SDavid van MoolenbroekAC_SUBST(IRS_PLATFORM_USEDECLSPEC) 3462*00b67f09SDavid van MoolenbroekIRS_PLATFORM_USEDECLSPEC="#undef IRS_PLATFORM_USEDECLSPEC" 3463*00b67f09SDavid van Moolenbroek 3464*00b67f09SDavid van Moolenbroek# 3465*00b67f09SDavid van Moolenbroek# Random remaining OS-specific issues involving compiler warnings. 3466*00b67f09SDavid van Moolenbroek# XXXDCL print messages to indicate some compensation is being done? 3467*00b67f09SDavid van Moolenbroek# 3468*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_PLATFORM_BRACEPTHREADONCEINIT) 3469*00b67f09SDavid van MoolenbroekISC_PLATFORM_BRACEPTHREADONCEINIT="#undef ISC_PLATFORM_BRACEPTHREADONCEINIT" 3470*00b67f09SDavid van Moolenbroek 3471*00b67f09SDavid van Moolenbroekcase "$host" in 3472*00b67f09SDavid van Moolenbroek *-aix5.[[123]].*) 3473*00b67f09SDavid van Moolenbroek hack_shutup_pthreadonceinit=yes 3474*00b67f09SDavid van Moolenbroek ;; 3475*00b67f09SDavid van Moolenbroek *-bsdi3.1*) 3476*00b67f09SDavid van Moolenbroek hack_shutup_sputaux=yes 3477*00b67f09SDavid van Moolenbroek ;; 3478*00b67f09SDavid van Moolenbroek *-bsdi4.0*) 3479*00b67f09SDavid van Moolenbroek hack_shutup_sigwait=yes 3480*00b67f09SDavid van Moolenbroek hack_shutup_sputaux=yes 3481*00b67f09SDavid van Moolenbroek ;; 3482*00b67f09SDavid van Moolenbroek [*-bsdi4.[12]*]) 3483*00b67f09SDavid van Moolenbroek hack_shutup_stdargcast=yes 3484*00b67f09SDavid van Moolenbroek ;; 3485*00b67f09SDavid van Moolenbroek [*-solaris2.[89]]) 3486*00b67f09SDavid van Moolenbroek hack_shutup_pthreadonceinit=yes 3487*00b67f09SDavid van Moolenbroek ;; 3488*00b67f09SDavid van Moolenbroek *-solaris2.1[[0-9]]) 3489*00b67f09SDavid van Moolenbroek AC_TRY_COMPILE([ #include <pthread.h> ], [ static pthread_once_t once_test = { PTHREAD_ONCE_INIT }; ], [hack_shutup_pthreadonceinit=yes], ) 3490*00b67f09SDavid van Moolenbroek ;; 3491*00b67f09SDavid van Moolenbroekesac 3492*00b67f09SDavid van Moolenbroek 3493*00b67f09SDavid van Moolenbroekcase "$hack_shutup_pthreadonceinit" in 3494*00b67f09SDavid van Moolenbroek yes) 3495*00b67f09SDavid van Moolenbroek # 3496*00b67f09SDavid van Moolenbroek # Shut up PTHREAD_ONCE_INIT unbraced initializer warnings. 3497*00b67f09SDavid van Moolenbroek # 3498*00b67f09SDavid van Moolenbroek ISC_PLATFORM_BRACEPTHREADONCEINIT="#define ISC_PLATFORM_BRACEPTHREADONCEINIT 1" 3499*00b67f09SDavid van Moolenbroek ;; 3500*00b67f09SDavid van Moolenbroekesac 3501*00b67f09SDavid van Moolenbroek 3502*00b67f09SDavid van Moolenbroekcase "$hack_shutup_sigwait" in 3503*00b67f09SDavid van Moolenbroek yes) 3504*00b67f09SDavid van Moolenbroek # 3505*00b67f09SDavid van Moolenbroek # Shut up a -Wmissing-prototypes warning for sigwait(). 3506*00b67f09SDavid van Moolenbroek # 3507*00b67f09SDavid van Moolenbroek AC_DEFINE(SHUTUP_SIGWAIT) 3508*00b67f09SDavid van Moolenbroek ;; 3509*00b67f09SDavid van Moolenbroekesac 3510*00b67f09SDavid van Moolenbroek 3511*00b67f09SDavid van Moolenbroekcase "$hack_shutup_sputaux" in 3512*00b67f09SDavid van Moolenbroek yes) 3513*00b67f09SDavid van Moolenbroek # 3514*00b67f09SDavid van Moolenbroek # Shut up a -Wmissing-prototypes warning from <stdio.h>. 3515*00b67f09SDavid van Moolenbroek # 3516*00b67f09SDavid van Moolenbroek AC_DEFINE(SHUTUP_SPUTAUX) 3517*00b67f09SDavid van Moolenbroek ;; 3518*00b67f09SDavid van Moolenbroekesac 3519*00b67f09SDavid van Moolenbroek 3520*00b67f09SDavid van Moolenbroekcase "$hack_shutup_stdargcast" in 3521*00b67f09SDavid van Moolenbroek yes) 3522*00b67f09SDavid van Moolenbroek # 3523*00b67f09SDavid van Moolenbroek # Shut up a -Wcast-qual warning from va_start(). 3524*00b67f09SDavid van Moolenbroek # 3525*00b67f09SDavid van Moolenbroek AC_DEFINE(SHUTUP_STDARG_CAST) 3526*00b67f09SDavid van Moolenbroek ;; 3527*00b67f09SDavid van Moolenbroekesac 3528*00b67f09SDavid van Moolenbroek 3529*00b67f09SDavid van MoolenbroekAC_CHECK_HEADERS(strings.h, 3530*00b67f09SDavid van Moolenbroek ISC_PLATFORM_HAVESTRINGSH="#define ISC_PLATFORM_HAVESTRINGSH 1" 3531*00b67f09SDavid van Moolenbroek, 3532*00b67f09SDavid van Moolenbroek ISC_PLATFORM_HAVESTRINGSH="#undef ISC_PLATFORM_HAVESTRINGSH" 3533*00b67f09SDavid van Moolenbroek) 3534*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_PLATFORM_HAVESTRINGSH) 3535*00b67f09SDavid van Moolenbroek 3536*00b67f09SDavid van Moolenbroek# 3537*00b67f09SDavid van Moolenbroek# Check for if_nametoindex() for IPv6 scoped addresses support 3538*00b67f09SDavid van Moolenbroek# 3539*00b67f09SDavid van MoolenbroekAC_CHECK_FUNC(if_nametoindex, ac_cv_have_if_nametoindex=yes, 3540*00b67f09SDavid van Moolenbroek ac_cv_have_if_nametoindex=no) 3541*00b67f09SDavid van Moolenbroekcase $ac_cv_have_if_nametoindex in 3542*00b67f09SDavid van Moolenbroekno) 3543*00b67f09SDavid van Moolenbroek case "$host" in 3544*00b67f09SDavid van Moolenbroek *-hp-hpux*) 3545*00b67f09SDavid van Moolenbroek AC_CHECK_LIB(ipv6, if_nametoindex, 3546*00b67f09SDavid van Moolenbroek ac_cv_have_if_nametoindex=yes 3547*00b67f09SDavid van Moolenbroek LIBS="-lipv6 $LIBS",) 3548*00b67f09SDavid van Moolenbroek ;; 3549*00b67f09SDavid van Moolenbroek esac 3550*00b67f09SDavid van Moolenbroekesac 3551*00b67f09SDavid van Moolenbroekcase $ac_cv_have_if_nametoindex in 3552*00b67f09SDavid van Moolenbroekyes) 3553*00b67f09SDavid van Moolenbroek ISC_PLATFORM_HAVEIFNAMETOINDEX="#define ISC_PLATFORM_HAVEIFNAMETOINDEX 1" 3554*00b67f09SDavid van Moolenbroek AC_DEFINE(HAVE_IF_NAMETOINDEX, 1, 3555*00b67f09SDavid van Moolenbroek [Define to 1 if you have the if_nametoindex function.]) 3556*00b67f09SDavid van Moolenbroek 3557*00b67f09SDavid van Moolenbroek ;; 3558*00b67f09SDavid van Moolenbroek*) 3559*00b67f09SDavid van Moolenbroek ISC_PLATFORM_HAVEIFNAMETOINDEX="#undef ISC_PLATFORM_HAVEIFNAMETOINDEX" 3560*00b67f09SDavid van Moolenbroek ;; 3561*00b67f09SDavid van Moolenbroekesac 3562*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_PLATFORM_HAVEIFNAMETOINDEX) 3563*00b67f09SDavid van Moolenbroek 3564*00b67f09SDavid van MoolenbroekAC_CHECK_FUNCS(nanosleep usleep) 3565*00b67f09SDavid van Moolenbroek 3566*00b67f09SDavid van Moolenbroek# 3567*00b67f09SDavid van Moolenbroek# Machine architecture dependent features 3568*00b67f09SDavid van Moolenbroek# 3569*00b67f09SDavid van MoolenbroekAC_ARG_ENABLE(atomic, 3570*00b67f09SDavid van Moolenbroek [ --enable-atomic enable machine specific atomic operations 3571*00b67f09SDavid van Moolenbroek [[default=autodetect]]], 3572*00b67f09SDavid van Moolenbroek enable_atomic="$enableval", 3573*00b67f09SDavid van Moolenbroek enable_atomic="autodetect") 3574*00b67f09SDavid van Moolenbroekcase "$enable_atomic" in 3575*00b67f09SDavid van Moolenbroek yes|''|autodetect) 3576*00b67f09SDavid van Moolenbroek case "$host" in 3577*00b67f09SDavid van Moolenbroek powerpc-ibm-aix*) 3578*00b67f09SDavid van Moolenbroek if test "X$GCC" = "Xyes"; then 3579*00b67f09SDavid van Moolenbroek AC_MSG_CHECKING([if asm("isc"); works]) 3580*00b67f09SDavid van Moolenbroek AC_TRY_COMPILE(,[ 3581*00b67f09SDavid van Moolenbroek main() { asm("ics"); exit(0); } 3582*00b67f09SDavid van Moolenbroek ], 3583*00b67f09SDavid van Moolenbroek [AC_MSG_RESULT(yes) 3584*00b67f09SDavid van Moolenbroek use_atomic=yes], 3585*00b67f09SDavid van Moolenbroek [ 3586*00b67f09SDavid van Moolenbroek saved_cflags="$CFLAGS" 3587*00b67f09SDavid van Moolenbroek CFLAGS="$CFLAGS -Wa,-many" 3588*00b67f09SDavid van Moolenbroek AC_TRY_RUN([ 3589*00b67f09SDavid van Moolenbroek main() { asm("ics"); exit(0); } 3590*00b67f09SDavid van Moolenbroek ], 3591*00b67f09SDavid van Moolenbroek [AC_MSG_RESULT([yes, required -Wa,-many]) 3592*00b67f09SDavid van Moolenbroek use_atomic=yes], 3593*00b67f09SDavid van Moolenbroek [AC_MSG_RESULT([no, use_atomic disabled]) 3594*00b67f09SDavid van Moolenbroek CFLAGS="$saved_cflags" 3595*00b67f09SDavid van Moolenbroek use_atomic=no], 3596*00b67f09SDavid van Moolenbroek [AC_MSG_RESULT([cross compile, assume yes]) 3597*00b67f09SDavid van Moolenbroek CFLAGS="$saved_cflags" 3598*00b67f09SDavid van Moolenbroek use_atomic=yes]) 3599*00b67f09SDavid van Moolenbroek ] 3600*00b67f09SDavid van Moolenbroek ) 3601*00b67f09SDavid van Moolenbroek else 3602*00b67f09SDavid van Moolenbroek use_atomic=yes 3603*00b67f09SDavid van Moolenbroek fi 3604*00b67f09SDavid van Moolenbroek ;; 3605*00b67f09SDavid van Moolenbroek *) 3606*00b67f09SDavid van Moolenbroek use_atomic=yes 3607*00b67f09SDavid van Moolenbroek ;; 3608*00b67f09SDavid van Moolenbroek esac 3609*00b67f09SDavid van Moolenbroek ;; 3610*00b67f09SDavid van Moolenbroek no) 3611*00b67f09SDavid van Moolenbroek use_atomic=no 3612*00b67f09SDavid van Moolenbroek arch=noatomic 3613*00b67f09SDavid van Moolenbroek ;; 3614*00b67f09SDavid van Moolenbroekesac 3615*00b67f09SDavid van Moolenbroek 3616*00b67f09SDavid van MoolenbroekISC_PLATFORM_USEOSFASM="#undef ISC_PLATFORM_USEOSFASM" 3617*00b67f09SDavid van Moolenbroekif test "$use_atomic" = "yes"; then 3618*00b67f09SDavid van Moolenbroek AC_MSG_CHECKING([architecture type for atomic operations]) 3619*00b67f09SDavid van Moolenbroek have_atomic=yes # set default 3620*00b67f09SDavid van Moolenbroek case "$host" in 3621*00b67f09SDavid van Moolenbroek [i[3456]86-*]) 3622*00b67f09SDavid van Moolenbroek # XXX: some old x86 architectures actually do not support 3623*00b67f09SDavid van Moolenbroek # (some of) these operations. Do we need stricter checks? 3624*00b67f09SDavid van Moolenbroek AC_CHECK_SIZEOF([void *]) 3625*00b67f09SDavid van Moolenbroek if test $ac_cv_sizeof_void_p = 8; then 3626*00b67f09SDavid van Moolenbroek arch=x86_64 3627*00b67f09SDavid van Moolenbroek have_xaddq=yes 3628*00b67f09SDavid van Moolenbroek else 3629*00b67f09SDavid van Moolenbroek arch=x86_32 3630*00b67f09SDavid van Moolenbroek fi 3631*00b67f09SDavid van Moolenbroek ;; 3632*00b67f09SDavid van Moolenbroek x86_64-*|amd64-*) 3633*00b67f09SDavid van Moolenbroek AC_CHECK_SIZEOF([void *]) 3634*00b67f09SDavid van Moolenbroek if test $ac_cv_sizeof_void_p = 8; then 3635*00b67f09SDavid van Moolenbroek arch=x86_64 3636*00b67f09SDavid van Moolenbroek have_xaddq=yes 3637*00b67f09SDavid van Moolenbroek else 3638*00b67f09SDavid van Moolenbroek arch=x86_32 3639*00b67f09SDavid van Moolenbroek fi 3640*00b67f09SDavid van Moolenbroek ;; 3641*00b67f09SDavid van Moolenbroek alpha*-*) 3642*00b67f09SDavid van Moolenbroek arch=alpha 3643*00b67f09SDavid van Moolenbroek ;; 3644*00b67f09SDavid van Moolenbroek powerpc-*|powerpc64-*) 3645*00b67f09SDavid van Moolenbroek arch=powerpc 3646*00b67f09SDavid van Moolenbroek ;; 3647*00b67f09SDavid van Moolenbroek mips-*|mipsel-*|mips64-*|mips64el-*) 3648*00b67f09SDavid van Moolenbroek arch=mips 3649*00b67f09SDavid van Moolenbroek ;; 3650*00b67f09SDavid van Moolenbroek ia64-*) 3651*00b67f09SDavid van Moolenbroek arch=ia64 3652*00b67f09SDavid van Moolenbroek ;; 3653*00b67f09SDavid van Moolenbroek *) 3654*00b67f09SDavid van Moolenbroek have_atomic=no 3655*00b67f09SDavid van Moolenbroek arch=noatomic 3656*00b67f09SDavid van Moolenbroek ;; 3657*00b67f09SDavid van Moolenbroek esac 3658*00b67f09SDavid van Moolenbroek AC_MSG_RESULT($arch) 3659*00b67f09SDavid van Moolenbroekfi 3660*00b67f09SDavid van Moolenbroek 3661*00b67f09SDavid van Moolenbroekif test "$have_atomic" = "yes"; then 3662*00b67f09SDavid van Moolenbroek AC_MSG_CHECKING([compiler support for inline assembly code]) 3663*00b67f09SDavid van Moolenbroek 3664*00b67f09SDavid van Moolenbroek compiler=generic 3665*00b67f09SDavid van Moolenbroek # Check whether the compiler supports the assembly syntax we provide. 3666*00b67f09SDavid van Moolenbroek if test "X$GCC" = "Xyes"; then 3667*00b67f09SDavid van Moolenbroek # GCC's ASM extension always works 3668*00b67f09SDavid van Moolenbroek compiler=gcc 3669*00b67f09SDavid van Moolenbroek if test $arch = "x86_64"; then 3670*00b67f09SDavid van Moolenbroek # We can share the same code for gcc with x86_32 3671*00b67f09SDavid van Moolenbroek arch=x86_32 3672*00b67f09SDavid van Moolenbroek fi 3673*00b67f09SDavid van Moolenbroek if test $arch = "powerpc"; then 3674*00b67f09SDavid van Moolenbroek # 3675*00b67f09SDavid van Moolenbroek # The MacOS (and maybe others) uses "r0" for register 3676*00b67f09SDavid van Moolenbroek # zero. Under linux/ibm it is "0" for register 0. 3677*00b67f09SDavid van Moolenbroek # Probe to see if we have a MacOS style assembler. 3678*00b67f09SDavid van Moolenbroek # 3679*00b67f09SDavid van Moolenbroek AC_MSG_CHECKING([Checking for MacOS style assembler syntax]) 3680*00b67f09SDavid van Moolenbroek AC_TRY_COMPILE(, [ 3681*00b67f09SDavid van Moolenbroek __asm__ volatile ("li r0, 0x0\n"::); 3682*00b67f09SDavid van Moolenbroek ], [ 3683*00b67f09SDavid van Moolenbroek AC_MSG_RESULT(yes) 3684*00b67f09SDavid van Moolenbroek compiler="mac" 3685*00b67f09SDavid van Moolenbroek ISC_PLATFORM_USEMACASM="#define ISC_PLATFORM_USEMACASM 1" 3686*00b67f09SDavid van Moolenbroek ], [AC_MSG_RESULT(no)]) 3687*00b67f09SDavid van Moolenbroek fi 3688*00b67f09SDavid van Moolenbroek else 3689*00b67f09SDavid van Moolenbroek case "$host" in 3690*00b67f09SDavid van Moolenbroek alpha*-dec-osf*) 3691*00b67f09SDavid van Moolenbroek # Tru64 compiler has its own syntax for inline 3692*00b67f09SDavid van Moolenbroek # assembly. 3693*00b67f09SDavid van Moolenbroek AC_TRY_COMPILE(, [ 3694*00b67f09SDavid van Moolenbroek#ifndef __DECC 3695*00b67f09SDavid van Moolenbroek#error "unexpected compiler" 3696*00b67f09SDavid van Moolenbroek#endif 3697*00b67f09SDavid van Moolenbroek return (0);], 3698*00b67f09SDavid van Moolenbroek [compiler=osf],) 3699*00b67f09SDavid van Moolenbroek ;; 3700*00b67f09SDavid van Moolenbroek powerpc-ibm-aix*) 3701*00b67f09SDavid van Moolenbroek compiler=aix 3702*00b67f09SDavid van Moolenbroek ;; 3703*00b67f09SDavid van Moolenbroek esac 3704*00b67f09SDavid van Moolenbroek fi 3705*00b67f09SDavid van Moolenbroek case "$compiler" in 3706*00b67f09SDavid van Moolenbroek gcc) 3707*00b67f09SDavid van Moolenbroek ISC_PLATFORM_USEGCCASM="#define ISC_PLATFORM_USEGCCASM 1" 3708*00b67f09SDavid van Moolenbroek ;; 3709*00b67f09SDavid van Moolenbroek osf) 3710*00b67f09SDavid van Moolenbroek ISC_PLATFORM_USEOSFASM="#define ISC_PLATFORM_USEOSFASM 1" 3711*00b67f09SDavid van Moolenbroek ;; 3712*00b67f09SDavid van Moolenbroek aix) 3713*00b67f09SDavid van Moolenbroek ;; 3714*00b67f09SDavid van Moolenbroek mac) 3715*00b67f09SDavid van Moolenbroek ;; 3716*00b67f09SDavid van Moolenbroek *) 3717*00b67f09SDavid van Moolenbroek # See if the generic __asm function works. If not, 3718*00b67f09SDavid van Moolenbroek # we need to disable the atomic operations. 3719*00b67f09SDavid van Moolenbroek AC_TRY_LINK(, [ 3720*00b67f09SDavid van Moolenbroek __asm("nop") 3721*00b67f09SDavid van Moolenbroek ], 3722*00b67f09SDavid van Moolenbroek [compiler="standard" 3723*00b67f09SDavid van Moolenbroek ISC_PLATFORM_USESTDASM="#define ISC_PLATFORM_USESTDASM 1"], 3724*00b67f09SDavid van Moolenbroek [compiler="not supported (atomic operations disabled)" 3725*00b67f09SDavid van Moolenbroek have_atomic=no 3726*00b67f09SDavid van Moolenbroek arch=noatomic ]); 3727*00b67f09SDavid van Moolenbroek ;; 3728*00b67f09SDavid van Moolenbroek esac 3729*00b67f09SDavid van Moolenbroek 3730*00b67f09SDavid van Moolenbroek AC_MSG_RESULT($compiler) 3731*00b67f09SDavid van Moolenbroekfi 3732*00b67f09SDavid van Moolenbroek 3733*00b67f09SDavid van Moolenbroekif test "$have_atomic" = "yes"; then 3734*00b67f09SDavid van Moolenbroek ISC_PLATFORM_HAVEXADD="#define ISC_PLATFORM_HAVEXADD 1" 3735*00b67f09SDavid van Moolenbroek ISC_PLATFORM_HAVECMPXCHG="#define ISC_PLATFORM_HAVECMPXCHG 1" 3736*00b67f09SDavid van Moolenbroek ISC_PLATFORM_HAVEATOMICSTORE="#define ISC_PLATFORM_HAVEATOMICSTORE 1" 3737*00b67f09SDavid van Moolenbroekelse 3738*00b67f09SDavid van Moolenbroek ISC_PLATFORM_HAVEXADD="#undef ISC_PLATFORM_HAVEXADD" 3739*00b67f09SDavid van Moolenbroek ISC_PLATFORM_HAVECMPXCHG="#undef ISC_PLATFORM_HAVECMPXCHG" 3740*00b67f09SDavid van Moolenbroek ISC_PLATFORM_HAVEATOMICSTORE="#undef ISC_PLATFORM_HAVEATOMICSTORE" 3741*00b67f09SDavid van Moolenbroekfi 3742*00b67f09SDavid van Moolenbroek 3743*00b67f09SDavid van Moolenbroekif test "$have_xaddq" = "yes"; then 3744*00b67f09SDavid van Moolenbroek ISC_PLATFORM_HAVEXADDQ="#define ISC_PLATFORM_HAVEXADDQ 1" 3745*00b67f09SDavid van Moolenbroekelse 3746*00b67f09SDavid van Moolenbroek ISC_PLATFORM_HAVEXADDQ="#undef ISC_PLATFORM_HAVEXADDQ" 3747*00b67f09SDavid van Moolenbroekfi 3748*00b67f09SDavid van Moolenbroek 3749*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_PLATFORM_HAVEXADD) 3750*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_PLATFORM_HAVEXADDQ) 3751*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_PLATFORM_HAVECMPXCHG) 3752*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_PLATFORM_HAVEATOMICSTORE) 3753*00b67f09SDavid van Moolenbroek 3754*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_PLATFORM_USEGCCASM) 3755*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_PLATFORM_USEOSFASM) 3756*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_PLATFORM_USESTDASM) 3757*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_PLATFORM_USEMACASM) 3758*00b67f09SDavid van Moolenbroek 3759*00b67f09SDavid van MoolenbroekISC_ARCH_DIR=$arch 3760*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_ARCH_DIR) 3761*00b67f09SDavid van Moolenbroek 3762*00b67f09SDavid van Moolenbroek# 3763*00b67f09SDavid van Moolenbroek# Activate "rrset-order fixed" or not? 3764*00b67f09SDavid van Moolenbroek# 3765*00b67f09SDavid van MoolenbroekAC_ARG_ENABLE(fixed-rrset, 3766*00b67f09SDavid van Moolenbroek [ --enable-fixed-rrset enable fixed rrset ordering [[default=no]]], 3767*00b67f09SDavid van Moolenbroek enable_fixed="$enableval", 3768*00b67f09SDavid van Moolenbroek enable_fixed="no") 3769*00b67f09SDavid van Moolenbroekcase "$enable_fixed" in 3770*00b67f09SDavid van Moolenbroek yes) 3771*00b67f09SDavid van Moolenbroek AC_DEFINE(DNS_RDATASET_FIXED, 1, 3772*00b67f09SDavid van Moolenbroek [Define to enable "rrset-order fixed" syntax.]) 3773*00b67f09SDavid van Moolenbroek ;; 3774*00b67f09SDavid van Moolenbroek no) 3775*00b67f09SDavid van Moolenbroek ;; 3776*00b67f09SDavid van Moolenbroek *) 3777*00b67f09SDavid van Moolenbroek ;; 3778*00b67f09SDavid van Moolenbroekesac 3779*00b67f09SDavid van Moolenbroek 3780*00b67f09SDavid van Moolenbroek# 3781*00b67f09SDavid van Moolenbroek# Enable response policy rewriting using NS IP addresses 3782*00b67f09SDavid van Moolenbroek# 3783*00b67f09SDavid van MoolenbroekAC_ARG_ENABLE(rpz-nsip, 3784*00b67f09SDavid van Moolenbroek [ --disable-rpz-nsip disable rpz-nsip rules [[default=enabled]]], 3785*00b67f09SDavid van Moolenbroek enable_nsip="$enableval", 3786*00b67f09SDavid van Moolenbroek enable_nsip="yes") 3787*00b67f09SDavid van Moolenbroekcase "$enable_nsip" in 3788*00b67f09SDavid van Moolenbroek yes) 3789*00b67f09SDavid van Moolenbroek AC_DEFINE(ENABLE_RPZ_NSIP, 1, 3790*00b67f09SDavid van Moolenbroek [Define to enable rpz-nsip rules.]) 3791*00b67f09SDavid van Moolenbroek ;; 3792*00b67f09SDavid van Moolenbroek no) 3793*00b67f09SDavid van Moolenbroek ;; 3794*00b67f09SDavid van Moolenbroek *) 3795*00b67f09SDavid van Moolenbroek ;; 3796*00b67f09SDavid van Moolenbroekesac 3797*00b67f09SDavid van Moolenbroek 3798*00b67f09SDavid van Moolenbroek# 3799*00b67f09SDavid van Moolenbroek# Enable response policy rewriting using NS name 3800*00b67f09SDavid van Moolenbroek# 3801*00b67f09SDavid van MoolenbroekAC_ARG_ENABLE(rpz-nsdname, 3802*00b67f09SDavid van Moolenbroek [ --disable-rpz-nsdname disable rpz-nsdname rules [[default=enabled]]], 3803*00b67f09SDavid van Moolenbroek enable_nsdname="$enableval", 3804*00b67f09SDavid van Moolenbroek enable_nsdname="yes") 3805*00b67f09SDavid van Moolenbroekcase "$enable_nsdname" in 3806*00b67f09SDavid van Moolenbroek yes) 3807*00b67f09SDavid van Moolenbroek AC_DEFINE(ENABLE_RPZ_NSDNAME, 1, 3808*00b67f09SDavid van Moolenbroek [Define to enable rpz-nsdname rules.]) 3809*00b67f09SDavid van Moolenbroek ;; 3810*00b67f09SDavid van Moolenbroek no) 3811*00b67f09SDavid van Moolenbroek ;; 3812*00b67f09SDavid van Moolenbroek *) 3813*00b67f09SDavid van Moolenbroek ;; 3814*00b67f09SDavid van Moolenbroekesac 3815*00b67f09SDavid van Moolenbroek 3816*00b67f09SDavid van Moolenbroek# 3817*00b67f09SDavid van Moolenbroek# Activate "filter-aaaa-on-v4/v6" or not? 3818*00b67f09SDavid van Moolenbroek# 3819*00b67f09SDavid van MoolenbroekAC_ARG_ENABLE(filter-aaaa, 3820*00b67f09SDavid van Moolenbroek [ --enable-filter-aaaa enable filtering of AAAA records [[default=no]]], 3821*00b67f09SDavid van Moolenbroek enable_filter="$enableval", 3822*00b67f09SDavid van Moolenbroek enable_filter="no") 3823*00b67f09SDavid van Moolenbroekcase "$enable_filter" in 3824*00b67f09SDavid van Moolenbroek yes) 3825*00b67f09SDavid van Moolenbroek AC_DEFINE(ALLOW_FILTER_AAAA, 1, 3826*00b67f09SDavid van Moolenbroek [Define to enable the "filter-aaaa-on-v4" and "filter-aaaa-on-v6" options.]) 3827*00b67f09SDavid van Moolenbroek ;; 3828*00b67f09SDavid van Moolenbroek no) 3829*00b67f09SDavid van Moolenbroek ;; 3830*00b67f09SDavid van Moolenbroek *) 3831*00b67f09SDavid van Moolenbroek ;; 3832*00b67f09SDavid van Moolenbroekesac 3833*00b67f09SDavid van Moolenbroek 3834*00b67f09SDavid van Moolenbroek# 3835*00b67f09SDavid van Moolenbroek# The following sets up how non-blocking i/o is established. 3836*00b67f09SDavid van Moolenbroek# Sunos, cygwin and solaris 2.x (x<5) require special handling. 3837*00b67f09SDavid van Moolenbroek# 3838*00b67f09SDavid van Moolenbroekcase "$host" in 3839*00b67f09SDavid van Moolenbroek*-sunos*) AC_DEFINE(PORT_NONBLOCK, O_NDELAY);; 3840*00b67f09SDavid van Moolenbroek*-cygwin*) AC_DEFINE(PORT_NONBLOCK, O_NDELAY);; 3841*00b67f09SDavid van Moolenbroek*-solaris2.[[01234]]) 3842*00b67f09SDavid van Moolenbroek AC_DEFINE(PORT_NONBLOCK, O_NONBLOCK) 3843*00b67f09SDavid van Moolenbroek AC_DEFINE(USE_FIONBIO_IOCTL, 1, 3844*00b67f09SDavid van Moolenbroek [Defined if you need to use ioctl(FIONBIO) instead a fcntl call to make non-blocking.]) 3845*00b67f09SDavid van Moolenbroek ;; 3846*00b67f09SDavid van Moolenbroek*) AC_DEFINE(PORT_NONBLOCK, O_NONBLOCK, 3847*00b67f09SDavid van Moolenbroek [Sets which flag to pass to open/fcntl to make non-blocking (O_NDELAY/O_NONBLOCK).]) 3848*00b67f09SDavid van Moolenbroek ;; 3849*00b67f09SDavid van Moolenbroekesac 3850*00b67f09SDavid van Moolenbroek# 3851*00b67f09SDavid van Moolenbroek# Solaris 2.5.1 and earlier cannot bind() then connect() a TCP socket. 3852*00b67f09SDavid van Moolenbroek# This prevents the source address being set. 3853*00b67f09SDavid van Moolenbroek# 3854*00b67f09SDavid van Moolenbroekcase "$host" in 3855*00b67f09SDavid van Moolenbroek*-solaris2.[[012345]]|*-solaris2.5.1) 3856*00b67f09SDavid van Moolenbroek AC_DEFINE(BROKEN_TCP_BIND_BEFORE_CONNECT, 1, 3857*00b67f09SDavid van Moolenbroek [Define if you cannot bind() before connect() for TCP sockets.]) 3858*00b67f09SDavid van Moolenbroek ;; 3859*00b67f09SDavid van Moolenbroekesac 3860*00b67f09SDavid van Moolenbroek# 3861*00b67f09SDavid van Moolenbroek# The following sections deal with tools used for formatting 3862*00b67f09SDavid van Moolenbroek# the documentation. They are all optional, unless you are 3863*00b67f09SDavid van Moolenbroek# a developer editing the documentation source. 3864*00b67f09SDavid van Moolenbroek# 3865*00b67f09SDavid van Moolenbroek 3866*00b67f09SDavid van Moolenbroek# 3867*00b67f09SDavid van Moolenbroek# Look for TeX. 3868*00b67f09SDavid van Moolenbroek# 3869*00b67f09SDavid van Moolenbroek 3870*00b67f09SDavid van MoolenbroekAC_PATH_PROGS(LATEX, latex, latex) 3871*00b67f09SDavid van MoolenbroekAC_SUBST(LATEX) 3872*00b67f09SDavid van Moolenbroek 3873*00b67f09SDavid van MoolenbroekAC_PATH_PROGS(PDFLATEX, pdflatex, pdflatex) 3874*00b67f09SDavid van MoolenbroekAC_SUBST(PDFLATEX) 3875*00b67f09SDavid van Moolenbroek 3876*00b67f09SDavid van Moolenbroek# 3877*00b67f09SDavid van Moolenbroek# Look for w3m 3878*00b67f09SDavid van Moolenbroek# 3879*00b67f09SDavid van Moolenbroek 3880*00b67f09SDavid van MoolenbroekAC_PATH_PROGS(W3M, w3m, w3m) 3881*00b67f09SDavid van MoolenbroekAC_SUBST(W3M) 3882*00b67f09SDavid van Moolenbroek 3883*00b67f09SDavid van Moolenbroek# 3884*00b67f09SDavid van Moolenbroek# Look for xsltproc (libxslt) 3885*00b67f09SDavid van Moolenbroek# 3886*00b67f09SDavid van Moolenbroek 3887*00b67f09SDavid van MoolenbroekAC_PATH_PROG(XSLTPROC, xsltproc, xsltproc) 3888*00b67f09SDavid van MoolenbroekAC_SUBST(XSLTPROC) 3889*00b67f09SDavid van Moolenbroek 3890*00b67f09SDavid van Moolenbroek# 3891*00b67f09SDavid van Moolenbroek# Look for xmllint (libxml2) 3892*00b67f09SDavid van Moolenbroek# 3893*00b67f09SDavid van Moolenbroek 3894*00b67f09SDavid van MoolenbroekAC_PATH_PROG(XMLLINT, xmllint, xmllint) 3895*00b67f09SDavid van MoolenbroekAC_SUBST(XMLLINT) 3896*00b67f09SDavid van Moolenbroek 3897*00b67f09SDavid van Moolenbroek# 3898*00b67f09SDavid van Moolenbroek# Look for Doxygen 3899*00b67f09SDavid van Moolenbroek# 3900*00b67f09SDavid van Moolenbroek 3901*00b67f09SDavid van MoolenbroekAC_PATH_PROG(DOXYGEN, doxygen, doxygen) 3902*00b67f09SDavid van MoolenbroekAC_SUBST(DOXYGEN) 3903*00b67f09SDavid van Moolenbroek 3904*00b67f09SDavid van Moolenbroek# 3905*00b67f09SDavid van Moolenbroek# Subroutine for searching for an ordinary file (e.g., a stylesheet) 3906*00b67f09SDavid van Moolenbroek# in a number of directories: 3907*00b67f09SDavid van Moolenbroek# 3908*00b67f09SDavid van Moolenbroek# NOM_PATH_FILE(VARIABLE, FILENAME, DIRECTORIES) 3909*00b67f09SDavid van Moolenbroek# 3910*00b67f09SDavid van Moolenbroek# If the file FILENAME is found in one of the DIRECTORIES, the shell 3911*00b67f09SDavid van Moolenbroek# variable VARIABLE is defined to its absolute pathname. Otherwise, 3912*00b67f09SDavid van Moolenbroek# it is set to FILENAME, with no directory prefix (that's not terribly 3913*00b67f09SDavid van Moolenbroek# useful, but looks less confusing in substitutions than leaving it 3914*00b67f09SDavid van Moolenbroek# empty). The variable VARIABLE will be substituted into output files. 3915*00b67f09SDavid van Moolenbroek# 3916*00b67f09SDavid van Moolenbroek 3917*00b67f09SDavid van MoolenbroekAC_DEFUN(NOM_PATH_FILE, [ 3918*00b67f09SDavid van Moolenbroek$1="" 3919*00b67f09SDavid van MoolenbroekAC_MSG_CHECKING(for $2) 3920*00b67f09SDavid van Moolenbroekfor d in $3 3921*00b67f09SDavid van Moolenbroekdo 3922*00b67f09SDavid van Moolenbroek f=$d/$2 3923*00b67f09SDavid van Moolenbroek if test -f $f 3924*00b67f09SDavid van Moolenbroek then 3925*00b67f09SDavid van Moolenbroek $1=$f 3926*00b67f09SDavid van Moolenbroek AC_MSG_RESULT($f) 3927*00b67f09SDavid van Moolenbroek break 3928*00b67f09SDavid van Moolenbroek fi 3929*00b67f09SDavid van Moolenbroekdone 3930*00b67f09SDavid van Moolenbroekif test "X[$]$1" = "X" 3931*00b67f09SDavid van Moolenbroekthen 3932*00b67f09SDavid van Moolenbroek AC_MSG_RESULT("not found"); 3933*00b67f09SDavid van Moolenbroek $1=$2 3934*00b67f09SDavid van Moolenbroekfi 3935*00b67f09SDavid van MoolenbroekAC_SUBST($1) 3936*00b67f09SDavid van Moolenbroek]) 3937*00b67f09SDavid van Moolenbroek 3938*00b67f09SDavid van Moolenbroek# 3939*00b67f09SDavid van Moolenbroek# Look for Docbook-XSL stylesheets. Location probably varies by system. 3940*00b67f09SDavid van Moolenbroek# If it's not explicitly specified, guess where it might be found, based on 3941*00b67f09SDavid van Moolenbroek# where SGML stuff lives on some systems (FreeBSD is the only one we're sure 3942*00b67f09SDavid van Moolenbroek# of at the moment). 3943*00b67f09SDavid van Moolenbroek# 3944*00b67f09SDavid van MoolenbroekAC_MSG_CHECKING(for Docbook-XSL path) 3945*00b67f09SDavid van MoolenbroekAC_ARG_WITH(docbook-xsl, 3946*00b67f09SDavid van Moolenbroek[ --with-docbook-xsl=PATH specify path for Docbook-XSL stylesheets], 3947*00b67f09SDavid van Moolenbroek docbook_path="$withval", docbook_path="auto") 3948*00b67f09SDavid van Moolenbroekcase "$docbook_path" in 3949*00b67f09SDavid van Moolenbroekauto) 3950*00b67f09SDavid van Moolenbroek AC_MSG_RESULT(auto) 3951*00b67f09SDavid van Moolenbroek docbook_xsl_trees="/usr/pkg/share/xsl/docbook /usr/local/share/xsl/docbook /usr/share/xsl/docbook /opt/local/share/xsl/docbook-xsl" 3952*00b67f09SDavid van Moolenbroek ;; 3953*00b67f09SDavid van Moolenbroek*) 3954*00b67f09SDavid van Moolenbroek docbook_xsl_trees="$withval" 3955*00b67f09SDavid van Moolenbroek AC_MSG_RESULT($docbook_xsl_trees) 3956*00b67f09SDavid van Moolenbroek ;; 3957*00b67f09SDavid van Moolenbroekesac 3958*00b67f09SDavid van Moolenbroek 3959*00b67f09SDavid van Moolenbroek# 3960*00b67f09SDavid van Moolenbroek# Look for stylesheets we need. 3961*00b67f09SDavid van Moolenbroek# 3962*00b67f09SDavid van Moolenbroek 3963*00b67f09SDavid van MoolenbroekNOM_PATH_FILE(XSLT_DOCBOOK_STYLE_HTML, html/docbook.xsl, $docbook_xsl_trees) 3964*00b67f09SDavid van MoolenbroekNOM_PATH_FILE(XSLT_DOCBOOK_STYLE_XHTML, xhtml/docbook.xsl, $docbook_xsl_trees) 3965*00b67f09SDavid van MoolenbroekNOM_PATH_FILE(XSLT_DOCBOOK_STYLE_MAN, manpages/docbook.xsl, $docbook_xsl_trees) 3966*00b67f09SDavid van MoolenbroekNOM_PATH_FILE(XSLT_DOCBOOK_CHUNK_HTML, html/chunk.xsl, $docbook_xsl_trees) 3967*00b67f09SDavid van MoolenbroekNOM_PATH_FILE(XSLT_DOCBOOK_CHUNK_XHTML, xhtml/chunk.xsl, $docbook_xsl_trees) 3968*00b67f09SDavid van MoolenbroekNOM_PATH_FILE(XSLT_DOCBOOK_CHUNKTOC_HTML, html/chunktoc.xsl, $docbook_xsl_trees) 3969*00b67f09SDavid van MoolenbroekNOM_PATH_FILE(XSLT_DOCBOOK_CHUNKTOC_XHTML, xhtml/chunktoc.xsl, $docbook_xsl_trees) 3970*00b67f09SDavid van MoolenbroekNOM_PATH_FILE(XSLT_DOCBOOK_MAKETOC_HTML, html/maketoc.xsl, $docbook_xsl_trees) 3971*00b67f09SDavid van MoolenbroekNOM_PATH_FILE(XSLT_DOCBOOK_MAKETOC_XHTML, xhtml/maketoc.xsl, $docbook_xsl_trees) 3972*00b67f09SDavid van Moolenbroek 3973*00b67f09SDavid van Moolenbroek# 3974*00b67f09SDavid van Moolenbroek# Same dance for db2latex 3975*00b67f09SDavid van Moolenbroek# 3976*00b67f09SDavid van Moolenbroek 3977*00b67f09SDavid van Moolenbroekdb2latex_xsl_trees="/usr/local/share/db2latex/xsl /usr/pkg/share/xsl/db2latex" 3978*00b67f09SDavid van Moolenbroek 3979*00b67f09SDavid van Moolenbroek# 3980*00b67f09SDavid van Moolenbroek# Look for stylesheets we need. 3981*00b67f09SDavid van Moolenbroek# 3982*00b67f09SDavid van Moolenbroek 3983*00b67f09SDavid van MoolenbroekNOM_PATH_FILE(XSLT_DB2LATEX_STYLE, docbook.xsl, $db2latex_xsl_trees) 3984*00b67f09SDavid van Moolenbroek 3985*00b67f09SDavid van Moolenbroek# 3986*00b67f09SDavid van Moolenbroek# Look for "admonition" image directory. Can't use NOM_PATH_FILE() 3987*00b67f09SDavid van Moolenbroek# because it's a directory, so just do the same things, inline. 3988*00b67f09SDavid van Moolenbroek# 3989*00b67f09SDavid van Moolenbroek 3990*00b67f09SDavid van MoolenbroekAC_MSG_CHECKING(for db2latex xsl figures) 3991*00b67f09SDavid van Moolenbroekfor d in $db2latex_xsl_trees 3992*00b67f09SDavid van Moolenbroekdo 3993*00b67f09SDavid van Moolenbroek if test -d $d/figures 3994*00b67f09SDavid van Moolenbroek then 3995*00b67f09SDavid van Moolenbroek XSLT_DB2LATEX_ADMONITIONS=$d/figures 3996*00b67f09SDavid van Moolenbroek AC_MSG_RESULT($d/figures) 3997*00b67f09SDavid van Moolenbroek break 3998*00b67f09SDavid van Moolenbroek fi 3999*00b67f09SDavid van Moolenbroekdone 4000*00b67f09SDavid van Moolenbroekif test "X$XSLT_DB2LATEX_ADMONITIONS" = "X" 4001*00b67f09SDavid van Moolenbroekthen 4002*00b67f09SDavid van Moolenbroek AC_MSG_RESULT(not found) 4003*00b67f09SDavid van Moolenbroek XSLT_DB2LATEX_ADMONITIONS=db2latex/xsl/figures 4004*00b67f09SDavid van Moolenbroekfi 4005*00b67f09SDavid van MoolenbroekAC_SUBST(XSLT_DB2LATEX_ADMONITIONS) 4006*00b67f09SDavid van Moolenbroek 4007*00b67f09SDavid van Moolenbroek# 4008*00b67f09SDavid van Moolenbroek# IDN support 4009*00b67f09SDavid van Moolenbroek# 4010*00b67f09SDavid van MoolenbroekAC_ARG_WITH(idn, 4011*00b67f09SDavid van Moolenbroek [ --with-idn[=MPREFIX] enable IDN support using idnkit [default PREFIX]], 4012*00b67f09SDavid van Moolenbroek use_idn="$withval", use_idn="no") 4013*00b67f09SDavid van Moolenbroekcase "$use_idn" in 4014*00b67f09SDavid van Moolenbroekyes) 4015*00b67f09SDavid van Moolenbroek if test X$prefix = XNONE ; then 4016*00b67f09SDavid van Moolenbroek idn_path=/usr/local 4017*00b67f09SDavid van Moolenbroek else 4018*00b67f09SDavid van Moolenbroek idn_path=$prefix 4019*00b67f09SDavid van Moolenbroek fi 4020*00b67f09SDavid van Moolenbroek ;; 4021*00b67f09SDavid van Moolenbroekno) 4022*00b67f09SDavid van Moolenbroek ;; 4023*00b67f09SDavid van Moolenbroek*) 4024*00b67f09SDavid van Moolenbroek idn_path="$use_idn" 4025*00b67f09SDavid van Moolenbroek ;; 4026*00b67f09SDavid van Moolenbroekesac 4027*00b67f09SDavid van Moolenbroek 4028*00b67f09SDavid van Moolenbroekiconvinc= 4029*00b67f09SDavid van Moolenbroekiconvlib= 4030*00b67f09SDavid van MoolenbroekAC_ARG_WITH(libiconv, 4031*00b67f09SDavid van Moolenbroek [ --with-libiconv[=IPREFIX] GNU libiconv are in IPREFIX [default PREFIX]], 4032*00b67f09SDavid van Moolenbroek use_libiconv="$withval", use_libiconv="no") 4033*00b67f09SDavid van Moolenbroekcase "$use_libiconv" in 4034*00b67f09SDavid van Moolenbroekyes) 4035*00b67f09SDavid van Moolenbroek if test X$prefix = XNONE ; then 4036*00b67f09SDavid van Moolenbroek iconvlib="-L/usr/local/lib -R/usr/local/lib -liconv" 4037*00b67f09SDavid van Moolenbroek else 4038*00b67f09SDavid van Moolenbroek iconvlib="-L$prefix/lib -R$prefix/lib -liconv" 4039*00b67f09SDavid van Moolenbroek fi 4040*00b67f09SDavid van Moolenbroek ;; 4041*00b67f09SDavid van Moolenbroekno) 4042*00b67f09SDavid van Moolenbroek iconvlib= 4043*00b67f09SDavid van Moolenbroek ;; 4044*00b67f09SDavid van Moolenbroek*) 4045*00b67f09SDavid van Moolenbroek iconvlib="-L$use_libiconv/lib -R$use_libiconv/lib -liconv" 4046*00b67f09SDavid van Moolenbroek ;; 4047*00b67f09SDavid van Moolenbroekesac 4048*00b67f09SDavid van Moolenbroek 4049*00b67f09SDavid van MoolenbroekAC_ARG_WITH(iconv, 4050*00b67f09SDavid van Moolenbroek [ --with-iconv[=LIBSPEC] specify iconv library [default -liconv]], 4051*00b67f09SDavid van Moolenbroek iconvlib="$withval") 4052*00b67f09SDavid van Moolenbroekcase "$iconvlib" in 4053*00b67f09SDavid van Moolenbroekno) 4054*00b67f09SDavid van Moolenbroek iconvlib= 4055*00b67f09SDavid van Moolenbroek ;; 4056*00b67f09SDavid van Moolenbroekyes) 4057*00b67f09SDavid van Moolenbroek iconvlib=-liconv 4058*00b67f09SDavid van Moolenbroek ;; 4059*00b67f09SDavid van Moolenbroekesac 4060*00b67f09SDavid van Moolenbroek 4061*00b67f09SDavid van MoolenbroekAC_ARG_WITH(idnlib, 4062*00b67f09SDavid van Moolenbroek [ --with-idnlib=ARG specify libidnkit], 4063*00b67f09SDavid van Moolenbroek idnlib="$withval", idnlib="no") 4064*00b67f09SDavid van Moolenbroekif test "$idnlib" = yes; then 4065*00b67f09SDavid van Moolenbroek AC_MSG_ERROR([You must specify ARG for --with-idnlib.]) 4066*00b67f09SDavid van Moolenbroekfi 4067*00b67f09SDavid van Moolenbroek 4068*00b67f09SDavid van MoolenbroekIDNLIBS= 4069*00b67f09SDavid van Moolenbroekif test "$use_idn" != no; then 4070*00b67f09SDavid van Moolenbroek AC_DEFINE(WITH_IDN, 1, [define if idnkit support is to be included.]) 4071*00b67f09SDavid van Moolenbroek STD_CINCLUDES="$STD_CINCLUDES -I$idn_path/include" 4072*00b67f09SDavid van Moolenbroek if test "$idnlib" != no; then 4073*00b67f09SDavid van Moolenbroek IDNLIBS="$idnlib $iconvlib" 4074*00b67f09SDavid van Moolenbroek else 4075*00b67f09SDavid van Moolenbroek IDNLIBS="-L$idn_path/lib -lidnkit $iconvlib" 4076*00b67f09SDavid van Moolenbroek fi 4077*00b67f09SDavid van Moolenbroekfi 4078*00b67f09SDavid van MoolenbroekAC_SUBST(IDNLIBS) 4079*00b67f09SDavid van Moolenbroek 4080*00b67f09SDavid van Moolenbroek# 4081*00b67f09SDavid van Moolenbroek# Check whether to build Automated Test Framework unit tests 4082*00b67f09SDavid van Moolenbroek# 4083*00b67f09SDavid van MoolenbroekAC_ARG_WITH(atf, 4084*00b67f09SDavid van Moolenbroek [ --with-atf=ARG support Automated Test Framework], 4085*00b67f09SDavid van Moolenbroek atf="$withval", atf="no") 4086*00b67f09SDavid van Moolenbroekif test "$atf" = yes; then 4087*00b67f09SDavid van Moolenbroek atf=`pwd`/unit/atf 4088*00b67f09SDavid van Moolenbroek ATFBUILD=atf-src 4089*00b67f09SDavid van Moolenbroek AC_SUBST(ATFBUILD) 4090*00b67f09SDavid van Moolenbroek AC_CONFIG_COMMANDS([atf-config], 4091*00b67f09SDavid van Moolenbroek [( 4092*00b67f09SDavid van Moolenbroek mkdir -p unit/atf-src; 4093*00b67f09SDavid van Moolenbroek cd unit/atf-src; 4094*00b67f09SDavid van Moolenbroek case "$srcdir" in 4095*00b67f09SDavid van Moolenbroek /*) ;; 4096*00b67f09SDavid van Moolenbroek *) srcdir="../../$srcdir";; 4097*00b67f09SDavid van Moolenbroek esac 4098*00b67f09SDavid van Moolenbroek ${SHELL} "${srcdir}${srcdir:+/unit/atf-src/}./configure" --enable-tools --disable-shared MISSING=: --prefix $atfdir; 4099*00b67f09SDavid van Moolenbroek ) ], 4100*00b67f09SDavid van Moolenbroek [atfdir=`pwd`/unit/atf]) 4101*00b67f09SDavid van Moolenbroek AC_MSG_RESULT(building ATF from bind9/unit/atf-src) 4102*00b67f09SDavid van Moolenbroekfi 4103*00b67f09SDavid van Moolenbroek 4104*00b67f09SDavid van MoolenbroekATFLIBS= 4105*00b67f09SDavid van Moolenbroekif test "$atf" != no; then 4106*00b67f09SDavid van Moolenbroek AC_DEFINE(ATF_TEST, 1, [define if ATF unit tests are to be built.]) 4107*00b67f09SDavid van Moolenbroek STD_CINCLUDES="$STD_CINCLUDES -I$atf/include" 4108*00b67f09SDavid van Moolenbroek ATFBIN="$atf/bin" 4109*00b67f09SDavid van Moolenbroek ATFLIBS="-L$atf/lib -latf-c" 4110*00b67f09SDavid van Moolenbroek UNITTESTS=tests 4111*00b67f09SDavid van Moolenbroekfi 4112*00b67f09SDavid van MoolenbroekAC_SUBST(ATFBIN) 4113*00b67f09SDavid van MoolenbroekAC_SUBST(ATFLIBS) 4114*00b67f09SDavid van MoolenbroekAC_SUBST(UNITTESTS) 4115*00b67f09SDavid van Moolenbroek 4116*00b67f09SDavid van MoolenbroekAC_CHECK_HEADERS(locale.h) 4117*00b67f09SDavid van MoolenbroekAC_CHECK_FUNCS(setlocale) 4118*00b67f09SDavid van Moolenbroek 4119*00b67f09SDavid van Moolenbroek# 4120*00b67f09SDavid van Moolenbroek# was --with-tuning specified? 4121*00b67f09SDavid van Moolenbroek# 4122*00b67f09SDavid van MoolenbroekAC_ARG_WITH(tuning, 4123*00b67f09SDavid van Moolenbroek [ --with-tuning=ARG Specify server tuning (large or default)], 4124*00b67f09SDavid van Moolenbroek use_tuning="$withval", use_tuning="no") 4125*00b67f09SDavid van Moolenbroek 4126*00b67f09SDavid van Moolenbroekcase "$use_tuning" in 4127*00b67f09SDavid van Moolenbroek large) 4128*00b67f09SDavid van Moolenbroek if ! $use_threads; then 4129*00b67f09SDavid van Moolenbroek AC_MSG_ERROR([Large-system tuning requires threads.]) 4130*00b67f09SDavid van Moolenbroek fi 4131*00b67f09SDavid van Moolenbroek AC_DEFINE(TUNE_LARGE, 1, [Define to use large-system tuning.]) 4132*00b67f09SDavid van Moolenbroek AC_MSG_RESULT(using large-system tuning) 4133*00b67f09SDavid van Moolenbroek ;; 4134*00b67f09SDavid van Moolenbroek no|default) 4135*00b67f09SDavid van Moolenbroek AC_MSG_RESULT(using default tuning) 4136*00b67f09SDavid van Moolenbroek ;; 4137*00b67f09SDavid van Moolenbroek yes|*) 4138*00b67f09SDavid van Moolenbroek AC_MSG_ERROR([You must specify "large" or "default" for --with-tuning.]) 4139*00b67f09SDavid van Moolenbroek ;; 4140*00b67f09SDavid van Moolenbroekesac 4141*00b67f09SDavid van Moolenbroek 4142*00b67f09SDavid van Moolenbroek# 4143*00b67f09SDavid van Moolenbroek# Substitutions 4144*00b67f09SDavid van Moolenbroek# 4145*00b67f09SDavid van MoolenbroekAC_SUBST(BIND9_TOP_BUILDDIR) 4146*00b67f09SDavid van MoolenbroekBIND9_TOP_BUILDDIR=`pwd` 4147*00b67f09SDavid van Moolenbroek 4148*00b67f09SDavid van MoolenbroekAC_SUBST(BIND9_ISC_BUILDINCLUDE) 4149*00b67f09SDavid van MoolenbroekAC_SUBST(BIND9_ISCCC_BUILDINCLUDE) 4150*00b67f09SDavid van MoolenbroekAC_SUBST(BIND9_ISCCFG_BUILDINCLUDE) 4151*00b67f09SDavid van MoolenbroekAC_SUBST(BIND9_DNS_BUILDINCLUDE) 4152*00b67f09SDavid van MoolenbroekAC_SUBST(BIND9_LWRES_BUILDINCLUDE) 4153*00b67f09SDavid van MoolenbroekAC_SUBST(BIND9_BIND9_BUILDINCLUDE) 4154*00b67f09SDavid van MoolenbroekAC_SUBST(BIND9_IRS_BUILDINCLUDE) 4155*00b67f09SDavid van Moolenbroekif test "X$srcdir" != "X"; then 4156*00b67f09SDavid van Moolenbroek BIND9_ISC_BUILDINCLUDE="-I${BIND9_TOP_BUILDDIR}/lib/isc/include" 4157*00b67f09SDavid van Moolenbroek BIND9_ISCCC_BUILDINCLUDE="-I${BIND9_TOP_BUILDDIR}/lib/isccc/include" 4158*00b67f09SDavid van Moolenbroek BIND9_ISCCFG_BUILDINCLUDE="-I${BIND9_TOP_BUILDDIR}/lib/isccfg/include" 4159*00b67f09SDavid van Moolenbroek BIND9_DNS_BUILDINCLUDE="-I${BIND9_TOP_BUILDDIR}/lib/dns/include" 4160*00b67f09SDavid van Moolenbroek BIND9_LWRES_BUILDINCLUDE="-I${BIND9_TOP_BUILDDIR}/lib/lwres/include" 4161*00b67f09SDavid van Moolenbroek BIND9_BIND9_BUILDINCLUDE="-I${BIND9_TOP_BUILDDIR}/lib/bind9/include" 4162*00b67f09SDavid van Moolenbroek BIND9_IRS_BUILDINCLUDE="-I${BIND9_TOP_BUILDDIR}/lib/irs/include" 4163*00b67f09SDavid van Moolenbroekelse 4164*00b67f09SDavid van Moolenbroek BIND9_ISC_BUILDINCLUDE="" 4165*00b67f09SDavid van Moolenbroek BIND9_ISCCC_BUILDINCLUDE="" 4166*00b67f09SDavid van Moolenbroek BIND9_ISCCFG_BUILDINCLUDE="" 4167*00b67f09SDavid van Moolenbroek BIND9_DNS_BUILDINCLUDE="" 4168*00b67f09SDavid van Moolenbroek BIND9_LWRES_BUILDINCLUDE="" 4169*00b67f09SDavid van Moolenbroek BIND9_BIND9_BUILDINCLUDE="" 4170*00b67f09SDavid van Moolenbroek BIND9_IRS_BUILDINCLUDE="" 4171*00b67f09SDavid van Moolenbroekfi 4172*00b67f09SDavid van Moolenbroek 4173*00b67f09SDavid van MoolenbroekAC_SUBST_FILE(BIND9_MAKE_INCLUDES) 4174*00b67f09SDavid van MoolenbroekBIND9_MAKE_INCLUDES=$BIND9_TOP_BUILDDIR/make/includes 4175*00b67f09SDavid van Moolenbroek 4176*00b67f09SDavid van MoolenbroekAC_SUBST_FILE(BIND9_MAKE_RULES) 4177*00b67f09SDavid van MoolenbroekBIND9_MAKE_RULES=$BIND9_TOP_BUILDDIR/make/rules 4178*00b67f09SDavid van Moolenbroek 4179*00b67f09SDavid van Moolenbroek. "$srcdir/version" 4180*00b67f09SDavid van MoolenbroekBIND9_PRODUCT="PRODUCT=\"${PRODUCT}\"" 4181*00b67f09SDavid van MoolenbroekAC_SUBST(BIND9_PRODUCT) 4182*00b67f09SDavid van MoolenbroekBIND9_DESCRIPTION="DESCRIPTION=\"${DESCRIPTION}\"" 4183*00b67f09SDavid van MoolenbroekAC_SUBST(BIND9_DESCRIPTION) 4184*00b67f09SDavid van MoolenbroekBIND9_VERSION="VERSION=${MAJORVER}.${MINORVER}${PATCHVER:+.}${PATCHVER}${RELEASETYPE}${RELEASEVER}${EXTENSIONS}" 4185*00b67f09SDavid van MoolenbroekAC_SUBST(BIND9_VERSION) 4186*00b67f09SDavid van MoolenbroekBIND9_MAJOR="MAJOR=${MAJORVER}.${MINORVER}" 4187*00b67f09SDavid van MoolenbroekAC_SUBST(BIND9_MAJOR) 4188*00b67f09SDavid van MoolenbroekBIND9_VERSIONSTRING="${PRODUCT} ${MAJORVER}.${MINORVER}${PATCHVER:+.}${PATCHVER}${RELEASETYPE}${RELEASEVER}${EXTENSIONS}${DESCRIPTION:+ }${DESCRIPTION}" 4189*00b67f09SDavid van MoolenbroekAC_SUBST(BIND9_VERSIONSTRING) 4190*00b67f09SDavid van Moolenbroek 4191*00b67f09SDavid van MoolenbroekBIND9_SRCID="SRCID=unset" 4192*00b67f09SDavid van Moolenbroekif test -f "${srcdir}/srcid"; then 4193*00b67f09SDavid van Moolenbroek . "${srcdir}/srcid" 4194*00b67f09SDavid van Moolenbroek BIND9_SRCID="SRCID=$SRCID" 4195*00b67f09SDavid van Moolenbroekelif test -d "${srcdir}/.git"; then 4196*00b67f09SDavid van Moolenbroek BIND9_SRCID="SRCID="`(cd "${srcdir}";git rev-parse --short HEAD)` 4197*00b67f09SDavid van Moolenbroekfi 4198*00b67f09SDavid van Moolenbroek 4199*00b67f09SDavid van MoolenbroekAC_SUBST(BIND9_SRCID) 4200*00b67f09SDavid van Moolenbroek 4201*00b67f09SDavid van Moolenbroekif test -z "$ac_configure_args"; then 4202*00b67f09SDavid van Moolenbroek BIND9_CONFIGARGS="defaults" 4203*00b67f09SDavid van Moolenbroekelse 4204*00b67f09SDavid van Moolenbroek for a in $ac_configure_args 4205*00b67f09SDavid van Moolenbroek do 4206*00b67f09SDavid van Moolenbroek BIND9_CONFIGARGS="$BIND9_CONFIGARGS $a" 4207*00b67f09SDavid van Moolenbroek done 4208*00b67f09SDavid van Moolenbroekfi 4209*00b67f09SDavid van MoolenbroekBIND9_CONFIGARGS="`echo $BIND9_CONFIGARGS | sed 's/^ //'`" 4210*00b67f09SDavid van MoolenbroekBIND9_CONFIGARGS="CONFIGARGS=${BIND9_CONFIGARGS}" 4211*00b67f09SDavid van MoolenbroekAC_SUBST(BIND9_CONFIGARGS) 4212*00b67f09SDavid van Moolenbroek 4213*00b67f09SDavid van MoolenbroekAC_SUBST_FILE(LIBISC_API) 4214*00b67f09SDavid van MoolenbroekLIBISC_API="$srcdir/lib/isc/api" 4215*00b67f09SDavid van Moolenbroek 4216*00b67f09SDavid van MoolenbroekAC_SUBST_FILE(LIBISCCC_API) 4217*00b67f09SDavid van MoolenbroekLIBISCCC_API="$srcdir/lib/isccc/api" 4218*00b67f09SDavid van Moolenbroek 4219*00b67f09SDavid van MoolenbroekAC_SUBST_FILE(LIBISCCFG_API) 4220*00b67f09SDavid van MoolenbroekLIBISCCFG_API="$srcdir/lib/isccfg/api" 4221*00b67f09SDavid van Moolenbroek 4222*00b67f09SDavid van MoolenbroekAC_SUBST_FILE(LIBDNS_API) 4223*00b67f09SDavid van MoolenbroekLIBDNS_API="$srcdir/lib/dns/api" 4224*00b67f09SDavid van Moolenbroek 4225*00b67f09SDavid van MoolenbroekAC_SUBST_FILE(LIBDNS_MAPAPI) 4226*00b67f09SDavid van MoolenbroekLIBDNS_MAPAPI="$srcdir/lib/dns/mapapi" 4227*00b67f09SDavid van Moolenbroek 4228*00b67f09SDavid van MoolenbroekAC_SUBST_FILE(LIBBIND9_API) 4229*00b67f09SDavid van MoolenbroekLIBBIND9_API="$srcdir/lib/bind9/api" 4230*00b67f09SDavid van Moolenbroek 4231*00b67f09SDavid van MoolenbroekAC_SUBST_FILE(LIBLWRES_API) 4232*00b67f09SDavid van MoolenbroekLIBLWRES_API="$srcdir/lib/lwres/api" 4233*00b67f09SDavid van Moolenbroek 4234*00b67f09SDavid van MoolenbroekAC_SUBST_FILE(LIBIRS_API) 4235*00b67f09SDavid van MoolenbroekLIBIRS_API="$srcdir/lib/irs/api" 4236*00b67f09SDavid van Moolenbroek 4237*00b67f09SDavid van Moolenbroek# 4238*00b67f09SDavid van Moolenbroek# Configure any DLZ drivers. 4239*00b67f09SDavid van Moolenbroek# 4240*00b67f09SDavid van Moolenbroek# If config.dlz.in selects one or more DLZ drivers, it will set 4241*00b67f09SDavid van Moolenbroek# CONTRIB_DLZ to a non-empty value, which will be our clue to 4242*00b67f09SDavid van Moolenbroek# build DLZ drivers in contrib. 4243*00b67f09SDavid van Moolenbroek# 4244*00b67f09SDavid van Moolenbroek# This section has to come after the libtool stuff because it needs to 4245*00b67f09SDavid van Moolenbroek# know how to name the driver object files. 4246*00b67f09SDavid van Moolenbroek# 4247*00b67f09SDavid van Moolenbroek 4248*00b67f09SDavid van MoolenbroekCONTRIB_DLZ="" 4249*00b67f09SDavid van MoolenbroekDLZ_DRIVER_INCLUDES="" 4250*00b67f09SDavid van MoolenbroekDLZ_DRIVER_LIBS="" 4251*00b67f09SDavid van MoolenbroekDLZ_DRIVER_SRCS="" 4252*00b67f09SDavid van MoolenbroekDLZ_DRIVER_OBJS="" 4253*00b67f09SDavid van MoolenbroekDLZ_SYSTEM_TEST="" 4254*00b67f09SDavid van Moolenbroek 4255*00b67f09SDavid van Moolenbroek# 4256*00b67f09SDavid van Moolenbroek# Configure support for building a shared library object 4257*00b67f09SDavid van Moolenbroek# 4258*00b67f09SDavid van Moolenbroek# Even when libtool is available it can't always be relied upon 4259*00b67f09SDavid van Moolenbroek# to build an object that can be dlopen()'ed, but this is necessary 4260*00b67f09SDavid van Moolenbroek# for building the dlzexternal system test, so we'll try it the 4261*00b67f09SDavid van Moolenbroek# old-fashioned way. 4262*00b67f09SDavid van Moolenbroek# 4263*00b67f09SDavid van MoolenbroekSO="so" 4264*00b67f09SDavid van MoolenbroekSO_CFLAGS="" 4265*00b67f09SDavid van MoolenbroekSO_LDFLAGS="" 4266*00b67f09SDavid van MoolenbroekSO_LD="" 4267*00b67f09SDavid van MoolenbroekSO_TARGETS="" 4268*00b67f09SDavid van Moolenbroek 4269*00b67f09SDavid van MoolenbroekAC_ARG_WITH(dlopen, 4270*00b67f09SDavid van Moolenbroek [ --with-dlopen=ARG support dynamically loadable DLZ drivers], 4271*00b67f09SDavid van Moolenbroek dlopen="$withval", dlopen="yes") 4272*00b67f09SDavid van Moolenbroek 4273*00b67f09SDavid van Moolenbroekcase $host in 4274*00b67f09SDavid van Moolenbroek *-sunos*) dlopen="no" 4275*00b67f09SDavid van Moolenbroek ;; 4276*00b67f09SDavid van Moolenbroekesac 4277*00b67f09SDavid van Moolenbroek 4278*00b67f09SDavid van Moolenbroekif test "$dlopen" = "yes"; then 4279*00b67f09SDavid van Moolenbroek AC_CHECK_LIB(dl, dlopen, have_dl=yes, have_dl=no) 4280*00b67f09SDavid van Moolenbroek if test "$have_dl" = "yes"; then 4281*00b67f09SDavid van Moolenbroek LIBS="-ldl $LIBS" 4282*00b67f09SDavid van Moolenbroek fi 4283*00b67f09SDavid van Moolenbroek AC_CHECK_FUNCS(dlopen dlclose dlsym,,dlopen=no) 4284*00b67f09SDavid van Moolenbroekfi 4285*00b67f09SDavid van Moolenbroek 4286*00b67f09SDavid van Moolenbroekif test "$dlopen" = "yes"; then 4287*00b67f09SDavid van Moolenbroek case $host in 4288*00b67f09SDavid van Moolenbroek *-linux*|*-gnu*) 4289*00b67f09SDavid van Moolenbroek SO_CFLAGS="-fPIC" 4290*00b67f09SDavid van Moolenbroek SO_LDFLAGS="" 4291*00b67f09SDavid van Moolenbroek if test "$have_dl" = "yes" 4292*00b67f09SDavid van Moolenbroek then 4293*00b67f09SDavid van Moolenbroek if test "$use_libtool" = "yes"; then 4294*00b67f09SDavid van Moolenbroek SO_LDFLAGS="-Xcompiler -shared" 4295*00b67f09SDavid van Moolenbroek SO_LD="${CC}" 4296*00b67f09SDavid van Moolenbroek else 4297*00b67f09SDavid van Moolenbroek SO_LDFLAGS="-shared" 4298*00b67f09SDavid van Moolenbroek SO_LD="${CC}" 4299*00b67f09SDavid van Moolenbroek fi 4300*00b67f09SDavid van Moolenbroek else 4301*00b67f09SDavid van Moolenbroek SO_LDFLAGS="-shared" 4302*00b67f09SDavid van Moolenbroek SO_LD="ld" 4303*00b67f09SDavid van Moolenbroek fi 4304*00b67f09SDavid van Moolenbroek ;; 4305*00b67f09SDavid van Moolenbroek *-freebsd*|*-openbsd*|*-netbsd*) 4306*00b67f09SDavid van Moolenbroek SO_CFLAGS="-fpic" 4307*00b67f09SDavid van Moolenbroek SO_LDFLAGS="-Bshareable -x" 4308*00b67f09SDavid van Moolenbroek SO_LD="ld" 4309*00b67f09SDavid van Moolenbroek ;; 4310*00b67f09SDavid van Moolenbroek *-solaris*) 4311*00b67f09SDavid van Moolenbroek SO_CFLAGS="-KPIC" 4312*00b67f09SDavid van Moolenbroek SO_LDFLAGS="-G -z text" 4313*00b67f09SDavid van Moolenbroek SO_LD="ld" 4314*00b67f09SDavid van Moolenbroek ;; 4315*00b67f09SDavid van Moolenbroek *-hp-hpux*) 4316*00b67f09SDavid van Moolenbroek SO=sl 4317*00b67f09SDavid van Moolenbroek SO_CFLAGS="+z" 4318*00b67f09SDavid van Moolenbroek SO_LDFLAGS="-b +vnocompatwarnings" 4319*00b67f09SDavid van Moolenbroek SO_LD="ld" 4320*00b67f09SDavid van Moolenbroek ;; 4321*00b67f09SDavid van Moolenbroek *) 4322*00b67f09SDavid van Moolenbroek SO_CFLAGS="-fPIC" 4323*00b67f09SDavid van Moolenbroek ;; 4324*00b67f09SDavid van Moolenbroek esac 4325*00b67f09SDavid van Moolenbroek 4326*00b67f09SDavid van Moolenbroek if test "X$GCC" = "Xyes"; then 4327*00b67f09SDavid van Moolenbroek SO_CFLAGS="-fPIC" 4328*00b67f09SDavid van Moolenbroek if test -z "$SO_LD" 4329*00b67f09SDavid van Moolenbroek then 4330*00b67f09SDavid van Moolenbroek if test "$use_libtool" = "yes"; then 4331*00b67f09SDavid van Moolenbroek SO_LDFLAGS="-Xcompiler -shared" 4332*00b67f09SDavid van Moolenbroek SO_LD="${CC}" 4333*00b67f09SDavid van Moolenbroek else 4334*00b67f09SDavid van Moolenbroek SO_LDFLAGS="-shared" 4335*00b67f09SDavid van Moolenbroek SO_LD="${CC}" 4336*00b67f09SDavid van Moolenbroek fi 4337*00b67f09SDavid van Moolenbroek fi 4338*00b67f09SDavid van Moolenbroek fi 4339*00b67f09SDavid van Moolenbroek 4340*00b67f09SDavid van Moolenbroek # If we still don't know how to make shared objects, don't make any. 4341*00b67f09SDavid van Moolenbroek if test -n "$SO_LD"; then 4342*00b67f09SDavid van Moolenbroek SO_TARGETS="\${SO_TARGETS}" 4343*00b67f09SDavid van Moolenbroek AC_DEFINE(ISC_DLZ_DLOPEN, 1, 4344*00b67f09SDavid van Moolenbroek [Define to allow building of objects for dlopen().]) 4345*00b67f09SDavid van Moolenbroek fi 4346*00b67f09SDavid van Moolenbroekfi 4347*00b67f09SDavid van Moolenbroek 4348*00b67f09SDavid van MoolenbroekAC_SUBST(SO) 4349*00b67f09SDavid van MoolenbroekAC_SUBST(SO_CFLAGS) 4350*00b67f09SDavid van MoolenbroekAC_SUBST(SO_LDFLAGS) 4351*00b67f09SDavid van MoolenbroekAC_SUBST(SO_LD) 4352*00b67f09SDavid van MoolenbroekAC_SUBST(SO_TARGETS) 4353*00b67f09SDavid van Moolenbroek 4354*00b67f09SDavid van Moolenbroeksinclude(contrib/dlz/config.dlz.in) 4355*00b67f09SDavid van MoolenbroekAC_MSG_CHECKING(contributed DLZ drivers) 4356*00b67f09SDavid van Moolenbroek 4357*00b67f09SDavid van Moolenbroekif test -n "$CONTRIB_DLZ" 4358*00b67f09SDavid van Moolenbroekthen 4359*00b67f09SDavid van Moolenbroek AC_MSG_RESULT(yes) 4360*00b67f09SDavid van Moolenbroek DLZ_DRIVER_RULES=contrib/dlz/drivers/rules 4361*00b67f09SDavid van Moolenbroek AC_CONFIG_FILES([$DLZ_DRIVER_RULES]) 4362*00b67f09SDavid van Moolenbroekelse 4363*00b67f09SDavid van Moolenbroek AC_MSG_RESULT(no) 4364*00b67f09SDavid van Moolenbroek DLZ_DRIVER_RULES=/dev/null 4365*00b67f09SDavid van Moolenbroekfi 4366*00b67f09SDavid van Moolenbroek 4367*00b67f09SDavid van MoolenbroekAC_SUBST(CONTRIB_DLZ) 4368*00b67f09SDavid van MoolenbroekAC_SUBST(DLZ_DRIVER_INCLUDES) 4369*00b67f09SDavid van MoolenbroekAC_SUBST(DLZ_DRIVER_LIBS) 4370*00b67f09SDavid van MoolenbroekAC_SUBST(DLZ_DRIVER_SRCS) 4371*00b67f09SDavid van MoolenbroekAC_SUBST(DLZ_DRIVER_OBJS) 4372*00b67f09SDavid van MoolenbroekAC_SUBST(DLZ_SYSTEM_TEST) 4373*00b67f09SDavid van MoolenbroekAC_SUBST_FILE(DLZ_DRIVER_RULES) 4374*00b67f09SDavid van Moolenbroek 4375*00b67f09SDavid van Moolenbroekif test "$cross_compiling" = "yes"; then 4376*00b67f09SDavid van Moolenbroek if test -z "$BUILD_CC"; then 4377*00b67f09SDavid van Moolenbroek AC_MSG_ERROR([BUILD_CC not set]) 4378*00b67f09SDavid van Moolenbroek fi 4379*00b67f09SDavid van Moolenbroek BUILD_CFLAGS="$BUILD_CFLAGS" 4380*00b67f09SDavid van Moolenbroek BUILD_CPPFLAGS="$BUILD_CPPFLAGS" 4381*00b67f09SDavid van Moolenbroek BUILD_LDFLAGS="$BUILD_LDFLAGS" 4382*00b67f09SDavid van Moolenbroek BUILD_LIBS="$BUILD_LIBS" 4383*00b67f09SDavid van Moolenbroekelse 4384*00b67f09SDavid van Moolenbroek BUILD_CC="$CC" 4385*00b67f09SDavid van Moolenbroek BUILD_CFLAGS="$CFLAGS" 4386*00b67f09SDavid van Moolenbroek BUILD_CPPFLAGS="$CPPFLAGS $GEN_NEED_OPTARG" 4387*00b67f09SDavid van Moolenbroek BUILD_LDFLAGS="$LDFLAGS" 4388*00b67f09SDavid van Moolenbroek BUILD_LIBS="$LIBS" 4389*00b67f09SDavid van Moolenbroekfi 4390*00b67f09SDavid van Moolenbroek 4391*00b67f09SDavid van MoolenbroekNEWFLAGS="" 4392*00b67f09SDavid van Moolenbroekfor e in $BUILD_LDFLAGS ; do 4393*00b67f09SDavid van Moolenbroek case $e in 4394*00b67f09SDavid van Moolenbroek -L*) 4395*00b67f09SDavid van Moolenbroek case $host_os in 4396*00b67f09SDavid van Moolenbroek netbsd*) 4397*00b67f09SDavid van Moolenbroek ee=`echo $e | sed -e 's%^-L%-Wl,-rpath,%'` 4398*00b67f09SDavid van Moolenbroek NEWFLAGS="$NEWFLAGS $e $ee" 4399*00b67f09SDavid van Moolenbroek ;; 4400*00b67f09SDavid van Moolenbroek freebsd*) 4401*00b67f09SDavid van Moolenbroek ee=`echo $e | sed -e 's%^-L%-Wl,-rpath,%'` 4402*00b67f09SDavid van Moolenbroek NEWFLAGS="$NEWFLAGS $e $ee" 4403*00b67f09SDavid van Moolenbroek ;; 4404*00b67f09SDavid van Moolenbroek solaris*) 4405*00b67f09SDavid van Moolenbroek ee=`echo $e | sed -e 's%^-L%-R%'` 4406*00b67f09SDavid van Moolenbroek NEWFLAGS="$NEWFLAGS $e $ee" 4407*00b67f09SDavid van Moolenbroek ;; 4408*00b67f09SDavid van Moolenbroek *) 4409*00b67f09SDavid van Moolenbroek NEWFLAGS="$NEWFLAGS $e" 4410*00b67f09SDavid van Moolenbroek ;; 4411*00b67f09SDavid van Moolenbroek esac 4412*00b67f09SDavid van Moolenbroek ;; 4413*00b67f09SDavid van Moolenbroek *) 4414*00b67f09SDavid van Moolenbroek NEWFLAGS="$NEWFLAGS $e" 4415*00b67f09SDavid van Moolenbroek ;; 4416*00b67f09SDavid van Moolenbroek esac 4417*00b67f09SDavid van Moolenbroekdone 4418*00b67f09SDavid van MoolenbroekBUILD_LDFLAGS="$NEWFLAGS" 4419*00b67f09SDavid van Moolenbroek 4420*00b67f09SDavid van MoolenbroekNEWFLAGS="" 4421*00b67f09SDavid van Moolenbroekfor e in $DNS_GSSAPI_LIBS ; do 4422*00b67f09SDavid van Moolenbroek case $e in 4423*00b67f09SDavid van Moolenbroek -L*) 4424*00b67f09SDavid van Moolenbroek case $host_os in 4425*00b67f09SDavid van Moolenbroek netbsd*) 4426*00b67f09SDavid van Moolenbroek ee=`echo $e | sed -e 's%^-L%-Wl,-rpath,%'` 4427*00b67f09SDavid van Moolenbroek NEWFLAGS="$NEWFLAGS $e $ee" 4428*00b67f09SDavid van Moolenbroek ;; 4429*00b67f09SDavid van Moolenbroek freebsd*) 4430*00b67f09SDavid van Moolenbroek ee=`echo $e | sed -e 's%^-L%-Wl,-rpath,%'` 4431*00b67f09SDavid van Moolenbroek NEWFLAGS="$NEWFLAGS $e $ee" 4432*00b67f09SDavid van Moolenbroek ;; 4433*00b67f09SDavid van Moolenbroek solaris*) 4434*00b67f09SDavid van Moolenbroek ee=`echo $e | sed -e 's%^-L%-R%'` 4435*00b67f09SDavid van Moolenbroek NEWFLAGS="$NEWFLAGS $e $ee" 4436*00b67f09SDavid van Moolenbroek ;; 4437*00b67f09SDavid van Moolenbroek *) 4438*00b67f09SDavid van Moolenbroek NEWFLAGS="$NEWFLAGS $e" 4439*00b67f09SDavid van Moolenbroek ;; 4440*00b67f09SDavid van Moolenbroek esac 4441*00b67f09SDavid van Moolenbroek ;; 4442*00b67f09SDavid van Moolenbroek *) 4443*00b67f09SDavid van Moolenbroek NEWFLAGS="$NEWFLAGS $e" 4444*00b67f09SDavid van Moolenbroek ;; 4445*00b67f09SDavid van Moolenbroek esac 4446*00b67f09SDavid van Moolenbroekdone 4447*00b67f09SDavid van MoolenbroekDNS_GSSAPI_LIBS="$NEWFLAGS" 4448*00b67f09SDavid van Moolenbroek 4449*00b67f09SDavid van MoolenbroekNEWFLAGS="" 4450*00b67f09SDavid van Moolenbroekfor e in $ISC_OPENSSL_LIBS ; do 4451*00b67f09SDavid van Moolenbroek case $e in 4452*00b67f09SDavid van Moolenbroek -L*) 4453*00b67f09SDavid van Moolenbroek case $host_os in 4454*00b67f09SDavid van Moolenbroek netbsd*) 4455*00b67f09SDavid van Moolenbroek ee=`echo $e | sed -e 's%^-L%-Wl,-rpath,%'` 4456*00b67f09SDavid van Moolenbroek NEWFLAGS="$NEWFLAGS $e $ee" 4457*00b67f09SDavid van Moolenbroek ;; 4458*00b67f09SDavid van Moolenbroek freebsd*) 4459*00b67f09SDavid van Moolenbroek ee=`echo $e | sed -e 's%^-L%-Wl,-rpath,%'` 4460*00b67f09SDavid van Moolenbroek NEWFLAGS="$NEWFLAGS $e $ee" 4461*00b67f09SDavid van Moolenbroek ;; 4462*00b67f09SDavid van Moolenbroek solaris*) 4463*00b67f09SDavid van Moolenbroek ee=`echo $e | sed -e 's%^-L%-R%'` 4464*00b67f09SDavid van Moolenbroek NEWFLAGS="$NEWFLAGS $e $ee" 4465*00b67f09SDavid van Moolenbroek ;; 4466*00b67f09SDavid van Moolenbroek *) 4467*00b67f09SDavid van Moolenbroek NEWFLAGS="$NEWFLAGS $e" 4468*00b67f09SDavid van Moolenbroek ;; 4469*00b67f09SDavid van Moolenbroek esac 4470*00b67f09SDavid van Moolenbroek ;; 4471*00b67f09SDavid van Moolenbroek *) 4472*00b67f09SDavid van Moolenbroek NEWFLAGS="$NEWFLAGS $e" 4473*00b67f09SDavid van Moolenbroek ;; 4474*00b67f09SDavid van Moolenbroek esac 4475*00b67f09SDavid van Moolenbroekdone 4476*00b67f09SDavid van MoolenbroekISC_OPENSSL_LIBS="$NEWFLAGS" 4477*00b67f09SDavid van Moolenbroek 4478*00b67f09SDavid van MoolenbroekNEWFLAGS="" 4479*00b67f09SDavid van Moolenbroekfor e in $DNS_CRYPTO_LIBS ; do 4480*00b67f09SDavid van Moolenbroek case $e in 4481*00b67f09SDavid van Moolenbroek -L*) 4482*00b67f09SDavid van Moolenbroek case $host_os in 4483*00b67f09SDavid van Moolenbroek netbsd*) 4484*00b67f09SDavid van Moolenbroek ee=`echo $e | sed -e 's%^-L%-Wl,-rpath,%'` 4485*00b67f09SDavid van Moolenbroek NEWFLAGS="$NEWFLAGS $e $ee" 4486*00b67f09SDavid van Moolenbroek ;; 4487*00b67f09SDavid van Moolenbroek freebsd*) 4488*00b67f09SDavid van Moolenbroek ee=`echo $e | sed -e 's%^-L%-Wl,-rpath,%'` 4489*00b67f09SDavid van Moolenbroek NEWFLAGS="$NEWFLAGS $e $ee" 4490*00b67f09SDavid van Moolenbroek ;; 4491*00b67f09SDavid van Moolenbroek solaris*) 4492*00b67f09SDavid van Moolenbroek ee=`echo $e | sed -e 's%^-L%-R%'` 4493*00b67f09SDavid van Moolenbroek NEWFLAGS="$NEWFLAGS $e $ee" 4494*00b67f09SDavid van Moolenbroek ;; 4495*00b67f09SDavid van Moolenbroek *) 4496*00b67f09SDavid van Moolenbroek NEWFLAGS="$NEWFLAGS $e" 4497*00b67f09SDavid van Moolenbroek ;; 4498*00b67f09SDavid van Moolenbroek esac 4499*00b67f09SDavid van Moolenbroek ;; 4500*00b67f09SDavid van Moolenbroek *) 4501*00b67f09SDavid van Moolenbroek NEWFLAGS="$NEWFLAGS $e" 4502*00b67f09SDavid van Moolenbroek ;; 4503*00b67f09SDavid van Moolenbroek esac 4504*00b67f09SDavid van Moolenbroekdone 4505*00b67f09SDavid van MoolenbroekDNS_CRYPTO_LIBS="$NEWFLAGS" 4506*00b67f09SDavid van Moolenbroek 4507*00b67f09SDavid van MoolenbroekAC_SUBST(BUILD_CC) 4508*00b67f09SDavid van MoolenbroekAC_SUBST(BUILD_CFLAGS) 4509*00b67f09SDavid van MoolenbroekAC_SUBST(BUILD_CPPFLAGS) 4510*00b67f09SDavid van MoolenbroekAC_SUBST(BUILD_LDFLAGS) 4511*00b67f09SDavid van MoolenbroekAC_SUBST(BUILD_LIBS) 4512*00b67f09SDavid van Moolenbroek 4513*00b67f09SDavid van Moolenbroek# 4514*00b67f09SDavid van Moolenbroek# Commands to run at the end of config.status. 4515*00b67f09SDavid van Moolenbroek# Don't just put these into configure, it won't work right if somebody 4516*00b67f09SDavid van Moolenbroek# runs config.status directly (which autoconf allows). 4517*00b67f09SDavid van Moolenbroek# 4518*00b67f09SDavid van Moolenbroek 4519*00b67f09SDavid van MoolenbroekAC_CONFIG_COMMANDS( 4520*00b67f09SDavid van Moolenbroek [chmod], 4521*00b67f09SDavid van Moolenbroek [chmod a+x isc-config.sh doc/doxygen/doxygen-input-filter]) 4522*00b67f09SDavid van Moolenbroek 4523*00b67f09SDavid van Moolenbroek# 4524*00b67f09SDavid van Moolenbroek# Files to configure. These are listed here because we used to 4525*00b67f09SDavid van Moolenbroek# specify them as arguments to AC_OUTPUT. It's (now) ok to move these 4526*00b67f09SDavid van Moolenbroek# elsewhere if there's a good reason for doing so. 4527*00b67f09SDavid van Moolenbroek# 4528*00b67f09SDavid van Moolenbroek 4529*00b67f09SDavid van MoolenbroekAC_CONFIG_FILES([ 4530*00b67f09SDavid van Moolenbroek make/Makefile 4531*00b67f09SDavid van Moolenbroek make/mkdep 4532*00b67f09SDavid van Moolenbroek Makefile 4533*00b67f09SDavid van Moolenbroek bin/Makefile 4534*00b67f09SDavid van Moolenbroek bin/check/Makefile 4535*00b67f09SDavid van Moolenbroek bin/confgen/Makefile 4536*00b67f09SDavid van Moolenbroek bin/confgen/unix/Makefile 4537*00b67f09SDavid van Moolenbroek bin/delv/Makefile 4538*00b67f09SDavid van Moolenbroek bin/dig/Makefile 4539*00b67f09SDavid van Moolenbroek bin/dnssec/Makefile 4540*00b67f09SDavid van Moolenbroek bin/named/Makefile 4541*00b67f09SDavid van Moolenbroek bin/named/unix/Makefile 4542*00b67f09SDavid van Moolenbroek bin/nsupdate/Makefile 4543*00b67f09SDavid van Moolenbroek bin/pkcs11/Makefile 4544*00b67f09SDavid van Moolenbroek bin/python/Makefile 4545*00b67f09SDavid van Moolenbroek bin/python/dnssec-checkds.py 4546*00b67f09SDavid van Moolenbroek bin/python/dnssec-coverage.py 4547*00b67f09SDavid van Moolenbroek bin/rndc/Makefile 4548*00b67f09SDavid van Moolenbroek bin/tests/Makefile 4549*00b67f09SDavid van Moolenbroek bin/tests/atomic/Makefile 4550*00b67f09SDavid van Moolenbroek bin/tests/db/Makefile 4551*00b67f09SDavid van Moolenbroek bin/tests/dst/Makefile 4552*00b67f09SDavid van Moolenbroek bin/tests/dst/Kdh.+002+18602.key 4553*00b67f09SDavid van Moolenbroek bin/tests/dst/Kdh.+002+18602.private 4554*00b67f09SDavid van Moolenbroek bin/tests/dst/Kdh.+002+48957.key 4555*00b67f09SDavid van Moolenbroek bin/tests/dst/Kdh.+002+48957.private 4556*00b67f09SDavid van Moolenbroek bin/tests/dst/Ktest.+001+00002.key 4557*00b67f09SDavid van Moolenbroek bin/tests/dst/Ktest.+001+54622.key 4558*00b67f09SDavid van Moolenbroek bin/tests/dst/Ktest.+001+54622.private 4559*00b67f09SDavid van Moolenbroek bin/tests/dst/Ktest.+003+23616.key 4560*00b67f09SDavid van Moolenbroek bin/tests/dst/Ktest.+003+23616.private 4561*00b67f09SDavid van Moolenbroek bin/tests/dst/Ktest.+003+49667.key 4562*00b67f09SDavid van Moolenbroek bin/tests/dst/dst_2_data 4563*00b67f09SDavid van Moolenbroek bin/tests/dst/t2_data_1 4564*00b67f09SDavid van Moolenbroek bin/tests/dst/t2_data_2 4565*00b67f09SDavid van Moolenbroek bin/tests/dst/t2_dsasig 4566*00b67f09SDavid van Moolenbroek bin/tests/dst/t2_rsasig 4567*00b67f09SDavid van Moolenbroek bin/tests/hashes/Makefile 4568*00b67f09SDavid van Moolenbroek bin/tests/headerdep_test.sh 4569*00b67f09SDavid van Moolenbroek bin/tests/master/Makefile 4570*00b67f09SDavid van Moolenbroek bin/tests/mem/Makefile 4571*00b67f09SDavid van Moolenbroek bin/tests/names/Makefile 4572*00b67f09SDavid van Moolenbroek bin/tests/net/Makefile 4573*00b67f09SDavid van Moolenbroek bin/tests/pkcs11/Makefile 4574*00b67f09SDavid van Moolenbroek bin/tests/pkcs11/benchmarks/Makefile 4575*00b67f09SDavid van Moolenbroek bin/tests/rbt/Makefile 4576*00b67f09SDavid van Moolenbroek bin/tests/resolver/Makefile 4577*00b67f09SDavid van Moolenbroek bin/tests/sockaddr/Makefile 4578*00b67f09SDavid van Moolenbroek bin/tests/system/Makefile 4579*00b67f09SDavid van Moolenbroek bin/tests/system/conf.sh 4580*00b67f09SDavid van Moolenbroek bin/tests/system/builtin/Makefile 4581*00b67f09SDavid van Moolenbroek bin/tests/system/dlz/prereq.sh 4582*00b67f09SDavid van Moolenbroek bin/tests/system/dlzexternal/Makefile 4583*00b67f09SDavid van Moolenbroek bin/tests/system/dlzexternal/ns1/named.conf 4584*00b67f09SDavid van Moolenbroek bin/tests/system/dlzredir/prereq.sh 4585*00b67f09SDavid van Moolenbroek bin/tests/system/filter-aaaa/Makefile 4586*00b67f09SDavid van Moolenbroek bin/tests/system/geoip/Makefile 4587*00b67f09SDavid van Moolenbroek bin/tests/system/inline/checkdsa.sh 4588*00b67f09SDavid van Moolenbroek bin/tests/system/lwresd/Makefile 4589*00b67f09SDavid van Moolenbroek bin/tests/system/sit/prereq.sh 4590*00b67f09SDavid van Moolenbroek bin/tests/system/rpz/Makefile 4591*00b67f09SDavid van Moolenbroek bin/tests/system/rsabigexponent/Makefile 4592*00b67f09SDavid van Moolenbroek bin/tests/system/tkey/Makefile 4593*00b67f09SDavid van Moolenbroek bin/tests/system/tsiggss/Makefile 4594*00b67f09SDavid van Moolenbroek bin/tests/tasks/Makefile 4595*00b67f09SDavid van Moolenbroek bin/tests/timers/Makefile 4596*00b67f09SDavid van Moolenbroek bin/tests/virtual-time/Makefile 4597*00b67f09SDavid van Moolenbroek bin/tests/virtual-time/conf.sh 4598*00b67f09SDavid van Moolenbroek bin/tools/Makefile 4599*00b67f09SDavid van Moolenbroek contrib/scripts/check-secure-delegation.pl 4600*00b67f09SDavid van Moolenbroek contrib/scripts/zone-edit.sh 4601*00b67f09SDavid van Moolenbroek doc/Makefile 4602*00b67f09SDavid van Moolenbroek doc/arm/Makefile 4603*00b67f09SDavid van Moolenbroek doc/doxygen/Doxyfile 4604*00b67f09SDavid van Moolenbroek doc/doxygen/Makefile 4605*00b67f09SDavid van Moolenbroek doc/doxygen/doxygen-input-filter 4606*00b67f09SDavid van Moolenbroek doc/misc/Makefile 4607*00b67f09SDavid van Moolenbroek doc/xsl/Makefile 4608*00b67f09SDavid van Moolenbroek doc/xsl/isc-docbook-chunk.xsl 4609*00b67f09SDavid van Moolenbroek doc/xsl/isc-docbook-html.xsl 4610*00b67f09SDavid van Moolenbroek doc/xsl/isc-docbook-latex.xsl 4611*00b67f09SDavid van Moolenbroek doc/xsl/isc-manpage.xsl 4612*00b67f09SDavid van Moolenbroek doc/xsl/isc-notes-html.xsl 4613*00b67f09SDavid van Moolenbroek doc/xsl/isc-notes-latex.xsl 4614*00b67f09SDavid van Moolenbroek isc-config.sh 4615*00b67f09SDavid van Moolenbroek lib/Makefile 4616*00b67f09SDavid van Moolenbroek lib/bind9/Makefile 4617*00b67f09SDavid van Moolenbroek lib/bind9/include/Makefile 4618*00b67f09SDavid van Moolenbroek lib/bind9/include/bind9/Makefile 4619*00b67f09SDavid van Moolenbroek lib/dns/Makefile 4620*00b67f09SDavid van Moolenbroek lib/dns/include/Makefile 4621*00b67f09SDavid van Moolenbroek lib/dns/include/dns/Makefile 4622*00b67f09SDavid van Moolenbroek lib/dns/include/dst/Makefile 4623*00b67f09SDavid van Moolenbroek lib/dns/tests/Makefile 4624*00b67f09SDavid van Moolenbroek lib/irs/Makefile 4625*00b67f09SDavid van Moolenbroek lib/irs/include/Makefile 4626*00b67f09SDavid van Moolenbroek lib/irs/include/irs/Makefile 4627*00b67f09SDavid van Moolenbroek lib/irs/include/irs/netdb.h 4628*00b67f09SDavid van Moolenbroek lib/irs/include/irs/platform.h 4629*00b67f09SDavid van Moolenbroek lib/isc/$arch/Makefile 4630*00b67f09SDavid van Moolenbroek lib/isc/$arch/include/Makefile 4631*00b67f09SDavid van Moolenbroek lib/isc/$arch/include/isc/Makefile 4632*00b67f09SDavid van Moolenbroek lib/isc/$thread_dir/Makefile 4633*00b67f09SDavid van Moolenbroek lib/isc/$thread_dir/include/Makefile 4634*00b67f09SDavid van Moolenbroek lib/isc/$thread_dir/include/isc/Makefile 4635*00b67f09SDavid van Moolenbroek lib/isc/Makefile 4636*00b67f09SDavid van Moolenbroek lib/isc/include/Makefile 4637*00b67f09SDavid van Moolenbroek lib/isc/include/isc/Makefile 4638*00b67f09SDavid van Moolenbroek lib/isc/include/isc/platform.h 4639*00b67f09SDavid van Moolenbroek lib/isc/include/pk11/Makefile 4640*00b67f09SDavid van Moolenbroek lib/isc/include/pkcs11/Makefile 4641*00b67f09SDavid van Moolenbroek lib/isc/tests/Makefile 4642*00b67f09SDavid van Moolenbroek lib/isc/nls/Makefile 4643*00b67f09SDavid van Moolenbroek lib/isc/unix/Makefile 4644*00b67f09SDavid van Moolenbroek lib/isc/unix/include/Makefile 4645*00b67f09SDavid van Moolenbroek lib/isc/unix/include/isc/Makefile 4646*00b67f09SDavid van Moolenbroek lib/isc/unix/include/pkcs11/Makefile 4647*00b67f09SDavid van Moolenbroek lib/isccc/Makefile 4648*00b67f09SDavid van Moolenbroek lib/isccc/include/Makefile 4649*00b67f09SDavid van Moolenbroek lib/isccc/include/isccc/Makefile 4650*00b67f09SDavid van Moolenbroek lib/isccfg/Makefile 4651*00b67f09SDavid van Moolenbroek lib/isccfg/include/Makefile 4652*00b67f09SDavid van Moolenbroek lib/isccfg/include/isccfg/Makefile 4653*00b67f09SDavid van Moolenbroek lib/lwres/Makefile 4654*00b67f09SDavid van Moolenbroek lib/lwres/include/Makefile 4655*00b67f09SDavid van Moolenbroek lib/lwres/include/lwres/Makefile 4656*00b67f09SDavid van Moolenbroek lib/lwres/include/lwres/netdb.h 4657*00b67f09SDavid van Moolenbroek lib/lwres/include/lwres/platform.h 4658*00b67f09SDavid van Moolenbroek lib/lwres/man/Makefile 4659*00b67f09SDavid van Moolenbroek lib/lwres/tests/Makefile 4660*00b67f09SDavid van Moolenbroek lib/lwres/unix/Makefile 4661*00b67f09SDavid van Moolenbroek lib/lwres/unix/include/Makefile 4662*00b67f09SDavid van Moolenbroek lib/lwres/unix/include/lwres/Makefile 4663*00b67f09SDavid van Moolenbroek lib/tests/Makefile 4664*00b67f09SDavid van Moolenbroek lib/tests/include/Makefile 4665*00b67f09SDavid van Moolenbroek lib/tests/include/tests/Makefile 4666*00b67f09SDavid van Moolenbroek lib/samples/Makefile 4667*00b67f09SDavid van Moolenbroek lib/samples/Makefile-postinstall 4668*00b67f09SDavid van Moolenbroek unit/Makefile 4669*00b67f09SDavid van Moolenbroek unit/unittest.sh 4670*00b67f09SDavid van Moolenbroek]) 4671*00b67f09SDavid van Moolenbroek 4672*00b67f09SDavid van Moolenbroek# 4673*00b67f09SDavid van Moolenbroek# Do it 4674*00b67f09SDavid van Moolenbroek# 4675*00b67f09SDavid van Moolenbroek 4676*00b67f09SDavid van MoolenbroekAC_OUTPUT 4677*00b67f09SDavid van Moolenbroek 4678*00b67f09SDavid van Moolenbroek# 4679*00b67f09SDavid van Moolenbroek# Now that the Makefiles exist we can ensure that everything is rebuilt. 4680*00b67f09SDavid van Moolenbroek# 4681*00b67f09SDavid van MoolenbroekAC_ARG_WITH(make-clean, 4682*00b67f09SDavid van Moolenbroek[ --with-make-clean run "make clean" at end of configure [[yes|no]]], 4683*00b67f09SDavid van Moolenbroek make_clean="$withval", make_clean="yes") 4684*00b67f09SDavid van Moolenbroekcase "$make_clean" in 4685*00b67f09SDavid van Moolenbroekyes) 4686*00b67f09SDavid van Moolenbroek make clean 4687*00b67f09SDavid van Moolenbroek ;; 4688*00b67f09SDavid van Moolenbroekesac 4689*00b67f09SDavid van Moolenbroek 4690*00b67f09SDavid van MoolenbroekAC_ARG_ENABLE(full-report, 4691*00b67f09SDavid van Moolenbroek [ --enable-full-report report values of all configure options]) 4692*00b67f09SDavid van Moolenbroek 4693*00b67f09SDavid van Moolenbroekecho "========================================================================" 4694*00b67f09SDavid van Moolenbroekecho "Configuration summary:" 4695*00b67f09SDavid van Moolenbroekecho "------------------------------------------------------------------------" 4696*00b67f09SDavid van Moolenbroekecho "Optional features enabled:" 4697*00b67f09SDavid van Moolenbroekif $use_threads; then 4698*00b67f09SDavid van Moolenbroek echo " Multiprocessing support (--enable-threads)" 4699*00b67f09SDavid van Moolenbroek if test "$enable_full_report" = "yes" -o "$locktype" = "standard"; then 4700*00b67f09SDavid van Moolenbroek echo " Mutex lock type: $locktype" 4701*00b67f09SDavid van Moolenbroek fi 4702*00b67f09SDavid van Moolenbroekfi 4703*00b67f09SDavid van Moolenbroektest "$use_tuning" = "large" && echo " Large-system tuning (--with-tuning)" 4704*00b67f09SDavid van Moolenbroektest "$use_geoip" = "no" || echo " GeoIP access control (--with-geoip)" 4705*00b67f09SDavid van Moolenbroektest "$use_gssapi" = "no" || echo " GSS-API (--with-gssapi)" 4706*00b67f09SDavid van Moolenbroekif test "$enable_sit" != "no"; then 4707*00b67f09SDavid van Moolenbroek echo " Source Identity Token support (--enable-sit)" 4708*00b67f09SDavid van Moolenbroek if test "$enable_full_report" = "yes" -o "$with_sit_alg" != "aes"; then 4709*00b67f09SDavid van Moolenbroek echo " Algorithm: $with_sit_alg" 4710*00b67f09SDavid van Moolenbroek fi 4711*00b67f09SDavid van Moolenbroekfi 4712*00b67f09SDavid van Moolenbroek 4713*00b67f09SDavid van Moolenbroek# these lines are only printed if run with --enable-full-report 4714*00b67f09SDavid van Moolenbroekif test "$enable_full_report" = "yes"; then 4715*00b67f09SDavid van Moolenbroek test "$enable_ipv6" = "no" -o "$found_ipv6" = "no" || \ 4716*00b67f09SDavid van Moolenbroek echo " IPv6 support (--enable-ipv6)" 4717*00b67f09SDavid van Moolenbroek test "X$CRYPTO" = "X" -o "$want_native_pkcs11" = "yes" || \ 4718*00b67f09SDavid van Moolenbroek echo " OpenSSL cryptography/DNSSEC (--with-openssl)" 4719*00b67f09SDavid van Moolenbroek test "X$PYTHON" = "X" || echo " Python tools (--with-python)" 4720*00b67f09SDavid van Moolenbroek test "X$libxml2_libs" = "X" || echo " XML statistics (--with-libxml2)" 4721*00b67f09SDavid van Moolenbroek test "X$have_libjson" = "X" || echo " JSON statistics (--with-libjson)" 4722*00b67f09SDavid van Moolenbroekfi 4723*00b67f09SDavid van Moolenbroek 4724*00b67f09SDavid van Moolenbroekif test "$use_pkcs11" != "no"; then 4725*00b67f09SDavid van Moolenbroek if test "$want_native_pkcs11" = "yes"; then 4726*00b67f09SDavid van Moolenbroek echo " Native PKCS#11/Cryptoki support (--enable-native-pkcs11)" 4727*00b67f09SDavid van Moolenbroek else 4728*00b67f09SDavid van Moolenbroek echo " PKCS#11/Cryptoki support using OpenSSL (--with-pkcs11)" 4729*00b67f09SDavid van Moolenbroek fi 4730*00b67f09SDavid van Moolenbroek echo " Provider library: $PKCS11_PROVIDER" 4731*00b67f09SDavid van Moolenbroekfi 4732*00b67f09SDavid van Moolenbroekif test "$OPENSSL_GOST" = "yes" -o "$PKCS11_GOST" = "yes"; then 4733*00b67f09SDavid van Moolenbroek echo " GOST algorithm support (encoding: $gosttype) (--with-gost)" 4734*00b67f09SDavid van Moolenbroekfi 4735*00b67f09SDavid van Moolenbroektest "$OPENSSL_ECDSA" = "yes" -o "$PKCS11_ECDSA" = "yes" && \ 4736*00b67f09SDavid van Moolenbroek echo " ECDSA algorithm support (--with-ecdsa)" 4737*00b67f09SDavid van Moolenbroektest "$enable_fixed" = "yes" && \ 4738*00b67f09SDavid van Moolenbroek echo " Allow 'fixed' rrset-order (--enable-fixed-rrset)" 4739*00b67f09SDavid van Moolenbroektest "$enable_filter" = "yes" && \ 4740*00b67f09SDavid van Moolenbroek echo " AAAA filtering (--enable-filter-aaaa)" 4741*00b67f09SDavid van Moolenbroektest "$enable_seccomp" = yes && \ 4742*00b67f09SDavid van Moolenbroek echo " Use libseccomp system call filtering (--enable-seccomp)" 4743*00b67f09SDavid van Moolenbroektest "$want_backtrace" = "yes" && \ 4744*00b67f09SDavid van Moolenbroek echo " Print backtrace on crash (--enable-backtrace)" 4745*00b67f09SDavid van Moolenbroektest "$want_symtable" = "minimal" && \ 4746*00b67f09SDavid van Moolenbroek echo " Use symbol table for backtrace, named only (--enable-symtable)" 4747*00b67f09SDavid van Moolenbroektest "$want_symtable" = "yes" -o "$want_symtable" = "all" && \ 4748*00b67f09SDavid van Moolenbroek echo " Use symbol table for backtrace, all binaries (--enable-symtable=all)" 4749*00b67f09SDavid van Moolenbroektest "$use_libtool" = "no" || echo " Use GNU libtool (--with-libtool)" 4750*00b67f09SDavid van Moolenbroektest "$atf" = "no" || echo " Automated Testing Framework (--with-atf)" 4751*00b67f09SDavid van Moolenbroek 4752*00b67f09SDavid van Moolenbroekecho " Dynamically loadable zone (DLZ) drivers:" 4753*00b67f09SDavid van Moolenbroektest "$use_dlz_bdb" = "no" || \ 4754*00b67f09SDavid van Moolenbroek echo " Berkeley DB (--with-dlz-bdb)" 4755*00b67f09SDavid van Moolenbroektest "$use_dlz_ldap" = "no" || \ 4756*00b67f09SDavid van Moolenbroek echo " LDAP (--with-dlz-ldap)" 4757*00b67f09SDavid van Moolenbroektest "$use_dlz_mysql" = "no" || \ 4758*00b67f09SDavid van Moolenbroek echo " MySQL (--with-dlz-mysql)" 4759*00b67f09SDavid van Moolenbroektest "$use_dlz_odbc" = "no" || \ 4760*00b67f09SDavid van Moolenbroek echo " ODBC (--with-dlz-odbc)" 4761*00b67f09SDavid van Moolenbroektest "$use_dlz_postgres" = "no" || \ 4762*00b67f09SDavid van Moolenbroek echo " Postgres (--with-dlz-postgres)" 4763*00b67f09SDavid van Moolenbroektest "$use_dlz_filesystem" = "no" || \ 4764*00b67f09SDavid van Moolenbroek echo " Filesystem (--with-dlz-filesystem)" 4765*00b67f09SDavid van Moolenbroektest "$use_dlz_stub" = "no" || \ 4766*00b67f09SDavid van Moolenbroek echo " Stub (--with-dlz-stub)" 4767*00b67f09SDavid van Moolenbroektest "$use_dlz_bdb $use_dlz_ldap $use_dlz_mysql $use_dlz_odbc $use_dlz_postgres $use_dlz_filesystem $use_dlz_stub" = "no no no no no no no" && echo " None" 4768*00b67f09SDavid van Moolenbroekecho 4769*00b67f09SDavid van Moolenbroek 4770*00b67f09SDavid van Moolenbroekecho "Features disabled or unavailable on this platform:" 4771*00b67f09SDavid van Moolenbroek$use_threads || echo " Multiprocessing support (--enable-threads)" 4772*00b67f09SDavid van Moolenbroektest "$enable_ipv6" = "no" -o "$found_ipv6" = "no" && \ 4773*00b67f09SDavid van Moolenbroek echo " IPv6 support (--enable-ipv6)" 4774*00b67f09SDavid van Moolenbroektest "$use_tuning" = "large" || echo " Large-system tuning (--with-tuning)" 4775*00b67f09SDavid van Moolenbroek 4776*00b67f09SDavid van Moolenbroektest "$use_geoip" = "no" && echo " GeoIP access control (--with-geoip)" 4777*00b67f09SDavid van Moolenbroektest "$use_gssapi" = "no" && echo " GSS-API (--with-gssapi)" 4778*00b67f09SDavid van Moolenbroektest "$enable_sit" = "no" && echo " Source Identity Token support (--enable-sit)" 4779*00b67f09SDavid van Moolenbroek 4780*00b67f09SDavid van Moolenbroektest "$enable_fixed" = "yes" || \ 4781*00b67f09SDavid van Moolenbroek echo " Allow 'fixed' rrset-order (--enable-fixed-rrset)" 4782*00b67f09SDavid van Moolenbroek 4783*00b67f09SDavid van Moolenbroekif test "X$CRYPTO" = "X" -o "$want_native_pkcs11" = "yes" 4784*00b67f09SDavid van Moolenbroekthen 4785*00b67f09SDavid van Moolenbroek echo " OpenSSL cryptography/DNSSEC (--with-openssl)" 4786*00b67f09SDavid van Moolenbroekelif test "$use_pkcs11" = "no"; then 4787*00b67f09SDavid van Moolenbroek echo " PKCS#11/Cryptoki support (--with-pkcs11)" 4788*00b67f09SDavid van Moolenbroekfi 4789*00b67f09SDavid van Moolenbroektest "$want_native_pkcs11" = "yes" || 4790*00b67f09SDavid van Moolenbroek echo " Native PKCS#11/Cryptoki support (--enable-native-pkcs11)" 4791*00b67f09SDavid van Moolenbroektest "X$CRYPTO" = "X" -o "$OPENSSL_GOST" = "yes" -o "$PKCS11_GOST" = "yes" || \ 4792*00b67f09SDavid van Moolenbroek echo " GOST algorithm support (--with-gost)" 4793*00b67f09SDavid van Moolenbroektest "X$CRYPTO" = "X" -o "$OPENSSL_ECDSA" = "yes" -o "$PKCS11_ECDSA" = "yes" || \ 4794*00b67f09SDavid van Moolenbroek echo " ECDSA algorithm support (--with-ecdsa)" 4795*00b67f09SDavid van Moolenbroek 4796*00b67f09SDavid van Moolenbroektest "$enable_seccomp" = yes || \ 4797*00b67f09SDavid van Moolenbroek echo " Use libseccomp system call filtering (--enable-seccomp)" 4798*00b67f09SDavid van Moolenbroektest "$want_backtrace" = "yes" || \ 4799*00b67f09SDavid van Moolenbroek echo " Print backtrace on crash (--enable-backtrace)" 4800*00b67f09SDavid van Moolenbroektest "$use_libtool" = "yes" || echo " Use GNU libtool (--with-libtool)" 4801*00b67f09SDavid van Moolenbroektest "$atf" = "no" && echo " Automated Testing Framework (--with-atf)" 4802*00b67f09SDavid van Moolenbroek 4803*00b67f09SDavid van Moolenbroektest "X$PYTHON" = "X" && echo " Python tools (--with-python)" 4804*00b67f09SDavid van Moolenbroektest "X$libxml2_libs" = "X" && echo " XML statistics (--with-libxml2)" 4805*00b67f09SDavid van Moolenbroektest "X$have_libjson" = "X" && echo " JSON statistics (--with-libjson)" 4806*00b67f09SDavid van Moolenbroek 4807*00b67f09SDavid van Moolenbroekif test "X$ac_unrecognized_opts" != "X"; then 4808*00b67f09SDavid van Moolenbroek echo 4809*00b67f09SDavid van Moolenbroek echo "Unrecognized options:" 4810*00b67f09SDavid van Moolenbroek echo " $ac_unrecognized_opts" 4811*00b67f09SDavid van Moolenbroekfi 4812*00b67f09SDavid van Moolenbroekecho "========================================================================" 4813*00b67f09SDavid van Moolenbroek 4814*00b67f09SDavid van Moolenbroekif test "X$CRYPTO" = "X"; then 4815*00b67f09SDavid van Moolenbroekcat << \EOF 4816*00b67f09SDavid van MoolenbroekBIND 9 is being built without cryptography support. This means it will 4817*00b67f09SDavid van Moolenbroeknot have DNSSEC support. Use --with-openssl, or --with-pkcs11 and 4818*00b67f09SDavid van Moolenbroek--enable-native-pkcs11 to enable cryptography. 4819*00b67f09SDavid van MoolenbroekEOF 4820*00b67f09SDavid van Moolenbroekfi 4821*00b67f09SDavid van Moolenbroek 4822*00b67f09SDavid van Moolenbroekif test "X$OPENSSL_WARNING" != "X"; then 4823*00b67f09SDavid van Moolenbroekcat << \EOF 4824*00b67f09SDavid van MoolenbroekWARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING 4825*00b67f09SDavid van MoolenbroekWARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING 4826*00b67f09SDavid van MoolenbroekWARNING WARNING 4827*00b67f09SDavid van MoolenbroekWARNING Your OpenSSL crypto library may be vulnerable to WARNING 4828*00b67f09SDavid van MoolenbroekWARNING one or more of the the following known security WARNING 4829*00b67f09SDavid van MoolenbroekWARNING flaws: WARNING 4830*00b67f09SDavid van MoolenbroekWARNING WARNING 4831*00b67f09SDavid van MoolenbroekWARNING CAN-2002-0659, CAN-2006-4339, CVE-2006-2937 and WARNING 4832*00b67f09SDavid van MoolenbroekWARNING CVE-2006-2940. WARNING 4833*00b67f09SDavid van MoolenbroekWARNING WARNING 4834*00b67f09SDavid van MoolenbroekWARNING It is recommended that you upgrade to OpenSSL WARNING 4835*00b67f09SDavid van MoolenbroekWARNING version 0.9.8d/0.9.7l (or greater). WARNING 4836*00b67f09SDavid van MoolenbroekWARNING WARNING 4837*00b67f09SDavid van MoolenbroekWARNING You can disable this warning by specifying: WARNING 4838*00b67f09SDavid van MoolenbroekWARNING WARNING 4839*00b67f09SDavid van MoolenbroekWARNING --disable-openssl-version-check WARNING 4840*00b67f09SDavid van MoolenbroekWARNING WARNING 4841*00b67f09SDavid van MoolenbroekWARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING 4842*00b67f09SDavid van MoolenbroekWARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING 4843*00b67f09SDavid van MoolenbroekEOF 4844*00b67f09SDavid van Moolenbroekfi 4845*00b67f09SDavid van Moolenbroek 4846*00b67f09SDavid van Moolenbroek# Tell Emacs to edit this file in shell mode. 4847*00b67f09SDavid van Moolenbroek# Local Variables: 4848*00b67f09SDavid van Moolenbroek# mode: sh 4849*00b67f09SDavid van Moolenbroek# End: 4850