From 72c2e53981a204d746737d8c01c4ad3738cd4880 Mon Sep 17 00:00:00 2001
From: =?utf8?q?Jo=C3=A3o=20Valverde?= <joao.valverde@tecnico.ulisboa.pt>
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 <j@v6e.pt>
Tested-by: Petri Dish Buildbot
Reviewed-by: JoÃ£o Valverde <j@v6e.pt>
---
 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 <smi.h>]],
-                [[
-  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", &current, &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

