Make init_progfile_dir() take a function pointer [-Wpedantic]
[metze/wireshark/wip.git] / configure.ac
index 5fe2f39151160214d6d5cf5db76c40afda6a272c..a7cb6c30af7d3e88219e54c1a04a32e3732253e4 100644 (file)
@@ -578,8 +578,8 @@ if test "x$with_gnutls" = "xyes"; then
   )
 
   if test "x$have_license_compatible_gnutls" != "xyes"; then
-    PKG_CHECK_MODULES([LIBGNUTLS], [gnutls >= 1.2.0 gnutls < 3],
-      [ have_license_compatible_gnutls="yes" ] , [ echo "GnuTLS >= 1.2.0, < 3.0 not found " ]
+    PKG_CHECK_MODULES([LIBGNUTLS], [gnutls >= 2.12.0 gnutls < 3],
+      [ have_license_compatible_gnutls="yes" ] , [ echo "GnuTLS >= 2.12.0, < 3.0 not found " ]
     )
   fi
 
@@ -607,9 +607,9 @@ AC_ARG_WITH([gcrypt],
   [ with_gcrypt="$withval"; want_gcrypt="yes" ], with_gcrypt="yes")
 
 if test "x$with_gcrypt" = "xyes"; then
-  AM_PATH_LIBGCRYPT(1.1.92,
+  AM_PATH_LIBGCRYPT(1.4.2,
        [
-               echo "libgcrypt found, enabling ipsec decryption"
+               echo "libgcrypt found, enabling decryption for ipsec, ssl, etc."
                AC_DEFINE(HAVE_LIBGCRYPT, 1, [Define to use libgcrypt])
                gcrypt_message="yes"
        ]
@@ -617,7 +617,7 @@ if test "x$with_gcrypt" = "xyes"; then
                if test x$libgcrypt_config_prefix != x ; then
                        AC_MSG_ERROR([[libgcrypt not found; install libgcrypt-devel package for your system]])
                else
-                       echo "libgcrypt not found, disabling ipsec decryption"
+                       echo "libgcrypt not found, disabling decryption for ipsec, ssl, etc."
                        gcrypt_message="no"
                fi
 
@@ -680,13 +680,13 @@ linux*)
                # was requested by the user.
                #
                if test x$libnl_version = "xany" -o x$libnl_version = "x3"; then
-                       PKG_CHECK_MODULES(LIBNL3, [libnl-route-3.0 >= 3.0 libnl-genl-3.0] >= 3.0, [have_libnl3=yes], [have_libnl3=no])
+                       PKG_WIRESHARK_CHECK_SYSTEM_MODULES(LIBNL3, [libnl-route-3.0 >= 3.0 libnl-genl-3.0] >= 3.0, [have_libnl3=yes], [have_libnl3=no])
                fi
                if test x$libnl_version = "xany" -o x$libnl_version = "x2"; then
-                       PKG_CHECK_MODULES(LIBNL2, libnl-2.0 >= 2.0, [have_libnl2=yes], [have_libnl2=no])
+                       PKG_WIRESHARK_CHECK_SYSTEM_MODULES(LIBNL2, libnl-2.0 >= 2.0, [have_libnl2=yes], [have_libnl2=no])
                fi
                if test x$libnl_version = "xany" -o x$libnl_version = "x1"; then
-                       PKG_CHECK_MODULES(LIBNL1, libnl-1 >= 1.0, [have_libnl1=yes], [have_libnl1=no])
+                       PKG_WIRESHARK_CHECK_SYSTEM_MODULES(LIBNL1, libnl-1 >= 1.0, [have_libnl1=yes], [have_libnl1=no])
                fi
                if (test "${have_libnl3}" = "yes"); then
                        CFLAGS="$CFLAGS $LIBNL3_CFLAGS"
@@ -694,21 +694,18 @@ linux*)
                        AC_DEFINE(HAVE_LIBNL, 1, [Enable libnl support])
                        AC_DEFINE(HAVE_LIBNL3, 1, [libnl version 3])
                        libnl_message="yes (v3)"
-                       enable_airpcap=no
                elif (test "${have_libnl2}" = "yes"); then
                        CFLAGS="$CFLAGS $LIBNL2_CFLAGS"
                        LIBS="$LIBS $LIBNL2_LIBS"
                        AC_DEFINE(HAVE_LIBNL, 1, [Enable libnl support])
                        AC_DEFINE(HAVE_LIBNL2, 1, [libnl version 2])
                        libnl_message="yes (v2)"
-                       enable_airpcap=no
                elif (test "${have_libnl1}" = "yes"); then
                        CFLAGS="$CFLAGS $LIBNL1_CFLAGS"
                        LIBS="$LIBS $LIBNL1_LIBS"
                        AC_DEFINE(HAVE_LIBNL, 1, [Enable libnl support])
                        AC_DEFINE(HAVE_LIBNL1, 1, [libnl version 1])
                        libnl_message="yes (v1)"
-                       enable_airpcap=no
                else
                        if test x$want_libnl = "xyes"; then
                                case "$libnl_version" in
@@ -826,7 +823,7 @@ AC_SUBST(HAVE_RPM)
 # Debian
 AC_CHECK_PROG(HAVE_DPKG_BUILDPACKAGE, dpkg-buildpackage, "yes", "no")
 
-# Mac OS X
+# OS X
 AC_CHECK_PROG(HAVE_XCODEBUILD, xcodebuild, "yes", "no")
 AC_CHECK_PROG(HAVE_HDIUTIL, hdiutil, "yes", "no")
 AC_CHECK_PROG(HAVE_BLESS, bless, "yes", "no")
@@ -875,6 +872,10 @@ AC_ARG_ENABLE(extra-compiler-warnings,
                # The following are for C and C++
                #
                AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wpedantic)
+               #
+               # As we use variadic macros, we don't want warnings
+               # about them, even with -Wpedantic.
+               #
                AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wno-variadic-macros)
                #
                # Various code blocks this one.
