replace *a lot* of file related calls by their GLib counterparts. This is necessary...
[obnox/wireshark/wip.git] / configure.in
index 6ab66a57bd70105e0497c97bb897c01be6a04bbb..79c7fcdf43ef5ae36adef3a8fba4616c51263adf 100644 (file)
@@ -1,28 +1,20 @@
-# $Id: configure.in,v 1.238 2003/12/17 05:16:19 guy Exp $
-dnl
-dnl Process this file with autoconf 2.13 or later to produce a
-dnl configure script; 2.12 doesn't generate a "configure" script that
-dnl defines SHELL, and "Makefile.in" has
-dnl
-dnl    SHELL = @SHELL@
-dnl
-dnl which requires it to be defined - and there may be other problems
-dnl with pre-2.13 "autoconf" as well.
-dnl
-AC_INIT(etypes.h)
+# $Id$
+#
+AC_INIT(cfile.h)
 
-AC_PREREQ(2.13)
+AC_PREREQ(2.52)
 
 dnl Check for CPU / vendor / OS
 AC_CANONICAL_HOST
 AC_CANONICAL_TARGET
 
-AM_INIT_AUTOMAKE(ethereal, 0.10.0a)
+AM_INIT_AUTOMAKE(ethereal, 0.10.13)
+
+AM_DISABLE_STATIC
 
 dnl Checks for programs.
 AC_PROG_CC
 AC_PROG_CPP
-AM_DISABLE_STATIC
 dnl Work around libtool bug (fixed in the version 1.5a?)
 AC_DEFUN([AC_PROVIDE_AC_LIBTOOL_DLOPEN], )
 AC_LIBTOOL_DLOPEN
@@ -38,12 +30,58 @@ then
        #
        AC_MSG_ERROR(I couldn't find pod2man; make sure it's installed and in your path)
 fi
+AC_PATH_PROG(POD2HTML, pod2html)
+if test "x$POD2HTML" = x
+then
+       #
+       # The alternative is not to build the HTML man pages....
+       #
+       AC_MSG_ERROR(I couldn't find pod2html; make sure it's installed and in your path)
+fi
+AC_PATH_PROG(HTML_VIEWER, htmlview)
+if test "x$HTML_VIEWER" = x
+then
+       AC_DEFINE_UNQUOTED(HTML_VIEWER, "mozilla", [HTML viewer, e.g. mozilla])
+else
+       AC_DEFINE_UNQUOTED(HTML_VIEWER, "htmlview", [HTML viewer, e.g. mozilla])
+fi
+
 AC_PATH_PROG(LEX, flex)
 AC_PATH_PROG(PYTHON, python)
 
 AC_SUBST(PERL)
+AC_SUBST(POD2MAN)
+AC_SUBST(POD2HTML)
 AC_SUBST(LEX)
+AC_SUBST(FLEX_PATH)
 AC_SUBST(PYTHON)
+AC_SUBST(XSLTPROC)
+AC_SUBST(XMLLINT)
+
+# Check for doxygen
+AC_PATH_PROG(DOXYGEN, doxygen)
+AC_CHECK_PROG(HAVE_DOXYGEN, doxygen, "yes", "no")
+AM_CONDITIONAL(HAVE_DOXYGEN, test x$HAVE_DOXYGEN = xyes)
+
+# Check for xsltproc
+AC_PATH_PROG(XSLTPROC, xsltproc)
+AC_CHECK_PROG(HAVE_XSLTPROC, xsltproc, "yes", "no")
+AM_CONDITIONAL(HAVE_XSLTPROC, test x$HAVE_XSLTPROC = xyes)
+
+# Check for xmllint
+AC_PATH_PROG(XMLLINT, xmllint)
+AC_CHECK_PROG(HAVE_XMLLINT, xmllint, "yes", "no")
+AM_CONDITIONAL(HAVE_XMLLINT, test x$HAVE_XMLLINT = xyes)
+
+# Check for fop (translate .fo to e.g. pdf)
+AC_PATH_PROG(FOP, fop)
+AC_CHECK_PROG(HAVE_FOP, fop, "yes", "no")
+AM_CONDITIONAL(HAVE_FOP, test x$HAVE_FOP = xyes)
+
+# Check for hhc (html help compiler)
+AC_PATH_PROG(HHC, hhc.exe)
+AC_CHECK_PROG(HAVE_HHC, hhc.exe, "yes", "no")
+AM_CONDITIONAL(HAVE_HHC, test x$HAVE_HHC = xyes)
 
 # Check for packaging utilities
 # For now, we check to see if the various packaging utilites are in our
@@ -74,16 +112,16 @@ AC_SUBST(HAVE_RPM)
 # argument will compile with non-GCC compilers.
 #
 AC_ARG_WITH(extra-gcc-checks,
-[  --with-extra-gcc-checks do additional -W checks in GCC.  [default=no]],
+[  --with-extra-gcc-checks Do additional -W checks in GCC.  [default=no]],
 [
        if test $withval != no
        then
-               ethereal_extra_gcc_flags=" -Wcast-qual -Wcast-align"
+               ethereal_extra_gcc_flags=" -Wcast-qual -Wcast-align -Wbad-function-cast -pedantic -Wstrict-prototypes -Wmissing-declarations -Wwrite-strings"
        fi
 ],)
