IP Prefix field support in CDP, from Paul Ionescu.
[obnox/wireshark/wip.git] / acinclude.m4
index ff3f2b04a90d91676b58ddb608a97ddc4f5b95c4..2d918ee37e3834117de356e43759ae6cf2281b30 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.20 2000/01/21 06:18:15 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
@@ -160,6 +181,62 @@ yes
        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
 #
@@ -171,24 +248,33 @@ AC_DEFUN(AC_ETHEREAL_PCAP_CHECK,
        for pcap_dir in /usr/include/pcap /usr/local/include/pcap $prefix/include
        do
          if test -d $pcap_dir ; then
-           LIBS="$LIBS -L$pcap_dir"
            CFLAGS="$CFLAGS -I$pcap_dir"
            CPPFLAGS="$CPPFLAGS -I$pcap_dir"
-           found_pcap_dir=" $found_pcap_dir -L$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 LIBS and CFLAGS)
+         AC_MSG_RESULT(found --$found_pcap_dir added to CFLAGS)
        else
          AC_MSG_RESULT(not found)
        fi
 
-       # Pcap checks
+       # 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.))
-       AC_CHECK_LIB(pcap, pcap_open_offline,, AC_MSG_ERROR(Library libpcap 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)
 ])
 
 #
@@ -197,7 +283,15 @@ AC_DEFUN(AC_ETHEREAL_PCAP_CHECK,
 AC_DEFUN(AC_ETHEREAL_ZLIB_CHECK,
 [
         AC_CHECK_HEADER(zlib.h,,enable_zlib=no)
-        AC_CHECK_LIB(z, gzopen,,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)
 ])
 
 #
@@ -224,13 +318,18 @@ AC_DEFUN(AC_ETHEREAL_UCDSNMP_CHECK,
 
                for d in $ucdsnmp_user_dir $prefix
                do
-                       AC_MSG_CHECKING($d)
-
-                       if test x$d != x/usr/local && test -f $d/include/ucd-snmp/snmp.h
+                       if test x$d != xNONE 
                        then
-                               AC_MSG_RESULT(found ucd-snmp in $d)
-                               ucdsnmpdir=$d
-                               break
+                               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
 
@@ -239,7 +338,7 @@ AC_DEFUN(AC_ETHEREAL_UCDSNMP_CHECK,
                        AC_MSG_RESULT(added $d to paths)
                        CFLAGS="$CFLAGS -I${ucdsnmpdir}/include"
                        CPPFLAGS="$CPPFLAGS -I${ucdsnmpdir}/include"
-                       LIBS="$LIBS -L${ucdsnmpdir}/lib"
+                       AC_ETHEREAL_ADD_DASH_L(LDFLAGS, ${ucdsnmpdir}/lib)
                fi
        fi
 ])