You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

234 lines
7.4 KiB

# LIBNETSNMP_CHECK_CONFIG ([DEFAULT-ACTION])
# ----------------------------------------------------------
#
# Checks for net-snmp. DEFAULT-ACTION is the string yes or no to
# specify whether to default to --with-net-snmp or --without-net-snmp.
# If not supplied, DEFAULT-ACTION is no.
#
# This macro #defines HAVE_NETSNMP if required header files are
# found, and sets @SNMP_LDFLAGS@ and @SNMP_CFLAGS@ to the necessary
# values.
#
# Users may override the detected values by doing something like:
# SNMP_LDFLAGS="-lsnmp" SNMP_CFLAGS="-I/usr/myinclude" ./configure
#
# This macro is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
AC_DEFUN([LIBNETSNMP_CHECK_CONFIG],
[
_libnetsnmp_config="no"
AC_ARG_WITH(net-snmp,
[If you want to use Net-SNMP library:
AS_HELP_STRING([--with-net-snmp@<:@=ARG@:>@],
[use Net-SNMP package @<:@default=no@:>@, optionally specify path to net-snmp-config])
],[ if test "$withval" = "no"; then
want_netsnmp="no"
elif test "$withval" = "yes"; then
want_netsnmp="yes"
else
want_netsnmp="yes"
_libnetsnmp_config=$withval
fi
],[want_netsnmp=ifelse([$1],,[no],[$1])])
SNMP_CFLAGS=""
SNMP_LDFLAGS=""
SNMP_LIBS=""
if test "x$want_netsnmp" != "xno"; then
if test "x$_libnetsnmp_config" = "xno"; then
AC_PATH_PROG([_libnetsnmp_config], [net-snmp-config], [])
want_static_netsnmp="no"
test "x$enable_static_libs" = "xyes" && want_static_netsnmp="yes"
else
want_static_netsnmp="yes"
fi
if test -d "$_libnetsnmp_config"; then
AC_PATH_PROG([_libnetsnmp_config_bin], [net-snmp-config], [$_libnetsnmp_config/bin], [$_libnetsnmp_config])
_libnetsnmp_config=$_libnetsnmp_config_bin
fi
if test -d "$_libnetsnmp_config"; then
AC_PATH_PROG([_libnetsnmp_config_root], [net-snmp-config], [], [$_libnetsnmp_config])
test -z $_libnetsnmp_config_root || _libnetsnmp_config=$_libnetsnmp_config_root
fi
if test -x "$_libnetsnmp_config"; then
netsnmp_version_req=$2
if test -n "$netsnmp_version_req"; then
AC_MSG_CHECKING(version of netsnmp library)
LIBNETSNMP_CONFIG_VERSION=`$_libnetsnmp_config --version`
netsnmp_version_major=`expr $LIBNETSNMP_CONFIG_VERSION : '\([[0-9]]*\)'`
netsnmp_version_minor=`expr $LIBNETSNMP_CONFIG_VERSION : '[[0-9]]*\.\([[0-9]]*\)'`
netsnmp_version_micro=`expr $LIBNETSNMP_CONFIG_VERSION : '[[0-9]]*\.[[0-9]]*\.\([[0-9]]*\)'`
if test "x$netsnmp_version_micro" = "x"; then
netsnmp_version_micro="0"
fi
netsnmp_version_number=`expr $netsnmp_version_major \* 1000000 \
\+ $netsnmp_version_minor \* 1000 \
\+ $netsnmp_version_micro`
netsnmp_version_req_major=`expr $netsnmp_version_req : '\([[0-9]]*\)'`
netsnmp_version_req_minor=`expr $netsnmp_version_req : '[[0-9]]*\.\([[0-9]]*\)'`
netsnmp_version_req_micro=`expr $netsnmp_version_req : '[[0-9]]*\.[[0-9]]*\.\([[0-9]]*\)'`
if test "x$netsnmp_version_req_micro" = "x"; then
netsnmp_version_req_micro="0"
fi
netsnmp_version_req_number=`expr $netsnmp_version_req_major \* 1000000 \
\+ $netsnmp_version_req_minor \* 1000 \
\+ $netsnmp_version_req_micro`
netsnmp_version_check=`expr $netsnmp_version_number \>\= $netsnmp_version_req_number`
if test "$netsnmp_version_check" != "1"; then
AC_MSG_ERROR([Net-SNMP version mismatch])
else
AC_MSG_RESULT([yes])
fi
fi
_full_libnetsnmp_cflags="`$_libnetsnmp_config --cflags`"
for i in $_full_libnetsnmp_cflags; do
case $i in
-I*)
SNMP_CFLAGS="$SNMP_CFLAGS $i"
;;
esac
done
_full_libnetsnmp_libs="`$_libnetsnmp_config --netsnmp-libs`"
for i in $_full_libnetsnmp_libs; do
case $i in
-L*)
SNMP_LDFLAGS="${SNMP_LDFLAGS} $i"
;;
-R*)
SNMP_LDFLAGS="${SNMP_LDFLAGS} -Wl,$i"
;;
-l*)
SNMP_LIBS="${SNMP_LIBS} $i"
;;
esac
done
if test "x$enable_static" = "xyes"; then
_full_libnetsnmp_libs="`$_libnetsnmp_config --libs`"
for i in $_full_libnetsnmp_libs; do
case $i in
-lnetsnmp)
;;
-l*)
_lib_name="`echo "$i" | cut -b3-`"
AC_CHECK_LIB($_lib_name, main, [
SNMP_LIBS="$SNMP_LIBS $i"
],[
AC_MSG_ERROR([Not found $_lib_name library])
])
;;
esac
done
elif test "x$want_static_netsnmp" = "xyes"; then
_libsnmp_dir_lib="`$_libnetsnmp_config --libdir | cut -b3-`"
test [ "x$static_linking_support" = "xno" -o -z "$static_linking_support" ] -a -z "$_libsnmp_dir_lib" && AC_MSG_ERROR(["Compiler not support statically linked libs from default folders"])
if test "x$static_linking_support" = "xno" -o -z "$static_linking_support"; then
test -f $_libsnmp_dir_lib/libnetsnmp.a || AC_MSG_ERROR(["libnetsnmp.a static library was not found in $_libsnmp_dir_lib"])
SNMP_LIBS=`echo "$SNMP_LIBS"|sed "s|-lnetsnmp|$_libsnmp_dir_lib/libnetsnmp.a|g"`
else
SNMP_LIBS=`echo "$SNMP_LIBS"|sed "s/-lnetsnmp/${static_linking_support}static -lnetsnmp ${static_linking_support}dynamic/g"`
fi
fi
_save_netsnmp_cflags="$CFLAGS"
_save_netsnmp_ldflags="$LDFLAGS"
_save_netsnmp_libs="$LIBS"
CFLAGS="$CFLAGS $SNMP_CFLAGS"
LDFLAGS="$LDFLAGS $SNMP_LDFLAGS"
LIBS="$LIBS $SNMP_LIBS"
AC_CHECK_LIB(netsnmp, main, , [AC_MSG_ERROR([Not found Net-SNMP library])])
dnl Check for SHA224/256/384/512 protocol support for auth
AC_MSG_CHECKING(for strong SHA auth protocol support)
AC_LINK_IFELSE([AC_LANG_PROGRAM([[
#include <net-snmp/net-snmp-config.h>
#include <net-snmp/net-snmp-includes.h>
]], [[
struct snmp_session session;
session.securityAuthProto = usmHMAC384SHA512AuthProtocol;
]])],[
AC_DEFINE(HAVE_NETSNMP_STRONG_AUTH, 1, [Define to 1 if strong SHA auth protocols are supported.])
AC_MSG_RESULT(yes)
],[
AC_MSG_RESULT(no)
])
dnl Check for AES192/256 protocol support for privacy
AC_MSG_CHECKING(for strong AES privacy protocol support)
AC_LINK_IFELSE([AC_LANG_PROGRAM([[
#include <net-snmp/net-snmp-config.h>
#include <net-snmp/net-snmp-includes.h>
]], [[
struct snmp_session session;
session.securityPrivProto = usmAES256PrivProtocol;
]])],[
AC_DEFINE(HAVE_NETSNMP_STRONG_PRIV, 1, [Define to 1 if strong AES priv protocols are supported.])
AC_MSG_RESULT(yes)
],[
AC_MSG_RESULT(no)
])
dnl Check for localname in struct snmp_session
AC_MSG_CHECKING(for localname in struct snmp_session)
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
#include <net-snmp/net-snmp-config.h>
#include <net-snmp/net-snmp-includes.h>]], [[
struct snmp_session session;
session.localname = "";
]])],[AC_DEFINE(HAVE_NETSNMP_SESSION_LOCALNAME, 1, Define to 1 if 'session.localname' exist.)
AC_MSG_RESULT(yes)],[AC_MSG_RESULT(no)])
dnl Check for DES protocol support for privacy
AC_MSG_CHECKING(for DES privacy protocol support)
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
#include <net-snmp/net-snmp-config.h>
#include <net-snmp/net-snmp-includes.h>]], [[
struct snmp_session session;
session.securityPrivProto = usmDESPrivProtocol;
]])],[AC_DEFINE(HAVE_NETSNMP_SESSION_DES, 1, Define to 1 if 'usmDESPrivProtocol' exist.)
AC_MSG_RESULT(yes)],[AC_MSG_RESULT(no)])
CFLAGS="$_save_netsnmp_cflags"
LDFLAGS="$_save_netsnmp_ldflags"
LIBS="$_save_netsnmp_libs"
unset _save_netsnmp_cflags
unset _save_netsnmp_ldflags
unset _save_netsnmp_libs
AC_DEFINE(HAVE_NETSNMP, 1, [Define to 1 if Net-SNMP should be enabled.])
found_netsnmp="yes"
else
found_netsnmp="no"
fi
fi
AC_SUBST(SNMP_CFLAGS)
AC_SUBST(SNMP_LDFLAGS)
AC_SUBST(SNMP_LIBS)
])dnl