Boolean fields are just like other fields - if you use the field name
[obnox/wireshark/wip.git] / acinclude.m4
index 4295ac507191ae2824447e1488975b8dd1935584..cf7bbadcb710d8528b6deb9f8aecaebbceb2ef76 100644 (file)
@@ -1,6 +1,8 @@
 dnl Macros that test for specific features.
-dnl This file is part of Autoconf.
-dnl Copyright (C) 1992, 1993, 1994, 1995, 1996 Free Software Foundation, Inc.
+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.21 2001/01/18 09:54:09 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
@@ -48,15 +50,35 @@ dnl Written by David MacKenzie, with help from
 dnl Franc,ois Pinard, Karl Berry, Richard Pixley, Ian Lance Taylor,
 dnl Roland McGrath, Noah Friedman, david d zuhn, and many others.
 
+#
+# AC_ETHEREAL_ADD_DASH_L
+#
+# Add to the variable specified as the first argument a "-L" flag for the
+# directory specified as the second argument, and, on Solaris, add a
+# "-R" flag for it as well.
+#
+# XXX - IRIX, and other OSes, may require some flag equivalent to
+# "-R" here.
+#
+AC_DEFUN(AC_ETHEREAL_ADD_DASH_L,
+[$1="$$1 -L$2"
+case "$host_os" in
+  solaris*)
+    $1="$$1 -R$2"
+  ;;
+esac
+])
+
+
 #
 # AC_ETHEREAL_STRUCT_SA_LEN
 #
-dnl AC_STRUCT_ST_BLKSIZE extracted from the file in qustion,
+dnl AC_STRUCT_ST_BLKSIZE extracted from the file in question,
 dnl "acspecific.m4" in GNU Autoconf 2.12, and turned into
 dnl AC_ETHEREAL_STRUCT_SA_LEN, which checks if "struct sockaddr"
 dnl has the 4.4BSD "sa_len" member, and defines HAVE_SA_LEN; that's
 dnl what's in this file.
-dnl Done by Guy Harris <guy@netapp.com> on 1998-11-14. 
+dnl Done by Guy Harris <guy@alum.mit.edu> on 1998-11-14. 
 
 dnl ### Checks for structure members
 
@@ -70,12 +92,11 @@ if test $ac_cv_ethereal_struct_sa_len = yes; then
 fi
 ])
 
-
 #
 # AC_ETHEREAL_IPV6_STACK
 #
 # By Jun-ichiro "itojun" Hagino, <itojun@iijlab.net>
-
+#
 AC_DEFUN(AC_ETHEREAL_IPV6_STACK,
 [
        v6type=unknown
@@ -149,7 +170,7 @@ yes
        if test "$v6lib" != "none"; then
                for dir in $v6libdir /usr/local/v6/lib /usr/local/lib; do
                        if test -d $dir -a -f $dir/lib$v6lib.a; then
-                               LIBS="-L$dir -l$v6lib $LIBS"
+                               LIBS="-L$dir $LIBS -l$v6lib"
                                break
                        fi
                done
@@ -159,3 +180,215 @@ yes
        fi
        AC_MSG_RESULT(["$v6type, $v6lib"])
 ])