-AC_MSG_CHECKING(to see if we can add '-Wall -W$ethereal_extra_gcc_flags' to CFLAGS)
+AC_MSG_CHECKING(to see if we can add '-Wall -W $ethereal_extra_gcc_flags' to CFLAGS)
 if test x$GCC != x ; then
-  CFLAGS="-D_U_=\"__attribute__((unused))\" -Wall -W$ethereal_extra_gcc_flags $CFLAGS"
+  CFLAGS="-D_U_=\"__attribute__((unused))\" -Wall -W $ethereal_extra_gcc_flags $CFLAGS"
   AC_MSG_RESULT(yes)
 else
   CFLAGS="-D_U_=\"\" $CFLAGS"
@@ -139,21 +177,79 @@ else
                CFLAGS="-no-cpp-precomp $CFLAGS"
                AC_MSG_RESULT(Apple GCC - added -no-cpp-precomp)
                ;;
+       cygwin*)
+               #
+               # Shared libraries in cygwin/Win32 must never contain
+               # undefined symbols.
+               #
+               LDFLAGS="$LDFLAGS -no-undefined"
+               AC_MSG_RESULT(CygWin GCC - added -no-undefined to LDFLAGS)
+               ;;
        *)
                AC_MSG_RESULT(none needed)
                ;;
        esac
 fi
 
+#
+# On OS X, if we find the headers for Core Foundation and Launch Services,
+# add -framework options to link with Application Services (of which
+# Launch Services is a subframework) and Core Foundation (required by
+# the Launch Services APIs), so we can use that to launch a Web browser
+# from the Help menu.
+#
+# (Do those headers exist on pure Darwin?  If so, does the CoreFoundation
+# *and* Launch Services code exist there, or are those headers just stubs?
+# If the frameworks aren't present on Darwin, how *should* we check for
+# their existence?)
+#
+case "$host_os" in
+
+darwin*)
+       AC_MSG_CHECKING(whether we can build with Core Foundation and Launch Services)
+       ac_save_LIBS="$LIBS"
+       ac_frameworks="-framework ApplicationServices -framework CoreFoundation"
+       LIBS="$LIBS $ac_frameworks"
+       AC_TRY_LINK(
+          [
+#       include <CoreFoundation/CFBase.h>
+#       include <CoreFoundation/CFString.h>
+#       include <CoreFoundation/CFURL.h>
+#       include <ApplicationServices/ApplicationServices.h>
+          ],
+          [
+       CFStringRef url_CFString;
+       CFURLRef url_CFURL;
+       OSStatus status;
+
+       url_CFString = CFStringCreateWithCString(NULL, "", kCFStringEncodingASCII);
+       url_CFURL = CFURLCreateWithString(NULL, url_CFString, NULL);
+       status = LSOpenCFURLRef(url_CFURL, NULL);
+          ],
+          ac_cv_can_use_cf_and_ls=yes,
+          ac_cv_can_use_cf_and_ls=no,
+          [echo $ac_n "cross compiling; assumed OK... $ac_c"])
+       if test "$ac_cv_can_use_cf_and_ls" = yes ; then
+               AC_DEFINE(HAVE_OS_X_FRAMEWORKS, 1, [Define to 1 if you have OS X frameworks])
+               FRAMEWORKS="$ac_frameworks"
+               AC_MSG_RESULT(yes)
+       else
+               AC_MSG_RESULT(no)
+       fi
+       LIBS="$ac_save_LIBS"
+       ;;
+esac
+AC_SUBST(FRAMEWORKS)
+
 dnl Look in /usr/local for header files and libraries ?
 dnl XXX FIXME don't include /usr/local if it is already in the system
 dnl search path as this causes gcc 3.2 on Linux to complain about a change
 dnl of the system search order for includes
 AC_ARG_ENABLE(usr-local,
-[  --enable-usr-local      look for headers and libs in /usr/local tree.  [default=yes]],enable_usr_local=$enableval,enable_usr_local=yes)
+[  --enable-usr-local      look for headers and libs in /usr/local tree.  [default=yes]],ac_cv_enable_usr_local=$enableval,ac_cv_enable_usr_local=yes)
 
 AC_MSG_CHECKING(whether to use /usr/local for headers and libraries)
-if test "x$enable_usr_local" = "xyes" ; then
+if test "x$ac_cv_enable_usr_local" = "xyes" ; then
        AC_MSG_RESULT(yes)
        #
        # Arrange that we search for header files in the source directory
