1*b636d99dSDavid van Moolenbroekdnl Copyright (c) 1995, 1996, 1997, 1998 2*b636d99dSDavid van Moolenbroekdnl The Regents of the University of California. All rights reserved. 3*b636d99dSDavid van Moolenbroekdnl 4*b636d99dSDavid van Moolenbroekdnl Redistribution and use in source and binary forms, with or without 5*b636d99dSDavid van Moolenbroekdnl modification, are permitted provided that: (1) source code distributions 6*b636d99dSDavid van Moolenbroekdnl retain the above copyright notice and this paragraph in its entirety, (2) 7*b636d99dSDavid van Moolenbroekdnl distributions including binary code include the above copyright notice and 8*b636d99dSDavid van Moolenbroekdnl this paragraph in its entirety in the documentation or other materials 9*b636d99dSDavid van Moolenbroekdnl provided with the distribution, and (3) all advertising materials mentioning 10*b636d99dSDavid van Moolenbroekdnl features or use of this software display the following acknowledgement: 11*b636d99dSDavid van Moolenbroekdnl ``This product includes software developed by the University of California, 12*b636d99dSDavid van Moolenbroekdnl Lawrence Berkeley Laboratory and its contributors.'' Neither the name of 13*b636d99dSDavid van Moolenbroekdnl the University nor the names of its contributors may be used to endorse 14*b636d99dSDavid van Moolenbroekdnl or promote products derived from this software without specific prior 15*b636d99dSDavid van Moolenbroekdnl written permission. 16*b636d99dSDavid van Moolenbroekdnl THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED 17*b636d99dSDavid van Moolenbroekdnl WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF 18*b636d99dSDavid van Moolenbroekdnl MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 19*b636d99dSDavid van Moolenbroekdnl 20*b636d99dSDavid van Moolenbroekdnl LBL autoconf macros 21*b636d99dSDavid van Moolenbroekdnl 22*b636d99dSDavid van Moolenbroek 23*b636d99dSDavid van Moolenbroekdnl 24*b636d99dSDavid van Moolenbroekdnl Do whatever AC_LBL_C_INIT work is necessary before using AC_PROG_CC. 25*b636d99dSDavid van Moolenbroekdnl 26*b636d99dSDavid van Moolenbroekdnl It appears that newer versions of autoconf (2.64 and later) will, 27*b636d99dSDavid van Moolenbroekdnl if you use AC_TRY_COMPILE in a macro, stick AC_PROG_CC at the 28*b636d99dSDavid van Moolenbroekdnl beginning of the macro, even if the macro itself calls AC_PROG_CC. 29*b636d99dSDavid van Moolenbroekdnl See the "Prerequisite Macros" and "Expanded Before Required" sections 30*b636d99dSDavid van Moolenbroekdnl in the Autoconf documentation. 31*b636d99dSDavid van Moolenbroekdnl 32*b636d99dSDavid van Moolenbroekdnl This causes a steaming heap of fail in our case, as we were, in 33*b636d99dSDavid van Moolenbroekdnl AC_LBL_C_INIT, doing the tests we now do in AC_LBL_C_INIT_BEFORE_CC, 34*b636d99dSDavid van Moolenbroekdnl calling AC_PROG_CC, and then doing the tests we now do in 35*b636d99dSDavid van Moolenbroekdnl AC_LBL_C_INIT. Now, we run AC_LBL_C_INIT_BEFORE_CC, AC_PROG_CC, 36*b636d99dSDavid van Moolenbroekdnl and AC_LBL_C_INIT at the top level. 37*b636d99dSDavid van Moolenbroekdnl 38*b636d99dSDavid van MoolenbroekAC_DEFUN(AC_LBL_C_INIT_BEFORE_CC, 39*b636d99dSDavid van Moolenbroek[ 40*b636d99dSDavid van Moolenbroek AC_BEFORE([$0], [AC_LBL_C_INIT]) 41*b636d99dSDavid van Moolenbroek AC_BEFORE([$0], [AC_PROG_CC]) 42*b636d99dSDavid van Moolenbroek AC_BEFORE([$0], [AC_LBL_FIXINCLUDES]) 43*b636d99dSDavid van Moolenbroek AC_BEFORE([$0], [AC_LBL_DEVEL]) 44*b636d99dSDavid van Moolenbroek AC_ARG_WITH(gcc, [ --without-gcc don't use gcc]) 45*b636d99dSDavid van Moolenbroek $1="" 46*b636d99dSDavid van Moolenbroek if test "${srcdir}" != "." ; then 47*b636d99dSDavid van Moolenbroek $1="-I$srcdir" 48*b636d99dSDavid van Moolenbroek fi 49*b636d99dSDavid van Moolenbroek if test "${CFLAGS+set}" = set; then 50*b636d99dSDavid van Moolenbroek LBL_CFLAGS="$CFLAGS" 51*b636d99dSDavid van Moolenbroek fi 52*b636d99dSDavid van Moolenbroek if test -z "$CC" ; then 53*b636d99dSDavid van Moolenbroek case "$host_os" in 54*b636d99dSDavid van Moolenbroek 55*b636d99dSDavid van Moolenbroek bsdi*) 56*b636d99dSDavid van Moolenbroek AC_CHECK_PROG(SHLICC2, shlicc2, yes, no) 57*b636d99dSDavid van Moolenbroek if test $SHLICC2 = yes ; then 58*b636d99dSDavid van Moolenbroek CC=shlicc2 59*b636d99dSDavid van Moolenbroek export CC 60*b636d99dSDavid van Moolenbroek fi 61*b636d99dSDavid van Moolenbroek ;; 62*b636d99dSDavid van Moolenbroek esac 63*b636d99dSDavid van Moolenbroek fi 64*b636d99dSDavid van Moolenbroek if test -z "$CC" -a "$with_gcc" = no ; then 65*b636d99dSDavid van Moolenbroek CC=cc 66*b636d99dSDavid van Moolenbroek export CC 67*b636d99dSDavid van Moolenbroek fi 68*b636d99dSDavid van Moolenbroek]) 69*b636d99dSDavid van Moolenbroek 70*b636d99dSDavid van Moolenbroekdnl 71*b636d99dSDavid van Moolenbroekdnl Determine which compiler we're using (cc or gcc) 72*b636d99dSDavid van Moolenbroekdnl If using gcc, determine the version number 73*b636d99dSDavid van Moolenbroekdnl If using cc: 74*b636d99dSDavid van Moolenbroekdnl require that it support ansi prototypes 75*b636d99dSDavid van Moolenbroekdnl use -O (AC_PROG_CC will use -g -O2 on gcc, so we don't need to 76*b636d99dSDavid van Moolenbroekdnl do that ourselves for gcc) 77*b636d99dSDavid van Moolenbroekdnl add -g flags, as appropriate 78*b636d99dSDavid van Moolenbroekdnl explicitly specify /usr/local/include 79*b636d99dSDavid van Moolenbroekdnl 80*b636d99dSDavid van Moolenbroekdnl NOTE WELL: with newer versions of autoconf, "gcc" means any compiler 81*b636d99dSDavid van Moolenbroekdnl that defines __GNUC__, which means clang, for example, counts as "gcc". 82*b636d99dSDavid van Moolenbroekdnl 83*b636d99dSDavid van Moolenbroekdnl usage: 84*b636d99dSDavid van Moolenbroekdnl 85*b636d99dSDavid van Moolenbroekdnl AC_LBL_C_INIT(copt, incls) 86*b636d99dSDavid van Moolenbroekdnl 87*b636d99dSDavid van Moolenbroekdnl results: 88*b636d99dSDavid van Moolenbroekdnl 89*b636d99dSDavid van Moolenbroekdnl $1 (copt set) 90*b636d99dSDavid van Moolenbroekdnl $2 (incls set) 91*b636d99dSDavid van Moolenbroekdnl CC 92*b636d99dSDavid van Moolenbroekdnl LDFLAGS 93*b636d99dSDavid van Moolenbroekdnl LBL_CFLAGS 94*b636d99dSDavid van Moolenbroekdnl 95*b636d99dSDavid van MoolenbroekAC_DEFUN(AC_LBL_C_INIT, 96*b636d99dSDavid van Moolenbroek[ 97*b636d99dSDavid van Moolenbroek AC_BEFORE([$0], [AC_LBL_FIXINCLUDES]) 98*b636d99dSDavid van Moolenbroek AC_BEFORE([$0], [AC_LBL_DEVEL]) 99*b636d99dSDavid van Moolenbroek AC_BEFORE([$0], [AC_LBL_SHLIBS_INIT]) 100*b636d99dSDavid van Moolenbroek if test "$GCC" = yes ; then 101*b636d99dSDavid van Moolenbroek # 102*b636d99dSDavid van Moolenbroek # -Werror forces warnings to be errors. 103*b636d99dSDavid van Moolenbroek # 104*b636d99dSDavid van Moolenbroek ac_lbl_cc_force_warning_errors=-Werror 105*b636d99dSDavid van Moolenbroek 106*b636d99dSDavid van Moolenbroek # 107*b636d99dSDavid van Moolenbroek # Use -ffloat-store so that, on 32-bit x86, we don't 108*b636d99dSDavid van Moolenbroek # do 80-bit arithmetic with the FPU; that way we should 109*b636d99dSDavid van Moolenbroek # get the same results for floating-point calculations 110*b636d99dSDavid van Moolenbroek # on x86-32 and x86-64. 111*b636d99dSDavid van Moolenbroek # 112*b636d99dSDavid van Moolenbroek AC_LBL_CHECK_COMPILER_OPT($1, -ffloat-store) 113*b636d99dSDavid van Moolenbroek else 114*b636d99dSDavid van Moolenbroek $2="$$2 -I/usr/local/include" 115*b636d99dSDavid van Moolenbroek LDFLAGS="$LDFLAGS -L/usr/local/lib" 116*b636d99dSDavid van Moolenbroek 117*b636d99dSDavid van Moolenbroek case "$host_os" in 118*b636d99dSDavid van Moolenbroek 119*b636d99dSDavid van Moolenbroek darwin*) 120*b636d99dSDavid van Moolenbroek # 121*b636d99dSDavid van Moolenbroek # This is assumed either to be GCC or clang, both 122*b636d99dSDavid van Moolenbroek # of which use -Werror to force warnings to be errors. 123*b636d99dSDavid van Moolenbroek # 124*b636d99dSDavid van Moolenbroek ac_lbl_cc_force_warning_errors=-Werror 125*b636d99dSDavid van Moolenbroek ;; 126*b636d99dSDavid van Moolenbroek 127*b636d99dSDavid van Moolenbroek hpux*) 128*b636d99dSDavid van Moolenbroek # 129*b636d99dSDavid van Moolenbroek # HP C, which is what we presume we're using, doesn't 130*b636d99dSDavid van Moolenbroek # exit with a non-zero exit status if we hand it an 131*b636d99dSDavid van Moolenbroek # invalid -W flag, can't be forced to do so even with 132*b636d99dSDavid van Moolenbroek # +We, and doesn't handle GCC-style -W flags, so we 133*b636d99dSDavid van Moolenbroek # don't want to try using GCC-style -W flags. 134*b636d99dSDavid van Moolenbroek # 135*b636d99dSDavid van Moolenbroek ac_lbl_cc_dont_try_gcc_dashW=yes 136*b636d99dSDavid van Moolenbroek ;; 137*b636d99dSDavid van Moolenbroek 138*b636d99dSDavid van Moolenbroek irix*) 139*b636d99dSDavid van Moolenbroek # 140*b636d99dSDavid van Moolenbroek # MIPS C, which is what we presume we're using, doesn't 141*b636d99dSDavid van Moolenbroek # necessarily exit with a non-zero exit status if we 142*b636d99dSDavid van Moolenbroek # hand it an invalid -W flag, can't be forced to do 143*b636d99dSDavid van Moolenbroek # so, and doesn't handle GCC-style -W flags, so we 144*b636d99dSDavid van Moolenbroek # don't want to try using GCC-style -W flags. 145*b636d99dSDavid van Moolenbroek # 146*b636d99dSDavid van Moolenbroek ac_lbl_cc_dont_try_gcc_dashW=yes 147*b636d99dSDavid van Moolenbroek # 148*b636d99dSDavid van Moolenbroek # It also, apparently, defaults to "char" being 149*b636d99dSDavid van Moolenbroek # unsigned, unlike most other C implementations; 150*b636d99dSDavid van Moolenbroek # I suppose we could say "signed char" whenever 151*b636d99dSDavid van Moolenbroek # we want to guarantee a signed "char", but let's 152*b636d99dSDavid van Moolenbroek # just force signed chars. 153*b636d99dSDavid van Moolenbroek # 154*b636d99dSDavid van Moolenbroek # -xansi is normally the default, but the 155*b636d99dSDavid van Moolenbroek # configure script was setting it; perhaps -cckr 156*b636d99dSDavid van Moolenbroek # was the default in the Old Days. (Then again, 157*b636d99dSDavid van Moolenbroek # that would probably be for backwards compatibility 158*b636d99dSDavid van Moolenbroek # in the days when ANSI C was Shiny and New, i.e. 159*b636d99dSDavid van Moolenbroek # 1989 and the early '90's, so maybe we can just 160*b636d99dSDavid van Moolenbroek # drop support for those compilers.) 161*b636d99dSDavid van Moolenbroek # 162*b636d99dSDavid van Moolenbroek # -g is equivalent to -g2, which turns off 163*b636d99dSDavid van Moolenbroek # optimization; we choose -g3, which generates 164*b636d99dSDavid van Moolenbroek # debugging information but doesn't turn off 165*b636d99dSDavid van Moolenbroek # optimization (even if the optimization would 166*b636d99dSDavid van Moolenbroek # cause inaccuracies in debugging). 167*b636d99dSDavid van Moolenbroek # 168*b636d99dSDavid van Moolenbroek $1="$$1 -xansi -signed -g3" 169*b636d99dSDavid van Moolenbroek ;; 170*b636d99dSDavid van Moolenbroek 171*b636d99dSDavid van Moolenbroek osf*) 172*b636d99dSDavid van Moolenbroek # 173*b636d99dSDavid van Moolenbroek # Presumed to be DEC OSF/1, Digital UNIX, or 174*b636d99dSDavid van Moolenbroek # Tru64 UNIX. 175*b636d99dSDavid van Moolenbroek # 176*b636d99dSDavid van Moolenbroek # The DEC C compiler, which is what we presume we're 177*b636d99dSDavid van Moolenbroek # using, doesn't exit with a non-zero exit status if we 178*b636d99dSDavid van Moolenbroek # hand it an invalid -W flag, can't be forced to do 179*b636d99dSDavid van Moolenbroek # so, and doesn't handle GCC-style -W flags, so we 180*b636d99dSDavid van Moolenbroek # don't want to try using GCC-style -W flags. 181*b636d99dSDavid van Moolenbroek # 182*b636d99dSDavid van Moolenbroek ac_lbl_cc_dont_try_gcc_dashW=yes 183*b636d99dSDavid van Moolenbroek # 184*b636d99dSDavid van Moolenbroek # -g is equivalent to -g2, which turns off 185*b636d99dSDavid van Moolenbroek # optimization; we choose -g3, which generates 186*b636d99dSDavid van Moolenbroek # debugging information but doesn't turn off 187*b636d99dSDavid van Moolenbroek # optimization (even if the optimization would 188*b636d99dSDavid van Moolenbroek # cause inaccuracies in debugging). 189*b636d99dSDavid van Moolenbroek # 190*b636d99dSDavid van Moolenbroek $1="$$1 -g3" 191*b636d99dSDavid van Moolenbroek ;; 192*b636d99dSDavid van Moolenbroek 193*b636d99dSDavid van Moolenbroek solaris*) 194*b636d99dSDavid van Moolenbroek # 195*b636d99dSDavid van Moolenbroek # Assumed to be Sun C, which requires -errwarn to force 196*b636d99dSDavid van Moolenbroek # warnings to be treated as errors. 197*b636d99dSDavid van Moolenbroek # 198*b636d99dSDavid van Moolenbroek ac_lbl_cc_force_warning_errors=-errwarn 199*b636d99dSDavid van Moolenbroek ;; 200*b636d99dSDavid van Moolenbroek 201*b636d99dSDavid van Moolenbroek ultrix*) 202*b636d99dSDavid van Moolenbroek AC_MSG_CHECKING(that Ultrix $CC hacks const in prototypes) 203*b636d99dSDavid van Moolenbroek AC_CACHE_VAL(ac_cv_lbl_cc_const_proto, 204*b636d99dSDavid van Moolenbroek AC_TRY_COMPILE( 205*b636d99dSDavid van Moolenbroek [#include <sys/types.h>], 206*b636d99dSDavid van Moolenbroek [struct a { int b; }; 207*b636d99dSDavid van Moolenbroek void c(const struct a *)], 208*b636d99dSDavid van Moolenbroek ac_cv_lbl_cc_const_proto=yes, 209*b636d99dSDavid van Moolenbroek ac_cv_lbl_cc_const_proto=no)) 210*b636d99dSDavid van Moolenbroek AC_MSG_RESULT($ac_cv_lbl_cc_const_proto) 211*b636d99dSDavid van Moolenbroek if test $ac_cv_lbl_cc_const_proto = no ; then 212*b636d99dSDavid van Moolenbroek AC_DEFINE(const,[], 213*b636d99dSDavid van Moolenbroek [to handle Ultrix compilers that don't support const in prototypes]) 214*b636d99dSDavid van Moolenbroek fi 215*b636d99dSDavid van Moolenbroek ;; 216*b636d99dSDavid van Moolenbroek esac 217*b636d99dSDavid van Moolenbroek $1="$$1 -O" 218*b636d99dSDavid van Moolenbroek fi 219*b636d99dSDavid van Moolenbroek]) 220*b636d99dSDavid van Moolenbroek 221*b636d99dSDavid van Moolenbroekdnl 222*b636d99dSDavid van Moolenbroekdnl Check whether the compiler option specified as the second argument 223*b636d99dSDavid van Moolenbroekdnl is supported by the compiler and, if so, add it to the macro 224*b636d99dSDavid van Moolenbroekdnl specified as the first argument 225*b636d99dSDavid van Moolenbroekdnl 226*b636d99dSDavid van MoolenbroekAC_DEFUN(AC_LBL_CHECK_COMPILER_OPT, 227*b636d99dSDavid van Moolenbroek [ 228*b636d99dSDavid van Moolenbroek AC_MSG_CHECKING([whether the compiler supports the $2 option]) 229*b636d99dSDavid van Moolenbroek save_CFLAGS="$CFLAGS" 230*b636d99dSDavid van Moolenbroek CFLAGS="$CFLAGS $ac_lbl_cc_force_warning_errors $2" 231*b636d99dSDavid van Moolenbroek AC_TRY_COMPILE( 232*b636d99dSDavid van Moolenbroek [], 233*b636d99dSDavid van Moolenbroek [return 0], 234*b636d99dSDavid van Moolenbroek [ 235*b636d99dSDavid van Moolenbroek AC_MSG_RESULT([yes]) 236*b636d99dSDavid van Moolenbroek CFLAGS="$save_CFLAGS" 237*b636d99dSDavid van Moolenbroek $1="$$1 $2" 238*b636d99dSDavid van Moolenbroek ], 239*b636d99dSDavid van Moolenbroek [ 240*b636d99dSDavid van Moolenbroek AC_MSG_RESULT([no]) 241*b636d99dSDavid van Moolenbroek CFLAGS="$save_CFLAGS" 242*b636d99dSDavid van Moolenbroek ]) 243*b636d99dSDavid van Moolenbroek ]) 244*b636d99dSDavid van Moolenbroek 245*b636d99dSDavid van Moolenbroekdnl 246*b636d99dSDavid van Moolenbroekdnl Check whether the compiler supports an option to generate 247*b636d99dSDavid van Moolenbroekdnl Makefile-style dependency lines 248*b636d99dSDavid van Moolenbroekdnl 249*b636d99dSDavid van Moolenbroekdnl GCC uses -M for this. Non-GCC compilers that support this 250*b636d99dSDavid van Moolenbroekdnl use a variety of flags, including but not limited to -M. 251*b636d99dSDavid van Moolenbroekdnl 252*b636d99dSDavid van Moolenbroekdnl We test whether the flag in question is supported, as older 253*b636d99dSDavid van Moolenbroekdnl versions of compilers might not support it. 254*b636d99dSDavid van Moolenbroekdnl 255*b636d99dSDavid van Moolenbroekdnl We don't try all the possible flags, just in case some flag means 256*b636d99dSDavid van Moolenbroekdnl "generate dependencies" on one compiler but means something else 257*b636d99dSDavid van Moolenbroekdnl on another compiler. 258*b636d99dSDavid van Moolenbroekdnl 259*b636d99dSDavid van Moolenbroekdnl Most compilers that support this send the output to the standard 260*b636d99dSDavid van Moolenbroekdnl output by default. IBM's XLC, however, supports -M but sends 261*b636d99dSDavid van Moolenbroekdnl the output to {sourcefile-basename}.u, and AIX has no /dev/stdout 262*b636d99dSDavid van Moolenbroekdnl to work around that, so we don't bother with XLC. 263*b636d99dSDavid van Moolenbroekdnl 264*b636d99dSDavid van MoolenbroekAC_DEFUN(AC_LBL_CHECK_DEPENDENCY_GENERATION_OPT, 265*b636d99dSDavid van Moolenbroek [ 266*b636d99dSDavid van Moolenbroek AC_MSG_CHECKING([whether the compiler supports generating dependencies]) 267*b636d99dSDavid van Moolenbroek if test "$GCC" = yes ; then 268*b636d99dSDavid van Moolenbroek # 269*b636d99dSDavid van Moolenbroek # GCC, or a compiler deemed to be GCC by AC_PROG_CC (even 270*b636d99dSDavid van Moolenbroek # though it's not); we assume that, in this case, the flag 271*b636d99dSDavid van Moolenbroek # would be -M. 272*b636d99dSDavid van Moolenbroek # 273*b636d99dSDavid van Moolenbroek ac_lbl_dependency_flag="-M" 274*b636d99dSDavid van Moolenbroek else 275*b636d99dSDavid van Moolenbroek # 276*b636d99dSDavid van Moolenbroek # Not GCC or a compiler deemed to be GCC; what platform is 277*b636d99dSDavid van Moolenbroek # this? (We're assuming that if the compiler isn't GCC 278*b636d99dSDavid van Moolenbroek # it's the compiler from the vendor of the OS; that won't 279*b636d99dSDavid van Moolenbroek # necessarily be true for x86 platforms, where it might be 280*b636d99dSDavid van Moolenbroek # the Intel C compiler.) 281*b636d99dSDavid van Moolenbroek # 282*b636d99dSDavid van Moolenbroek case "$host_os" in 283*b636d99dSDavid van Moolenbroek 284*b636d99dSDavid van Moolenbroek irix*|osf*|darwin*) 285*b636d99dSDavid van Moolenbroek # 286*b636d99dSDavid van Moolenbroek # MIPS C for IRIX, DEC C, and clang all use -M. 287*b636d99dSDavid van Moolenbroek # 288*b636d99dSDavid van Moolenbroek ac_lbl_dependency_flag="-M" 289*b636d99dSDavid van Moolenbroek ;; 290*b636d99dSDavid van Moolenbroek 291*b636d99dSDavid van Moolenbroek solaris*) 292*b636d99dSDavid van Moolenbroek # 293*b636d99dSDavid van Moolenbroek # Sun C uses -xM. 294*b636d99dSDavid van Moolenbroek # 295*b636d99dSDavid van Moolenbroek ac_lbl_dependency_flag="-xM" 296*b636d99dSDavid van Moolenbroek ;; 297*b636d99dSDavid van Moolenbroek 298*b636d99dSDavid van Moolenbroek hpux*) 299*b636d99dSDavid van Moolenbroek # 300*b636d99dSDavid van Moolenbroek # HP's older C compilers don't support this. 301*b636d99dSDavid van Moolenbroek # HP's newer C compilers support this with 302*b636d99dSDavid van Moolenbroek # either +M or +Make; the older compilers 303*b636d99dSDavid van Moolenbroek # interpret +M as something completely 304*b636d99dSDavid van Moolenbroek # different, so we use +Make so we don't 305*b636d99dSDavid van Moolenbroek # think it works with the older compilers. 306*b636d99dSDavid van Moolenbroek # 307*b636d99dSDavid van Moolenbroek ac_lbl_dependency_flag="+Make" 308*b636d99dSDavid van Moolenbroek ;; 309*b636d99dSDavid van Moolenbroek 310*b636d99dSDavid van Moolenbroek *) 311*b636d99dSDavid van Moolenbroek # 312*b636d99dSDavid van Moolenbroek # Not one of the above; assume no support for 313*b636d99dSDavid van Moolenbroek # generating dependencies. 314*b636d99dSDavid van Moolenbroek # 315*b636d99dSDavid van Moolenbroek ac_lbl_dependency_flag="" 316*b636d99dSDavid van Moolenbroek ;; 317*b636d99dSDavid van Moolenbroek esac 318*b636d99dSDavid van Moolenbroek fi 319*b636d99dSDavid van Moolenbroek 320*b636d99dSDavid van Moolenbroek # 321*b636d99dSDavid van Moolenbroek # Is ac_lbl_dependency_flag defined and, if so, does the compiler 322*b636d99dSDavid van Moolenbroek # complain about it? 323*b636d99dSDavid van Moolenbroek # 324*b636d99dSDavid van Moolenbroek # Note: clang doesn't seem to exit with an error status when handed 325*b636d99dSDavid van Moolenbroek # an unknown non-warning error, even if you pass it 326*b636d99dSDavid van Moolenbroek # -Werror=unknown-warning-option. However, it always supports 327*b636d99dSDavid van Moolenbroek # -M, so the fact that this test always succeeds with clang 328*b636d99dSDavid van Moolenbroek # isn't an issue. 329*b636d99dSDavid van Moolenbroek # 330*b636d99dSDavid van Moolenbroek if test ! -z "$ac_lbl_dependency_flag"; then 331*b636d99dSDavid van Moolenbroek AC_LANG_CONFTEST( 332*b636d99dSDavid van Moolenbroek [AC_LANG_SOURCE([[int main(void) { return 0; }]])]) 333*b636d99dSDavid van Moolenbroek echo "$CC" $ac_lbl_dependency_flag conftest.c >&5 334*b636d99dSDavid van Moolenbroek if "$CC" $ac_lbl_dependency_flag conftest.c >/dev/null 2>&1; then 335*b636d99dSDavid van Moolenbroek AC_MSG_RESULT([yes, with $ac_lbl_dependency_flag]) 336*b636d99dSDavid van Moolenbroek DEPENDENCY_CFLAG="$ac_lbl_dependency_flag" 337*b636d99dSDavid van Moolenbroek MKDEP='${srcdir}/mkdep' 338*b636d99dSDavid van Moolenbroek else 339*b636d99dSDavid van Moolenbroek AC_MSG_RESULT([no]) 340*b636d99dSDavid van Moolenbroek # 341*b636d99dSDavid van Moolenbroek # We can't run mkdep, so have "make depend" do 342*b636d99dSDavid van Moolenbroek # nothing. 343*b636d99dSDavid van Moolenbroek # 344*b636d99dSDavid van Moolenbroek MKDEP=: 345*b636d99dSDavid van Moolenbroek fi 346*b636d99dSDavid van Moolenbroek rm -rf conftest* 347*b636d99dSDavid van Moolenbroek else 348*b636d99dSDavid van Moolenbroek AC_MSG_RESULT([no]) 349*b636d99dSDavid van Moolenbroek # 350*b636d99dSDavid van Moolenbroek # We can't run mkdep, so have "make depend" do 351*b636d99dSDavid van Moolenbroek # nothing. 352*b636d99dSDavid van Moolenbroek # 353*b636d99dSDavid van Moolenbroek MKDEP=: 354*b636d99dSDavid van Moolenbroek fi 355*b636d99dSDavid van Moolenbroek AC_SUBST(DEPENDENCY_CFLAG) 356*b636d99dSDavid van Moolenbroek AC_SUBST(MKDEP) 357*b636d99dSDavid van Moolenbroek ]) 358*b636d99dSDavid van Moolenbroek 359*b636d99dSDavid van Moolenbroek# 360*b636d99dSDavid van Moolenbroek# Try compiling a sample of the type of code that appears in 361*b636d99dSDavid van Moolenbroek# gencode.c with "inline", "__inline__", and "__inline". 362*b636d99dSDavid van Moolenbroek# 363*b636d99dSDavid van Moolenbroek# Autoconf's AC_C_INLINE, at least in autoconf 2.13, isn't good enough, 364*b636d99dSDavid van Moolenbroek# as it just tests whether a function returning "int" can be inlined; 365*b636d99dSDavid van Moolenbroek# at least some versions of HP's C compiler can inline that, but can't 366*b636d99dSDavid van Moolenbroek# inline a function that returns a struct pointer. 367*b636d99dSDavid van Moolenbroek# 368*b636d99dSDavid van Moolenbroek# Make sure we use the V_CCOPT flags, because some of those might 369*b636d99dSDavid van Moolenbroek# disable inlining. 370*b636d99dSDavid van Moolenbroek# 371*b636d99dSDavid van MoolenbroekAC_DEFUN(AC_LBL_C_INLINE, 372*b636d99dSDavid van Moolenbroek [AC_MSG_CHECKING(for inline) 373*b636d99dSDavid van Moolenbroek save_CFLAGS="$CFLAGS" 374*b636d99dSDavid van Moolenbroek CFLAGS="$V_CCOPT" 375*b636d99dSDavid van Moolenbroek AC_CACHE_VAL(ac_cv_lbl_inline, [ 376*b636d99dSDavid van Moolenbroek ac_cv_lbl_inline="" 377*b636d99dSDavid van Moolenbroek ac_lbl_cc_inline=no 378*b636d99dSDavid van Moolenbroek for ac_lbl_inline in inline __inline__ __inline 379*b636d99dSDavid van Moolenbroek do 380*b636d99dSDavid van Moolenbroek AC_TRY_COMPILE( 381*b636d99dSDavid van Moolenbroek [#define inline $ac_lbl_inline 382*b636d99dSDavid van Moolenbroek static inline struct iltest *foo(void); 383*b636d99dSDavid van Moolenbroek struct iltest { 384*b636d99dSDavid van Moolenbroek int iltest1; 385*b636d99dSDavid van Moolenbroek int iltest2; 386*b636d99dSDavid van Moolenbroek }; 387*b636d99dSDavid van Moolenbroek 388*b636d99dSDavid van Moolenbroek static inline struct iltest * 389*b636d99dSDavid van Moolenbroek foo() 390*b636d99dSDavid van Moolenbroek { 391*b636d99dSDavid van Moolenbroek static struct iltest xxx; 392*b636d99dSDavid van Moolenbroek 393*b636d99dSDavid van Moolenbroek return &xxx; 394*b636d99dSDavid van Moolenbroek }],,ac_lbl_cc_inline=yes,) 395*b636d99dSDavid van Moolenbroek if test "$ac_lbl_cc_inline" = yes ; then 396*b636d99dSDavid van Moolenbroek break; 397*b636d99dSDavid van Moolenbroek fi 398*b636d99dSDavid van Moolenbroek done 399*b636d99dSDavid van Moolenbroek if test "$ac_lbl_cc_inline" = yes ; then 400*b636d99dSDavid van Moolenbroek ac_cv_lbl_inline=$ac_lbl_inline 401*b636d99dSDavid van Moolenbroek fi]) 402*b636d99dSDavid van Moolenbroek CFLAGS="$save_CFLAGS" 403*b636d99dSDavid van Moolenbroek if test ! -z "$ac_cv_lbl_inline" ; then 404*b636d99dSDavid van Moolenbroek AC_MSG_RESULT($ac_cv_lbl_inline) 405*b636d99dSDavid van Moolenbroek else 406*b636d99dSDavid van Moolenbroek AC_MSG_RESULT(no) 407*b636d99dSDavid van Moolenbroek fi 408*b636d99dSDavid van Moolenbroek AC_DEFINE_UNQUOTED(inline, $ac_cv_lbl_inline, [Define as token for inline if inlining supported])]) 409*b636d99dSDavid van Moolenbroek 410*b636d99dSDavid van Moolenbroekdnl 411*b636d99dSDavid van Moolenbroekdnl Use pfopen.c if available and pfopen() not in standard libraries 412*b636d99dSDavid van Moolenbroekdnl Require libpcap 413*b636d99dSDavid van Moolenbroekdnl Look for libpcap in .. 414*b636d99dSDavid van Moolenbroekdnl Use the installed libpcap if there is no local version 415*b636d99dSDavid van Moolenbroekdnl 416*b636d99dSDavid van Moolenbroekdnl usage: 417*b636d99dSDavid van Moolenbroekdnl 418*b636d99dSDavid van Moolenbroekdnl AC_LBL_LIBPCAP(pcapdep, incls) 419*b636d99dSDavid van Moolenbroekdnl 420*b636d99dSDavid van Moolenbroekdnl results: 421*b636d99dSDavid van Moolenbroekdnl 422*b636d99dSDavid van Moolenbroekdnl $1 (pcapdep set) 423*b636d99dSDavid van Moolenbroekdnl $2 (incls appended) 424*b636d99dSDavid van Moolenbroekdnl LIBS 425*b636d99dSDavid van Moolenbroekdnl LBL_LIBS 426*b636d99dSDavid van Moolenbroekdnl 427*b636d99dSDavid van MoolenbroekAC_DEFUN(AC_LBL_LIBPCAP, 428*b636d99dSDavid van Moolenbroek [AC_REQUIRE([AC_LBL_LIBRARY_NET]) 429*b636d99dSDavid van Moolenbroek dnl 430*b636d99dSDavid van Moolenbroek dnl save a copy before locating libpcap.a 431*b636d99dSDavid van Moolenbroek dnl 432*b636d99dSDavid van Moolenbroek LBL_LIBS="$LIBS" 433*b636d99dSDavid van Moolenbroek pfopen=/usr/examples/packetfilter/pfopen.c 434*b636d99dSDavid van Moolenbroek if test -f $pfopen ; then 435*b636d99dSDavid van Moolenbroek AC_CHECK_FUNCS(pfopen) 436*b636d99dSDavid van Moolenbroek if test $ac_cv_func_pfopen = "no" ; then 437*b636d99dSDavid van Moolenbroek AC_MSG_RESULT(Using $pfopen) 438*b636d99dSDavid van Moolenbroek LIBS="$LIBS $pfopen" 439*b636d99dSDavid van Moolenbroek fi 440*b636d99dSDavid van Moolenbroek fi 441*b636d99dSDavid van Moolenbroek libpcap=FAIL 442*b636d99dSDavid van Moolenbroek AC_MSG_CHECKING(for local pcap library) 443*b636d99dSDavid van Moolenbroek AC_ARG_WITH([system-libpcap], 444*b636d99dSDavid van Moolenbroek [AS_HELP_STRING([--with-system-libpcap], [don't use local pcap library])]) 445*b636d99dSDavid van Moolenbroek if test "x$with_system_libpcap" != xyes ; then 446*b636d99dSDavid van Moolenbroek lastdir=FAIL 447*b636d99dSDavid van Moolenbroek places=`ls $srcdir/.. | sed -e 's,/$,,' -e "s,^,$srcdir/../," | \ 448*b636d99dSDavid van Moolenbroek egrep '/libpcap-[[0-9]]+\.[[0-9]]+(\.[[0-9]]*)?([[ab]][[0-9]]*|-PRE-GIT)?$'` 449*b636d99dSDavid van Moolenbroek places2=`ls .. | sed -e 's,/$,,' -e "s,^,../," | \ 450*b636d99dSDavid van Moolenbroek egrep '/libpcap-[[0-9]]+\.[[0-9]]+(\.[[0-9]]*)?([[ab]][[0-9]]*|-PRE-GIT)?$'` 451*b636d99dSDavid van Moolenbroek for dir in $places $srcdir/../libpcap ../libpcap $srcdir/libpcap $places2 ; do 452*b636d99dSDavid van Moolenbroek basedir=`echo $dir | sed -e 's/[[ab]][[0-9]]*$//' | \ 453*b636d99dSDavid van Moolenbroek sed -e 's/-PRE-GIT$//' ` 454*b636d99dSDavid van Moolenbroek if test $lastdir = $basedir ; then 455*b636d99dSDavid van Moolenbroek dnl skip alphas when an actual release is present 456*b636d99dSDavid van Moolenbroek continue; 457*b636d99dSDavid van Moolenbroek fi 458*b636d99dSDavid van Moolenbroek lastdir=$dir 459*b636d99dSDavid van Moolenbroek if test -r $dir/libpcap.a ; then 460*b636d99dSDavid van Moolenbroek libpcap=$dir/libpcap.a 461*b636d99dSDavid van Moolenbroek d=$dir 462*b636d99dSDavid van Moolenbroek dnl continue and select the last one that exists 463*b636d99dSDavid van Moolenbroek fi 464*b636d99dSDavid van Moolenbroek done 465*b636d99dSDavid van Moolenbroek fi 466*b636d99dSDavid van Moolenbroek if test $libpcap = FAIL ; then 467*b636d99dSDavid van Moolenbroek AC_MSG_RESULT(not found) 468*b636d99dSDavid van Moolenbroek 469*b636d99dSDavid van Moolenbroek # 470*b636d99dSDavid van Moolenbroek # Look for pcap-config. 471*b636d99dSDavid van Moolenbroek # 472*b636d99dSDavid van Moolenbroek AC_PATH_TOOL(PCAP_CONFIG, pcap-config) 473*b636d99dSDavid van Moolenbroek if test -n "$PCAP_CONFIG" ; then 474*b636d99dSDavid van Moolenbroek # 475*b636d99dSDavid van Moolenbroek # Found - use it to get the include flags for 476*b636d99dSDavid van Moolenbroek # libpcap and the flags to link with libpcap. 477*b636d99dSDavid van Moolenbroek # 478*b636d99dSDavid van Moolenbroek # Please read section 11.6 "Shell Substitutions" 479*b636d99dSDavid van Moolenbroek # in the autoconf manual before doing anything 480*b636d99dSDavid van Moolenbroek # to this that involves quoting. Especially note 481*b636d99dSDavid van Moolenbroek # the statement "There is just no portable way to use 482*b636d99dSDavid van Moolenbroek # double-quoted strings inside double-quoted back-quoted 483*b636d99dSDavid van Moolenbroek # expressions (pfew!)." 484*b636d99dSDavid van Moolenbroek # 485*b636d99dSDavid van Moolenbroek cflags=`"$PCAP_CONFIG" --cflags` 486*b636d99dSDavid van Moolenbroek $2="$cflags $$2" 487*b636d99dSDavid van Moolenbroek libpcap=`"$PCAP_CONFIG" --libs` 488*b636d99dSDavid van Moolenbroek else 489*b636d99dSDavid van Moolenbroek # 490*b636d99dSDavid van Moolenbroek # Not found; look for pcap. 491*b636d99dSDavid van Moolenbroek # 492*b636d99dSDavid van Moolenbroek AC_CHECK_LIB(pcap, main, libpcap="-lpcap") 493*b636d99dSDavid van Moolenbroek if test $libpcap = FAIL ; then 494*b636d99dSDavid van Moolenbroek AC_MSG_ERROR(see the INSTALL doc for more info) 495*b636d99dSDavid van Moolenbroek fi 496*b636d99dSDavid van Moolenbroek dnl 497*b636d99dSDavid van Moolenbroek dnl Some versions of Red Hat Linux put "pcap.h" in 498*b636d99dSDavid van Moolenbroek dnl "/usr/include/pcap"; had the LBL folks done so, 499*b636d99dSDavid van Moolenbroek dnl that would have been a good idea, but for 500*b636d99dSDavid van Moolenbroek dnl the Red Hat folks to do so just breaks source 501*b636d99dSDavid van Moolenbroek dnl compatibility with other systems. 502*b636d99dSDavid van Moolenbroek dnl 503*b636d99dSDavid van Moolenbroek dnl We work around this by assuming that, as we didn't 504*b636d99dSDavid van Moolenbroek dnl find a local libpcap, libpcap is in /usr/lib or 505*b636d99dSDavid van Moolenbroek dnl /usr/local/lib and that the corresponding header 506*b636d99dSDavid van Moolenbroek dnl file is under one of those directories; if we don't 507*b636d99dSDavid van Moolenbroek dnl find it in either of those directories, we check to 508*b636d99dSDavid van Moolenbroek dnl see if it's in a "pcap" subdirectory of them and, 509*b636d99dSDavid van Moolenbroek dnl if so, add that subdirectory to the "-I" list. 510*b636d99dSDavid van Moolenbroek dnl 511*b636d99dSDavid van Moolenbroek dnl (We now also put pcap.h in /usr/include/pcap, but we 512*b636d99dSDavid van Moolenbroek dnl leave behind a /usr/include/pcap.h that includes it, 513*b636d99dSDavid van Moolenbroek dnl so you can still just include <pcap.h>.) 514*b636d99dSDavid van Moolenbroek dnl 515*b636d99dSDavid van Moolenbroek AC_MSG_CHECKING(for extraneous pcap header directories) 516*b636d99dSDavid van Moolenbroek if test \( ! -r /usr/local/include/pcap.h \) -a \ 517*b636d99dSDavid van Moolenbroek \( ! -r /usr/include/pcap.h \); then 518*b636d99dSDavid van Moolenbroek if test -r /usr/local/include/pcap/pcap.h; then 519*b636d99dSDavid van Moolenbroek d="/usr/local/include/pcap" 520*b636d99dSDavid van Moolenbroek elif test -r /usr/include/pcap/pcap.h; then 521*b636d99dSDavid van Moolenbroek d="/usr/include/pcap" 522*b636d99dSDavid van Moolenbroek fi 523*b636d99dSDavid van Moolenbroek fi 524*b636d99dSDavid van Moolenbroek if test -z "$d" ; then 525*b636d99dSDavid van Moolenbroek AC_MSG_RESULT(not found) 526*b636d99dSDavid van Moolenbroek else 527*b636d99dSDavid van Moolenbroek $2="-I$d $$2" 528*b636d99dSDavid van Moolenbroek AC_MSG_RESULT(found -- -I$d added) 529*b636d99dSDavid van Moolenbroek fi 530*b636d99dSDavid van Moolenbroek fi 531*b636d99dSDavid van Moolenbroek else 532*b636d99dSDavid van Moolenbroek $1=$libpcap 533*b636d99dSDavid van Moolenbroek places=`ls $srcdir/.. | sed -e 's,/$,,' -e "s,^,$srcdir/../," | \ 534*b636d99dSDavid van Moolenbroek egrep '/libpcap-[[0-9]]*.[[0-9]]*(.[[0-9]]*)?([[ab]][[0-9]]*)?$'` 535*b636d99dSDavid van Moolenbroek places2=`ls .. | sed -e 's,/$,,' -e "s,^,../," | \ 536*b636d99dSDavid van Moolenbroek egrep '/libpcap-[[0-9]]*.[[0-9]]*(.[[0-9]]*)?([[ab]][[0-9]]*)?$'` 537*b636d99dSDavid van Moolenbroek pcapH=FAIL 538*b636d99dSDavid van Moolenbroek if test -r $d/pcap.h; then 539*b636d99dSDavid van Moolenbroek pcapH=$d 540*b636d99dSDavid van Moolenbroek else 541*b636d99dSDavid van Moolenbroek for dir in $places $srcdir/../libpcap ../libpcap $srcdir/libpcap $places2 ; do 542*b636d99dSDavid van Moolenbroek if test -r $dir/pcap.h ; then 543*b636d99dSDavid van Moolenbroek pcapH=$dir 544*b636d99dSDavid van Moolenbroek fi 545*b636d99dSDavid van Moolenbroek done 546*b636d99dSDavid van Moolenbroek fi 547*b636d99dSDavid van Moolenbroek 548*b636d99dSDavid van Moolenbroek if test $pcapH = FAIL ; then 549*b636d99dSDavid van Moolenbroek AC_MSG_ERROR(cannot find pcap.h: see INSTALL) 550*b636d99dSDavid van Moolenbroek fi 551*b636d99dSDavid van Moolenbroek $2="-I$pcapH $$2" 552*b636d99dSDavid van Moolenbroek AC_MSG_RESULT($libpcap) 553*b636d99dSDavid van Moolenbroek AC_PATH_PROG(PCAP_CONFIG, pcap-config,, $d) 554*b636d99dSDavid van Moolenbroek if test -n "$PCAP_CONFIG"; then 555*b636d99dSDavid van Moolenbroek # 556*b636d99dSDavid van Moolenbroek # The libpcap directory has a pcap-config script. 557*b636d99dSDavid van Moolenbroek # Use it to get any additioal libraries needed 558*b636d99dSDavid van Moolenbroek # to link with the libpcap archive library in 559*b636d99dSDavid van Moolenbroek # that directory. 560*b636d99dSDavid van Moolenbroek # 561*b636d99dSDavid van Moolenbroek # Please read section 11.6 "Shell Substitutions" 562*b636d99dSDavid van Moolenbroek # in the autoconf manual before doing anything 563*b636d99dSDavid van Moolenbroek # to this that involves quoting. Especially note 564*b636d99dSDavid van Moolenbroek # the statement "There is just no portable way to use 565*b636d99dSDavid van Moolenbroek # double-quoted strings inside double-quoted back-quoted 566*b636d99dSDavid van Moolenbroek # expressions (pfew!)." 567*b636d99dSDavid van Moolenbroek # 568*b636d99dSDavid van Moolenbroek additional_libs=`"$PCAP_CONFIG" --additional-libs --static` 569*b636d99dSDavid van Moolenbroek libpcap="$libpcap $additional_libs" 570*b636d99dSDavid van Moolenbroek fi 571*b636d99dSDavid van Moolenbroek fi 572*b636d99dSDavid van Moolenbroek LIBS="$libpcap $LIBS" 573*b636d99dSDavid van Moolenbroek if ! test -n "$PCAP_CONFIG" ; then 574*b636d99dSDavid van Moolenbroek # 575*b636d99dSDavid van Moolenbroek # We don't have pcap-config; find out any additional link flags 576*b636d99dSDavid van Moolenbroek # we need. (If we have pcap-config, we assume it tells us what 577*b636d99dSDavid van Moolenbroek # we need.) 578*b636d99dSDavid van Moolenbroek # 579*b636d99dSDavid van Moolenbroek case "$host_os" in 580*b636d99dSDavid van Moolenbroek 581*b636d99dSDavid van Moolenbroek aix*) 582*b636d99dSDavid van Moolenbroek # 583*b636d99dSDavid van Moolenbroek # If libpcap is DLPI-based, we have to use /lib/pse.exp if 584*b636d99dSDavid van Moolenbroek # present, as we use the STREAMS routines. 585*b636d99dSDavid van Moolenbroek # 586*b636d99dSDavid van Moolenbroek # (XXX - true only if we're linking with a static libpcap?) 587*b636d99dSDavid van Moolenbroek # 588*b636d99dSDavid van Moolenbroek pseexe="/lib/pse.exp" 589*b636d99dSDavid van Moolenbroek AC_MSG_CHECKING(for $pseexe) 590*b636d99dSDavid van Moolenbroek if test -f $pseexe ; then 591*b636d99dSDavid van Moolenbroek AC_MSG_RESULT(yes) 592*b636d99dSDavid van Moolenbroek LIBS="$LIBS -I:$pseexe" 593*b636d99dSDavid van Moolenbroek fi 594*b636d99dSDavid van Moolenbroek 595*b636d99dSDavid van Moolenbroek # 596*b636d99dSDavid van Moolenbroek # If libpcap is BPF-based, we need "-lodm" and "-lcfg", as 597*b636d99dSDavid van Moolenbroek # we use them to load the BPF module. 598*b636d99dSDavid van Moolenbroek # 599*b636d99dSDavid van Moolenbroek # (XXX - true only if we're linking with a static libpcap?) 600*b636d99dSDavid van Moolenbroek # 601*b636d99dSDavid van Moolenbroek LIBS="$LIBS -lodm -lcfg" 602*b636d99dSDavid van Moolenbroek ;; 603*b636d99dSDavid van Moolenbroek esac 604*b636d99dSDavid van Moolenbroek fi 605*b636d99dSDavid van Moolenbroek 606*b636d99dSDavid van Moolenbroek dnl 607*b636d99dSDavid van Moolenbroek dnl Check for "pcap_loop()", to make sure we found a working 608*b636d99dSDavid van Moolenbroek dnl libpcap and have all the right other libraries with which 609*b636d99dSDavid van Moolenbroek dnl to link. (Otherwise, the checks below will fail, not 610*b636d99dSDavid van Moolenbroek dnl because the routines are missing from the library, but 611*b636d99dSDavid van Moolenbroek dnl because we aren't linking properly with libpcap, and 612*b636d99dSDavid van Moolenbroek dnl that will cause confusing errors at build time.) 613*b636d99dSDavid van Moolenbroek dnl 614*b636d99dSDavid van Moolenbroek AC_CHECK_FUNC(pcap_loop,, 615*b636d99dSDavid van Moolenbroek [ 616*b636d99dSDavid van Moolenbroek AC_MSG_ERROR( 617*b636d99dSDavid van Moolenbroek[Report this to tcpdump-workers@lists.tcpdump.org, and include the 618*b636d99dSDavid van Moolenbroekconfig.log file in your report. If you have downloaded libpcap from 619*b636d99dSDavid van Moolenbroektcpdump.org, and built it yourself, please also include the config.log 620*b636d99dSDavid van Moolenbroekfile from the libpcap source directory, the Makefile from the libpcap 621*b636d99dSDavid van Moolenbroeksource directory, and the output of the make process for libpcap, as 622*b636d99dSDavid van Moolenbroekthis could be a problem with the libpcap that was built, and we will 623*b636d99dSDavid van Moolenbroeknot be able to determine why this is happening, and thus will not be 624*b636d99dSDavid van Moolenbroekable to fix it, without that information, as we have not been able to 625*b636d99dSDavid van Moolenbroekreproduce this problem ourselves.]) 626*b636d99dSDavid van Moolenbroek ]) 627*b636d99dSDavid van Moolenbroek]) 628*b636d99dSDavid van Moolenbroek 629*b636d99dSDavid van Moolenbroekdnl 630*b636d99dSDavid van Moolenbroekdnl Define RETSIGTYPE and RETSIGVAL 631*b636d99dSDavid van Moolenbroekdnl 632*b636d99dSDavid van Moolenbroekdnl usage: 633*b636d99dSDavid van Moolenbroekdnl 634*b636d99dSDavid van Moolenbroekdnl AC_LBL_TYPE_SIGNAL 635*b636d99dSDavid van Moolenbroekdnl 636*b636d99dSDavid van Moolenbroekdnl results: 637*b636d99dSDavid van Moolenbroekdnl 638*b636d99dSDavid van Moolenbroekdnl RETSIGTYPE (defined) 639*b636d99dSDavid van Moolenbroekdnl RETSIGVAL (defined) 640*b636d99dSDavid van Moolenbroekdnl 641*b636d99dSDavid van MoolenbroekAC_DEFUN(AC_LBL_TYPE_SIGNAL, 642*b636d99dSDavid van Moolenbroek [AC_BEFORE([$0], [AC_LBL_LIBPCAP]) 643*b636d99dSDavid van Moolenbroek AC_TYPE_SIGNAL 644*b636d99dSDavid van Moolenbroek if test "$ac_cv_type_signal" = void ; then 645*b636d99dSDavid van Moolenbroek AC_DEFINE(RETSIGVAL,[],[return value of signal handlers]) 646*b636d99dSDavid van Moolenbroek else 647*b636d99dSDavid van Moolenbroek AC_DEFINE(RETSIGVAL,(0),[return value of signal handlers]) 648*b636d99dSDavid van Moolenbroek fi 649*b636d99dSDavid van Moolenbroek case "$host_os" in 650*b636d99dSDavid van Moolenbroek 651*b636d99dSDavid van Moolenbroek irix*) 652*b636d99dSDavid van Moolenbroek AC_DEFINE(_BSD_SIGNALS,1,[get BSD semantics on Irix]) 653*b636d99dSDavid van Moolenbroek ;; 654*b636d99dSDavid van Moolenbroek 655*b636d99dSDavid van Moolenbroek *) 656*b636d99dSDavid van Moolenbroek dnl prefer sigaction() to sigset() 657*b636d99dSDavid van Moolenbroek AC_CHECK_FUNCS(sigaction) 658*b636d99dSDavid van Moolenbroek if test $ac_cv_func_sigaction = no ; then 659*b636d99dSDavid van Moolenbroek AC_CHECK_FUNCS(sigset) 660*b636d99dSDavid van Moolenbroek fi 661*b636d99dSDavid van Moolenbroek ;; 662*b636d99dSDavid van Moolenbroek esac]) 663*b636d99dSDavid van Moolenbroek 664*b636d99dSDavid van Moolenbroekdnl 665*b636d99dSDavid van Moolenbroekdnl If using gcc, make sure we have ANSI ioctl definitions 666*b636d99dSDavid van Moolenbroekdnl 667*b636d99dSDavid van Moolenbroekdnl usage: 668*b636d99dSDavid van Moolenbroekdnl 669*b636d99dSDavid van Moolenbroekdnl AC_LBL_FIXINCLUDES 670*b636d99dSDavid van Moolenbroekdnl 671*b636d99dSDavid van MoolenbroekAC_DEFUN(AC_LBL_FIXINCLUDES, 672*b636d99dSDavid van Moolenbroek [if test "$GCC" = yes ; then 673*b636d99dSDavid van Moolenbroek AC_MSG_CHECKING(for ANSI ioctl definitions) 674*b636d99dSDavid van Moolenbroek AC_CACHE_VAL(ac_cv_lbl_gcc_fixincludes, 675*b636d99dSDavid van Moolenbroek AC_TRY_COMPILE( 676*b636d99dSDavid van Moolenbroek [/* 677*b636d99dSDavid van Moolenbroek * This generates a "duplicate case value" when fixincludes 678*b636d99dSDavid van Moolenbroek * has not be run. 679*b636d99dSDavid van Moolenbroek */ 680*b636d99dSDavid van Moolenbroek# include <sys/types.h> 681*b636d99dSDavid van Moolenbroek# include <sys/time.h> 682*b636d99dSDavid van Moolenbroek# include <sys/ioctl.h> 683*b636d99dSDavid van Moolenbroek# ifdef HAVE_SYS_IOCCOM_H 684*b636d99dSDavid van Moolenbroek# include <sys/ioccom.h> 685*b636d99dSDavid van Moolenbroek# endif], 686*b636d99dSDavid van Moolenbroek [switch (0) { 687*b636d99dSDavid van Moolenbroek case _IO('A', 1):; 688*b636d99dSDavid van Moolenbroek case _IO('B', 1):; 689*b636d99dSDavid van Moolenbroek }], 690*b636d99dSDavid van Moolenbroek ac_cv_lbl_gcc_fixincludes=yes, 691*b636d99dSDavid van Moolenbroek ac_cv_lbl_gcc_fixincludes=no)) 692*b636d99dSDavid van Moolenbroek AC_MSG_RESULT($ac_cv_lbl_gcc_fixincludes) 693*b636d99dSDavid van Moolenbroek if test $ac_cv_lbl_gcc_fixincludes = no ; then 694*b636d99dSDavid van Moolenbroek # Don't cache failure 695*b636d99dSDavid van Moolenbroek unset ac_cv_lbl_gcc_fixincludes 696*b636d99dSDavid van Moolenbroek AC_MSG_ERROR(see the INSTALL for more info) 697*b636d99dSDavid van Moolenbroek fi 698*b636d99dSDavid van Moolenbroek fi]) 699*b636d99dSDavid van Moolenbroek 700*b636d99dSDavid van Moolenbroekdnl 701*b636d99dSDavid van Moolenbroekdnl Checks to see if union wait is used with WEXITSTATUS() 702*b636d99dSDavid van Moolenbroekdnl 703*b636d99dSDavid van Moolenbroekdnl usage: 704*b636d99dSDavid van Moolenbroekdnl 705*b636d99dSDavid van Moolenbroekdnl AC_LBL_UNION_WAIT 706*b636d99dSDavid van Moolenbroekdnl 707*b636d99dSDavid van Moolenbroekdnl results: 708*b636d99dSDavid van Moolenbroekdnl 709*b636d99dSDavid van Moolenbroekdnl DECLWAITSTATUS (defined) 710*b636d99dSDavid van Moolenbroekdnl 711*b636d99dSDavid van MoolenbroekAC_DEFUN(AC_LBL_UNION_WAIT, 712*b636d99dSDavid van Moolenbroek [AC_MSG_CHECKING(if union wait is used) 713*b636d99dSDavid van Moolenbroek AC_CACHE_VAL(ac_cv_lbl_union_wait, 714*b636d99dSDavid van Moolenbroek AC_TRY_COMPILE([ 715*b636d99dSDavid van Moolenbroek# include <sys/types.h> 716*b636d99dSDavid van Moolenbroek# include <sys/wait.h>], 717*b636d99dSDavid van Moolenbroek [int status; 718*b636d99dSDavid van Moolenbroek u_int i = WEXITSTATUS(status); 719*b636d99dSDavid van Moolenbroek u_int j = waitpid(0, &status, 0);], 720*b636d99dSDavid van Moolenbroek ac_cv_lbl_union_wait=no, 721*b636d99dSDavid van Moolenbroek ac_cv_lbl_union_wait=yes)) 722*b636d99dSDavid van Moolenbroek AC_MSG_RESULT($ac_cv_lbl_union_wait) 723*b636d99dSDavid van Moolenbroek if test $ac_cv_lbl_union_wait = yes ; then 724*b636d99dSDavid van Moolenbroek AC_DEFINE(DECLWAITSTATUS,union wait,[type for wait]) 725*b636d99dSDavid van Moolenbroek else 726*b636d99dSDavid van Moolenbroek AC_DEFINE(DECLWAITSTATUS,int,[type for wait]) 727*b636d99dSDavid van Moolenbroek fi]) 728*b636d99dSDavid van Moolenbroek 729*b636d99dSDavid van Moolenbroekdnl 730*b636d99dSDavid van Moolenbroekdnl Checks to see if the sockaddr struct has the 4.4 BSD sa_len member 731*b636d99dSDavid van Moolenbroekdnl 732*b636d99dSDavid van Moolenbroekdnl usage: 733*b636d99dSDavid van Moolenbroekdnl 734*b636d99dSDavid van Moolenbroekdnl AC_LBL_SOCKADDR_SA_LEN 735*b636d99dSDavid van Moolenbroekdnl 736*b636d99dSDavid van Moolenbroekdnl results: 737*b636d99dSDavid van Moolenbroekdnl 738*b636d99dSDavid van Moolenbroekdnl HAVE_SOCKADDR_SA_LEN (defined) 739*b636d99dSDavid van Moolenbroekdnl 740*b636d99dSDavid van MoolenbroekAC_DEFUN(AC_LBL_SOCKADDR_SA_LEN, 741*b636d99dSDavid van Moolenbroek [AC_MSG_CHECKING(if sockaddr struct has the sa_len member) 742*b636d99dSDavid van Moolenbroek AC_CACHE_VAL(ac_cv_lbl_sockaddr_has_sa_len, 743*b636d99dSDavid van Moolenbroek AC_TRY_COMPILE([ 744*b636d99dSDavid van Moolenbroek# include <sys/types.h> 745*b636d99dSDavid van Moolenbroek# include <sys/socket.h>], 746*b636d99dSDavid van Moolenbroek [u_int i = sizeof(((struct sockaddr *)0)->sa_len)], 747*b636d99dSDavid van Moolenbroek ac_cv_lbl_sockaddr_has_sa_len=yes, 748*b636d99dSDavid van Moolenbroek ac_cv_lbl_sockaddr_has_sa_len=no)) 749*b636d99dSDavid van Moolenbroek AC_MSG_RESULT($ac_cv_lbl_sockaddr_has_sa_len) 750*b636d99dSDavid van Moolenbroek if test $ac_cv_lbl_sockaddr_has_sa_len = yes ; then 751*b636d99dSDavid van Moolenbroek AC_DEFINE(HAVE_SOCKADDR_SA_LEN,1,[if struct sockaddr has the sa_len member]) 752*b636d99dSDavid van Moolenbroek fi]) 753*b636d99dSDavid van Moolenbroek 754*b636d99dSDavid van Moolenbroekdnl 755*b636d99dSDavid van Moolenbroekdnl Checks to see if -R is used 756*b636d99dSDavid van Moolenbroekdnl 757*b636d99dSDavid van Moolenbroekdnl usage: 758*b636d99dSDavid van Moolenbroekdnl 759*b636d99dSDavid van Moolenbroekdnl AC_LBL_HAVE_RUN_PATH 760*b636d99dSDavid van Moolenbroekdnl 761*b636d99dSDavid van Moolenbroekdnl results: 762*b636d99dSDavid van Moolenbroekdnl 763*b636d99dSDavid van Moolenbroekdnl ac_cv_lbl_have_run_path (yes or no) 764*b636d99dSDavid van Moolenbroekdnl 765*b636d99dSDavid van MoolenbroekAC_DEFUN(AC_LBL_HAVE_RUN_PATH, 766*b636d99dSDavid van Moolenbroek [AC_MSG_CHECKING(for ${CC-cc} -R) 767*b636d99dSDavid van Moolenbroek AC_CACHE_VAL(ac_cv_lbl_have_run_path, 768*b636d99dSDavid van Moolenbroek [echo 'main(){}' > conftest.c 769*b636d99dSDavid van Moolenbroek ${CC-cc} -o conftest conftest.c -R/a1/b2/c3 >conftest.out 2>&1 770*b636d99dSDavid van Moolenbroek if test ! -s conftest.out ; then 771*b636d99dSDavid van Moolenbroek ac_cv_lbl_have_run_path=yes 772*b636d99dSDavid van Moolenbroek else 773*b636d99dSDavid van Moolenbroek ac_cv_lbl_have_run_path=no 774*b636d99dSDavid van Moolenbroek fi 775*b636d99dSDavid van Moolenbroek rm -f -r conftest*]) 776*b636d99dSDavid van Moolenbroek AC_MSG_RESULT($ac_cv_lbl_have_run_path) 777*b636d99dSDavid van Moolenbroek ]) 778*b636d99dSDavid van Moolenbroek 779*b636d99dSDavid van Moolenbroekdnl 780*b636d99dSDavid van Moolenbroekdnl Check whether a given format can be used to print 64-bit integers 781*b636d99dSDavid van Moolenbroekdnl 782*b636d99dSDavid van MoolenbroekAC_DEFUN(AC_LBL_CHECK_64BIT_FORMAT, 783*b636d99dSDavid van Moolenbroek [ 784*b636d99dSDavid van Moolenbroek AC_MSG_CHECKING([whether %$1x can be used to format 64-bit integers]) 785*b636d99dSDavid van Moolenbroek AC_RUN_IFELSE( 786*b636d99dSDavid van Moolenbroek [ 787*b636d99dSDavid van Moolenbroek AC_LANG_SOURCE( 788*b636d99dSDavid van Moolenbroek [[ 789*b636d99dSDavid van Moolenbroek# ifdef HAVE_INTTYPES_H 790*b636d99dSDavid van Moolenbroek #include <inttypes.h> 791*b636d99dSDavid van Moolenbroek# endif 792*b636d99dSDavid van Moolenbroek #include <stdio.h> 793*b636d99dSDavid van Moolenbroek #include <sys/types.h> 794*b636d99dSDavid van Moolenbroek 795*b636d99dSDavid van Moolenbroek main() 796*b636d99dSDavid van Moolenbroek { 797*b636d99dSDavid van Moolenbroek uint64_t t = 1; 798*b636d99dSDavid van Moolenbroek char strbuf[16+1]; 799*b636d99dSDavid van Moolenbroek sprintf(strbuf, "%016$1x", t << 32); 800*b636d99dSDavid van Moolenbroek if (strcmp(strbuf, "0000000100000000") == 0) 801*b636d99dSDavid van Moolenbroek exit(0); 802*b636d99dSDavid van Moolenbroek else 803*b636d99dSDavid van Moolenbroek exit(1); 804*b636d99dSDavid van Moolenbroek } 805*b636d99dSDavid van Moolenbroek ]]) 806*b636d99dSDavid van Moolenbroek ], 807*b636d99dSDavid van Moolenbroek [ 808*b636d99dSDavid van Moolenbroek AC_DEFINE(PRId64, "$1d", [define if the platform doesn't define PRId64]) 809*b636d99dSDavid van Moolenbroek AC_DEFINE(PRIo64, "$1o", [define if the platform doesn't define PRIo64]) 810*b636d99dSDavid van Moolenbroek AC_DEFINE(PRIx64, "$1x", [define if the platform doesn't define PRIu64]) 811*b636d99dSDavid van Moolenbroek AC_DEFINE(PRIu64, "$1u", [define if the platform doesn't define PRIx64]) 812*b636d99dSDavid van Moolenbroek AC_MSG_RESULT(yes) 813*b636d99dSDavid van Moolenbroek ], 814*b636d99dSDavid van Moolenbroek [ 815*b636d99dSDavid van Moolenbroek AC_MSG_RESULT(no) 816*b636d99dSDavid van Moolenbroek $2 817*b636d99dSDavid van Moolenbroek ]) 818*b636d99dSDavid van Moolenbroek ]) 819*b636d99dSDavid van Moolenbroek 820*b636d99dSDavid van Moolenbroekdnl 821*b636d99dSDavid van Moolenbroekdnl Checks to see if unaligned memory accesses fail 822*b636d99dSDavid van Moolenbroekdnl 823*b636d99dSDavid van Moolenbroekdnl usage: 824*b636d99dSDavid van Moolenbroekdnl 825*b636d99dSDavid van Moolenbroekdnl AC_LBL_UNALIGNED_ACCESS 826*b636d99dSDavid van Moolenbroekdnl 827*b636d99dSDavid van Moolenbroekdnl results: 828*b636d99dSDavid van Moolenbroekdnl 829*b636d99dSDavid van Moolenbroekdnl LBL_ALIGN (DEFINED) 830*b636d99dSDavid van Moolenbroekdnl 831*b636d99dSDavid van MoolenbroekAC_DEFUN(AC_LBL_UNALIGNED_ACCESS, 832*b636d99dSDavid van Moolenbroek [AC_MSG_CHECKING(if unaligned accesses fail) 833*b636d99dSDavid van Moolenbroek AC_CACHE_VAL(ac_cv_lbl_unaligned_fail, 834*b636d99dSDavid van Moolenbroek [case "$host_cpu" in 835*b636d99dSDavid van Moolenbroek 836*b636d99dSDavid van Moolenbroek # 837*b636d99dSDavid van Moolenbroek # These are CPU types where: 838*b636d99dSDavid van Moolenbroek # 839*b636d99dSDavid van Moolenbroek # the CPU faults on an unaligned access, but at least some 840*b636d99dSDavid van Moolenbroek # OSes that support that CPU catch the fault and simulate 841*b636d99dSDavid van Moolenbroek # the unaligned access (e.g., Alpha/{Digital,Tru64} UNIX) - 842*b636d99dSDavid van Moolenbroek # the simulation is slow, so we don't want to use it; 843*b636d99dSDavid van Moolenbroek # 844*b636d99dSDavid van Moolenbroek # the CPU, I infer (from the old 845*b636d99dSDavid van Moolenbroek # 846*b636d99dSDavid van Moolenbroek # XXX: should also check that they don't do weird things (like on arm) 847*b636d99dSDavid van Moolenbroek # 848*b636d99dSDavid van Moolenbroek # comment) doesn't fault on unaligned accesses, but doesn't 849*b636d99dSDavid van Moolenbroek # do a normal unaligned fetch, either (e.g., presumably, ARM); 850*b636d99dSDavid van Moolenbroek # 851*b636d99dSDavid van Moolenbroek # for whatever reason, the test program doesn't work 852*b636d99dSDavid van Moolenbroek # (this has been claimed to be the case for several of those 853*b636d99dSDavid van Moolenbroek # CPUs - I don't know what the problem is; the problem 854*b636d99dSDavid van Moolenbroek # was reported as "the test program dumps core" for SuperH, 855*b636d99dSDavid van Moolenbroek # but that's what the test program is *supposed* to do - 856*b636d99dSDavid van Moolenbroek # it dumps core before it writes anything, so the test 857*b636d99dSDavid van Moolenbroek # for an empty output file should find an empty output 858*b636d99dSDavid van Moolenbroek # file and conclude that unaligned accesses don't work). 859*b636d99dSDavid van Moolenbroek # 860*b636d99dSDavid van Moolenbroek # This run-time test won't work if you're cross-compiling, so 861*b636d99dSDavid van Moolenbroek # in order to support cross-compiling for a particular CPU, 862*b636d99dSDavid van Moolenbroek # we have to wire in the list of CPU types anyway, as far as 863*b636d99dSDavid van Moolenbroek # I know, so perhaps we should just have a set of CPUs on 864*b636d99dSDavid van Moolenbroek # which we know it doesn't work, a set of CPUs on which we 865*b636d99dSDavid van Moolenbroek # know it does work, and have the script just fail on other 866*b636d99dSDavid van Moolenbroek # cpu types and update it when such a failure occurs. 867*b636d99dSDavid van Moolenbroek # 868*b636d99dSDavid van Moolenbroek alpha*|arm*|bfin*|hp*|mips*|sh*|sparc*|ia64|nv1) 869*b636d99dSDavid van Moolenbroek ac_cv_lbl_unaligned_fail=yes 870*b636d99dSDavid van Moolenbroek ;; 871*b636d99dSDavid van Moolenbroek 872*b636d99dSDavid van Moolenbroek *) 873*b636d99dSDavid van Moolenbroek cat >conftest.c <<EOF 874*b636d99dSDavid van Moolenbroek# include <sys/types.h> 875*b636d99dSDavid van Moolenbroek# include <sys/wait.h> 876*b636d99dSDavid van Moolenbroek# include <stdio.h> 877*b636d99dSDavid van Moolenbroek unsigned char a[[5]] = { 1, 2, 3, 4, 5 }; 878*b636d99dSDavid van Moolenbroek main() { 879*b636d99dSDavid van Moolenbroek unsigned int i; 880*b636d99dSDavid van Moolenbroek pid_t pid; 881*b636d99dSDavid van Moolenbroek int status; 882*b636d99dSDavid van Moolenbroek /* avoid "core dumped" message */ 883*b636d99dSDavid van Moolenbroek pid = fork(); 884*b636d99dSDavid van Moolenbroek if (pid < 0) 885*b636d99dSDavid van Moolenbroek exit(2); 886*b636d99dSDavid van Moolenbroek if (pid > 0) { 887*b636d99dSDavid van Moolenbroek /* parent */ 888*b636d99dSDavid van Moolenbroek pid = waitpid(pid, &status, 0); 889*b636d99dSDavid van Moolenbroek if (pid < 0) 890*b636d99dSDavid van Moolenbroek exit(3); 891*b636d99dSDavid van Moolenbroek exit(!WIFEXITED(status)); 892*b636d99dSDavid van Moolenbroek } 893*b636d99dSDavid van Moolenbroek /* child */ 894*b636d99dSDavid van Moolenbroek i = *(unsigned int *)&a[[1]]; 895*b636d99dSDavid van Moolenbroek printf("%d\n", i); 896*b636d99dSDavid van Moolenbroek exit(0); 897*b636d99dSDavid van Moolenbroek } 898*b636d99dSDavid van MoolenbroekEOF 899*b636d99dSDavid van Moolenbroek ${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS \ 900*b636d99dSDavid van Moolenbroek conftest.c $LIBS >/dev/null 2>&1 901*b636d99dSDavid van Moolenbroek if test ! -x conftest ; then 902*b636d99dSDavid van Moolenbroek dnl failed to compile for some reason 903*b636d99dSDavid van Moolenbroek ac_cv_lbl_unaligned_fail=yes 904*b636d99dSDavid van Moolenbroek else 905*b636d99dSDavid van Moolenbroek ./conftest >conftest.out 906*b636d99dSDavid van Moolenbroek if test ! -s conftest.out ; then 907*b636d99dSDavid van Moolenbroek ac_cv_lbl_unaligned_fail=yes 908*b636d99dSDavid van Moolenbroek else 909*b636d99dSDavid van Moolenbroek ac_cv_lbl_unaligned_fail=no 910*b636d99dSDavid van Moolenbroek fi 911*b636d99dSDavid van Moolenbroek fi 912*b636d99dSDavid van Moolenbroek rm -f -r conftest* core core.conftest 913*b636d99dSDavid van Moolenbroek ;; 914*b636d99dSDavid van Moolenbroek esac]) 915*b636d99dSDavid van Moolenbroek AC_MSG_RESULT($ac_cv_lbl_unaligned_fail) 916*b636d99dSDavid van Moolenbroek if test $ac_cv_lbl_unaligned_fail = yes ; then 917*b636d99dSDavid van Moolenbroek AC_DEFINE(LBL_ALIGN,1,[if unaligned access fails]) 918*b636d99dSDavid van Moolenbroek fi]) 919*b636d99dSDavid van Moolenbroek 920*b636d99dSDavid van Moolenbroekdnl 921*b636d99dSDavid van Moolenbroekdnl If the file .devel exists: 922*b636d99dSDavid van Moolenbroekdnl Add some warning flags if the compiler supports them 923*b636d99dSDavid van Moolenbroekdnl If an os prototype include exists, symlink os-proto.h to it 924*b636d99dSDavid van Moolenbroekdnl 925*b636d99dSDavid van Moolenbroekdnl usage: 926*b636d99dSDavid van Moolenbroekdnl 927*b636d99dSDavid van Moolenbroekdnl AC_LBL_DEVEL(copt) 928*b636d99dSDavid van Moolenbroekdnl 929*b636d99dSDavid van Moolenbroekdnl results: 930*b636d99dSDavid van Moolenbroekdnl 931*b636d99dSDavid van Moolenbroekdnl $1 (copt appended) 932*b636d99dSDavid van Moolenbroekdnl HAVE_OS_PROTO_H (defined) 933*b636d99dSDavid van Moolenbroekdnl os-proto.h (symlinked) 934*b636d99dSDavid van Moolenbroekdnl 935*b636d99dSDavid van MoolenbroekAC_DEFUN(AC_LBL_DEVEL, 936*b636d99dSDavid van Moolenbroek [rm -f os-proto.h 937*b636d99dSDavid van Moolenbroek if test "${LBL_CFLAGS+set}" = set; then 938*b636d99dSDavid van Moolenbroek $1="$$1 ${LBL_CFLAGS}" 939*b636d99dSDavid van Moolenbroek fi 940*b636d99dSDavid van Moolenbroek if test -f .devel ; then 941*b636d99dSDavid van Moolenbroek # 942*b636d99dSDavid van Moolenbroek # Skip all the warning option stuff on some compilers. 943*b636d99dSDavid van Moolenbroek # 944*b636d99dSDavid van Moolenbroek if test "$ac_lbl_cc_dont_try_gcc_dashW" != yes; then 945*b636d99dSDavid van Moolenbroek AC_LBL_CHECK_COMPILER_OPT($1, -Wall) 946*b636d99dSDavid van Moolenbroek AC_LBL_CHECK_COMPILER_OPT($1, -Wmissing-prototypes) 947*b636d99dSDavid van Moolenbroek AC_LBL_CHECK_COMPILER_OPT($1, -Wstrict-prototypes) 948*b636d99dSDavid van Moolenbroek AC_LBL_CHECK_COMPILER_OPT($1, -Wwrite-strings) 949*b636d99dSDavid van Moolenbroek AC_LBL_CHECK_COMPILER_OPT($1, -Wpointer-arith) 950*b636d99dSDavid van Moolenbroek AC_LBL_CHECK_COMPILER_OPT($1, -W) 951*b636d99dSDavid van Moolenbroek fi 952*b636d99dSDavid van Moolenbroek AC_LBL_CHECK_DEPENDENCY_GENERATION_OPT() 953*b636d99dSDavid van Moolenbroek # 954*b636d99dSDavid van Moolenbroek # We used to set -n32 for IRIX 6 when not using GCC (presumed 955*b636d99dSDavid van Moolenbroek # to mean that we're using MIPS C or MIPSpro C); it specified 956*b636d99dSDavid van Moolenbroek # the "new" faster 32-bit ABI, introduced in IRIX 6.2. I'm 957*b636d99dSDavid van Moolenbroek # not sure why that would be something to do *only* with a 958*b636d99dSDavid van Moolenbroek # .devel file; why should the ABI for which we produce code 959*b636d99dSDavid van Moolenbroek # depend on .devel? 960*b636d99dSDavid van Moolenbroek # 961*b636d99dSDavid van Moolenbroek os=`echo $host_os | sed -e 's/\([[0-9]][[0-9]]*\)[[^0-9]].*$/\1/'` 962*b636d99dSDavid van Moolenbroek name="lbl/os-$os.h" 963*b636d99dSDavid van Moolenbroek if test -f $name ; then 964*b636d99dSDavid van Moolenbroek ln -s $name os-proto.h 965*b636d99dSDavid van Moolenbroek AC_DEFINE(HAVE_OS_PROTO_H, 1, 966*b636d99dSDavid van Moolenbroek [if there's an os_proto.h for this platform, to use additional prototypes]) 967*b636d99dSDavid van Moolenbroek else 968*b636d99dSDavid van Moolenbroek AC_MSG_WARN(can't find $name) 969*b636d99dSDavid van Moolenbroek fi 970*b636d99dSDavid van Moolenbroek fi]) 971*b636d99dSDavid van Moolenbroek 972*b636d99dSDavid van Moolenbroekdnl 973*b636d99dSDavid van Moolenbroekdnl Improved version of AC_CHECK_LIB 974*b636d99dSDavid van Moolenbroekdnl 975*b636d99dSDavid van Moolenbroekdnl Thanks to John Hawkinson (jhawk@mit.edu) 976*b636d99dSDavid van Moolenbroekdnl 977*b636d99dSDavid van Moolenbroekdnl usage: 978*b636d99dSDavid van Moolenbroekdnl 979*b636d99dSDavid van Moolenbroekdnl AC_LBL_CHECK_LIB(LIBRARY, FUNCTION [, ACTION-IF-FOUND [, 980*b636d99dSDavid van Moolenbroekdnl ACTION-IF-NOT-FOUND [, OTHER-LIBRARIES]]]) 981*b636d99dSDavid van Moolenbroekdnl 982*b636d99dSDavid van Moolenbroekdnl results: 983*b636d99dSDavid van Moolenbroekdnl 984*b636d99dSDavid van Moolenbroekdnl LIBS 985*b636d99dSDavid van Moolenbroekdnl 986*b636d99dSDavid van Moolenbroekdnl XXX - "AC_LBL_LIBRARY_NET" was redone to use "AC_SEARCH_LIBS" 987*b636d99dSDavid van Moolenbroekdnl rather than "AC_LBL_CHECK_LIB", so this isn't used any more. 988*b636d99dSDavid van Moolenbroekdnl We keep it around for reference purposes in case it's ever 989*b636d99dSDavid van Moolenbroekdnl useful in the future. 990*b636d99dSDavid van Moolenbroekdnl 991*b636d99dSDavid van Moolenbroek 992*b636d99dSDavid van Moolenbroekdefine(AC_LBL_CHECK_LIB, 993*b636d99dSDavid van Moolenbroek[AC_MSG_CHECKING([for $2 in -l$1]) 994*b636d99dSDavid van Moolenbroekdnl Use a cache variable name containing the library, function 995*b636d99dSDavid van Moolenbroekdnl name, and extra libraries to link with, because the test really is 996*b636d99dSDavid van Moolenbroekdnl for library $1 defining function $2, when linked with potinal 997*b636d99dSDavid van Moolenbroekdnl library $5, not just for library $1. Separate tests with the same 998*b636d99dSDavid van Moolenbroekdnl $1 and different $2's or $5's may have different results. 999*b636d99dSDavid van Moolenbroekac_lib_var=`echo $1['_']$2['_']$5 | sed 'y%./+- %__p__%'` 1000*b636d99dSDavid van MoolenbroekAC_CACHE_VAL(ac_cv_lbl_lib_$ac_lib_var, 1001*b636d99dSDavid van Moolenbroek[ac_save_LIBS="$LIBS" 1002*b636d99dSDavid van MoolenbroekLIBS="-l$1 $5 $LIBS" 1003*b636d99dSDavid van MoolenbroekAC_TRY_LINK(dnl 1004*b636d99dSDavid van Moolenbroekifelse([$2], [main], , dnl Avoid conflicting decl of main. 1005*b636d99dSDavid van Moolenbroek[/* Override any gcc2 internal prototype to avoid an error. */ 1006*b636d99dSDavid van Moolenbroek]ifelse(AC_LANG, CPLUSPLUS, [#ifdef __cplusplus 1007*b636d99dSDavid van Moolenbroekextern "C" 1008*b636d99dSDavid van Moolenbroek#endif 1009*b636d99dSDavid van Moolenbroek])dnl 1010*b636d99dSDavid van Moolenbroek[/* We use char because int might match the return type of a gcc2 1011*b636d99dSDavid van Moolenbroek builtin and then its argument prototype would still apply. */ 1012*b636d99dSDavid van Moolenbroekchar $2(); 1013*b636d99dSDavid van Moolenbroek]), 1014*b636d99dSDavid van Moolenbroek [$2()], 1015*b636d99dSDavid van Moolenbroek eval "ac_cv_lbl_lib_$ac_lib_var=yes", 1016*b636d99dSDavid van Moolenbroek eval "ac_cv_lbl_lib_$ac_lib_var=no") 1017*b636d99dSDavid van MoolenbroekLIBS="$ac_save_LIBS" 1018*b636d99dSDavid van Moolenbroek])dnl 1019*b636d99dSDavid van Moolenbroekif eval "test \"`echo '$ac_cv_lbl_lib_'$ac_lib_var`\" = yes"; then 1020*b636d99dSDavid van Moolenbroek AC_MSG_RESULT(yes) 1021*b636d99dSDavid van Moolenbroek ifelse([$3], , 1022*b636d99dSDavid van Moolenbroek[changequote(, )dnl 1023*b636d99dSDavid van Moolenbroek ac_tr_lib=HAVE_LIB`echo $1 | sed -e 's/[^a-zA-Z0-9_]/_/g' \ 1024*b636d99dSDavid van Moolenbroek -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'` 1025*b636d99dSDavid van Moolenbroekchangequote([, ])dnl 1026*b636d99dSDavid van Moolenbroek AC_DEFINE_UNQUOTED($ac_tr_lib) 1027*b636d99dSDavid van Moolenbroek LIBS="-l$1 $LIBS" 1028*b636d99dSDavid van Moolenbroek], [$3]) 1029*b636d99dSDavid van Moolenbroekelse 1030*b636d99dSDavid van Moolenbroek AC_MSG_RESULT(no) 1031*b636d99dSDavid van Moolenbroekifelse([$4], , , [$4 1032*b636d99dSDavid van Moolenbroek])dnl 1033*b636d99dSDavid van Moolenbroekfi 1034*b636d99dSDavid van Moolenbroek]) 1035*b636d99dSDavid van Moolenbroek 1036*b636d99dSDavid van Moolenbroekdnl 1037*b636d99dSDavid van Moolenbroekdnl AC_LBL_LIBRARY_NET 1038*b636d99dSDavid van Moolenbroekdnl 1039*b636d99dSDavid van Moolenbroekdnl This test is for network applications that need socket() and 1040*b636d99dSDavid van Moolenbroekdnl gethostbyname() -ish functions. Under Solaris, those applications 1041*b636d99dSDavid van Moolenbroekdnl need to link with "-lsocket -lnsl". Under IRIX, they need to link 1042*b636d99dSDavid van Moolenbroekdnl with "-lnsl" but should *not* link with "-lsocket" because 1043*b636d99dSDavid van Moolenbroekdnl libsocket.a breaks a number of things (for instance: 1044*b636d99dSDavid van Moolenbroekdnl gethostbyname() under IRIX 5.2, and snoop sockets under most 1045*b636d99dSDavid van Moolenbroekdnl versions of IRIX). 1046*b636d99dSDavid van Moolenbroekdnl 1047*b636d99dSDavid van Moolenbroekdnl Unfortunately, many application developers are not aware of this, 1048*b636d99dSDavid van Moolenbroekdnl and mistakenly write tests that cause -lsocket to be used under 1049*b636d99dSDavid van Moolenbroekdnl IRIX. It is also easy to write tests that cause -lnsl to be used 1050*b636d99dSDavid van Moolenbroekdnl under operating systems where neither are necessary (or useful), 1051*b636d99dSDavid van Moolenbroekdnl such as SunOS 4.1.4, which uses -lnsl for TLI. 1052*b636d99dSDavid van Moolenbroekdnl 1053*b636d99dSDavid van Moolenbroekdnl This test exists so that every application developer does not test 1054*b636d99dSDavid van Moolenbroekdnl this in a different, and subtly broken fashion. 1055*b636d99dSDavid van Moolenbroek 1056*b636d99dSDavid van Moolenbroekdnl It has been argued that this test should be broken up into two 1057*b636d99dSDavid van Moolenbroekdnl seperate tests, one for the resolver libraries, and one for the 1058*b636d99dSDavid van Moolenbroekdnl libraries necessary for using Sockets API. Unfortunately, the two 1059*b636d99dSDavid van Moolenbroekdnl are carefully intertwined and allowing the autoconf user to use 1060*b636d99dSDavid van Moolenbroekdnl them independantly potentially results in unfortunate ordering 1061*b636d99dSDavid van Moolenbroekdnl dependancies -- as such, such component macros would have to 1062*b636d99dSDavid van Moolenbroekdnl carefully use indirection and be aware if the other components were 1063*b636d99dSDavid van Moolenbroekdnl executed. Since other autoconf macros do not go to this trouble, 1064*b636d99dSDavid van Moolenbroekdnl and almost no applications use sockets without the resolver, this 1065*b636d99dSDavid van Moolenbroekdnl complexity has not been implemented. 1066*b636d99dSDavid van Moolenbroekdnl 1067*b636d99dSDavid van Moolenbroekdnl The check for libresolv is in case you are attempting to link 1068*b636d99dSDavid van Moolenbroekdnl statically and happen to have a libresolv.a lying around (and no 1069*b636d99dSDavid van Moolenbroekdnl libnsl.a). 1070*b636d99dSDavid van Moolenbroekdnl 1071*b636d99dSDavid van MoolenbroekAC_DEFUN(AC_LBL_LIBRARY_NET, [ 1072*b636d99dSDavid van Moolenbroek # Most operating systems have gethostbyname() in the default searched 1073*b636d99dSDavid van Moolenbroek # libraries (i.e. libc): 1074*b636d99dSDavid van Moolenbroek # Some OSes (eg. Solaris) place it in libnsl 1075*b636d99dSDavid van Moolenbroek # Some strange OSes (SINIX) have it in libsocket: 1076*b636d99dSDavid van Moolenbroek AC_SEARCH_LIBS(gethostbyname, nsl socket resolv) 1077*b636d99dSDavid van Moolenbroek # Unfortunately libsocket sometimes depends on libnsl and 1078*b636d99dSDavid van Moolenbroek # AC_SEARCH_LIBS isn't up to the task of handling dependencies like this. 1079*b636d99dSDavid van Moolenbroek if test "$ac_cv_search_gethostbyname" = "no" 1080*b636d99dSDavid van Moolenbroek then 1081*b636d99dSDavid van Moolenbroek AC_CHECK_LIB(socket, gethostbyname, 1082*b636d99dSDavid van Moolenbroek LIBS="-lsocket -lnsl $LIBS", , -lnsl) 1083*b636d99dSDavid van Moolenbroek fi 1084*b636d99dSDavid van Moolenbroek AC_SEARCH_LIBS(socket, socket, , 1085*b636d99dSDavid van Moolenbroek AC_CHECK_LIB(socket, socket, LIBS="-lsocket -lnsl $LIBS", , -lnsl)) 1086*b636d99dSDavid van Moolenbroek # DLPI needs putmsg under HPUX so test for -lstr while we're at it 1087*b636d99dSDavid van Moolenbroek AC_SEARCH_LIBS(putmsg, str) 1088*b636d99dSDavid van Moolenbroek ]) 1089*b636d99dSDavid van Moolenbroek 1090*b636d99dSDavid van Moolenbroekdnl Copyright (c) 1999 WIDE Project. All rights reserved. 1091*b636d99dSDavid van Moolenbroekdnl 1092*b636d99dSDavid van Moolenbroekdnl Redistribution and use in source and binary forms, with or without 1093*b636d99dSDavid van Moolenbroekdnl modification, are permitted provided that the following conditions 1094*b636d99dSDavid van Moolenbroekdnl are met: 1095*b636d99dSDavid van Moolenbroekdnl 1. Redistributions of source code must retain the above copyright 1096*b636d99dSDavid van Moolenbroekdnl notice, this list of conditions and the following disclaimer. 1097*b636d99dSDavid van Moolenbroekdnl 2. Redistributions in binary form must reproduce the above copyright 1098*b636d99dSDavid van Moolenbroekdnl notice, this list of conditions and the following disclaimer in the 1099*b636d99dSDavid van Moolenbroekdnl documentation and/or other materials provided with the distribution. 1100*b636d99dSDavid van Moolenbroekdnl 3. Neither the name of the project nor the names of its contributors 1101*b636d99dSDavid van Moolenbroekdnl may be used to endorse or promote products derived from this software 1102*b636d99dSDavid van Moolenbroekdnl without specific prior written permission. 1103*b636d99dSDavid van Moolenbroekdnl 1104*b636d99dSDavid van Moolenbroekdnl THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND 1105*b636d99dSDavid van Moolenbroekdnl ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 1106*b636d99dSDavid van Moolenbroekdnl IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 1107*b636d99dSDavid van Moolenbroekdnl ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE 1108*b636d99dSDavid van Moolenbroekdnl FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 1109*b636d99dSDavid van Moolenbroekdnl DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 1110*b636d99dSDavid van Moolenbroekdnl OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 1111*b636d99dSDavid van Moolenbroekdnl HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 1112*b636d99dSDavid van Moolenbroekdnl LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 1113*b636d99dSDavid van Moolenbroekdnl OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 1114*b636d99dSDavid van Moolenbroekdnl SUCH DAMAGE. 1115*b636d99dSDavid van Moolenbroek 1116*b636d99dSDavid van Moolenbroekdnl 1117*b636d99dSDavid van Moolenbroekdnl Checks to see if AF_INET6 is defined 1118*b636d99dSDavid van MoolenbroekAC_DEFUN(AC_CHECK_AF_INET6, [ 1119*b636d99dSDavid van Moolenbroek AC_MSG_CHECKING(for AF_INET6) 1120*b636d99dSDavid van Moolenbroek AC_CACHE_VAL($1, 1121*b636d99dSDavid van Moolenbroek AC_TRY_COMPILE([ 1122*b636d99dSDavid van Moolenbroek# include <sys/types.h> 1123*b636d99dSDavid van Moolenbroek# include <sys/socket.h>], 1124*b636d99dSDavid van Moolenbroek [int a = AF_INET6], 1125*b636d99dSDavid van Moolenbroek $1=yes, 1126*b636d99dSDavid van Moolenbroek $1=no)) 1127*b636d99dSDavid van Moolenbroek AC_MSG_RESULT($$1) 1128*b636d99dSDavid van Moolenbroek if test $$1 = yes ; then 1129*b636d99dSDavid van Moolenbroek AC_DEFINE(HAVE_AF_INET6) 1130*b636d99dSDavid van Moolenbroek fi 1131*b636d99dSDavid van Moolenbroek]) 1132*b636d99dSDavid van Moolenbroek 1133*b636d99dSDavid van Moolenbroekdnl 1134*b636d99dSDavid van Moolenbroekdnl Checks to see if the sockaddr struct has the 4.4 BSD sa_len member 1135*b636d99dSDavid van Moolenbroekdnl borrowed from LBL libpcap 1136*b636d99dSDavid van MoolenbroekAC_DEFUN(AC_CHECK_SA_LEN, [ 1137*b636d99dSDavid van Moolenbroek AC_MSG_CHECKING(if sockaddr struct has sa_len member) 1138*b636d99dSDavid van Moolenbroek AC_CACHE_VAL($1, 1139*b636d99dSDavid van Moolenbroek AC_TRY_COMPILE([ 1140*b636d99dSDavid van Moolenbroek# include <sys/types.h> 1141*b636d99dSDavid van Moolenbroek# include <sys/socket.h>], 1142*b636d99dSDavid van Moolenbroek [u_int i = sizeof(((struct sockaddr *)0)->sa_len)], 1143*b636d99dSDavid van Moolenbroek $1=yes, 1144*b636d99dSDavid van Moolenbroek $1=no)) 1145*b636d99dSDavid van Moolenbroek AC_MSG_RESULT($$1) 1146*b636d99dSDavid van Moolenbroek if test $$1 = yes ; then 1147*b636d99dSDavid van Moolenbroek AC_DEFINE(HAVE_SOCKADDR_SA_LEN) 1148*b636d99dSDavid van Moolenbroek fi 1149*b636d99dSDavid van Moolenbroek]) 1150*b636d99dSDavid van Moolenbroek 1151*b636d99dSDavid van Moolenbroekdnl 1152*b636d99dSDavid van Moolenbroekdnl Checks for addrinfo structure 1153*b636d99dSDavid van MoolenbroekAC_DEFUN(AC_STRUCT_ADDRINFO, [ 1154*b636d99dSDavid van Moolenbroek AC_MSG_CHECKING(for addrinfo) 1155*b636d99dSDavid van Moolenbroek AC_CACHE_VAL($1, 1156*b636d99dSDavid van Moolenbroek AC_TRY_COMPILE([ 1157*b636d99dSDavid van Moolenbroek# include <netdb.h>], 1158*b636d99dSDavid van Moolenbroek [struct addrinfo a], 1159*b636d99dSDavid van Moolenbroek $1=yes, 1160*b636d99dSDavid van Moolenbroek $1=no)) 1161*b636d99dSDavid van Moolenbroek AC_MSG_RESULT($$1) 1162*b636d99dSDavid van Moolenbroek if test $$1 = yes; then 1163*b636d99dSDavid van Moolenbroek AC_DEFINE(HAVE_ADDRINFO, 1, 1164*b636d99dSDavid van Moolenbroek [define if you have the addrinfo function]) 1165*b636d99dSDavid van Moolenbroek else 1166*b636d99dSDavid van Moolenbroek AC_DEFINE(NEED_ADDRINFO_H, 1, 1167*b636d99dSDavid van Moolenbroek [define if you need to include missing/addrinfo.h]) 1168*b636d99dSDavid van Moolenbroek fi 1169*b636d99dSDavid van Moolenbroek]) 1170*b636d99dSDavid van Moolenbroek 1171*b636d99dSDavid van Moolenbroekdnl 1172*b636d99dSDavid van Moolenbroekdnl Checks for NI_MAXSERV 1173*b636d99dSDavid van MoolenbroekAC_DEFUN(AC_NI_MAXSERV, [ 1174*b636d99dSDavid van Moolenbroek AC_MSG_CHECKING(for NI_MAXSERV) 1175*b636d99dSDavid van Moolenbroek AC_CACHE_VAL($1, 1176*b636d99dSDavid van Moolenbroek AC_EGREP_CPP(yes, [#include <netdb.h> 1177*b636d99dSDavid van Moolenbroek#ifdef NI_MAXSERV 1178*b636d99dSDavid van Moolenbroekyes 1179*b636d99dSDavid van Moolenbroek#endif], 1180*b636d99dSDavid van Moolenbroek $1=yes, 1181*b636d99dSDavid van Moolenbroek $1=no)) 1182*b636d99dSDavid van Moolenbroek AC_MSG_RESULT($$1) 1183*b636d99dSDavid van Moolenbroek if test $$1 != yes; then 1184*b636d99dSDavid van Moolenbroek AC_DEFINE(NEED_ADDRINFO_H) 1185*b636d99dSDavid van Moolenbroek fi 1186*b636d99dSDavid van Moolenbroek]) 1187*b636d99dSDavid van Moolenbroek 1188*b636d99dSDavid van Moolenbroekdnl 1189*b636d99dSDavid van Moolenbroekdnl Checks for NI_NAMEREQD 1190*b636d99dSDavid van MoolenbroekAC_DEFUN(AC_NI_NAMEREQD, [ 1191*b636d99dSDavid van Moolenbroek AC_MSG_CHECKING(for NI_NAMEREQD) 1192*b636d99dSDavid van Moolenbroek AC_CACHE_VAL($1, 1193*b636d99dSDavid van Moolenbroek AC_EGREP_CPP(yes, [#include <netdb.h> 1194*b636d99dSDavid van Moolenbroek#ifdef NI_NOFQDN 1195*b636d99dSDavid van Moolenbroekyes 1196*b636d99dSDavid van Moolenbroek#endif], 1197*b636d99dSDavid van Moolenbroek $1=yes, 1198*b636d99dSDavid van Moolenbroek $1=no)) 1199*b636d99dSDavid van Moolenbroek AC_MSG_RESULT($$1) 1200*b636d99dSDavid van Moolenbroek if test $$1 != yes; then 1201*b636d99dSDavid van Moolenbroek AC_DEFINE(NEED_ADDRINFO_H) 1202*b636d99dSDavid van Moolenbroek fi 1203*b636d99dSDavid van Moolenbroek]) 1204*b636d99dSDavid van Moolenbroek 1205*b636d99dSDavid van Moolenbroekdnl 1206*b636d99dSDavid van Moolenbroekdnl Checks for sockaddr_storage structure 1207*b636d99dSDavid van MoolenbroekAC_DEFUN(AC_STRUCT_SA_STORAGE, [ 1208*b636d99dSDavid van Moolenbroek AC_MSG_CHECKING(for sockaddr_storage) 1209*b636d99dSDavid van Moolenbroek AC_CACHE_VAL($1, 1210*b636d99dSDavid van Moolenbroek AC_TRY_COMPILE([ 1211*b636d99dSDavid van Moolenbroek# include <sys/types.h> 1212*b636d99dSDavid van Moolenbroek# include <sys/socket.h>], 1213*b636d99dSDavid van Moolenbroek [struct sockaddr_storage s], 1214*b636d99dSDavid van Moolenbroek $1=yes, 1215*b636d99dSDavid van Moolenbroek $1=no)) 1216*b636d99dSDavid van Moolenbroek AC_MSG_RESULT($$1) 1217*b636d99dSDavid van Moolenbroek if test $$1 = yes; then 1218*b636d99dSDavid van Moolenbroek AC_DEFINE(HAVE_SOCKADDR_STORAGE, 1, 1219*b636d99dSDavid van Moolenbroek [define if you have struct sockaddr_storage]) 1220*b636d99dSDavid van Moolenbroek fi 1221*b636d99dSDavid van Moolenbroek]) 1222*b636d99dSDavid van Moolenbroek 1223*b636d99dSDavid van Moolenbroekdnl 1224*b636d99dSDavid van Moolenbroekdnl check for h_errno 1225*b636d99dSDavid van MoolenbroekAC_DEFUN(AC_VAR_H_ERRNO, [ 1226*b636d99dSDavid van Moolenbroek AC_MSG_CHECKING(for h_errno) 1227*b636d99dSDavid van Moolenbroek AC_CACHE_VAL(ac_cv_var_h_errno, 1228*b636d99dSDavid van Moolenbroek AC_TRY_COMPILE([ 1229*b636d99dSDavid van Moolenbroek# include <sys/types.h> 1230*b636d99dSDavid van Moolenbroek# include <netdb.h>], 1231*b636d99dSDavid van Moolenbroek [int foo = h_errno;], 1232*b636d99dSDavid van Moolenbroek ac_cv_var_h_errno=yes, 1233*b636d99dSDavid van Moolenbroek ac_cv_var_h_errno=no)) 1234*b636d99dSDavid van Moolenbroek AC_MSG_RESULT($ac_cv_var_h_errno) 1235*b636d99dSDavid van Moolenbroek if test "$ac_cv_var_h_errno" = "yes"; then 1236*b636d99dSDavid van Moolenbroek AC_DEFINE(HAVE_H_ERRNO, 1, 1237*b636d99dSDavid van Moolenbroek [define if you have the h_errno variable]) 1238*b636d99dSDavid van Moolenbroek fi 1239*b636d99dSDavid van Moolenbroek]) 1240*b636d99dSDavid van Moolenbroek 1241*b636d99dSDavid van Moolenbroekdnl 1242*b636d99dSDavid van Moolenbroekdnl Test for __attribute__ 1243*b636d99dSDavid van Moolenbroekdnl 1244*b636d99dSDavid van Moolenbroek 1245*b636d99dSDavid van MoolenbroekAC_DEFUN(AC_C___ATTRIBUTE__, [ 1246*b636d99dSDavid van MoolenbroekAC_MSG_CHECKING(for __attribute__) 1247*b636d99dSDavid van MoolenbroekAC_CACHE_VAL(ac_cv___attribute__, [ 1248*b636d99dSDavid van MoolenbroekAC_COMPILE_IFELSE([ 1249*b636d99dSDavid van Moolenbroek AC_LANG_SOURCE([[ 1250*b636d99dSDavid van Moolenbroek#include <stdlib.h> 1251*b636d99dSDavid van Moolenbroek 1252*b636d99dSDavid van Moolenbroekstatic void foo(void) __attribute__ ((noreturn)); 1253*b636d99dSDavid van Moolenbroek 1254*b636d99dSDavid van Moolenbroekstatic void 1255*b636d99dSDavid van Moolenbroekfoo(void) 1256*b636d99dSDavid van Moolenbroek{ 1257*b636d99dSDavid van Moolenbroek exit(1); 1258*b636d99dSDavid van Moolenbroek} 1259*b636d99dSDavid van Moolenbroek 1260*b636d99dSDavid van Moolenbroekint 1261*b636d99dSDavid van Moolenbroekmain(int argc, char **argv) 1262*b636d99dSDavid van Moolenbroek{ 1263*b636d99dSDavid van Moolenbroek foo(); 1264*b636d99dSDavid van Moolenbroek} 1265*b636d99dSDavid van Moolenbroek ]])], 1266*b636d99dSDavid van Moolenbroekac_cv___attribute__=yes, 1267*b636d99dSDavid van Moolenbroekac_cv___attribute__=no)]) 1268*b636d99dSDavid van Moolenbroekif test "$ac_cv___attribute__" = "yes"; then 1269*b636d99dSDavid van Moolenbroek AC_DEFINE(HAVE___ATTRIBUTE__, 1, [define if your compiler has __attribute__]) 1270*b636d99dSDavid van Moolenbroekelse 1271*b636d99dSDavid van Moolenbroek # 1272*b636d99dSDavid van Moolenbroek # We can't use __attribute__, so we can't use __attribute__((unused)), 1273*b636d99dSDavid van Moolenbroek # so we define _U_ to an empty string. 1274*b636d99dSDavid van Moolenbroek # 1275*b636d99dSDavid van Moolenbroek V_DEFS="$V_DEFS -D_U_=\"\"" 1276*b636d99dSDavid van Moolenbroekfi 1277*b636d99dSDavid van MoolenbroekAC_MSG_RESULT($ac_cv___attribute__) 1278*b636d99dSDavid van Moolenbroek]) 1279*b636d99dSDavid van Moolenbroek 1280*b636d99dSDavid van Moolenbroek 1281*b636d99dSDavid van Moolenbroekdnl 1282*b636d99dSDavid van Moolenbroekdnl Test whether __attribute__((unused)) can be used without warnings 1283*b636d99dSDavid van Moolenbroekdnl 1284*b636d99dSDavid van Moolenbroek 1285*b636d99dSDavid van MoolenbroekAC_DEFUN(AC_C___ATTRIBUTE___UNUSED, [ 1286*b636d99dSDavid van MoolenbroekAC_MSG_CHECKING([whether __attribute__((unused)) can be used without warnings]) 1287*b636d99dSDavid van MoolenbroekAC_CACHE_VAL(ac_cv___attribute___unused, [ 1288*b636d99dSDavid van Moolenbroeksave_CFLAGS="$CFLAGS" 1289*b636d99dSDavid van MoolenbroekCFLAGS="$CFLAGS $ac_lbl_cc_force_warning_errors" 1290*b636d99dSDavid van MoolenbroekAC_COMPILE_IFELSE([ 1291*b636d99dSDavid van Moolenbroek AC_LANG_SOURCE([[ 1292*b636d99dSDavid van Moolenbroek#include <stdlib.h> 1293*b636d99dSDavid van Moolenbroek#include <stdio.h> 1294*b636d99dSDavid van Moolenbroek 1295*b636d99dSDavid van Moolenbroekint 1296*b636d99dSDavid van Moolenbroekmain(int argc __attribute((unused)), char **argv __attribute((unused))) 1297*b636d99dSDavid van Moolenbroek{ 1298*b636d99dSDavid van Moolenbroek printf("Hello, world!\n"); 1299*b636d99dSDavid van Moolenbroek return 0; 1300*b636d99dSDavid van Moolenbroek} 1301*b636d99dSDavid van Moolenbroek ]])], 1302*b636d99dSDavid van Moolenbroekac_cv___attribute___unused=yes, 1303*b636d99dSDavid van Moolenbroekac_cv___attribute___unused=no)]) 1304*b636d99dSDavid van MoolenbroekCFLAGS="$save_CFLAGS" 1305*b636d99dSDavid van Moolenbroekif test "$ac_cv___attribute___unused" = "yes"; then 1306*b636d99dSDavid van Moolenbroek V_DEFS="$V_DEFS -D_U_=\"__attribute__((unused))\"" 1307*b636d99dSDavid van Moolenbroekelse 1308*b636d99dSDavid van Moolenbroek V_DEFS="$V_DEFS -D_U_=\"\"" 1309*b636d99dSDavid van Moolenbroekfi 1310*b636d99dSDavid van MoolenbroekAC_MSG_RESULT($ac_cv___attribute___unused) 1311*b636d99dSDavid van Moolenbroek]) 1312*b636d99dSDavid van Moolenbroek 1313*b636d99dSDavid van Moolenbroekdnl 1314*b636d99dSDavid van Moolenbroekdnl Test whether __attribute__((format)) can be used without warnings 1315*b636d99dSDavid van Moolenbroekdnl 1316*b636d99dSDavid van Moolenbroek 1317*b636d99dSDavid van MoolenbroekAC_DEFUN(AC_C___ATTRIBUTE___FORMAT, [ 1318*b636d99dSDavid van MoolenbroekAC_MSG_CHECKING([whether __attribute__((format)) can be used without warnings]) 1319*b636d99dSDavid van MoolenbroekAC_CACHE_VAL(ac_cv___attribute___format, [ 1320*b636d99dSDavid van Moolenbroeksave_CFLAGS="$CFLAGS" 1321*b636d99dSDavid van MoolenbroekCFLAGS="$CFLAGS $ac_lbl_cc_force_warning_errors" 1322*b636d99dSDavid van MoolenbroekAC_COMPILE_IFELSE([ 1323*b636d99dSDavid van Moolenbroek AC_LANG_SOURCE([[ 1324*b636d99dSDavid van Moolenbroek#include <stdlib.h> 1325*b636d99dSDavid van Moolenbroek 1326*b636d99dSDavid van Moolenbroekextern int foo(const char *fmt, ...) 1327*b636d99dSDavid van Moolenbroek __attribute__ ((format (printf, 1, 2))); 1328*b636d99dSDavid van Moolenbroek 1329*b636d99dSDavid van Moolenbroekint 1330*b636d99dSDavid van Moolenbroekmain(int argc, char **argv) 1331*b636d99dSDavid van Moolenbroek{ 1332*b636d99dSDavid van Moolenbroek foo("%s", "test"); 1333*b636d99dSDavid van Moolenbroek} 1334*b636d99dSDavid van Moolenbroek ]])], 1335*b636d99dSDavid van Moolenbroekac_cv___attribute___format=yes, 1336*b636d99dSDavid van Moolenbroekac_cv___attribute___format=no)]) 1337*b636d99dSDavid van MoolenbroekCFLAGS="$save_CFLAGS" 1338*b636d99dSDavid van Moolenbroekif test "$ac_cv___attribute___format" = "yes"; then 1339*b636d99dSDavid van Moolenbroek AC_DEFINE(__ATTRIBUTE___FORMAT_OK, 1, 1340*b636d99dSDavid van Moolenbroek [define if your compiler allows __attribute__((format)) without a warning]) 1341*b636d99dSDavid van Moolenbroekfi 1342*b636d99dSDavid van MoolenbroekAC_MSG_RESULT($ac_cv___attribute___format) 1343*b636d99dSDavid van Moolenbroek]) 1344*b636d99dSDavid van Moolenbroek 1345*b636d99dSDavid van Moolenbroekdnl 1346*b636d99dSDavid van Moolenbroekdnl Test whether __attribute__((format)) can be applied to function 1347*b636d99dSDavid van Moolenbroekdnl pointers 1348*b636d99dSDavid van Moolenbroekdnl 1349*b636d99dSDavid van Moolenbroek 1350*b636d99dSDavid van MoolenbroekAC_DEFUN(AC_C___ATTRIBUTE___FORMAT_FUNCTION_POINTER, [ 1351*b636d99dSDavid van MoolenbroekAC_MSG_CHECKING([whether __attribute__((format)) can be applied to function pointers]) 1352*b636d99dSDavid van MoolenbroekAC_CACHE_VAL(ac_cv___attribute___format_function_pointer, [ 1353*b636d99dSDavid van MoolenbroekAC_COMPILE_IFELSE([ 1354*b636d99dSDavid van Moolenbroek AC_LANG_SOURCE([[ 1355*b636d99dSDavid van Moolenbroek#include <stdlib.h> 1356*b636d99dSDavid van Moolenbroek 1357*b636d99dSDavid van Moolenbroekextern int (*foo)(const char *fmt, ...) 1358*b636d99dSDavid van Moolenbroek __attribute__ ((format (printf, 1, 2))); 1359*b636d99dSDavid van Moolenbroek 1360*b636d99dSDavid van Moolenbroekint 1361*b636d99dSDavid van Moolenbroekmain(int argc, char **argv) 1362*b636d99dSDavid van Moolenbroek{ 1363*b636d99dSDavid van Moolenbroek (*foo)("%s", "test"); 1364*b636d99dSDavid van Moolenbroek} 1365*b636d99dSDavid van Moolenbroek ]])], 1366*b636d99dSDavid van Moolenbroekac_cv___attribute___format_function_pointer=yes, 1367*b636d99dSDavid van Moolenbroekac_cv___attribute___format_function_pointer=no)]) 1368*b636d99dSDavid van Moolenbroekif test "$ac_cv___attribute___format_function_pointer" = "yes"; then 1369*b636d99dSDavid van Moolenbroek AC_DEFINE(__ATTRIBUTE___FORMAT_OK_FOR_FUNCTION_POINTERS, 1, 1370*b636d99dSDavid van Moolenbroek [define if your compiler allows __attribute__((format)) to be applied to function pointers]) 1371*b636d99dSDavid van Moolenbroekfi 1372*b636d99dSDavid van MoolenbroekAC_MSG_RESULT($ac_cv___attribute___format_function_pointer) 1373*b636d99dSDavid van Moolenbroek]) 1374*b636d99dSDavid van Moolenbroek 1375*b636d99dSDavid van MoolenbroekAC_DEFUN(AC_C___ATTRIBUTE___NORETURN_FUNCTION_POINTER, [ 1376*b636d99dSDavid van MoolenbroekAC_MSG_CHECKING([whether __attribute__((noreturn)) can be applied to function pointers without warnings]) 1377*b636d99dSDavid van MoolenbroekAC_CACHE_VAL(ac_cv___attribute___noreturn_function_pointer, [ 1378*b636d99dSDavid van Moolenbroeksave_CFLAGS="$CFLAGS" 1379*b636d99dSDavid van MoolenbroekCFLAGS="$CFLAGS $ac_lbl_cc_force_warning_errors" 1380*b636d99dSDavid van MoolenbroekAC_COMPILE_IFELSE([ 1381*b636d99dSDavid van Moolenbroek AC_LANG_SOURCE([[ 1382*b636d99dSDavid van Moolenbroek#include <stdlib.h> 1383*b636d99dSDavid van Moolenbroek 1384*b636d99dSDavid van Moolenbroekextern int (*foo)(int i) 1385*b636d99dSDavid van Moolenbroek __attribute__ ((noreturn)); 1386*b636d99dSDavid van Moolenbroek 1387*b636d99dSDavid van Moolenbroekint 1388*b636d99dSDavid van Moolenbroekmain(int argc, char **argv) 1389*b636d99dSDavid van Moolenbroek{ 1390*b636d99dSDavid van Moolenbroek (*foo)(1); 1391*b636d99dSDavid van Moolenbroek} 1392*b636d99dSDavid van Moolenbroek ]])], 1393*b636d99dSDavid van Moolenbroekac_cv___attribute___noreturn_function_pointer=yes, 1394*b636d99dSDavid van Moolenbroekac_cv___attribute___noreturn_function_pointer=no)]) 1395*b636d99dSDavid van MoolenbroekCFLAGS="$save_CFLAGS" 1396*b636d99dSDavid van Moolenbroekif test "$ac_cv___attribute___noreturn_function_pointer" = "yes"; then 1397*b636d99dSDavid van Moolenbroek AC_DEFINE(__ATTRIBUTE___NORETURN_OK_FOR_FUNCTION_POINTERS, 1, 1398*b636d99dSDavid van Moolenbroek [define if your compiler allows __attribute__((noreturn)) to be applied to function pointers]) 1399*b636d99dSDavid van Moolenbroekfi 1400*b636d99dSDavid van MoolenbroekAC_MSG_RESULT($ac_cv___attribute___noreturn_function_pointer) 1401*b636d99dSDavid van Moolenbroek]) 1402*b636d99dSDavid van Moolenbroek 1403*b636d99dSDavid van MoolenbroekAC_DEFUN(AC_LBL_SSLEAY, 1404*b636d99dSDavid van Moolenbroek [ 1405*b636d99dSDavid van Moolenbroek # 1406*b636d99dSDavid van Moolenbroek # Find the last component of $libdir; it's not necessarily 1407*b636d99dSDavid van Moolenbroek # "lib" - it might be "lib64" on, for example, x86-64 1408*b636d99dSDavid van Moolenbroek # Linux systems. 1409*b636d99dSDavid van Moolenbroek # 1410*b636d99dSDavid van Moolenbroek # We assume the directory in which we're looking for 1411*b636d99dSDavid van Moolenbroek # libcrypto has a subdirectory with that as its name. 1412*b636d99dSDavid van Moolenbroek # 1413*b636d99dSDavid van Moolenbroek tmplib=`echo "$libdir" | sed 's,.*/,,'` 1414*b636d99dSDavid van Moolenbroek 1415*b636d99dSDavid van Moolenbroek # 1416*b636d99dSDavid van Moolenbroek # XXX - is there a better way to check if a given library is 1417*b636d99dSDavid van Moolenbroek # in a given directory than checking each of the possible 1418*b636d99dSDavid van Moolenbroek # shared library suffixes? 1419*b636d99dSDavid van Moolenbroek # 1420*b636d99dSDavid van Moolenbroek # Are there any other suffixes we need to look for? Do we 1421*b636d99dSDavid van Moolenbroek # have to worry about ".so.{version}"? 1422*b636d99dSDavid van Moolenbroek # 1423*b636d99dSDavid van Moolenbroek # Or should we just look for "libcrypto.*"? 1424*b636d99dSDavid van Moolenbroek # 1425*b636d99dSDavid van Moolenbroek if test -d "$1/$tmplib" -a \( -f "$1/$tmplib/libcrypto.a" -o \ 1426*b636d99dSDavid van Moolenbroek -f "$1/$tmplib/libcrypto.so" -o \ 1427*b636d99dSDavid van Moolenbroek -f "$1/$tmplib/libcrypto.sl" -o \ 1428*b636d99dSDavid van Moolenbroek -f "$1/$tmplib/libcrypto.dylib" \); then 1429*b636d99dSDavid van Moolenbroek ac_cv_ssleay_path="$1" 1430*b636d99dSDavid van Moolenbroek fi 1431*b636d99dSDavid van Moolenbroek 1432*b636d99dSDavid van Moolenbroek # 1433*b636d99dSDavid van Moolenbroek # Make sure we have the headers as well. 1434*b636d99dSDavid van Moolenbroek # 1435*b636d99dSDavid van Moolenbroek if test -d "$1/include/openssl" -a -f "$1/include/openssl/des.h"; then 1436*b636d99dSDavid van Moolenbroek incdir="-I$1/include" 1437*b636d99dSDavid van Moolenbroek fi 1438*b636d99dSDavid van Moolenbroek]) 1439