Damn the torpedos[1], commit it anyway.
[obnox/wireshark/wip.git] / acinclude.m4
index 7492e886dda6ccdb7820a8912384a897c04d7ee0..6a120ce07db02d408d19e004797bfbd5faac9616 100644 (file)
@@ -2,7 +2,7 @@ dnl Macros that test for specific features.
 dnl This file is part of the Autoconf packaging for Ethereal.
 dnl Copyright (C) 1998-2000 by Gerald Combs.
 dnl
-dnl $Id: acinclude.m4,v 1.22 2001/04/19 01:08:16 guy Exp $
+dnl $Id: acinclude.m4,v 1.35 2001/09/28 05:41:44 guy Exp $
 dnl
 dnl This program is free software; you can redistribute it and/or modify
 dnl it under the terms of the GNU General Public License as published by
@@ -103,10 +103,10 @@ AC_DEFUN(AC_ETHEREAL_IPV6_STACK,
        v6lib=none
 
        AC_MSG_CHECKING([ipv6 stack type])
-       for i in v6d toshiba kame inria zeta linux; do
+       for i in v6d toshiba kame inria zeta linux linux-glibc; do
                case $i in
                v6d)
-                       AC_EGREP_CPP(yes, [dnl
+                       AC_EGREP_CPP(yes, [
 #include </usr/local/v6/include/sys/types.h>
 #ifdef __V6D__
 yes
@@ -116,7 +116,7 @@ yes
                                CFLAGS="-I/usr/local/v6/include $CFLAGS"])
                        ;;
                toshiba)
-                       AC_EGREP_CPP(yes, [dnl
+                       AC_EGREP_CPP(yes, [
 #include <sys/param.h>
 #ifdef _TOSHIBA_INET6
 yes
@@ -126,7 +126,7 @@ yes
                                CFLAGS="-DINET6 $CFLAGS"])
                        ;;
                kame)
-                       AC_EGREP_CPP(yes, [dnl
+                       AC_EGREP_CPP(yes, [
 #include <netinet/in.h>
 #ifdef __KAME__
 yes
@@ -136,7 +136,7 @@ yes
                                CFLAGS="-DINET6 $CFLAGS"])
                        ;;
                inria)
-                       AC_EGREP_CPP(yes, [dnl
+                       AC_EGREP_CPP(yes, [
 #include <netinet/in.h>
 #ifdef IPV6_INRIA_VERSION
 yes
@@ -144,7 +144,7 @@ yes
                                [v6type=$i; CFLAGS="-DINET6 $CFLAGS"])
                        ;;
                zeta)
-                       AC_EGREP_CPP(yes, [dnl
+                       AC_EGREP_CPP(yes, [
 #include <sys/param.h>
 #ifdef _ZETA_MINAMI_INET6
 yes
@@ -161,6 +161,16 @@ yes
                                CFLAGS="-DINET6 $CFLAGS"
                        fi
                        ;;
+               linux-glibc)
+                       AC_EGREP_CPP(yes, [
+#include <features.h>
+#if defined(__GLIBC__) && defined(__GLIBC_MINOR__)
+#if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || __GLIBC__ > 2
+yes
+#endif
+#endif],
+                       [v6type=$i; v6lib=inet6; CFLAGS="-DINET6 $CFLAGS"])
+                       ;;
                esac
                if test "$v6type" != "unknown"; then
                        break
@@ -242,22 +252,51 @@ AC_DEFUN(AC_ETHEREAL_SOCKET_LIB_CHECK,
 #
 AC_DEFUN(AC_ETHEREAL_PCAP_CHECK,
 [
-       # Evidently, some systems have pcap.h, etc. in */include/pcap
-       AC_MSG_CHECKING(for extraneous pcap header directories)
-       found_pcap_dir=""
-       for pcap_dir in /usr/include/pcap /usr/local/include/pcap $prefix/include
-       do
-         if test -d $pcap_dir ; then
-           CFLAGS="$CFLAGS -I$pcap_dir"
-           CPPFLAGS="$CPPFLAGS -I$pcap_dir"
-           found_pcap_dir=" $found_pcap_dir -I$pcap_dir"
-         fi
-       done
+       if test -z "$pcap_dir"
+       then
+         #
+         # The user didn't specify a directory in which libpcap resides;
+         # we assume that the current library search path will work,
+         # but we may have to look for the header in a "pcap"
+         # subdirectory of "/usr/include" or "/usr/local/include",
+         # as some systems apparently put "pcap.h" in a "pcap"
+         # subdirectory, and we also check "$prefix/include".
+         #
+         # XXX - should we just add "$prefix/include" to the include
+         # search path and "$prefix/lib" to the library search path?
+         #
+         AC_MSG_CHECKING(for extraneous pcap header directories)
+         found_pcap_dir=""
+         for pcap_dir in /usr/include/pcap /usr/local/include/pcap $prefix/include
+         do
+           if test -d $pcap_dir ; then
+               CFLAGS="$CFLAGS -I$pcap_dir"
+               CPPFLAGS="$CPPFLAGS -I$pcap_dir"
+               found_pcap_dir=" $found_pcap_dir -I$pcap_dir"
+           fi
+         done
 
-       if test "$found_pcap_dir" != "" ; then
-         AC_MSG_RESULT(found --$found_pcap_dir added to CFLAGS)
+         if test "$found_pcap_dir" != "" ; then
+           AC_MSG_RESULT(found --$found_pcap_dir added to CFLAGS)
+         else
+           AC_MSG_RESULT(not found)
+         fi
        else
-         AC_MSG_RESULT(not found)
+         #
+         # The user specified a directory in which libpcap resides,
+         # so add the "include" subdirectory of that directory to
+         # the include file search path and the "lib" subdirectory
+         # of that directory to the library search path.
+         #
+         # XXX - if there's also a libpcap in a directory that's
+         # already in CFLAGS, CPPFLAGS, or LDFLAGS, this won't
+         # make us find the version in the specified directory,
+         # as the compiler and/or linker will search that other
+         # directory before it searches the specified directory.
+         #
+         CFLAGS="$CFLAGS -I$pcap_dir/include"
+         CPPFLAGS="$CPPFLAGS -I$pcap_dir/include"
+         AC_ETHEREAL_ADD_DASH_L(LDFLAGS, $pcap_dir/lib)
        fi
 
        # Pcap header checks
@@ -277,21 +316,62 @@ AC_DEFUN(AC_ETHEREAL_PCAP_CHECK,
        AC_SUBST(PCAP_LIBS)
 ])
 
+#
+# AC_ETHEREAL_PCAP_VERSION_CHECK
+#
+# Check whether "pcap_version" is defined by libpcap.
+#
+AC_DEFUN(AC_ETHEREAL_PCAP_VERSION_CHECK,
+[
+       AC_MSG_CHECKING(whether pcap_version is defined by libpcap)
+       ac_save_LIBS="$LIBS"
+       LIBS="$PCAP_LIBS $SOCKET_LIBS $NSL_LIBS $LIBS"
+       AC_TRY_LINK([],
+          [
+char *
+return_pcap_version(void)
+{
+       extern char pcap_version[];
+
+       return pcap_version;
+}
+          ],
+          ac_cv_pcap_version_defined=yes,
+          ac_cv_pcap_version_defined=no,
+          [echo $ac_n "cross compiling; assumed OK... $ac_c"])
+       LIBS="$ac_save_LIBS"
+       if test "$ac_cv_pcap_version_defined" = yes ; then
+               AC_MSG_RESULT(yes)
+               AC_DEFINE(HAVE_PCAP_VERSION)
+       else
+               AC_MSG_RESULT(no)
+       fi
+])
+
 #
 # AC_ETHEREAL_ZLIB_CHECK
 #
 AC_DEFUN(AC_ETHEREAL_ZLIB_CHECK,
 [
-        AC_CHECK_HEADER(zlib.h,,enable_zlib=no)
+       #
+       # Make sure we have "zlib.h".  If we don't, it means we probably
+       # don't have zlib, so don't use it.
+       #
+       AC_CHECK_HEADER(zlib.h,,enable_zlib=no)
 
-        dnl
-        dnl Check for "gzgets()" in zlib, because we need it, but
-        dnl some older versions of zlib don't have it.  It appears
-        dnl from the ChangeLog that any released version of zlib
-        dnl with "gzgets()" should have the other routines we
-        dnl depend on, such as "gzseek()", "gztell()", and "zError()".
-        dnl
-        AC_CHECK_LIB(z, gzgets,,enable_zlib=no)
+       if test x$enable_zlib != xno
+       then
+               #
+               # Well, we at least have the zlib header file.
+               #
+               # Check for "gzseek()" in zlib, because we need it, but
+               # some older versions of zlib don't have it.  It appears
+               # from the zlib ChangeLog that any released version of zlib
+               # with "gzseek()" should have the other routines we
+               # depend on, such as "gztell()" and "zError()".
+               #
+               AC_CHECK_LIB(z, gzseek,,enable_zlib=no)
+       fi
 ])
 
 #
@@ -348,46 +428,37 @@ AC_DEFUN(AC_ETHEREAL_UCDSNMP_CHECK,
 #
 AC_DEFUN(AC_ETHEREAL_SSL_CHECK,
 [
-       want_ssl=yes
+       want_ssl=defaultyes
 
        AC_ARG_WITH(ssl,
        [  --with-ssl=DIR          use SSL crypto library, located in directory DIR.], [
-       if test $withval = no
-       then
+       if   test "x$withval" = "xno";  then
                want_ssl=no
-       else
+       elif test "x$withval" = "xyes"; then
+               want_ssl=yes
+       elif test -d "$withval"; then
                want_ssl=yes
-               ssl_user_dir=$withval
+               AC_ETHEREAL_ADD_DASH_L(LDFLAGS, ${withval}/lib)
        fi
        ])
 
-       if test $want_ssl = yes
-       then
-               ssldir=""
-
-               for d in $ssl_user_dir $prefix
-               do
-                       if test x$d != xNONE 
-                       then
-                               AC_MSG_CHECKING($d for ssl)
+       if test "x$want_ssl" = "xdefaultyes"; then
+               want_ssl=yes
+               withval=/usr/local/ssl
+               if test -d "$withval"; then
+                       AC_ETHEREAL_ADD_DASH_L(LDFLAGS, ${withval}/lib)
+               fi
+       fi
 
-                               if test x$d != x/usr/local && test -f $d/lib/libcrypto.a
-                               then
-                                       AC_MSG_RESULT(found)
-                                       ssldir=$d
-                                       break
-                               else
-                                       AC_MSG_RESULT(not found)
-                               fi
-                       fi
-               done
+       if test "x$want_ssl" = "xyes"; then
+               AC_CHECK_LIB(crypto, EVP_md5,
+                 [
+                   SSL_LIBS=-lcrypto
+                 ],,
+               )
 
-               if test x$ssldir != x
-               then
-                       SSL_LIBS=-lcrypto
-                       CFLAGS="$CFLAGS -I${ssldir}/include"
-                       CPPFLAGS="$CPPFLAGS -I${ssldir}/include"
-                       AC_ETHEREAL_ADD_DASH_L(LDFLAGS, ${ssldir}/lib)
-               fi
+       else
+               AC_MSG_RESULT(not required)
        fi
+
 ])