@@ -229,7 +325,7 @@ AC_ARG_ENABLE(ethereal,
 [  --enable-ethereal       build GTK+-based ethereal.  [default=yes]],enable_ethereal=$enableval,enable_ethereal=yes)
 
 AC_ARG_ENABLE(gtk2,
-[  --enable-gtk2           build Glib2/Gtk2+-based (t)ethereal.  [default=no]],enable_gtk2=$enableval,enable_gtk2=no)
+[  --disable-gtk2          build Glib1/Gtk1+-based (t)ethereal.  [default=no]],enable_gtk2=$enableval,enable_gtk2=yes)
 AM_CONDITIONAL(USE_GTK2, test x$enable_gtk2 = xyes)
 
 AC_ARG_ENABLE(threads,
@@ -251,7 +347,16 @@ if test "x$enable_profile_build" = "xyes" ; then
 else
        AC_MSG_RESULT(no)
 fi
-       
+
+# Create DATAFILE_DIR #define for config.h
+datafiledir=$datadir/ethereal
+datafiledir=`(
+    test "x$prefix" = xNONE && prefix=$ac_default_prefix
+    test "x$exec_prefix" = xNONE && exec_prefix=${prefix}
+    eval echo "$datafiledir"
+)`
+AC_DEFINE_UNQUOTED(DATAFILE_DIR,"$datafiledir", [Directory for data])
+
 # GTK checks
 # We don't add $GLIB_LIBS to LIBS, because we don't want to force all
 # programs to be built with GTK+.
@@ -282,7 +387,7 @@ if test "$GTK_OK" = "no" ; then
        ethereal_man=""
        # Honor GLIB_CFLAGS
        if test "x$enable_gtk2" = "xyes" ; then
-               AM_PATH_GLIB_2_0(2.0.0, CFLAGS="$CFLAGS $GLIB_CFLAGS", AC_MSG_ERROR(GLib distribution not found.), gmodule)
+               AM_PATH_GLIB_2_0(2.0.0, CFLAGS="$CFLAGS $GLIB_CFLAGS", AC_MSG_ERROR(GLib2 distribution not found.), gmodule)
        else
                AM_PATH_GLIB(1.2.0, CFLAGS="$CFLAGS $GLIB_CFLAGS", AC_MSG_ERROR(GLib distribution not found.), gmodule)
        fi
@@ -322,7 +427,8 @@ main ()
     return 1;  /* failure */
 }
 ], ac_cv_glib_supports_modules=yes, ac_cv_glib_supports_modules=no,
-   [echo $ac_n "cross compiling; assumed OK... $ac_c"])
+   [echo $ac_n "cross compiling; assumed OK... $ac_c"
+    ac_cv_glib_supports_modules=yes])
 CFLAGS="$ac_save_CFLAGS"
 LIBS="$ac_save_LIBS"
 if test "$ac_cv_glib_supports_modules" = yes ; then
@@ -333,10 +439,71 @@ else
   have_plugins=no
 fi
 
+#
+# We can't just check for <inttypes.h> - some systems have one that
+# doesn't define all the PRI[doxu]64 macros.
+#
+AC_CHECK_HEADERS(inttypes.h,
+  [
+    #
+    # OK, we have inttypes.h, but does it define those macros?
+    #
+    AC_MSG_CHECKING([[whether inttypes.h defines the PRI[doxu]64 macros]])
+    AC_COMPILE_IFELSE(
+      [
+       AC_LANG_SOURCE(
+         [[
+           #include <inttypes.h>
+           #include <glib.h>
+           #include <stdio.h>
+           #include <sys/types.h>
+
+           main()
+           {
+             printf("%" PRId64 "\n", (gint64)1);
+             printf("%" PRIo64 "\n", (guint64)1);
+             printf("%" PRIx64 "\n", (guint64)1);
+             printf("%" PRIX64 "\n", (guint64)1);
+             printf("%" PRIu64 "\n", (guint64)1);
+           }
+         ]])
+      ],
+      [
+       AC_MSG_RESULT(yes)
+       ac_ethereal_inttypes_h_defines_formats=yes
+      ],
+      [
+       AC_MSG_RESULT(no)
+       ac_ethereal_inttypes_h_defines_formats=no
+      ])
+  ],
+  [
+    #
+    # We don't have inttypes.h, so it obviously can't define those
+    # macros.
+    #
+    ac_ethereal_inttypes_h_defines_formats=no
+  ])
+if test "$ac_ethereal_inttypes_h_defines_formats" = yes; then
+  AC_DEFINE(INTTYPES_H_DEFINES_FORMATS,,[Define if <inttypes.h> defines PRI[doxu]64 macros])
+else
+  AC_ETHEREAL_CHECK_64BIT_FORMAT(ll,
+    [
+      AC_ETHEREAL_CHECK_64BIT_FORMAT(L,
+       [
+         AC_ETHEREAL_CHECK_64BIT_FORMAT(q,
+           [
+             AC_MSG_ERROR([neither %llx nor %Lx nor %qx worked on a 64-bit integer])
+           ])
+       ])
+    ])
+fi
 
 AC_SUBST(ethereal_bin)
 AC_SUBST(ethereal_man)
 
+rdps_bin="rdps\$(EXEEXT)"
+AC_SUBST(rdps_bin)
 
 
 # Enable/disable tethereal
@@ -374,6 +541,22 @@ AC_SUBST(editcap_bin)
 AC_SUBST(editcap_man)
 
 
