From 72c2e53981a204d746737d8c01c4ad3738cd4880 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Jo=C3=A3o=20Valverde?= Date: Sun, 5 Nov 2017 12:05:43 +0000 Subject: [PATCH 1/1] autotools: Use pkg-config to configure Libsmi MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Change-Id: Icecea743739aa7e1a65753f623f311514260d373 Reviewed-on: https://code.wireshark.org/review/24252 Petri-Dish: João Valverde Tested-by: Petri Dish Buildbot Reviewed-by: João Valverde --- Makefile.am | 2 +- configure.ac | 27 +++++++++--- epan/Makefile.am | 2 +- m4/libsmi.m4 | 125 ------------------------------------------------------- 4 files changed, 24 insertions(+), 132 deletions(-) delete mode 100644 m4/libsmi.m4 diff --git a/Makefile.am b/Makefile.am index a2851e0..e6ed5eb 100644 --- a/Makefile.am +++ b/Makefile.am @@ -422,7 +422,7 @@ EPAN_EXTRA_LIBS = \ @KRB5_LIBS@ \ @LIBGCRYPT_LIBS@ \ @LIBGNUTLS_LIBS@ \ - @LIBSMI_LDFLAGS@ + @LIBSMI_LIBS@ # Libraries and plugin flags with which to link wireshark. # diff --git a/configure.ac b/configure.ac index 3b3475b..326561c 100644 --- a/configure.ac +++ b/configure.ac @@ -432,10 +432,6 @@ linux*) fi esac -# libsmi -# FIXME: currently the path argument to with-libsmi is being ignored -AX_LIBSMI - # # Check if we should build the Wireshark User's Guide # @@ -2427,6 +2423,27 @@ else fi AM_CONDITIONAL(HAVE_LIBXML2, test "x$have_libxml2" = "xyes") +# +# Libsmi check +# +AC_ARG_WITH(libsmi, + AC_HELP_STRING([--with-libsmi=@<:@yes/no@:>@], + [use libsmi MIB/PIB library @<:@default=yes, if available@:>@]), + [], [with_libsmi="if_available"]) + +have_libsmi=no +if test "x$with_libsmi" != "xno"; then + PKG_CHECK_MODULES(LIBSMI, libsmi, + [have_libsmi=yes + AC_DEFINE(HAVE_LIBSMI, 1, [Define if you have libsmi]) + ], + [if test "x$with_libsmi" = "xyes"; then + # Error out if the user explicitly requested libsmi + AC_MSG_ERROR([Libsmi was requested, but is not installed for development]) + fi + ] + ) +fi dnl dnl check whether plugins should be enabled @@ -3012,7 +3029,7 @@ echo " Use pcap library : $want_pcap" echo " Use zlib library : $zlib_message" echo " Use kerberos library : $krb5_message" echo " Use c-ares library : $c_ares_message" -echo " Use SMI MIB library : $libsmi_message" +echo " Use SMI MIB library : $have_libsmi" echo " Use GNU gcrypt library : yes" echo " Use GnuTLS library : $tls_message" echo " Use POSIX capabilities library : $libcap_message" diff --git a/epan/Makefile.am b/epan/Makefile.am index 9f7de62..e85f97b 100644 --- a/epan/Makefile.am +++ b/epan/Makefile.am @@ -330,7 +330,7 @@ libwireshark_la_LIBADD = \ @KRB5_LIBS@ \ @LIBGCRYPT_LIBS@ \ @LIBGNUTLS_LIBS@ \ - @LIBSMI_LDFLAGS@ \ + @LIBSMI_LIBS@ \ @LZ4_LIBS@ \ @NGHTTP2_LIBS@ \ @SNAPPY_LIBS@ \ diff --git a/m4/libsmi.m4 b/m4/libsmi.m4 deleted file mode 100644 index d719438..0000000 --- a/m4/libsmi.m4 +++ /dev/null @@ -1,125 +0,0 @@ -# Configure paths for libsmi -# Shamelessly stolen from http://autoconf-archive.cryp.to/ax_lib_sqlite3.html - -# Synopsis: AX_LIBSMI([minimum library version]) -# The default minimum library version is 2 - -# This macro sets/substitutes the following: -# AC_DEFINE(HAVE_LIBSMI) -# AC_SUBST(LIBSMI_CFLAGS) -# AC_SUBST(LIBSMI_LDFLAGS) -# AC_SUBST(LIBSMI_VERSION) -# $libsmi_message is set to "yes" or "no" - -AC_DEFUN([AX_LIBSMI], -[ - AC_ARG_WITH([libsmi], - AC_HELP_STRING( - [--with-libsmi=@<:@DIR@:>@], - [use libsmi MIB/PIB library @<:@default=yes@:>@, optionally specify the prefix for libsmi] - ), - [ - if test "$withval" = "no"; then - WANT_LIBSMI="no" - elif test "$withval" = "yes"; then - WANT_LIBSMI="yes" - ac_libsmi_path="" - else - WANT_LIBSMI="yes" - ac_libsmi_path="$withval" - fi - ], - [WANT_LIBSMI="yes"] - ) - - libsmi_message="no" - LIBSMI_CFLAGS="" - LIBSMI_LDFLAGS="" - LIBSMI_VERSION="" - - if test "x$WANT_LIBSMI" = "xyes"; then - - ac_libsmi_header="smi.h" - - libsmi_version_req=ifelse([$1], [], [2], [$1]) - - AC_MSG_CHECKING([for libsmi >= $libsmi_version_req]) - - if test "$ac_libsmi_path" != ""; then - ac_libsmi_ldflags="-L$ac_libsmi_path/lib" - ac_libsmi_cflags="-I$ac_libsmi_path/include" - else - for ac_libsmi_path_tmp in /usr /usr/local /opt $prefix; do - if test -f "$ac_libsmi_path_tmp/include/$ac_libsmi_header" \ - && test -r "$ac_libsmi_path_tmp/include/$ac_libsmi_header"; then - ac_libsmi_path=$ac_libsmi_path_tmp - ac_libsmi_ldflags="-L$ac_libsmi_path_tmp/lib" - ac_libsmi_cflags="-I$ac_libsmi_path_tmp/include" - break; - fi - done - fi - - ac_libsmi_ldflags="$ac_libsmi_ldflags -lsmi" - - saved_CFLAGS="$CFLAGS" - CFLAGS="$CFLAGS $ac_libsmi_cflags" - - AC_LANG_PUSH(C) - AC_COMPILE_IFELSE( - [ - AC_LANG_PROGRAM([[@%:@include ]], - [[ - int current, revision, age, n; - const int required = $libsmi_version_req; - if (smiInit("")) - exit(1); - if (strcmp(SMI_LIBRARY_VERSION, smi_library_version)) - exit(2); - n = sscanf(smi_library_version, "%d:%d:%d", ¤t, &revision, &age); - if (n != 3) - exit(3); - if (required < current - age || required > current) - exit(4); - ]] - ) - ], - [ - AC_MSG_RESULT([yes]) - libsmi_message="yes" - ], - [ - AC_MSG_RESULT([not found]) - libsmi_message="no" - ] - ) - AC_LANG_POP([C]) - - CFLAGS="$saved_CFLAGS" - - if test "$libsmi_message" = "yes"; then - - LIBSMI_CFLAGS="$ac_libsmi_cflags" - LIBSMI_LDFLAGS="$ac_libsmi_ldflags" - - ac_libsmi_header_path="$ac_libsmi_path/include/$ac_libsmi_header" - - dnl Retrieve libsmi release version - if test "x$ac_libsmi_header_path" != "x"; then - ac_libsmi_version=`cat $ac_libsmi_header_path \ - | grep '#define.*SMI_LIBRARY_VERSION.*\"' | sed -e 's/.* "//' \ - | sed -e 's/"//'` - if test $ac_libsmi_version != ""; then - LIBSMI_VERSION=$ac_libsmi_version - else - AC_MSG_WARN([Can not find SMI_LIBRARY_VERSION macro in smi.h header to retrieve libsmi version!]) - fi - fi - - AC_SUBST(LIBSMI_CFLAGS) - AC_SUBST(LIBSMI_LDFLAGS) - AC_SUBST(LIBSMI_VERSION) - AC_DEFINE(HAVE_LIBSMI, 1, [Define to 1 if you have the `smi' library (-lsmi).]) - fi - fi -]) -- 2.7.4