@@ -941,6 +942,7 @@ AC_ARG_ENABLE(asan,
        # and no yet all leak is fixed...
        # use ASAN_OPTIONS=detect_leaks=0 to disable detect_leaks
        #
+       # XXX shouldn't this also be added to LDFLAGS?
        AC_WIRESHARK_COMPILER_FLAGS_CHECK(-fsanitize=address)
 
 ],)
@@ -966,7 +968,6 @@ AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wdiv-by-zero)
 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wignored-qualifiers)
 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wpragmas)
 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wno-overlength-strings)
-AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wwrite-strings)
 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wno-long-long)
 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wheader-guard)
 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wunused-const-variable)
@@ -1048,18 +1049,16 @@ AC_WIRESHARK_COMPILER_FLAGS_CHECK(-fexcess-precision=fast)
 # failures to export symbols, rather than having that fail only on
 # Windows.
 #
-CFLAGS_before_fvhidden="$CFLAGS"
-#
 # GCC and GCC-compatible compilers
 #
 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-fvisibility=hidden)
-if test "x$CFLAGS" = "x$CFLAGS_before_fvhidden"
+if test "x$can_add_to_cflags" = "xno"
 then
        #
        # Sun^WOracle C.
        #
        AC_WIRESHARK_COMPILER_FLAGS_CHECK(-xldscope=hidden)
-       if test "x$CFLAGS" = "x$CFLAGS_before_fvhidden"
+       if test "x$can_add_to_cflags" = "xno"
        then
                # TODO add other ways of hiding symbols
                AC_MSG_WARN(Compiler will export all symbols from shared libraries)
@@ -1079,12 +1078,12 @@ AC_WIRESHARK_LDFLAGS_CHECK([-Wl,--as-needed])
 # privileges, and using PIE means the OS can run it at random locations
 # in the address space to make attacks more difficult.
 #
-CFLAGS_before_pie="$CFLAGS"
-AC_WIRESHARK_COMPILER_FLAGS_CHECK(-fPIE)
-if test "x$CFLAGS" != "x$CFLAGS_before_pie"
+WS_CHECKED_CFLAGS_before_pie="$WS_CHECKED_CFLAGS"
+AC_WIRESHARK_COMPILER_FLAGS_CHECK(-fPIE, C)
+if test "x$can_add_to_cflags" = "xyes"
 then
        # Restore CFLAGS
-       CFLAGS="$CFLAGS_before_pie"
+       WS_CHECKED_CFLAGS="$WS_CHECKED_CFLAGS_before_pie"
 
        LDFLAGS_before_pie="$LDFLAGS"
        AC_WIRESHARK_LDFLAGS_CHECK([-fPIE -pie])