+# Enable/disable capinfos
+
+AC_ARG_ENABLE(capinfos,
+[  --enable-capinfos       build capinfos.  [default=yes]],enable_capinfos=$enableval,enable_capinfos=yes)
+
+if test "x$enable_capinfos" = "xyes" ; then
+       capinfos_bin="capinfos\$(EXEEXT)"
+       capinfos_man="capinfos.1"
+else
+       capinfos_bin=""
+       capinfos_man=""
+fi
+AC_SUBST(capinfos_bin)
+AC_SUBST(capinfos_man)
+
+
 # Enable/disable mergecap
 
 AC_ARG_ENABLE(mergecap,
@@ -424,7 +607,7 @@ AC_SUBST(idl2eth_man)
 # Enable/disable dftest
 
 AC_ARG_ENABLE(dftest,
-[  --enable-dftest         build dftest.  [default=no]],enable_dftest=$enableval,enable_dftest=no)
+[  --enable-dftest         build dftest.  [default=yes]],enable_dftest=$enableval,enable_dftest=yes)
 
 if test "x$enable_dftest" = "xyes" ; then
        dftest_bin="dftest\$(EXEEXT)"
@@ -437,7 +620,7 @@ AC_SUBST(dftest_bin)
 # Enable/disable randpkt
 
 AC_ARG_ENABLE(randpkt,
-[  --enable-randpkt        build randpkt.  [default=no]],enable_randpkt=$enableval,enable_randpkt=no)
+[  --enable-randpkt        build randpkt.  [default=yes]],enable_randpkt=$enableval,enable_randpkt=yes)
 
 if test "x$enable_randpkt" = "xyes" ; then
        randpkt_bin="randpkt\$(EXEEXT)"