+
+#
+# AC_ETHEREAL_GETHOSTBY_LIB_CHECK
+#
+# Checks whether we need "-lnsl" to get "gethostby*()", which we use
+# in "resolv.c".
+#
+# Adapted from stuff in the AC_PATH_XTRA macro in "acspecific.m4" in
+# GNU Autoconf 2.13; the comment came from there.
+# Done by Guy Harris <guy@alum.mit.edu> on 2000-01-14. 
+#
+AC_DEFUN(AC_ETHEREAL_GETHOSTBY_LIB_CHECK,
+[
+    # msh@cis.ufl.edu says -lnsl (and -lsocket) are needed for his 386/AT,
+    # to get the SysV transport functions.
+    # chad@anasazi.com says the Pyramid MIS-ES running DC/OSx (SVR4)
+    # needs -lnsl.
+    # The nsl library prevents programs from opening the X display
+    # on Irix 5.2, according to dickey@clark.net.
+    AC_CHECK_FUNC(gethostbyname)
+    if test $ac_cv_func_gethostbyname = no; then
+      AC_CHECK_LIB(nsl, gethostbyname, NSL_LIBS="-lnsl")
+    fi
+    AC_SUBST(NSL_LIBS)
+])
+
+#
+# AC_ETHEREAL_SOCKET_LIB_CHECK
+#
+# Checks whether we need "-lsocket" to get "socket()", which is used
+# by libpcap on some platforms - and, in effect, "gethostby*()" on
+# most if not all platforms (so that it can use NIS or DNS or...
+# to look up host names).
+#
+# Adapted from stuff in the AC_PATH_XTRA macro in "acspecific.m4" in
+# GNU Autoconf 2.13; the comment came from there.
+# Done by Guy Harris <guy@alum.mit.edu> on 2000-01-14. 
+#
+# We use "connect" because that's what AC_PATH_XTRA did.
+#
+AC_DEFUN(AC_ETHEREAL_SOCKET_LIB_CHECK,
+[
+    # lieder@skyler.mavd.honeywell.com says without -lsocket,
+    # socket/setsockopt and other routines are undefined under SCO ODT
+    # 2.0.  But -lsocket is broken on IRIX 5.2 (and is not necessary
+    # on later versions), says simon@lia.di.epfl.ch: it contains
+    # gethostby* variants that don't use the nameserver (or something).
+    # -lsocket must be given before -lnsl if both are needed.
+    # We assume that if connect needs -lnsl, so does gethostbyname.
+    AC_CHECK_FUNC(connect)
+    if test $ac_cv_func_connect = no; then
+      AC_CHECK_LIB(socket, connect, SOCKET_LIBS="-lsocket",
+               AC_MSG_ERROR(Function 'socket' not found.), $NSL_LIBS)
+    fi
+    AC_SUBST(SOCKET_LIBS)
+])
+
+#
+# AC_ETHEREAL_PCAP_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 "$found_pcap_dir" != "" ; then
+         AC_MSG_RESULT(found --$found_pcap_dir added to CFLAGS)
+       else
+         AC_MSG_RESULT(not found)
+       fi
+
+       # Pcap header checks
+       AC_CHECK_HEADER(net/bpf.h,,
+           AC_MSG_ERROR([[Header file net/bpf.h not found; if you installed libpcap from source, did you also do \"make install-incl\"?]]))
+       AC_CHECK_HEADER(pcap.h,, AC_MSG_ERROR(Header file pcap.h not found.))
+
+       #
+       # Check to see if we find "pcap_open_live" in "-lpcap".
+       #
+       AC_CHECK_LIB(pcap, pcap_open_live,
+         [
+           PCAP_LIBS=-lpcap
+           AC_DEFINE(HAVE_LIBPCAP)
+         ], AC_MSG_ERROR(Library libpcap not found.),
+         $SOCKET_LIBS $NSL_LIBS)
+       AC_SUBST(PCAP_LIBS)
+])
+
+#
+# AC_ETHEREAL_ZLIB_CHECK
+#
+AC_DEFUN(AC_ETHEREAL_ZLIB_CHECK,
+[
+        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)
+])
+
+#
+# AC_ETHEREAL_UCDSNMP_CHECK
+#
+AC_DEFUN(AC_ETHEREAL_UCDSNMP_CHECK,
+[
+       want_ucdsnmp=yes
+
+       AC_ARG_WITH(ucdsnmp,
+       [  --with-ucdsnmp=DIR      use UCD SNMP client library, located in directory DIR.], [
+       if test $withval = no
+       then
+               want_ucdsnmp=no
+       else
+               want_ucdsnmp=yes
+               ucdsnmp_user_dir=$withval
+       fi
+       ])
+
+       if test $want_ucdsnmp = yes
+       then
+               ucdsnmpdir=""
+
+               for d in $ucdsnmp_user_dir $prefix
+               do
+                       if test x$d != xNONE 
+                       then
+                               AC_MSG_CHECKING($d for ucd-snmp)
+
+                               if test x$d != x/usr/local && test -f $d/include/ucd-snmp/snmp.h
+                               then
+                                       AC_MSG_RESULT(found)
+                                       ucdsnmpdir=$d
+                                       break
+                               else
+                                       AC_MSG_RESULT(not found)
+                               fi
+                       fi
+               done
+
+               if test x$ucdsnmpdir != x
+               then
+                       AC_MSG_RESULT(added $d to paths)
+                       CFLAGS="$CFLAGS -I${ucdsnmpdir}/include"
+                       CPPFLAGS="$CPPFLAGS -I${ucdsnmpdir}/include"
+                       AC_ETHEREAL_ADD_DASH_L(LDFLAGS, ${ucdsnmpdir}/lib)
+               fi
+       fi
+])
+
+#
+# AC_ETHEREAL_SSL_CHECK
+#
+AC_DEFUN(AC_ETHEREAL_SSL_CHECK,
+[
+       want_ssl=yes
+
+       AC_ARG_WITH(ssl,
+       [  --with-ssl=DIR          use SSL crypto library, located in directory DIR.], [
+       if test $withval = no
+       then
+               want_ssl=no
+       else
+               want_ssl=yes
+               ssl_user_dir=$withval
+       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$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$ssldir != x
+               then
+                       SSL_LIBS=-lcrypto
+                       AC_MSG_RESULT(added $d to paths)
+                       CFLAGS="$CFLAGS -I${ssldir}/include"
+                       CPPFLAGS="$CPPFLAGS -I${ssldir}/include"
+                       AC_ETHEREAL_ADD_DASH_L(LDFLAGS, ${ssldir}/lib)
+               fi
+       fi
+])