@@ -1102,9 +1101,9 @@ fi
 AC_SUBST(PIE_CFLAGS)
 AC_SUBST(PIE_LDFLAGS)
 
-CFLAGS_before_simd="$CFLAGS"
+WS_CHECKED_CFLAGS_before_simd="$WS_CHECKED_CFLAGS"
 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-msse4.2, C)
-if test "x$CFLAGS" != "x$CFLAGS_before_simd"
+if test "x$can_add_to_cflags" = "xyes"
 then
        #
        # The compiler supports -msse4.2; use that to enable SSE 4.2.
@@ -1114,14 +1113,14 @@ then
        # is run only if the hardware supports it, but other
        # code would do no such checks.
        #
-       CFLAGS="$CFLAGS_before_simd"
+       WS_CHECKED_CFLAGS="$WS_CHECKED_CFLAGS_before_simd"
        ac_sse4_2_flag=-msse4.2
 else
        #
        # Try -xarch=sse4_2; that's the flag for Sun's compiler.
        #
        AC_WIRESHARK_COMPILER_FLAGS_CHECK(-xarch=sse4_2, C)
-       if test "x$CFLAGS" != "x$CFLAGS_before_simd"
+       if test "x$can_add_to_cflags" = "xyes"
        then
                #
                # The compiler supports -xarch=sse4_2; use that to
@@ -1129,11 +1128,18 @@ else
                #
                # Restore CFLAGS; see above.
                #
-               CFLAGS="$CFLAGS_before_simd"
+               WS_CHECKED_CFLAGS="$WS_CHECKED_CFLAGS_before_simd"
                ac_sse4_2_flag=-xarch=sse4_2
        fi
 fi
 
+#
+# All AC_WIRESHARK_COMPILER_FLAGS_CHECK are done, do not call it again!
+# Prepend them to the user-specified CFLAGS/CXXFLAGS.
+#
+CFLAGS="$WS_CHECKED_CFLAGS $CFLAGS"
+CXXFLAGS="$WS_CHECKED_CXXFLAGS $CXXFLAGS"
+
 if test "x$ac_sse4_2_flag" != x; then
        #
        # OK, we have a compiler flag to enable SSE 4.2.
@@ -1303,7 +1309,7 @@ else
                        #
                        CFLAGS_FOR_BUILD="-Ae +O2 $CFLAGS"
                fi
-               CXXFLAGS="+O2 $CFLAGS"
+               CXXFLAGS="+O2 $CXXFLAGS"
                AC_MSG_RESULT(HP C/C++ compiler - added +O2)
                ;;
        solaris*)
@@ -1380,9 +1386,10 @@ m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])],
 # get version information from plists and thus need Core Foundation
 # to process those plists.
 #
+have_os_x_frameworks=no
 case "$host_os" in
-
 darwin*)
+       have_os_x_frameworks=yes
        AC_DEFINE(HAVE_OS_X_FRAMEWORKS, 1, [Define to 1 if you have OS X frameworks])
        APPLICATIONSERVICES_FRAMEWORKS="-framework ApplicationServices"
        SYSTEMCONFIGURATION_FRAMEWORKS="-framework SystemConfiguration"
@@ -1406,6 +1413,7 @@ esac
 AC_SUBST(APPLICATIONSERVICES_FRAMEWORKS)
 AC_SUBST(SYSTEMCONFIGURATION_FRAMEWORKS)
 AC_SUBST(COREFOUNDATION_FRAMEWORKS)
+AM_CONDITIONAL(HAVE_OS_X_FRAMEWORKS, [test "x$have_os_x_frameworks" = "xyes"])
 
 #
 # On Solaris, check whether we have getexecname().
@@ -1595,6 +1603,7 @@ AC_SUBST(QT_MIN_VERSION)
 # 3.12.0: 25 Mar 2014
 # 3.14.0: 30 Sep 2014
 # 3.16.0: 22 Mar 2015
+# 3.18.0  22 Sep 2015
 #
 # Release dates for Qt versions:
 # https://en.wikipedia.org/wiki/List_of_Qt_releases
@@ -1785,6 +1794,7 @@ AC_SUBST(GLIB_MIN_VERSION)
 # 2.40.0: 24 Mar 2014
 # 2.42.0: 22 Sep 2014
 # 2.44.0: 23 Mar 2014
+# 2.46.0: 25 Sep 2015
 
 use_glib_cflags="true"
 if test "$have_gtk" = "yes" -a "$have_qt" = "yes" ; then