@@ -459,9 +642,7 @@ dnl pcap check
 AC_MSG_CHECKING(whether to use libpcap for packet capture)
 
 AC_ARG_WITH(pcap,
-changequote(<<, >>)dnl
-<<  --with-pcap[=DIR]       use libpcap for packet capturing.  [default=yes]>>,
-changequote([, ])dnl
+[  --with-pcap[[=DIR]]       use libpcap for packet capturing.  [[default=yes]]],
 [
        if test $withval = no
        then
@@ -488,9 +669,7 @@ dnl zlib check
 AC_MSG_CHECKING(whether to use zlib for reading compressed capture files)
 
 AC_ARG_WITH(zlib,
-changequote(<<, >>)dnl
-<<  --with-zlib[=DIR]       use zlib (located in directory DIR, if supplied) to read compressed data.  [default=yes, if present]>>,
-changequote([, ])dnl
+[  --with-zlib[[=DIR]]       use zlib (located in directory DIR, if supplied) to read compressed data.  [[default=yes, if available]]],
 [
        if test $withval = no
        then
@@ -506,7 +685,7 @@ changequote([, ])dnl
        #
        # Use zlib if it's present, otherwise don't.
        #
-       want_zlib=ifpresent
+       want_zlib=ifavailable
        zlib_dir=
 ])
 if test "x$want_zlib" = "xno" ; then
@@ -524,9 +703,7 @@ dnl pcre check
 AC_MSG_CHECKING(whether to use libpcre for regular expressions in dfilters)
 
 AC_ARG_WITH(pcre,
-changequote(<<, >>)dnl
-<<  --with-pcre[=DIR]       use libpcre (located in directory DIR, if supplied) to use in dfilter regular expressions.  [default=yes, if present]>>,
-changequote([, ])dnl
+[  --with-pcre[[=DIR]]       use libpcre (located in directory DIR, if supplied) to use in dfilter regular expressions.  [[default=yes, if available]]],
 [
        if test $withval = no
        then
@@ -542,7 +719,7 @@ changequote([, ])dnl
        #
        # Use libpcre if it's present, otherwise don't.
        #
-       want_pcre=ifpresent
+       want_pcre=ifavailable
        pcre_dir=
 ])
 if test "x$want_pcre" = "xno" ; then
@@ -584,39 +761,70 @@ AM_CONDITIONAL(SETUID_INSTALL, test x$enable_setuid_install = xyes)
 
 dnl Checks for header files.
 AC_HEADER_STDC
-AC_CHECK_HEADERS(fcntl.h sys/ioctl.h sys/time.h unistd.h stdarg.h netdb.h)
-AC_CHECK_HEADERS(sys/stat.h sys/sockio.h sys/types.h sys/socket.h)
-AC_CHECK_HEADERS(sys/utsname.h sys/wait.h)
+AC_CHECK_HEADERS(direct.h dirent.h fcntl.h netdb.h stdarg.h stddef.h unistd.h)
+AC_CHECK_HEADERS(sys/ioctl.h sys/param.h sys/socket.h sys/sockio.h sys/stat.h sys/time.h sys/types.h sys/utsname.h sys/wait.h)
 AC_CHECK_HEADERS(netinet/in.h)
-AC_CHECK_HEADERS(stddef.h)
-AC_CHECK_HEADERS(arpa/inet.h)
+AC_CHECK_HEADERS(arpa/inet.h arpa/nameser.h)
 AC_CHECK_HEADERS(iconv.h)
 
 dnl SSL Check
 SSL_LIBS=''
-AC_MSG_CHECKING(whether to use SSL library if available)
-if test "x$enable_ssl" = "xno" ; then
-       AC_MSG_RESULT(no)
-else
+AC_MSG_CHECKING(whether to use SSL library)
+
+AC_ARG_WITH(ssl,
+[  --with-ssl[[=DIR]]        use SSL crypto library (located in directory DIR, if supplied).   [[default=no]]],
+[
+if test "x$withval" = "xno";  then
+       want_ssl=no
+elif test "x$withval" = "xyes"; then
+       want_ssl=yes
+elif test -d "$withval"; then
+       want_ssl=yes
+       AC_ETHEREAL_ADD_DASH_L(LDFLAGS, ${withval}/lib)
+fi
+],[
+       want_ssl=no
+])
+if test "x$want_ssl" = "xyes"; then
        AC_MSG_RESULT(yes)
-       AC_ETHEREAL_SSL_CHECK
+       AC_CHECK_LIB(crypto,EVP_md5,
+           [
+               SSL_LIBS=-lcrypto
+           ],
+           [
+                AC_MSG_ERROR([SSL crypto library was requested, but is not available])
+           ])
+else
+       AC_MSG_RESULT(no)
 fi
 AC_SUBST(SSL_LIBS)
 
-dnl UCD SNMP/NET-SNMP Check
+dnl UCD SNMP/Net-SNMP Check
 SNMP_LIBS=''
 
 AC_ARG_WITH(net-snmp,
-changequote(<<, >>)dnl
-<<  --with-net-snmp=PATH    use NET-SNMP library, with PATH as the location of the net-snmp-config shell script that comes with the net-snmp package.>>,
-changequote([, ])dnl
-[netsnmpconfig=$withval]
-)
+[  --with-net-snmp[[=PATH]]  use Net-SNMP library (with PATH as the location of the net-snmp-config shell script that comes with the net-snmp package, if supplied)  [[default=yes, if available]]],
+[
+       if test $withval = no
+       then
+               want_netsnmp=no
+       elif test $withval = yes
+       then
+               want_netsnmp=yes
+       else
+               want_netsnmp=yes
+               netsnmpconfig="$withval"
+       fi
+],[
+       #
+       # Set "want_netsnmp" to "ifavailable" to make the default "use it
+       # if you find it, otherwise don't".
+       #
+       want_netsnmp=ifavailable
+])
 
 AC_ARG_WITH(ucd-snmp,
-changequote(<<, >>)dnl
-<<  --with-ucd-snmp[=DIR]   use UCD SNMP client library (located in directory DIR, if supplied).  [default=yes, if present]>>,
-changequote([, ])dnl
+[  --with-ucd-snmp[[=DIR]]   use UCD SNMP client library (located in directory DIR, if supplied).  [[default=yes, if available]]],
 [
        if test $withval = no
        then
@@ -630,86 +838,99 @@ changequote([, ])dnl
        fi
 ],[
        #
-       # Set "want_ucdsnmp" to "ifpresent" to make the default "use it
+       # Set "want_ucdsnmp" to "ifavailable" to make the default "use it
        # if you find it, otherwise don't".
        #
-       want_ucdsnmp=ifpresent
+       want_ucdsnmp=ifavailable
        ucdsnmp_dir=
 ])
 
-dnl try net-snmp first
-AC_MSG_CHECKING(whether to use NET-SNMP library if available)
-if test "x$netsnmpconfig" != "xno" ; then
-       AC_MSG_RESULT(yes)
-       dnl get the net-snmp-config binary
-       if test "x$netsnmpconfig" = "xyes" -o "x$netsnmpconfig" = "x" ; then
-               dnl search for it
-               AC_PATH_PROG(NETSNMPCONFIG,net-snmp-config)
+#
+# Try Net-SNMP first.
+#
+AC_MSG_CHECKING(whether to use Net-SNMP library)
+if test "x$want_netsnmp" = "xno" ; then
+       AC_MSG_RESULT(no)
+else
+       if test "x$want_netsnmp" = "xifavailable" ; then
+               AC_MSG_RESULT([yes, if available])
        else
-               NETSNMPCONFIG=$netsnmpconfig
-               if test ! -x $NETSNMPCONFIG ; then
-                       AC_MSG_ERROR(Invalid net-snmp-config: $NETSNMPCONFIG)
-               fi
+               AC_MSG_RESULT(yes)
        fi
-else
-       AC_MSG_RESULT(no)
+       AC_ETHEREAL_NETSNMP_CHECK
 fi
 
-if test "x$NETSNMPCONFIG" != "xno" -a "x$NETSNMPCONFIG" != "x" -a -x "$NETSNMPCONFIG" ; then
-       dnl other choices for flags to use here: could also use
-       dnl --prefix or --exec-prefix if you don't want the full list.
-
-       #
-       # Save the current settings of CFLAGS and CPPFLAGS, and add
-       # the output of "$NETSNMPCONFIG --cflags" to it, so that when
-       # searching for the Net-SNMP headers, we look in whatever
-       # directory that output specifies.
-       #
-       ethereal_save_CFLAGS="$CFLAGS"
-       ethereal_save_CPPFLAGS="$CPPFLAGS"
-       CFLAGS="$CFLAGS `$NETSNMPCONFIG --cflags`"
-       CPPFLAGS="$CPPFLAGS `$NETSNMPCONFIG --cflags`"
-
-       AC_CHECK_HEADERS(net-snmp/net-snmp-config.h net-snmp/library/default_store.h)
-       if test "x$ac_cv_header_net_snmp_net_snmp_config_h" = "xyes" -a "x$ac_cv_header_net_snmp_library_default_store_h" = "xyes" ; then
-               SNMP_LIBS=`$NETSNMPCONFIG --libs`
-               AC_DEFINE(HAVE_NET_SNMP, 1, [Define to enable support for NET-SNMP])
-               have_net_snmp="yes"
-       else
-               # technically, we should retry ucd-snmp but it's
-               # unlikely they have installed net-snmp-config and not
-               # the net-snmp headers but do have the ucd-snmp
-               # headers.  This would likely be a broken system to
-               # try and use anyway.
-               NETSNMPCONFIG="no"
-
-               #
-               # Restore the versions of CFLAGS and CPPFLAGS before
-               # we added the output of '$NETSNMPCONFIG --cflags",
-               # as we didn't actually find Net-SNMP there.
-               #
-               CFLAGS="$ethereal_save_CFLAGS"
-               CPPFLAGS="$ethereal_save_CPPFLAGS"
-       fi      
-else
-       AC_MSG_CHECKING(whether to use UCD SNMP library if available)
+#
+# If that didn't find Net-SNMP, try UCD SNMP.
+#
+if test "x$have_net_snmp" != "xyes" ; then
+       AC_MSG_CHECKING(whether to use UCD SNMP library)
        if test "x$want_ucdsnmp" = "xno" ; then
                AC_MSG_RESULT(no)
        else
-               AC_MSG_RESULT(yes)
+               if test "x$want_ucdsnmp" = "xifavailable" ; then
+                       AC_MSG_RESULT([yes, if available])
+               else
+                       AC_MSG_RESULT(yes)
+               fi
                AC_ETHEREAL_UCDSNMP_CHECK
        fi
 fi
 
 if test "x$have_net_snmp" = "xyes" || test "x$have_ucd_snmp" = "xyes"; then
-       AC_DEFINE(HAVE_SOME_SNMP, 1, [Define to if some SNMP support is to be used])
+       AC_DEFINE(HAVE_SOME_SNMP, 1, [Define to if some SNMP support is to be used])
 fi
 
 AC_SUBST(SNMP_LIBS)
 
+
+dnl kerberos check
+AC_MSG_CHECKING(whether to use kerberos)
+
+AC_ARG_WITH(krb5,
+[  --with-krb5[[=DIR]]       use kerberos (located in directory DIR, if supplied) to use in kerberos dissection  [[default=yes]]],
+[
+       if test $withval = no
+       then
+               want_krb5=no
+       elif test $withval = yes
+       then
+               want_krb5=yes
+       else
+               want_krb5=yes
+               krb5_dir=$withval
+       fi
+],[
+       #
+       # Use kerberos if specified, otherwise don't.
+       #
+       want_krb5=ifavailable
+       krb5_dir=
+])
+if test "x$want_krb5" = "xno" ; then
+       AC_MSG_RESULT(no)
+else
+       AC_MSG_RESULT(yes)
+       AC_ETHEREAL_KRB5_CHECK
+fi
+
+
 dnl ADNS Check
 ADNS_LIBS=''
 AC_MSG_CHECKING(whether to use the GNU ADNS library if available)
+
+AC_ARG_WITH(adns,
+[  --with-adns[[=DIR]]       use GNU ADNS (located in directory DIR, if supplied).   [[default=yes, if present]]],
+[
+if   test "x$withval" = "xno";  then
+       want_adns=no
+elif test "x$withval" = "xyes"; then
+       want_adns=yes
+elif test -d "$withval"; then
+       want_adns=yes
+       AC_ETHEREAL_ADD_DASH_L(LDFLAGS, ${withval}/lib)
+fi
+])
 if test "x$with_adns" = "xno" ; then
        AC_MSG_RESULT(no)
 else
@@ -718,6 +939,12 @@ else
 fi
 AC_SUBST(ADNS_LIBS)
 
+#
+# Define ETH_VAR_IMPORT appropriately for declarations of external
+# variables exported from dynamically-linked libraries.
+#
+AC_DEFINE(ETH_VAR_IMPORT, extern, [Define as the string to precede external variable declarations in dynamically-linked libraries])
+
 dnl Checks for typedefs, structures, and compiler characteristics.
 # AC_C_CONST
 
@@ -786,6 +1013,112 @@ fi
 AC_SUBST(MKSTEMP_C)
 AC_SUBST(MKSTEMP_O)
 
+ac_save_LIBS="$LIBS"
+LIBS="$GLIB_LIBS $LIBS"
+G_ASCII_STRTOULL_C=""
+G_ASCII_STRTOULL_O=""
+G_ASCII_STRTOULL_LO=""
+AC_CHECK_FUNC(g_ascii_strtoull,
+  [G_ASCII_STRTOULL_O=""
+   G_ASCII_STRTOULL_LO=""],
+  [G_ASCII_STRTOULL_O="g_ascii_strtoull.o"
+   G_ASCII_STRTOULL_LO="g_ascii_strtoull.lo"
+   AC_DEFINE(NEED_G_ASCII_STRTOULL_H, 1, [Define if g_ascii_strtoull.h needs to be included])
+])
+LIBS="$ac_save_LIBS"
+if test "$ac_cv_func_g_ascii_strtoull" = no ; then
+  G_ASCII_STRTOULL_C="g_ascii_strtoull.c"
+  G_ASCII_STRTOULL_O="g_ascii_strtoull.o"
+  G_ASCII_STRTOULL_LO="g_ascii_strtoull.lo"
+fi
+AC_SUBST(G_ASCII_STRTOULL_C)
+AC_SUBST(G_ASCII_STRTOULL_O)
+AC_SUBST(G_ASCII_STRTOULL_LO)
+
+AC_CHECK_FUNC(inet_aton,
+  [INET_ATON_O=""
+   INET_ATON_LO=""],
+  [INET_ATON_O="inet_aton.o"
+   INET_ATON_LO="inet_aton.lo"
+])
+if test "$ac_cv_func_inet_aton" = no ; then
+  INET_ATON_C="inet_aton.c"
+  INET_ATON_O="inet_aton.o"
+  INET_ATON_LO="inet_aton.lo"
+  AC_DEFINE(NEED_INET_ATON_H, 1, [Define if inet/aton.h needs to be included])
+fi
+AC_SUBST(INET_ATON_C)
+AC_SUBST(INET_ATON_O)
+AC_SUBST(INET_ATON_LO)
+
+AC_SEARCH_LIBS(inet_pton, [socket nsl], [
+  dnl check for pre-BIND82 inet_pton() bug.
+  AC_MSG_CHECKING(for broken inet_pton)
+  AC_TRY_RUN([#include <sys/types.h>
+#include <sys/socket.h>
+#include <netinet/in.h>
+#include <arpa/inet.h>
+int main()
+{
+#ifdef AF_INET6
+  char buf[16];
+  /* this should return 0 (error) */
+  return inet_pton(AF_INET6, "0:1:2:3:4:5:6:7:", buf);
+#else
+  return 1;
+#endif
+}], [AC_MSG_RESULT(ok);
+have_inet_pton=yes], [AC_MSG_RESULT(broken);
+have_inet_pton=no], [AC_MSG_RESULT(cross compiling, assume it is broken);
+have_inet_pton=no])],
+have_inet_pton=no)
+if test "$have_inet_pton" = no; then
+  INET_PTON_C="inet_pton.c"
+  INET_PTON_O="inet_pton.o"
+  INET_PTON_LO="inet_pton.lo"
+else
+  INET_PTON_C=""
+  INET_PTON_O=""
+  INET_PTON_LO=""
+fi
+AC_SUBST(INET_PTON_C)
+AC_SUBST(INET_PTON_O)
+AC_SUBST(INET_PTON_LO)
+
+AC_SEARCH_LIBS(inet_ntop, [socket nsl], [
+  AC_MSG_CHECKING([for inet_ntop prototype])
+  AC_TRY_COMPILE([#include <stdio.h>
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <netinet/in.h>
+#include <arpa/inet.h>
+
+extern const char *inet_ntop(int, const void *, char *, size_t);],, [
+    AC_MSG_RESULT(yes)
+    AC_DEFINE(HAVE_INET_NTOP_PROTO, 1,
+    [Define if inet_ntop() prototype exists])], [
+    AC_TRY_COMPILE([#include <stdio.h>
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <netinet/in.h>
+#include <arpa/inet.h>
+
+extern const char *inet_ntop(int, const void *, char *, socklen_t);],, [
+      AC_MSG_RESULT(yes)
+      AC_DEFINE(HAVE_INET_NTOP_PROTO, 1,
+      [Define if inet_ntop() prototype exists])], [
+      AC_MSG_RESULT(no)])])
+  INET_NTOP_O=""
+  INET_NTOP_LO=""], [
+  INET_NTOP_C="inet_ntop.c"
+  INET_NTOP_O="inet_ntop.o"
+  INET_NTOP_LO="inet_ntop.lo"
+  AC_DEFINE(NEED_INET_V6DEFS_H, 1,
+  [Define if inet/v6defs.h needs to be included])])
+AC_SUBST(INET_NTOP_C)
+AC_SUBST(INET_NTOP_O)
+AC_SUBST(INET_NTOP_LO)
+
 AC_CHECK_FUNC(strptime, STRPTIME_O="",
   [STRPTIME_O="strptime.o"
    AC_DEFINE(NEED_STRPTIME_H, 1, [Define if strptime.h needs to be included])
@@ -808,9 +1141,7 @@ dnl check for plugins directory - stolen from Amanda's configure.in
 dnl
 plugindir="$libdir/ethereal/plugins/$VERSION"
 AC_ARG_WITH(plugins,
-changequote(<<, >>)dnl
-<<  --with-plugins[=DIR]    support plugins (installed in DIR, if supplied).>>,
-changequote([, ])dnl
+[  --with-plugins[[=DIR]]    support plugins (installed in DIR, if supplied).],
 [
   case "$withval" in
   "" | y | ye | yes )
@@ -847,6 +1178,12 @@ else
 fi
 AC_SUBST(plugindir)
 
+#
+# The plugin dissectors reside in ./plugins/PROTO/
+#
+PLUGIN_LIBS="-L../../epan -lethereal $GLIB_LIBS"
+AC_SUBST(PLUGIN_LIBS)
+
 dnl libtool defs
 #
 # Yes, AM_PROG_LIBTOOL is redundant with newer version(s) of some tool(s)
@@ -866,12 +1203,22 @@ then
 fi
 AC_SUBST(ENABLE_STATIC)
 
+dnl Save the cacheable configure results to config.cache before recursing
+AC_CACHE_SAVE
+
 AM_CONFIG_HEADER(config.h)
-AC_CONFIG_SUBDIRS(epan wiretap)
+AC_CONFIG_SUBDIRS(wiretap)
 AC_OUTPUT(
   Makefile
+  doxygen.cfg
   doc/Makefile
+  epan/Makefile
+  epan/doxygen.cfg
+  epan/dfilter/Makefile
+  epan/dissectors/Makefile
+  epan/ftypes/Makefile
   gtk/Makefile
+  gtk/doxygen.cfg
   help/Makefile
   packaging/Makefile
   packaging/nsis/Makefile
@@ -883,18 +1230,28 @@ AC_OUTPUT(
   packaging/svr4/pkginfo
   plugins/Makefile
   plugins/acn/Makefile
+  plugins/agentx/Makefile
   plugins/artnet/Makefile
   plugins/asn1/Makefile
+  plugins/ciscosm/Makefile
   plugins/docsis/Makefile
   plugins/enttec/Makefile
   plugins/giop/Makefile
   plugins/gryphon/Makefile
+  plugins/h223/Makefile
+  plugins/irda/Makefile
   plugins/lwres/Makefile
+  plugins/mate/Makefile
   plugins/megaco/Makefile
   plugins/mgcp/Makefile
+  plugins/opsi/Makefile
   plugins/pcli/Makefile
+  plugins/profinet/Makefile
   plugins/rdm/Makefile
+  plugins/rlm/Makefile
   plugins/rtnet/Makefile
+  plugins/rudp/Makefile
+  plugins/stats_tree/Makefile
   plugins/v5ua/Makefile
   tools/Makefile
   tools/lemon/Makefile
@@ -921,24 +1278,37 @@ else
        pcre_message="yes"
 fi
 
+if test "x$want_ssl" = "xno" ; then
+       ssl_message="no"
+else
+       ssl_message="yes"
+fi
+
+if test "x$want_krb5" = "xno" ; then
+       krb5_message="no"
+else
+       krb5_message="yes ($ac_krb5_version)"
+fi
+
 if test "x$have_good_adns" = "xyes" ; then
        adns_message="yes"
 else
        adns_message="no"
 fi
 
-if test "x$NETSNMPCONFIG" != "xno" -a "x$NETSNMPCONFIG" != "x" -a -x "$NETSNMPCONFIG" ; then
+if test "x$have_net_snmp" = "xyes" ; then
        snmp_libs_message="yes (net-snmp)"
-elif test "x$SNMP_LIBS" = "x" ; then
-       snmp_libs_message="no"
-else
+elif test "x$have_ucdsnmp" = "xyes" ; then
        snmp_libs_message="yes (ucd-snmp)"
+else
+       snmp_libs_message="no"
 fi
 
 echo ""
 echo "The Ethereal package has been configured with the following options."
 echo "                    Build ethereal : $enable_ethereal"
 echo "                   Build tethereal : $enable_tethereal"
+echo "                    Build capinfos : $enable_capinfos"
 echo "                     Build editcap : $enable_editcap"
 echo "                    Build mergecap : $enable_mergecap"
 echo "                   Build text2pcap : $enable_text2pcap"
@@ -956,6 +1326,8 @@ fi
 echo "                  Use pcap library : $want_pcap"
 echo "                  Use zlib library : $zlib_message"
 echo "                  Use pcre library : $pcre_message"
+echo "              Use kerberos library : $krb5_message"
 echo "              Use GNU ADNS library : $adns_message"
+echo "            Use SSL crypto library : $ssl_message"
 echo "          Use IPv6 name resolution : $enable_ipv6"
-echo "     Use UCD SNMP/NET-SNMP library : $snmp_libs_message"
+echo "     Use UCD SNMP/Net-SNMP library : $snmp_libs_message"