X-Git-Url: http://git.samba.org/samba.git/?a=blobdiff_plain;f=acinclude.m4;h=2a6f6e28f482e295294c1594e98ddb8d0733b236;hb=f67964282149a6013d3a5ef533346045c4f36e24;hp=eb36ee634aa2964b627da38809438dab720f4f60;hpb=f2dfbea792f0a97244e4bd266250dcf4d9d37399;p=obnox%2Fwireshark%2Fwip.git diff --git a/acinclude.m4 b/acinclude.m4 index eb36ee634a..2a6f6e28f4 100644 --- a/acinclude.m4 +++ b/acinclude.m4 @@ -69,6 +69,40 @@ case "$host_os" in esac ]) +# +# AC_WIRESHARK_TIMEZONE_ABBREV +# + +AC_DEFUN([AC_WIRESHARK_TIMEZONE_ABBREV], +[ + AC_CACHE_CHECK([for tm_zone in struct tm], + ac_cv_wireshark_have_tm_zone, + [ + AC_TRY_COMPILE( + [#include ], + [struct tm t; t.tm_zone;], + ac_cv_wireshark_have_tm_zone=yes, + ac_cv_wireshark_have_tm_zone=no) + ]) + if test $ac_cv_wireshark_have_tm_zone = yes; then + AC_DEFINE(HAVE_TM_ZONE, 1, [Define if tm_zone field exists in struct tm]) + else + AC_CACHE_CHECK([for tzname], + ac_cv_wireshark_have_tzname, + [ + AC_TRY_LINK( +[#include +#include ], + [printf("%s", tzname[0]);], + ac_cv_wireshark_have_tzname=yes, + ac_cv_wireshark_have_tzname=no) + ]) + if test $ac_cv_wireshark_have_tzname = yes; then + AC_DEFINE(HAVE_TZNAME, 1, [Define if tzname array exists]) + fi + fi +]) + # # AC_WIRESHARK_STRUCT_SA_LEN @@ -78,7 +112,7 @@ dnl "acspecific.m4" in GNU Autoconf 2.12, and turned into dnl AC_WIRESHARK_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 on 1998-11-14. +dnl Done by Guy Harris on 1998-11-14. dnl ### Checks for structure members @@ -93,49 +127,6 @@ fi ]) -dnl -dnl Check whether a given format can be used to print 64-bit integers -dnl -AC_DEFUN([AC_WIRESHARK_CHECK_64BIT_FORMAT], -[ - AC_MSG_CHECKING([whether %$1x can be used to format 64-bit integers]) - AC_RUN_IFELSE( - [ - AC_LANG_SOURCE( - [[ -# ifdef HAVE_INTTYPES_H - #include -# endif - #include - #include - #include - - main() - { - guint64 t = 1; - char strbuf[16+1]; - sprintf(strbuf, "%016$1x", t << 32); - if (strcmp(strbuf, "0000000100000000") == 0) - exit(0); - else - exit(1); - } - ]]) - ], - [ - AC_DEFINE(PRId64, "$1d", [Format for printing 64-bit signed decimal numbers]) - AC_DEFINE(PRIo64, "$1o", [Format for printing 64-bit unsigned octal numbers]) - AC_DEFINE(PRIx64, "$1x", [Format for printing 64-bit unsigned hexadecimal numbers (lower-case)]) - AC_DEFINE(PRIX64, "$1X", [Format for printing 64-bit unsigned hexadecimal numbers (upper-case)]) - AC_DEFINE(PRIu64, "$1u", [Format for printing 64-bit unsigned decimal numbers]) - AC_MSG_RESULT(yes) - ], - [ - AC_MSG_RESULT(no) - $2 - ]) -]) - # # AC_WIRESHARK_IPV6_STACK # @@ -221,7 +212,7 @@ yes v6lib=inet6 [CFLAGS="-DINET6 -DSOLARIS8_INET6 $CFLAGS"] fi - ;; + ;; esac if test "$v6type" != "unknown"; then break @@ -250,7 +241,7 @@ yes # # 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 on 2000-01-14. +# Done by Guy Harris on 2000-01-14. # AC_DEFUN([AC_WIRESHARK_GETHOSTBY_LIB_CHECK], [ @@ -275,7 +266,7 @@ AC_DEFUN([AC_WIRESHARK_GETHOSTBY_LIB_CHECK], # # 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 on 2000-01-14. +# Done by Guy Harris on 2000-01-14. # # We use "connect" because that's what AC_PATH_XTRA did. # @@ -294,6 +285,34 @@ AC_DEFUN([AC_WIRESHARK_SOCKET_LIB_CHECK], AC_SUBST(SOCKET_LIBS) ]) +# +# AC_WIRESHARK_BREAKLOOP_TRY_LINK +# +AC_DEFUN([AC_WIRESHARK_PCAP_BREAKLOOP_TRY_LINK], +[ + AC_LINK_IFELSE( + [ + AC_LANG_SOURCE( + [[ +# include + int main(void) + { + pcap_t *pct = NULL; + pcap_breakloop(pct); + return 0; + } + ]]) + ], + [ + ws_breakloop_compiled=yes + ], + [ + ws_breakloop_compiled=no + ]) +]) + + + # # AC_WIRESHARK_PCAP_CHECK # @@ -305,40 +324,82 @@ AC_DEFUN([AC_WIRESHARK_PCAP_CHECK], # XXX need to set a var AC_CHECK_HEADER(pcap.h,,) # - # 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" - and - # "$prefix/include/pcap", in case $prefix is set to - # "/usr/include" or "/usr/local/include". + # The user didn't specify a directory in which libpcap resides. + # First, look for a pcap-config script. # - # 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="" - pcap_dir_list="/usr/include/pcap $prefix/include/pcap $prefix/include" - if test "x$ac_cv_enable_usr_local" = "xyes" ; then - pcap_dir_list="$pcap_dir_list /usr/local/include/pcap" + AC_PATH_PROG(PCAP_CONFIG, pcap-config) + + if test -n "$PCAP_CONFIG" ; then + # + # Found it. + # + # Now check whether it's the libpcap 1.0 version, which + # put a space after "-L" - on some platforms, that doesn't + # work. + # + AC_MSG_CHECKING(for broken pcap-config) + case "`\"$PCAP_CONFIG\" --libs`" in + + "-L "*) + # + # Space after -L. Pretend pcap-config doesn't exist. + # + AC_MSG_RESULT(yes) + PCAP_CONFIG="" + ;; + + *) + # + # No space after -L. + # + AC_MSG_RESULT(no) + ;; + esac fi - for pcap_dir in $pcap_dir_list - do - if test -d $pcap_dir ; then + if test -n "$PCAP_CONFIG" ; then + # + # Found it, and it's usable; use it to get the include flags + # for libpcap. + # + CFLAGS="$CFLAGS `\"$PCAP_CONFIG\" --cflags`" + CPPFLAGS="$CPPFLAGS `\"$PCAP_CONFIG\" --cflags`" + else + # + # Didn't find it; we have to look for libpcap ourselves. + # 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" - and + # "$prefix/include/pcap", in case $prefix is set to + # "/usr/include" or "/usr/local/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="" + pcap_dir_list="/usr/include/pcap $prefix/include/pcap $prefix/include" + if test "x$ac_cv_enable_usr_local" = "xyes" ; then + pcap_dir_list="$pcap_dir_list /usr/local/include/pcap" + fi + for pcap_dir in $pcap_dir_list + do + if test -d $pcap_dir ; then if test x$pcap_dir != x/usr/include -a x$pcap_dir != x/usr/local/include ; then CFLAGS="$CFLAGS -I$pcap_dir" CPPFLAGS="$CPPFLAGS -I$pcap_dir" fi found_pcap_dir=" $found_pcap_dir -I$pcap_dir" break - fi - done + fi + done - if test "$found_pcap_dir" != "" ; then - AC_MSG_RESULT(found --$found_pcap_dir added to CFLAGS) - else - AC_MSG_RESULT(not found) + if test "$found_pcap_dir" != "" ; then + AC_MSG_RESULT(found --$found_pcap_dir added to CFLAGS) + else + AC_MSG_RESULT(not found) + fi fi else # @@ -359,26 +420,39 @@ AC_DEFUN([AC_WIRESHARK_PCAP_CHECK], fi # Pcap header check - AC_CHECK_HEADER(pcap.h,, + AC_CHECK_HEADER(pcap.h,, AC_MSG_ERROR([[Header file pcap.h not found; if you installed libpcap from source, did you also do \"make install-incl\", and if you installed a binary package of libpcap, is there also a developer's package of libpcap, and did you also install that package?]])) - # - # Check to see if we find "pcap_open_live" in "-lpcap". - # Also check for various additional libraries that libpcap might - # require. - # - AC_CHECK_LIB(pcap, pcap_open_live, - [ - PCAP_LIBS=-lpcap - AC_DEFINE(HAVE_LIBPCAP, 1, [Define to use libpcap library]) - ], [ - ac_wireshark_extras_found=no - ac_save_LIBS="$LIBS" - for extras in "-lcfg -lodm" "-lpfring" - do + if test -n "$PCAP_CONFIG" ; then + # + # We have pcap-config; we assume that means we have libpcap + # installed and that pcap-config will tell us whatever + # libraries libpcap needs. + # + if test x$enable_static = xyes; then + PCAP_LIBS="`\"$PCAP_CONFIG\" --libs --static`" + else + PCAP_LIBS="`\"$PCAP_CONFIG\" --libs`" + fi + AC_DEFINE(HAVE_LIBPCAP, 1, [Define to use libpcap library]) + else + # + # Check to see if we find "pcap_open_live" in "-lpcap". + # Also check for various additional libraries that libpcap might + # require. + # + AC_CHECK_LIB(pcap, pcap_open_live, + [ + PCAP_LIBS=-lpcap + AC_DEFINE(HAVE_LIBPCAP, 1, [Define to use libpcap library]) + ], [ + ac_wireshark_extras_found=no + ac_save_LIBS="$LIBS" + for extras in "-lcfg -lodm" "-lpfring" + do AC_MSG_CHECKING([for pcap_open_live in -lpcap with $extras]) LIBS="-lpcap $extras" # @@ -404,13 +478,14 @@ and did you also install that package?]])) then break fi - done - if test x$ac_wireshark_extras_found = xno - then + done + if test x$ac_wireshark_extras_found = xno + then AC_MSG_ERROR([Can't link with library libpcap.]) - fi - LIBS=$ac_save_LIBS - ], $SOCKET_LIBS $NSL_LIBS) + fi + LIBS=$ac_save_LIBS + ], $SOCKET_LIBS $NSL_LIBS) + fi AC_SUBST(PCAP_LIBS) # @@ -437,7 +512,57 @@ and did you also install that package?]])) else AC_MSG_RESULT(no) fi - AC_CHECK_FUNCS(pcap_open_dead pcap_freecode pcap_breakloop) + AC_CHECK_FUNCS(pcap_open_dead pcap_freecode) + # + # pcap_breakloop may be present in the library but not declared + # in the pcap.h header file. If it's not declared in the header + # file, attempts to use it will get warnings, and, if we're + # building with warnings treated as errors, that warning will + # cause compilation to fail. + # + # We are therefore first testing whether the function is present + # and then, if we're compiling with warnings as errors, testing + # whether it is usable. It is usable if it compiles without + # a -Wimplicit warning (the "compile with warnings as errors" + # option requires GCC). If it is not usable, we fail and tell + # the user that the pcap.h header needs to be updated. + # + # Ceteris paribus, this should only happen with Mac OS X 10.3[.x] which + # can have an up-to-date pcap library without the corresponding pcap + # header. + # + # However, it might also happen on some others OSes with some erroneous + # system manipulations where multiple versions of libcap might co-exist + # e.g. hand made symbolic link from libpcap.so -> libpcap.so.0.8 but + # having the pcap header version 0.7. + # + AC_MSG_CHECKING([whether pcap_breakloop is present]) + ac_CFLAGS_saved="$CFLAGS" + AC_WIRESHARK_PCAP_BREAKLOOP_TRY_LINK + if test "x$ws_breakloop_compiled" = "xyes"; then + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_PCAP_BREAKLOOP, 1, [Define if pcap_breakloop is known]) + if test "x$with_warnings_as_errors" = "xyes"; then + AC_MSG_CHECKING([whether pcap_breakloop is usable]) + CFLAGS="$CFLAGS -Werror -Wimplicit" + AC_WIRESHARK_PCAP_BREAKLOOP_TRY_LINK + if test "x$ws_breakloop_compiled" = "xyes"; then + AC_MSG_RESULT(yes) + else + AC_MSG_RESULT(no) + AC_MSG_ERROR( +[Your pcap library is more recent than your pcap header. +As you are building with compiler warnings treated as errors, Wireshark +won't be able to use functions not declared in that header. +If you wish to build with compiler warnings treated as errors, You should +install a newer version of the header file.]) + fi + CFLAGS="$ac_CFLAGS_saved" + fi + else + AC_MSG_RESULT(no) + fi + # # Later versions of Mac OS X 10.3[.x] ship a pcap.h that # doesn't define pcap_if_t but ship an 0.8[.x] libpcap, @@ -486,12 +611,31 @@ and did you also install that package?]])) AC_DEFINE(HAVE_PCAP_FINDALLDEVS, 1, [Define to 1 if you have the `pcap_findalldevs' function and a pcap.h that declares pcap_if_t.]) AC_CHECK_FUNCS(pcap_datalink_val_to_name pcap_datalink_name_to_val) + AC_CHECK_FUNCS(pcap_datalink_val_to_description) AC_CHECK_FUNCS(pcap_list_datalinks pcap_set_datalink pcap_lib_version) - AC_CHECK_FUNCS(pcap_get_selectable_fd) + AC_CHECK_FUNCS(pcap_get_selectable_fd pcap_free_datalinks) + AC_CHECK_FUNCS(pcap_create bpf_image) fi LIBS="$ac_save_LIBS" ]) +AC_DEFUN([AC_WIRESHARK_PCAP_REMOTE_CHECK], +[ + ac_save_LIBS="$LIBS" + LIBS="$PCAP_LIBS $SOCKET_LIBS $NSL_LIBS $LIBS" + AC_DEFINE(HAVE_REMOTE, 1, [Define to 1 to enable remote + capturing feature in WinPcap library]) + AC_CHECK_FUNCS(pcap_open pcap_findalldevs_ex pcap_createsrcstr) + if test $ac_cv_func_pcap_open = "yes" -a \ + $ac_cv_func_pcap_findalldevs_ex = "yes" -a \ + $ac_cv_func_pcap_createsrcstr = "yes" ; then + AC_DEFINE(HAVE_PCAP_REMOTE, 1, + [Define to 1 if you have WinPcap remote capturing support and prefer to use these new API features.]) + fi + AC_CHECK_FUNCS(pcap_setsampling) + LIBS="$ac_save_LIBS" +]) + # # AC_WIRESHARK_ZLIB_CHECK # @@ -557,198 +701,66 @@ AC_DEFUN([AC_WIRESHARK_ZLIB_CHECK], then # # Well, we at least have the zlib header file. + # We link with zlib to support uncompression of + # gzipped network traffic, e.g. in an HTTP request + # or response body. # - # Check for "gzgets()" 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 "gzgets()" should have the other routines we - # depend on, such as "gzseek()", "gztell()", and "zError()". - # - # Another reason why we require "gzgets()" is that - # some versions of zlib that didn't have it, such - # as 1.0.8, had a bug in "gzseek()" that meant that it - # doesn't work correctly on uncompressed files; this - # means we cannot use version 1.0.8. (Unfortunately, - # that's the version that comes with recent X11 source, - # and many people who install XFree86 on their Slackware - # boxes don't realize that they should configure it to - # use the native zlib rather than building and installing - # the crappy old version that comes with XFree86.) - # - # I.e., we can't just avoid using "gzgets()", as - # versions of zlib without "gzgets()" are likely to have - # a broken "gzseek()". - # - AC_CHECK_LIB(z, gzgets, - [ - if test "x$zlib_dir" != "x" - then - # - # Put the "-I" and "-L" flags for zlib at - # the beginning of CFLAGS, CPPFLAGS, and - # LIBS. - # - LIBS="" - AC_WIRESHARK_ADD_DASH_L(LIBS, $zlib_dir/lib) - LIBS="$LIBS -lz $wireshark_save_LIBS" - else - LIBS="-lz $LIBS" - fi - AC_DEFINE(HAVE_LIBZ, 1, [Define to use libz library]) - ],[ - if test "x$zlib_dir" != "x" - then - # - # Restore the versions of CFLAGS, CPPFLAGS, - # and LIBS before we added the "-with-zlib=" - # directory, as we didn't actually find - # zlib there, or didn't find a zlib that - # contains gzgets there. - # - CFLAGS="$wireshark_save_CFLAGS" - CPPFLAGS="$wireshark_save_CPPFLAGS" - LIBS="$wireshark_save_LIBS" - fi - want_zlib=no - ]) - fi - - if test "x$want_zlib" != "xno" - then - # - # Well, we at least have the zlib header file and a zlib - # with "gzgets()". - # - # Now check for "gzgets()" in zlib when linking with the - # linker flags for GTK+ applications; people often grab - # XFree86 source and build and install it on their systems, - # and they appear sometimes to misconfigure XFree86 so that, - # even on systems with zlib, it assumes there is no zlib, - # so the XFree86 build process builds and installs its - # own zlib in the X11 library directory. - # - # The XFree86 zlib is an older version that lacks - # "gzgets()", and that's the zlib with which Ethereal - # gets linked, so the build of Ethereal fails. - # - ac_save_CFLAGS="$CFLAGS" - ac_save_LIBS="$LIBS" - CFLAGS="$CFLAGS $GTK_CFLAGS" - LIBS="$GTK_LIBS -lz $LIBS" - AC_MSG_CHECKING([for gzgets missing when linking with X11]) - AC_TRY_LINK_FUNC(gzgets, AC_MSG_RESULT(no), - [ - AC_MSG_RESULT(yes) - AC_MSG_ERROR(old zlib found when linking with X11 - get rid of old zlib.) - ]) - CFLAGS="$ac_save_CFLAGS" - LIBS="$ac_save_LIBS" - fi -]) - -# -# AC_WIRESHARK_LIBPCRE_CHECK -# -AC_DEFUN([AC_WIRESHARK_LIBPCRE_CHECK], -[ - if test "x$pcre_dir" != "x" - then - # - # The user specified a directory in which libpcre 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 libpcre 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. - # - wireshark_save_CFLAGS="$CFLAGS" - CFLAGS="$CFLAGS -I$pcre_dir/include" - wireshark_save_CPPFLAGS="$CPPFLAGS" - CPPFLAGS="$CPPFLAGS -I$pcre_dir/include" - wireshark_save_LIBS="$LIBS" - LIBS="$LIBS -lpcre" - wireshark_save_LDFLAGS="$LDFLAGS" - LDFLAGS="$LDFLAGS -L$pcre_dir/lib" - fi + if test "x$zlib_dir" != "x" + then + # + # Put the "-I" and "-L" flags for zlib at + # the beginning of CFLAGS, CPPFLAGS, and + # LIBS. + # + LIBS="" + AC_WIRESHARK_ADD_DASH_L(LIBS, $zlib_dir/lib) + LIBS="$LIBS -lz $wireshark_save_LIBS" + else + LIBS="-lz $LIBS" + fi + AC_DEFINE(HAVE_LIBZ, 1, [Define to use libz library]) - # - # Make sure we have "pcre.h". If we don't, it means we probably - # don't have libpcre, so don't use it. - # - AC_CHECK_HEADER(pcre.h,, - [ - if test "x$pcre_dir" != "x" - then - # - # The user used "--with-pcre=" to specify a directory - # containing libpcre, but we didn't find the header file - # there; that either means they didn't specify the - # right directory or are confused about whether libpcre - # is, in fact, installed. Report the error and give up. - # - AC_MSG_ERROR([libpcre header not found in directory specified in --with-pcre]) - else - if test "x$want_pcre" = "xyes" - then # - # The user tried to force us to use the library, but we - # couldn't find the header file; report an error. + # Check for "inflatePrime()" in zlib, which we need + # in order to read compressed capture files. # - AC_MSG_ERROR(Header file pcre.h not found.) - else - # - # We couldn't find the header file; don't use the - # library, as it's probably not present. - # - want_pcre=no - fi - fi - ]) + AC_CHECK_FUNCS(inflatePrime) - if test "x$want_pcre" != "xno" - then - # - # Well, we at least have the pcre header file. + if test "x$ac_cv_func_inflatePrime" = "xyes" ; then + # + # Now check for "inflatePrime()" in zlib when + # linking with the linker flags for GTK+ + # applications; people often grab XFree86 source + # and build and install it on their systems, + # and they appear sometimes to misconfigure + # XFree86 so that, even on systems with zlib, + # it assumes there is no zlib, so the XFree86 + # build process builds and installs its + # own zlib in the X11 library directory. + # + # The zlib in at least some versions of XFree86 + # is an older version that may lack "inflatePrime()", + # and that's the zlib with which Wireshark gets + # linked, so the build of Wireshark fails. + # + AC_MSG_CHECKING([for inflatePrime missing when linking with X11]) + AC_TRY_LINK_FUNC(inflatePrime, AC_MSG_RESULT(no), + [ + AC_MSG_RESULT(yes) + AC_MSG_ERROR(old zlib found when linking with X11 - get rid of old zlib.) + ]) + fi + else # - # We're only using standard functions from libpcre, - # so we don't need to perform extra checks. + # Restore the versions of CFLAGS, CPPFLAGS, + # and LIBS before we added the "-with-zlib=" + # directory, as we didn't actually find + # zlib there. # - AC_CHECK_LIB(pcre, pcre_compile, - [ - if test "x$pcre_dir" != "x" - then - # - # Put the "-I" and "-L" flags for pcre at - # the beginning of CFLAGS, CPPFLAGS, - # LDFLAGS, and LIBS. - # - PCRE_LIBS="-L$pcre_dir/lib -lpcre $wireshark_save_LIBS" - else - PCRE_LIBS="-lpcre" - fi - AC_DEFINE(HAVE_LIBPCRE, 1, [Define to use libpcre library]) - ],[ - if test "x$pcre_dir" != "x" - then - # - # Restore the versions of CFLAGS, CPPFLAGS, - # LDFLAGS, and LIBS before we added the - # "--with-pcre=" directory, as we didn't - # actually find pcre there. - # - CFLAGS="$wireshark_save_CFLAGS" - CPPFLAGS="$wireshark_save_CPPFLAGS" - LDFLAGS="$wireshark_save_LDFLAGS" - LIBS="$wireshark_save_LIBS" - PCRE_LIBS="" - fi - want_pcre=no - ]) - AC_SUBST(PCRE_LIBS) + CFLAGS="$wireshark_save_CFLAGS" + CPPFLAGS="$wireshark_save_CPPFLAGS" + LIBS="$wireshark_save_LIBS" + want_zlib=no fi ]) @@ -776,10 +788,10 @@ AC_DEFUN([AC_WIRESHARK_LIBLUA_CHECK],[ wireshark_save_CPPFLAGS="$CPPFLAGS" CPPFLAGS="$CPPFLAGS -I$lua_dir/include" wireshark_save_LIBS="$LIBS" - LIBS="$LIBS -L$lua_dir/lib -llua" + LIBS="$LIBS -L$lua_dir/lib -llua -lm" wireshark_save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS -L$lua_dir/lib" - else + else # # The user specified no directory in which liblua resides, # so just add "-llua -lliblua" to the used libs. @@ -788,7 +800,7 @@ AC_DEFUN([AC_WIRESHARK_LIBLUA_CHECK],[ wireshark_save_CPPFLAGS="$CPPFLAGS" wireshark_save_LDFLAGS="$LDFLAGS" wireshark_save_LIBS="$LIBS" - LIBS="$LIBS -llua" + LIBS="$LIBS -llua -lm" fi # @@ -803,12 +815,71 @@ AC_DEFUN([AC_WIRESHARK_LIBLUA_CHECK],[ then LUA_INCLUDES="-I$lua_dir/include/lua5.1" else - # we found lua5.1/lua.h, but we don't know which include dir contains it - AC_MSG_ERROR(Header file lua.h was found as lua5.1/lua.h but we can't use it. Please set the PATH for the --with-lua configure parameter. \n probably it is /usr.) + # + # The user didn't specify a directory in which liblua resides; + # we must look for the headers in a "lua5.1" subdirectory of + # "/usr/include", "/usr/local/include", or "$prefix/include" + # as some systems apparently put the headers in a "lua5.1" + # subdirectory. + AC_MSG_CHECKING(for extraneous lua header directories) + found_lua_dir="" + lua_dir_list="/usr/include/lua5.1 $prefix/include/lua5.1" + if test "x$ac_cv_enable_usr_local" = "xyes" + then + lua_dir_list="$lua_dir_list /usr/local/include/lua5.1" + fi + for lua_dir_ent in $lua_dir_list + do + if test -d $lua_dir_ent + then + LUA_INCLUDES="-I$lua_dir_ent" + found_lua_dir="$lua_dir_ent" + break + fi + done + + if test "x$found_lua_dir" != "x" + then + AC_MSG_RESULT(found -- $found_lua_dir) + else + AC_MSG_RESULT(not found) + # + # Restore the versions of CFLAGS, CPPFLAGS, + # LDFLAGS, and LIBS before we added the + # "--with-lua=" directory, as we didn't + # actually find lua there. + # + CFLAGS="$wireshark_save_CFLAGS" + CPPFLAGS="$wireshark_save_CPPFLAGS" + LDFLAGS="$wireshark_save_LDFLAGS" + LIBS="$wireshark_save_LIBS" + LUA_LIBS="" + if test "x$want_lua" = "xyes" + then + # we found lua5.1/lua.h, but we don't know which include dir contains it + AC_MSG_ERROR(Header file lua.h was found as lua5.1/lua.h but we can't locate the include directory. Please set the DIR for the --with-lua configure parameter.) + else + # + # We couldn't find the header file; don't use the + # library, as it's probably not present. + # + want_lua=no + fi + fi fi - ], [ + # + # Restore the versions of CFLAGS, CPPFLAGS, + # LDFLAGS, and LIBS before we added the + # "--with-lua=" directory, as we didn't + # actually find lua there. + # + CFLAGS="$wireshark_save_CFLAGS" + CPPFLAGS="$wireshark_save_CPPFLAGS" + LDFLAGS="$wireshark_save_LDFLAGS" + LIBS="$wireshark_save_LIBS" + LUA_LIBS="" if test "x$lua_dir" != "x" then # @@ -850,8 +921,11 @@ AC_DEFUN([AC_WIRESHARK_LIBLUA_CHECK],[ # against libm. LIBS="$LIBS $LUA_LIBS -lm" - AC_CHECK_LIB(lua, lua_call, + AC_CHECK_LIB(lua, luaL_register, [ + # + # Lua 5.1 found + # if test "x$lua_dir" != "x" then # @@ -859,63 +933,16 @@ AC_DEFUN([AC_WIRESHARK_LIBLUA_CHECK],[ # the beginning of CFLAGS, CPPFLAGS, # LDFLAGS, and LIBS. # - LUA_LIBS="-L$lua_dir/lib -llua" + LUA_LIBS="-L$lua_dir/lib -llua -lm" LUA_INCLUDES="-I$lua_dir/include" else - LUA_LIBS="-llua" + LUA_LIBS="-llua -lm" LUA_INCLUDES="" fi + AC_DEFINE(HAVE_LUA_5_1, 1, [Define to use Lua 5.1]) + want_lua=yes - # - # we got lua, now look for lualib - # - AC_CHECK_LIB(lualib, luaL_openlib, - [ - # - # we have 5.0 - # - LUA_LIBS="$LUA_LIBS -llualib" - ],[ - # - # no lualib, in 5.1 there's only liblua - # do we have 5.1? - # - - LIBS="$wireshark_save_LIBS $LUA_LIBS" - - AC_CHECK_LIB(lua, luaL_register, - [ - # - # Lua 5.1 found - # - AC_DEFINE(HAVE_LUA_5_1, 1, [Define to use Lua 5.1]) - ],[ - # - # No, it is not 5.1 - # - if test "x$lua_dir" != "x" - then - # - # Restore the versions of CFLAGS, CPPFLAGS, - # LDFLAGS, and LIBS before we added the - # "--with-lua=" directory, as we didn't - # actually find lua there. - # - CFLAGS="$wireshark_save_CFLAGS" - CPPFLAGS="$wireshark_save_CPPFLAGS" - LDFLAGS="$wireshark_save_LDFLAGS" - LIBS="$wireshark_save_LIBS" - LUA_LIBS="" - fi - # User requested --with-lua but it isn't available - if test "x$want_lua" = "xyes" - then - AC_MSG_ERROR(Linking with liblualib failed.) - fi - want_lua=no - ]) - ]) - ],[ + ],[ # # We could not find the libs, maybe we have version number in the lib name # @@ -927,8 +954,9 @@ AC_DEFUN([AC_WIRESHARK_LIBLUA_CHECK],[ # # Lua 5.1 found # - AC_DEFINE(HAVE_LUA_5_1, 1, [Define to use Lua 5.1]) LUA_LIBS=" -llua5.1 -lm" + AC_DEFINE(HAVE_LUA_5_1, 1, [Define to use Lua 5.1]) + want_lua=yes ],[ # # Restore the versions of CFLAGS, CPPFLAGS, @@ -961,216 +989,147 @@ AC_DEFUN([AC_WIRESHARK_LIBLUA_CHECK],[ ]) # -# AC_WIRESHARK_NETSNMP_CHECK +# AC_WIRESHARK_LIBPORTAUDIO_CHECK # -AC_DEFUN([AC_WIRESHARK_NETSNMP_CHECK], -[ - dnl get the net-snmp-config binary - if test "x$netsnmpconfig" = "x" ; then - # - # The user didn't specify where net-snmp-config is - # located; search for it. - # - AC_PATH_PROG(NETSNMPCONFIG, net-snmp-config) - else - NETSNMPCONFIG=$netsnmpconfig - if test ! -x $NETSNMPCONFIG -o ! -f $NETSNMPCONFIG ; then - NETSNMPCONFIG=$netsnmpconfig/bin/net-snmp-config - if test ! -x $NETSNMPCONFIG -o ! -f $NETSNMPCONFIG ; then - AC_MSG_ERROR(Invalid net-snmp-config: $netsnmpconfig) - fi - fi - fi - - # - # XXX - check whether $NETSNMPCONFIG is executable? - # if test "x$NETSNMPCONFIG" != "xno" -a "x$NETSNMPCONFIG" != "x" -a -x "$NETSNMPCONFIG" ; then - # We already did that if it was set; presumably AC_PATH_PROG - # will fail if it doesn't find an executable version. - # - if test "x$NETSNMPCONFIG" != "x" ; 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. - # - wireshark_save_CFLAGS="$CFLAGS" - wireshark_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` - if echo "$SNMP_LIBS" | grep crypto >/dev/null && test "x$SSL_LIBS" = "x"; then - if test "x$want_netsnmp" = "xyes" ; then - AC_MSG_ERROR(Net-SNMP requires openssl but ssl not enabled) - else - AC_MSG_RESULT(Net-SNMP requires openssl but ssl not enabled - disabling Net-SNMP) - fi - CFLAGS="$wireshark_save_CFLAGS" - CPPFLAGS="$wireshark_save_CPPFLAGS" - SNMP_LIBS= - else - AC_DEFINE(HAVE_NET_SNMP, 1, [Define to enable support for Net-SNMP]) - have_net_snmp="yes" - fi - else - if test "x$want_netsnmp" = "xyes" ; then - AC_MSG_ERROR(Net-SNMP not found) - else - # - # 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="$wireshark_save_CFLAGS" - CPPFLAGS="$wireshark_save_CPPFLAGS" - fi - fi - fi -]) +AC_DEFUN([AC_WIRESHARK_LIBPORTAUDIO_CHECK],[ -# -# AC_WIRESHARK_UCDSNMP_CHECK -# -AC_DEFUN([AC_WIRESHARK_UCDSNMP_CHECK], -[ - if test "x$ucdsnmp_dir" != "x" + if test "x$portaudio_dir" != "x" then # - # The user specified a directory in which UCD SNMP resides, - # so add the "include" subdirectory of that directory to + # The user specified a directory in which libportaudio + # 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 + # XXX - if there's also a libportaudio 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$ucdsnmp_dir/include" - CPPFLAGS="$CPPFLAGS -I$ucdsnmp_dir/include" - AC_WIRESHARK_ADD_DASH_L(LDFLAGS, $ucdsnmp_dir/lib) + wireshark_save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -I$portaudio_dir/include" + wireshark_save_CPPFLAGS="$CPPFLAGS" + CPPFLAGS="$CPPFLAGS -I$portaudio_dir/include" + wireshark_save_LIBS="$LIBS" + LIBS="$LIBS -L$portaudio_dir/lib -lportaudio" + wireshark_save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS -L$portaudio_dir/lib" + else + # + # The user specified no directory in which libportaudio resides, + # so just add "-lportaudio" to the used libs. + # + wireshark_save_CFLAGS="$CFLAGS" + wireshark_save_CPPFLAGS="$CPPFLAGS" + wireshark_save_LDFLAGS="$LDFLAGS" + wireshark_save_LIBS="$LIBS" + LIBS="$LIBS -lportaudio" fi # - # Check for one of the UCD SNMP header files we include, - # to see whether we have UCD SNMP installed. + # Make sure we have "portaudio.h". If we don't, it means we probably + # don't have libportaudio, so don't use it. # - AC_CHECK_HEADER(ucd-snmp/ucd-snmp-config.h, + AC_CHECK_HEADERS(portaudio.h,, [ - # - # UCD SNMP or Net-SNMP might require various helper - # libraries on various platforms, such as "-ldes425" - # in "/usr/kerberos/lib" on some versions of Red - # Hat Linux, or "-lkstat" on Solaris. - # - # It might also require "-lcrypto" on some platforms; - # if the user didn't specify --with-ssl, we check - # whether it would have made a difference and, if so, - # we tell the user that they needed to request it. - # (There are annoying licensing issues with it and - # GPL'ed code, so we don't include it by default.) - # - # XXX - autoconf really needs a way to test for - # a given routine in a given library *and* to test - # whether additional "-L"/"-R"/whatever flags are - # needed *before* the "-l" flag for the library - # and to test whether additional libraries are - # needed after the library *and* to cache all that - # information. - # - wireshark_save_LIBS="$LIBS" - found_sprint_realloc_objid=no - for extras in "" "-L/usr/kerberos/lib -ldes425" "-lkstat" - do - LIBS="-lsnmp $extras $SOCKET_LIBS $NSL_LIBS $SSL_LIBS" - if test -z "$extras" + if test "x$portaudio_dir" != "x" + then + # + # The user used "--with-portaudio=" to specify a directory + # containing libportaudio, but we didn't find the header file + # there; that either means they didn't specify the + # right directory or are confused about whether libportaudio + # is, in fact, installed. Report the error and give up. + # + AC_MSG_ERROR([libportaudio header not found in directory specified in --with-portaudio]) + else + CFLAGS="$wireshark_save_CFLAGS" + CPPFLAGS="$wireshark_save_CPPFLAGS" + LDFLAGS="$wireshark_save_LDFLAGS" + LIBS="$wireshark_save_LIBS" + PORTAUDIO_LIBS="" + if test "x$want_portaudio" = "xyes" then - AC_MSG_CHECKING([whether UCD SNMP includes sprint_realloc_objid]) - else - AC_MSG_CHECKING([whether UCD SNMP includes sprint_realloc_objid (linking with $extras)]) - fi - AC_TRY_LINK( - [ - ], - [ - sprint_realloc_objid(); - ], - [ # - # We found "sprint_realloc_objid()", - # and required the libraries in - # extras as well. + # The user tried to force us to use the library, but we + # couldn't find the header file; report an error. # - AC_MSG_RESULT(yes) - SNMP_LIBS="-lsnmp $extras"; break; - found_sprint_realloc_objid=yes - break - ], - [ + AC_MSG_ERROR(Header file portaudio.h not found.) + else # - # The link failed. If they didn't ask - # for SSL, try linking with -lcrypto - # as well, and if *that* succeeds, - # tell them they'll need to specify - # --want-ssl. + # We couldn't find the header file; don't use the + # library, as it's probably not present. # - AC_MSG_RESULT(no) - if test "x$want_ssl" = "xno" - then - LIBS="$LIBS -lcrypto" - AC_TRY_LINK( - [ - ], - [ - sprint_realloc_objid(); - ], - [ - # - # It worked with -lcrypto; tell - # them they'll need to specify - # --with-ssl. - # - AC_MSG_ERROR([UCD SNMP requires -lcrypto but --with-ssl not specified]) - ]) - fi - ]) - done - LIBS="$wireshark_save_LIBS" - - # - # If we didn't find "sprint_realloc_objid()", fail. - # Either the user needs a newer version of UCD SNMP - # with "sprint_realloc_objid()", or they may need to - # specify "--with-ssl". - # - if test "$found_snmp_sprint_realloc_objid" = no; then - AC_MSG_ERROR([UCD SNMP header files found, but sprint_realloc_objid not found in SNMP library.]) + want_portaudio=no + fi fi + ]) + # + # Check whether we have the right version of portaudio + # + if test "x$want_portaudio" != "xno" + then + AC_CHECK_TYPE(PortAudioStream, + AC_DEFINE(PORTAUDIO_API_1, 1, [Define if we are using version of of the Portaudio library API]), + , + [#include ]) + fi + + if test "x$want_portaudio" != "xno" + then # - # We found it, so we have UCD SNMP. - # - AC_DEFINE(HAVE_UCD_SNMP, 1, [Define to enable support for UCD-SNMP]) - have_ucd_snmp="yes" - ],[ + # Well, we at least have the portaudio header file. # - # No, we don't have it. - # If the user explicitly asked for UCD SNMP, fail, - # otherwise just don't use the UCD SNMP library. + # let's check if the libs are there # - if test "x$want_ucdsnmp" = "xyes" ; then - AC_MSG_ERROR(Header file ucd-snmp/snmp.h not found.) - fi - ]) + + AC_CHECK_LIB(portaudio, Pa_Initialize, + [ + if test "x$portaudio_dir" != "x" + then + # + # Put the "-I" and "-L" flags for portaudio at + # the beginning of CFLAGS, CPPFLAGS, + # LDFLAGS, and LIBS. + # + PORTAUDIO_LIBS="-L$portaudio_dir/lib -lportaudio" + PORTAUDIO_INCLUDES="-I$portaudio_dir/include" + else + PORTAUDIO_LIBS="-lportaudio" + PORTAUDIO_INCLUDES="" + fi + AC_DEFINE(HAVE_LIBPORTAUDIO, 1, [Define to use libportaudio library]) + want_portaudio=yes + ],[ + # + # Restore the versions of CFLAGS, CPPFLAGS, + # LDFLAGS, and LIBS before we added the + # "--with-portaudio=" directory, as we didn't + # actually find portaudio there. + # + CFLAGS="$wireshark_save_CFLAGS" + CPPFLAGS="$wireshark_save_CPPFLAGS" + LDFLAGS="$wireshark_save_LDFLAGS" + LIBS="$wireshark_save_LIBS" + PORTAUDIO_LIBS="" + # User requested --with-portaudio but it isn't available + if test "x$want_portaudio" = "xyes" + then + AC_MSG_ERROR(Linking with libportaudio failed.) + fi + want_portaudio=no + ]) + + CFLAGS="$wireshark_save_CFLAGS" + CPPFLAGS="$wireshark_save_CPPFLAGS" + LDFLAGS="$wireshark_save_LDFLAGS" + LIBS="$wireshark_save_LIBS" + AC_SUBST(PORTAUDIO_LIBS) + AC_SUBST(PORTAUDIO_INCLUDES) + + fi ]) # @@ -1209,6 +1168,37 @@ AC_DEFUN([AC_WIRESHARK_GNU_SED_CHECK], fi ]) +# +# AC_WIRESHARK_C_ARES_CHECK +# +AC_DEFUN([AC_WIRESHARK_C_ARES_CHECK], +[ + want_c_ares=defaultyes + + if test "x$want_c_ares" = "xdefaultyes"; then + want_c_ares=yes + if test "x$ac_cv_enable_usr_local" = "xyes" ; then + withval=/usr/local + if test -d "$withval"; then + AC_WIRESHARK_ADD_DASH_L(LDFLAGS, ${withval}/lib) + fi + fi + fi + + if test "x$want_c_ares" = "xyes"; then + AC_CHECK_LIB(cares, ares_init, + [ + C_ARES_LIBS=-lcares + AC_DEFINE(HAVE_C_ARES, 1, [Define to use c-ares library]) + have_good_c_ares=yes + ],, $SOCKET_LIBS $NSL_LIBS + ) + else + AC_MSG_RESULT(not required) + fi +]) + + # # AC_WIRESHARK_ADNS_CHECK # @@ -1218,9 +1208,11 @@ AC_DEFUN([AC_WIRESHARK_ADNS_CHECK], if test "x$want_adns" = "xdefaultyes"; then want_adns=yes - withval=/usr/local - if test -d "$withval"; then - AC_WIRESHARK_ADD_DASH_L(LDFLAGS, ${withval}/lib) + if test "x$ac_cv_enable_usr_local" = "xyes" ; then + withval=/usr/local + if test -d "$withval"; then + AC_WIRESHARK_ADD_DASH_L(LDFLAGS, ${withval}/lib) + fi fi fi @@ -1238,6 +1230,37 @@ AC_DEFUN([AC_WIRESHARK_ADNS_CHECK], ]) +# +# AC_WIRESHARK_LIBCAP_CHECK +# +AC_DEFUN([AC_WIRESHARK_LIBCAP_CHECK], +[ + want_libcap=defaultyes + + if test "x$want_libcap" = "xdefaultyes"; then + want_libcap=yes + if test "x$ac_cv_enable_usr_local" = "xyes" ; then + withval=/usr/local + if test -d "$withval"; then + AC_WIRESHARK_ADD_DASH_L(LDFLAGS, ${withval}/lib) + fi + fi + fi + + if test "x$want_libcap" = "xyes"; then + AC_CHECK_LIB(cap, cap_set_flag, + [ + LIBCAP_LIBS=-lcap + AC_DEFINE(HAVE_LIBCAP, 1, [Define to use the libcap library]) + have_good_libcap=yes + ],, + ) + else + AC_MSG_RESULT(not required) + fi +]) + + # # AC_WIRESHARK_KRB5_CHECK # @@ -1262,11 +1285,14 @@ AC_DEFUN([AC_WIRESHARK_KRB5_CHECK], CFLAGS="$CFLAGS -I$krb5_dir/include" CPPFLAGS="$CPPFLAGS -I$krb5_dir/include" ac_heimdal_version=`grep heimdal $krb5_dir/include/krb5.h | head -n 1 | sed 's/^.*heimdal.*$/HEIMDAL/'` - ac_mit_version=`grep 'Massachusetts Institute of Technology' $krb5_dir/include/krb5.h | head -n 1 | sed 's/^.*Massachusetts Institute of Technology.*$/MIT/'` - ac_krb5_version="$ac_heimdal_version$ac_mit_version" + # MIT Kerberos moved krb5.h to krb5/krb5.h starting with release 1.5 + ac_mit_version_olddir=`grep 'Massachusetts Institute of Technology' $krb5_dir/include/krb5.h | head -n 1 | sed 's/^.*Massachusetts Institute of Technology.*$/MIT/'` + ac_mit_version_newdir=`grep 'Massachusetts Institute of Technology' $krb5_dir/include/krb5/krb5.h | head -n 1 | sed 's/^.*Massachusetts Institute of Technology.*$/MIT/'` + ac_krb5_version="$ac_heimdal_version$ac_mit_version_olddir$ac_mit_version_newdir" if test "x$ac_krb5_version" = "xHEIMDAL" - KRB5_LIBS="-L$krb5_dir/lib -lkrb5 -lasn1 $SSL_LIBS -lroken -lcrypt" then + KRB5_LIBS="-L$krb5_dir/lib -lkrb5 -lasn1 $SSL_LIBS -lroken -lcrypt" + else KRB5_LIBS="-L$krb5_dir/lib -lkrb5 -lk5crypto -lcom_err" fi if test "x$ac_krb5_version" = "xMIT" @@ -1274,7 +1300,7 @@ AC_DEFUN([AC_WIRESHARK_KRB5_CHECK], AC_DEFINE(HAVE_MIT_KERBEROS, 1, [Define to use MIT kerberos]) fi else - AC_PATH_PROG(KRB5_CONFIG, krb5-config) + AC_PATH_PROG(KRB5_CONFIG, krb5-config) if test -x "$KRB5_CONFIG" then KRB5_FLAGS=`"$KRB5_CONFIG" --cflags` @@ -1305,7 +1331,7 @@ AC_DEFUN([AC_WIRESHARK_KRB5_CHECK], fi ;; esac - ac_krb5_version=`"$KRB5_CONFIG" --version | head -n 1 | sed -e 's/^.*heimdal.*$/HEIMDAL/' -e 's/^Kerberos .*$/MIT/'` + ac_krb5_version=`"$KRB5_CONFIG" --version | head -n 1 | sed -e 's/^.*heimdal.*$/HEIMDAL/' -e 's/^Kerberos .*$/MIT/' -e 's/^Solaris Kerberos .*$/MIT/'` fi fi @@ -1494,3 +1520,266 @@ AC_DEFUN([AC_WIRESHARK_KRB5_CHECK], AC_SUBST(KRB5_LIBS) ]) +# +# AC_WIRESHARK_GEOIP_CHECK +# +AC_DEFUN([AC_WIRESHARK_GEOIP_CHECK], +[ + want_geoip=defaultyes + + if test "x$want_geoip" = "xdefaultyes"; then + want_geoip=yes + if test "x$ac_cv_enable_usr_local" = "xyes" ; then + withval=/usr/local + if test -d "$withval"; then + AC_WIRESHARK_ADD_DASH_L(LDFLAGS, ${withval}/lib) + fi + fi + fi + + if test "x$want_geoip" = "xyes"; then + AC_CHECK_LIB(GeoIP, GeoIP_new, + [ + GEOIP_LIBS=-lGeoIP + AC_DEFINE(HAVE_GEOIP, 1, [Define to use GeoIP library]) + have_good_geoip=yes + ],, + ) + if test "x$have_good_geoip" = "xyes"; then + AC_CHECK_LIB(GeoIP, GeoIP_country_name_by_ipnum_v6, + [ + AC_DEFINE(HAVE_GEOIP_V6, 1, [Define if GeoIP supports IPv6 (GeoIP 1.4.5 and later)]) + ],, + ) + fi + else + AC_MSG_RESULT(not required) + fi +]) + +#AC_WIRESHARK_LDFLAGS_CHECK +# +# $1 : ldflag(s) to test +# +# The macro first determines if the compiler supports "-Wl,{option}" to +# pass options through to the linker. Then it attempts to compile with +# the defined ldflags. The defined flags are added to LDFLAGS only if +# the compilation succeeds. +# +AC_DEFUN([AC_WIRESHARK_LDFLAGS_CHECK], +[GCC_OPTION="$1" +AC_MSG_CHECKING(whether we can add $GCC_OPTION to LDFLAGS) +if test "x$ac_supports_W_linker_passthrough" = "xyes"; then + LDFLAGS_saved="$LDFLAGS" + LDFLAGS="$LDFLAGS $GCC_OPTION" + AC_LINK_IFELSE([ + AC_LANG_SOURCE([[ + main() { return; } + ]])], + [ + AC_MSG_RESULT(yes) + ], + [ + AC_MSG_RESULT(no) + LDFLAGS="$LDFLAGS_saved" + ]) +else + AC_MSG_RESULT(no) +fi +]) + +# +# AC_WIRESHARK_GCC_CFLAGS_CHECK +# +# $1 : cflags to test +# +# The macro first determines if the compiler supports GCC-style flags. +# Then it attempts to compile with the defined cflags. The defined +# flags are added to CFLAGS only if the compilation succeeds. +# +# We do this because not all such options are necessarily supported by +# the version of the particular compiler we're using. +# +# NOTE: clang, by default, only warns about unknown -W options. +# If we're using clang, we turn on -Werror=unknown-warning-option +# so that it fails if we pass it a -W option it doesn't know about +# but doesn't fail for any other warning that the test program might +# produce. +# +AC_DEFUN([AC_WIRESHARK_GCC_CFLAGS_CHECK], +[GCC_OPTION="$1" +AC_MSG_CHECKING(whether we can add $GCC_OPTION to CFLAGS) +if test "x$ac_supports_gcc_flags" = "xyes" ; then + CFLAGS_saved="$CFLAGS" + CFLAGS="$CFLAGS $GCC_OPTION" + if test "x$CC" = "xclang" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + AC_COMPILE_IFELSE([ + AC_LANG_SOURCE([[ + int foo; + ]])], + [ + AC_MSG_RESULT(yes) + ], + [ + AC_MSG_RESULT(no) + CFLAGS="$CFLAGS_saved" + ]) +else + AC_MSG_RESULT(no) +fi +]) + +# +# AC_WIRESHARK_OSX_INTEGRATION_CHECK +# +# Checks for the presence of OS X integration functions in the GTK+ framework +# or as a separate library. +# +# http://sourceforge.net/apps/trac/gtk-osx/wiki/Integrate +# +# http://live.gnome.org/GTK%2B/OSX/Integration +# for the old Carbon-based integration functions +# +# http://gtk-osx.sourceforge.net/ige-mac-integration/ +# for the new Cocoa-based integration functions +# +AC_DEFUN([AC_WIRESHARK_OSX_INTEGRATION_CHECK], +[ + ac_save_CFLAGS="$CFLAGS" + ac_save_LIBS="$LIBS" + CFLAGS="$CFLAGS $GTK_CFLAGS" + LIBS="$GTK_LIBS $LIBS" + + # + # Check for the new integration functions in a -ligemacintegration + # library. + # + AC_CHECK_LIB(igemacintegration, gtk_osxapplication_set_menu_bar, + [ + AC_DEFINE(HAVE_GTKOSXAPPLICATION, 1, + [Define to 1 if -ligemacintegration includes the GtkOSXApplication Integration functions.]) + have_ige_mac=yes + # We don't want gtk stuff in LIBS (which is reset below) so + # manually set GTK_LIBS (which is more appropriate) + GTK_LIBS="$GTK_LIBS -ligemacintegration" + ]) + + if test x$have_ige_mac = x + then + # + # Not found - check for the old integration functions in + # the Gtk framework. + # + AC_CHECK_LIB(Gtk, ige_mac_menu_set_menu_bar, + [ + AC_DEFINE(HAVE_IGE_MAC_INTEGRATION, 1, + [Define to 1 if the the Gtk+ framework or a separate library includes the Imendio IGE Mac OS X Integration functions.]) + have_ige_mac=yes + # We don't want gtk stuff in LIBS (which is reset below) so + # manually set GTK_LIBS (which is more appropriate) + GTK_LIBS="$GTK_LIBS -lGtk" + ]) + fi + + if test x$have_ige_mac = x + then + # + # Not found - check for the old integration functions in + # a -ligemacintegration library. + # + AC_CHECK_LIB(igemacintegration, ige_mac_menu_set_menu_bar, + [ + AC_DEFINE(HAVE_IGE_MAC_INTEGRATION, 1, + [Define to 1 if the the Gtk+ framework or a separate library includes the Imendio IGE Mac OS X Integration functions.]) + have_ige_mac=yes + # We don't want gtk stuff in LIBS (which is reset below) so + # manually set GTK_LIBS (which is more appropriate) + GTK_LIBS="$GTK_LIBS -ligemacintegration" + ]) + fi + CFLAGS="$ac_save_CFLAGS" + LIBS="$ac_save_LIBS" +]) + +# +# AC_WIRESHARK_PYTHON_CHECK +# +# Check whether python devel package is present +# +AC_DEFUN([AC_WIRESHARK_PYTHON_CHECK], + [ + # + # Checking whether we have a python devel environment available + # +# AC_CACHE_CHECK([checking python devel package], ac_cv_wireshark_python_devel, +# [ + AC_CHECK_PROG([ac_ws_python_config], python-config, "yes", "no") + if test "x$ac_ws_python_config" = "xno"; then + ac_cv_wireshark_python_devel=no + if test "x$want_python" = "xyes" + then + # + # The user tried to force us to use Python, but we + # couldn't find the python-config tool; report an error. + # + AC_MSG_ERROR("python-config not found") + fi + # + # Set want_python to no, so we report that we aren't using + # the Python interpreter. + # + want_python=no + else + AC_MSG_CHECKING([python devel]) + ac_save_ws_cflags=$CFLAGS + ac_save_ws_libs=$LIBS + CFLAGS=$(python-config --includes) + LIBS=$(python-config --ldflags) + AC_COMPILE_IFELSE( + [ + AC_LANG_PROGRAM( + [[#include ]], + [[Py_Initialiaze();]] + ) + ], + [ + # + # Compilation successful, we have python devel available + # + ac_cv_wireshark_python_devel=yes + PY_LIBS=$LIBS + PY_CFLAGS=$CFLAGS + AC_SUBST(PY_LIBS) + AC_SUBST(PY_CFLAGS) + CFLAGS="$ac_save_ws_cflags" + LIBS="$ac_save_ws_libs" + AC_DEFINE(HAVE_PYTHON, 1, [Define if python devel package available]) + AC_MSG_RESULT([yes]) + ], + [ + # + # Compilation unsuccessful, python devel not available + # + ac_cv_wireshark_python_devel=no + CFLAGS=$ac_save_ws_cflags + LIBS=$ac_save_ws_libs + if test "x$want_python" = "xyes" + then + # + # The user tried to force us to use Python, but we + # couldn't compile the test program; report an error. + # + AC_MSG_ERROR("Python test program failed compilation") + fi + AC_MSG_RESULT([no]) + # + # Set want_python to no, so we report that we aren't using + # the Python interpreter. + # + want_python=no + ]) + fi +# ]) +])