@@ -1864,6 +1874,13 @@ else
        AM_PATH_GLIB_2_0($GLIB_MIN_VERSION, , AC_MSG_ERROR(GLib $GLIB_MIN_VERSION or later distribution not found.), gthread gmodule)
 fi
 
+# Check for GResource support
+PKG_CHECK_EXISTS([gio-2.0 >= 2.32 gdk-pixbuf-2.0 >= 2.26], [have_gresource=yes], [have_gresource=no])
+AM_CONDITIONAL(HAVE_GRESOURCE, test "x$have_gresource" = "xyes")
+if test "x$have_gresource" = "xyes"; then
+       AC_DEFINE(HAVE_GRESOURCE, 1, [Defined if GLib GResource is supported])
+fi
+
 # Error out if a glib header other than a "top level" header
 #  (glib.h, glib-object.h, gio.h) or certain other headers( e.g.,gmodule.h)
 #  is used.
@@ -2206,29 +2223,6 @@ else
        AC_WIRESHARK_PCAP_CHECK
 fi
 
-
-dnl Check for airpcap
-dnl We might want to remove this entirely unless we want to support
-dnl AutoTools on Windows.
-AC_MSG_CHECKING(whether to include airpcap support)
-AC_ARG_ENABLE(airpcap,
-  AC_HELP_STRING( [--enable-airpcap],
-                 [use AirPcap in Wireshark @<:@default=no@:>@]),
-  enable_airpcap=$enableval, enable_airpcap=no)
-
-if test x$enable_airpcap = xyes; then
-       if test "x$want_pcap" = "xno" ; then
-               enable_airpcap=no
-               AC_MSG_RESULT(pcap not available - disabling airpcap)
-       else
-               AC_MSG_RESULT(yes)
-               AC_DEFINE(HAVE_AIRPCAP, 1, [Enable AirPcap])
-       fi
-else
-       AC_MSG_RESULT(no)
-fi
-
-
 dnl dumpcap check
 AC_MSG_CHECKING(whether to build dumpcap)
 
@@ -2322,6 +2316,20 @@ fi
 AC_SUBST(androiddump_bin)
 AC_SUBST(androiddump_man)
 
+dnl sshdump check
+AC_MSG_CHECKING(whether to build sshdump)
+
+AC_ARG_ENABLE(sshdump,
+  AC_HELP_STRING( [--enable-sshdump],
+                 [build sshdump @<:@default=yes@:>@]),
+    sshdump=$enableval,enable_sshdump=yes)
+
+if test "x$enable_sshdump" = "xyes" ; then
+       AC_MSG_RESULT(yes)
+else
+       AC_MSG_RESULT(no)
+fi
+
 # Enable/disable echld
 AC_ARG_ENABLE(echld,
   AC_HELP_STRING( [--enable-echld],
@@ -2503,21 +2511,6 @@ fi
 AM_CONDITIONAL(HAVE_LIBPORTAUDIO, test x$want_portaudio = xyes)
 
 
-dnl ipv6 check
-AC_ARG_ENABLE(ipv6,
-  AC_HELP_STRING( [--enable-ipv6],
-                 [use IPv6 name resolution, if available @<:@default=yes@:>@]),
-    enable_ipv6=$enableval,enable_ipv6=yes)
-
-AC_MSG_CHECKING(whether to enable ipv6 name resolution if available)
-if test "x$enable_ipv6" = "xno" ; then
-       AC_MSG_RESULT(no)
-else
-       AC_MSG_RESULT(yes)
-       AC_WIRESHARK_IPV6_STACK
-fi
-
-
 dnl Check if dumpcap should be installed with filesystem capabilities
 AC_PATH_PROG(SETCAP, setcap)
 AC_ARG_ENABLE(setcap-install,
@@ -2807,6 +2800,31 @@ else
 fi
 AC_SUBST(GEOIP_LIBS)
 
+dnl LIBSSH Check
+LIBSSH=''
+AC_MSG_CHECKING(whether to use the libssh library if available)
+
+AC_ARG_WITH(ssh,
+  AC_HELP_STRING( [--with-libssh@<:@=DIR@:>@],
+                 [use libssh (located in directory DIR, if supplied) @<:@default=yes, if present@:>@]),
+[
+if   test "x$withval" = "xno";  then
+       want_libssh=no
+elif test "x$withval" = "xyes"; then
+       want_libssh=yes
+elif test -d "$withval"; then
+       want_libssh=yes
+       AC_WIRESHARK_ADD_DASH_L(LDFLAGS, ${withval}/lib)
+fi
+])
+if test "x$want_libssh" = "xno"; then
+       AC_MSG_RESULT(no)
+else
+       AC_MSG_RESULT(yes)
+       AC_WIRESHARK_LIBSSH_CHECK
+fi
+AC_SUBST(LIBSSH_LIBS)
+
 #
 # Define WS_MSVC_NORETURN appropriately for declarations of routines that
 # never return (just like Charlie on the MTA).
@@ -3037,6 +3055,23 @@ then
 fi
 AC_SUBST(extcapdir)
 
+if test "x$enable_sshdump" = "xyes" ; then
+       if  test "x$have_good_libssh" = "xyes" ; then
+               sshdump_bin="sshdump\$(EXEEXT)"
+               sshdump_man="sshdump.1"
+       else
+               echo "Can't find libssh. Disabling sshdump."
+               enable_sshdump=no
+               sshdump_bin=""
+               sshdump_man=""
+       fi
+else
+       sshdump_bin=""
+       sshdump_man=""
+fi
+AC_SUBST(sshdump_bin)
+AC_SUBST(sshdump_man)
+
 dnl libtool defs
 #
 # Yes, AM_PROG_LIBTOOL is redundant with newer version(s) of some tool(s)
@@ -3073,7 +3108,7 @@ if test "x$have_qt" = "xyes" ; then
                RPMBUILD_WITH_ARGS="$RPMBUILD_WITH_ARGS --with qt"
        fi
 else
-       RPMBUILD_WITH_ARGS="$RPMBUILD_WITH_ARGS --without qt"
+       RPMBUILD_WITH_ARGS="$RPMBUILD_WITH_ARGS --without qt --without qt5"
 fi
 if test "x$have_lua" = "xyes" ; then
        RPMBUILD_WITH_ARGS="$RPMBUILD_WITH_ARGS --with lua"
@@ -3273,7 +3308,7 @@ if test "x$have_gtk" = "xyes"; then
                gtk_lib_message=" (with GTK+ 2"
        fi
        if test "x$have_ige_mac" = "xyes"; then
-               gtk_lib_message="$gtk_lib_message and Mac OS X integration)"
+               gtk_lib_message="$gtk_lib_message and OS X integration)"
        else
                gtk_lib_message="$gtk_lib_message)"
        fi
@@ -3368,6 +3403,18 @@ else
        geoip_message="no"
 fi
 
+if test "x$have_good_libssh" = "xyes" ; then
+       libssh_message="yes"
+else
+       libssh_message="no"
+fi
+
+if test "x$have_ssh_userauth_agent" = "xyes" ; then
+       ssh_userauth_agent_message="yes"
+else
+       ssh_userauth_agent_message="no"
+fi
+
 echo ""
 echo "The Wireshark package has been configured with the following options."
 echo "                    Build wireshark : $enable_wireshark_qt$qt_lib_message"
@@ -3385,6 +3432,7 @@ echo "                      Build randpkt : $enable_randpkt"
 echo "                       Build dftest : $enable_dftest"
 echo "                     Build rawshark : $enable_rawshark"
 echo "                  Build androiddump : $enable_androiddump"
+echo "                      Build sshdump : $enable_sshdump"
 echo "                        Build echld : $have_echld"
 echo ""
 echo "   Save files as pcap-ng by default : $enable_pcap_ng_default"
@@ -3405,9 +3453,11 @@ echo "               Use GNU ADNS library : $adns_message"
 echo "                Use SMI MIB library : $libsmi_message"
 echo "             Use GNU crypto library : $gcrypt_message"
 echo "             Use SSL crypto library : $ssl_message"
-echo "           Use IPv6 name resolution : $enable_ipv6"
 echo "                 Use gnutls library : $tls_message"
 echo "     Use POSIX capabilities library : $libcap_message"
 echo "                  Use GeoIP library : $geoip_message"
+echo "                 Use libssh library : $libssh_message"
+echo "            Have ssh_userauth_agent : $ssh_userauth_agent_message"
 echo "                     Use nl library : $libnl_message"
 echo "              Use SBC codec library : $have_sbc"
+#echo "                      Use GResource : $have_gresource"