summaryrefslogtreecommitdiff
path: root/configure.d/config_os_libs2
diff options
context:
space:
mode:
Diffstat (limited to 'configure.d/config_os_libs2')
-rw-r--r--configure.d/config_os_libs2487
1 files changed, 487 insertions, 0 deletions
diff --git a/configure.d/config_os_libs2 b/configure.d/config_os_libs2
new file mode 100644
index 0000000..677f3e6
--- /dev/null
+++ b/configure.d/config_os_libs2
@@ -0,0 +1,487 @@
+# -*- autoconf -*-
+#########################################
+##
+# Checks for libraries that are run
+# after the agent module tests.
+##
+#########################################
+
+# HAVE_LIB Definitions used in the Net-SNMP code base:
+#
+# HAVE_LIBCRYPTO: apps
+# HAVE_LIBRPM: agent
+#
+
+##
+# Simple checks:
+##
+
+# AC_CHECK_LIB(des, main)
+# AC_CHECK_LIB(m, asin)
+
+# dmalloc
+#
+if test "${with_dmalloc+set}" = set; then
+ if test "$with_dmalloc" = yes -a -d $with_dmalloc ; then
+ AC_ADD_SEARCH_PATH($with_dmalloc)
+ fi
+ AC_CHECK_HEADERS([dmalloc.h])
+ AC_SEARCH_LIBS([dmalloc_message], [dmalloc])
+fi
+
+# EFence
+# (This used to be on by default for developer checkout)
+#
+if test "x$use_efence" = "xyes"; then
+ AC_SEARCH_LIBS([EF_Exit], [efence])
+fi
+
+
+# ELF libraries
+# Typically used for 'nlist' (needed for uptime)
+#
+if test "x$with_elf" != "xno"; then
+case $target_os in
+ linux*) # add hosts which don't use nlist here
+ ;;
+ irix*) # Check for nlist in mld (irix)
+ AC_CHECK_LIB(elf, nlist)
+ AC_CHECK_LIB(elf, nlist64)
+ AC_CHECK_LIB(mld, nlist)
+ ;;
+ *) # default
+ AC_CHECK_LIB(elf, nlist)
+ ;;
+esac
+fi
+
+
+# libsocket
+# Needed for 'socket(2)' (Solaris)
+# Possibly also for 'gethostname(3)' (non-Solaris)
+# (alternatively in libnsl (Solaris)
+# or in libws2_32) (MinGW)
+#
+case x$with_socklib in
+xwinsock2)
+ # libws2_w32 (MinGW)
+ #
+ netsnmp_save_LIBS="$LIBS"
+ LIBS="$LIBS -lws2_32"
+ AC_LINK_IFELSE([AC_LANG_PROGRAM([
+ #include <winsock2.h>
+ ], [
+ socket(0, 0, 0);
+ gethostbyname(0);
+ ])], [
+ # Keep LIBS.
+ true
+ ], [
+ # Restore LIBS and complain.
+ LIBS="$netsnmp_save_LIBS"
+ AC_MSG_ERROR([libws2_32 not found.])
+ ])
+ ;;
+*)
+ AC_SEARCH_LIBS(socket, socket,,AC_MSG_ERROR([socket(2) not found.]))
+ AC_SEARCH_LIBS(gethostbyname, [nsl socket])
+ AC_CHECK_FUNCS(gethostbyname)
+ AC_SEARCH_LIBS(gethostbyaddr, [nsl socket])
+ AC_CHECK_FUNCS(gethostbyaddr)
+ ;;
+esac
+
+
+# libiphlpapi (Cygwin and MinGW)
+#
+netsnmp_save_LIBS="$LIBS"
+LIBS="$LIBS -liphlpapi"
+AC_LINK_IFELSE([AC_LANG_PROGRAM([
+ #include <winsock2.h>
+ #include <iphlpapi.h>
+], [
+ IpRenewAddress(0);
+])], [
+ # Keep LIBS.
+ true
+], [
+ # Restore LIBS and complain.
+ LIBS="$netsnmp_save_LIBS"
+ case x$with_socklib in
+ xwinsock2)
+ AC_MSG_ERROR([libiphlpapi not found.])
+ ;;
+ esac
+])
+
+
+# libregex (MinGW)
+#
+netsnmp_save_LIBS="$LIBS"
+LIBS="$LIBS -lregex"
+AC_LINK_IFELSE([AC_LANG_PROGRAM([
+ #include <sys/types.h>
+ #include <regex.h>
+], [
+ regcomp(0, 0, 0);
+])], [
+ # Keep LIBS.
+ true
+], [
+ # Restore LIBS.
+ LIBS="$netsnmp_save_LIBS"
+])
+
+
+# libsnmpapi (MinGW)
+#
+netsnmp_save_LIBS="$LIBS"
+LIBS="$LIBS -lsnmpapi"
+AC_LINK_IFELSE([AC_LANG_PROGRAM([
+ #include <snmp.h>
+], [
+ SnmpUtilMemAlloc(0);
+])], [
+ # Keep LIBS.
+ true
+], [
+ # Restore LIBS.
+ LIBS="$netsnmp_save_LIBS"
+])
+
+
+# kstat library (Solaris)
+#
+NETSNMP_SEARCH_LIBS(kstat_lookup, kstat,
+ AC_DEFINE(HAVE_LIBKSTAT, 1,
+ [Define to 1 if you have the `kstat' library (-lkstat).]),,,
+ LNETSNMPLIBS)
+
+
+#
+# librt
+#
+
+NETSNMP_SEARCH_LIBS(clock_gettime, rt,
+ AC_DEFINE(HAVE_CLOCK_GETTIME, 1,
+ [Define to 1 if you have the `clock_gettime' library]),,,
+ LNETSNMPLIBS)
+
+
+##
+# MIB-module-specific checks
+##
+
+# libdevstat
+# (for diskIO MIB)
+#
+# Not-Used: HAVE_GETDEVS/HAVE_DEVSTAT_GETDEVS
+#
+echo " $module_list " | $GREP " ucd-snmp/diskio " >/dev/null
+if test $? -eq 0 ; then
+ NETSNMP_SEARCH_LIBS(getdevs, devstat,
+ AC_DEFINE(HAVE_GETDEVS, 1,
+ [define if you have getdevs()]),,,LMIBLIBS)
+ NETSNMP_SEARCH_LIBS(devstat_getdevs, devstat,
+ AC_DEFINE(HAVE_DEVSTAT_GETDEVS, 1,
+ [define if you have devstat_getdevs()]),,,LMIBLIBS)
+fi
+
+# libpci
+# (for if-mib description)
+#
+NETSNMP_SEARCH_LIBS(pci_lookup_name, pci,
+ AC_DEFINE(HAVE_PCI_LOOKUP_NAME, 1,
+ [define if you have pci_lookup_name()]),,,LMIBLIBS)
+
+# LM-SENSORS-MIB support
+#
+echo " $module_list " | $GREP -i "ucd-snmp/lmsensor" > /dev/null
+if test $? -eq 0 ; then
+ AC_MSG_CHECKING([for sensors support])
+ case $target_os in
+ solaris*)
+ # Agent: HAVE_PICL_H
+ #
+ AC_CHECK_HEADER(picl.h, LMIBLIBS="${LMIBLIBS} -lpicl",)
+ AC_CHECK_HEADERS(picl.h)
+ ;;
+ *)
+ # Not-Used: HAVE_SENSORS_SENSORS_H
+ #
+ AC_CHECK_HEADER(sensors/sensors.h,,
+ [AC_MSG_ERROR([asked to use lm_sensors but I couldn't find sensors/sensors.h])])
+ NETSNMP_SEARCH_LIBS(sensors_get_detected_chips, sensors,,
+ [AC_MSG_ERROR([asked to use lm_sensors but I couldn't find -lsensors])],,
+ LMIBLIBS)
+ ;;
+ esac
+fi
+
+#
+# libnl (netlink)
+#
+
+if test "x$with_nl" != "xno"; then
+ case $target_os in
+ linux*) # Check for libnl (linux)
+ NETSNMP_SEARCH_LIBS(
+ nl_connect, nl,
+ [AC_CHECK_HEADERS(netlink/netlink.h)],,, LMIBLIBS)
+ ;;
+ esac
+fi
+
+
+
+##
+# More complex checks:
+##
+
+# Security related functions
+#
+NONAGENTLIBS=$LIBS # save old libraries
+SSHPROG=no
+TLSPROG=no
+if test "x$tryopenssl" != "xno" -a "x$tryopenssl" != "xinternal"; then
+ # check for libpkcs11 if asked
+ if test "x$askedopenssl" != "xyes" -a "x$askedpkcs" = "xyes"; then
+ AC_CHECK_LIB(pkcs11, C_Initialize,
+ AC_DEFINE(HAVE_LIBPKCS11, 1,
+ [Define to 1 if you have the `pkcs11' library (-lpkcs11).])
+ LIBPKCS11="-lpkcs11")
+ else
+ if test "x$tryrsaref" != "xno"; then
+ AC_CHECK_LIB(rsaref, RSAPrivateDecrypt)
+ AC_CHECK_LIB(RSAglue, RSA_PKCS1_RSAref)
+ fi
+
+ AC_MSG_CHECKING([for -leay32])
+ netsnmp_save_LIBS="$LIBS"
+ LIBS="-leay32"
+ AC_LINK_IFELSE([AC_LANG_PROGRAM([
+ #include <openssl/evp.h>],
+ [return EVP_md5();])],
+ [AC_MSG_RESULT(yes); ac_cv_lib_eay32_EVP_md5=yes; CRYPTO="eay32"],
+ [AC_MSG_RESULT(no)]
+ )
+ LIBS="$netsnmp_save_LIBS"
+
+ if test x$CRYPTO = x; then
+ AC_CHECK_LIB([crypto], [EVP_md5], [CRYPTO="crypto"])
+ fi
+
+ if test x$CRYPTO != x; then
+ AC_DEFINE(HAVE_LIBCRYPTO, 1,
+ [Define to 1 if you have the OpenSSL library (-lcrypto or -leay32).])
+ LIBCRYPTO="-l${CRYPTO}"
+ AC_CHECK_LIB(${CRYPTO}, AES_cfb128_encrypt,
+ AC_DEFINE(HAVE_AES_CFB128_ENCRYPT, 1,
+ [Define to 1 if you have the `AES_cfb128_encrypt' function.]))
+
+ AC_CHECK_LIB(${CRYPTO}, EVP_MD_CTX_create,
+ AC_DEFINE([HAVE_EVP_MD_CTX_CREATE], [],
+ [Define to 1 if you have the `EVP_MD_CTX_create' function.])
+ AC_DEFINE([HAVE_EVP_MD_CTX_DESTROY], [],
+ [Define to 1 if you have the `EVP_MD_CTX_destroy' function.]))
+ fi
+ if echo " $transport_result_list " | $GREP "DTLS" > /dev/null; then
+ AC_CHECK_LIB(ssl, DTLSv1_method,
+ AC_DEFINE(HAVE_LIBSSL_DTLS, 1,
+ [Define to 1 if your `ssl' library supports DTLS (-lssl).])
+ LIBCRYPTO=" -lssl $LIBCRYPTO",
+ AC_MSG_ERROR([The DTLS based transports require the libssl library from OpenSSL to be available and support DTLS]) ,-lcrypto)
+ TLSPROG=yes
+ fi
+ if echo " $transport_result_list " | $GREP "TLS" > /dev/null; then
+ AC_CHECK_LIB(ssl, SSL_library_init,
+ AC_DEFINE(HAVE_LIBSSL, 1,
+ [Define to 1 if you have the `ssl' library (-lssl).])
+ LIBCRYPTO=" -lssl $LIBCRYPTO",
+ AC_MSG_ERROR([The DTLS based transports require the libssl library from OpenSSL to be available]) ,-lcrypto)
+ TLSPROG=yes
+ fi
+ if echo " $transport_result_list " | $GREP " SSH " > /dev/null; then
+ AC_CHECK_LIB(ssh2, libssh2_session_startup,
+ AC_DEFINE(HAVE_LIBSSH2, 1,
+ [Define to 1 if you have the `ssh2' library (-lssh2).])
+ LIBCRYPTO=" -lssh2 $LIBCRYPTO",
+ AC_MSG_ERROR([The SSH transport requires the libssh2 library to be available]),)
+ SSHPROG=yes
+ fi
+ fi
+elif test "x$askedpkcs" = "xyes"; then
+ AC_CHECK_LIB(pkcs11, C_Initialize,
+ AC_DEFINE(HAVE_LIBPKCS11)
+ LIBPKCS11="-lpkcs11")
+fi
+if test "x$TLSPROG" = "xyes"; then
+ AC_CHECK_DECL([EVP_sha224],
+ : ,
+ AC_DEFINE([HAVE_EVP_SHA224], [], [Define if you have EVP_sha224/256 in openssl]),
+ [[#include <openssl/evp.h>]])
+ AC_CHECK_DECL([EVP_sha384],
+ : ,
+ AC_DEFINE([HAVE_EVP_SHA384], [], [Define if you have EVP_sha384/256 in openssl]),
+ [[#include <openssl/evp.h>]])
+fi
+
+LIBS=$NONAGENTLIBS # restore old libraries
+if test "x$SSHPROG" = "xyes"; then
+ NETSNMP_BUILD_SSH_PROG_TRUE=''
+ NETSNMP_BUILD_SSH_PROG_FALSE='#'
+else
+ NETSNMP_BUILD_SSH_PROG_TRUE='#'
+ NETSNMP_BUILD_SSH_PROG_FALSE=''
+fi
+if test "x$TLSPROG" = "xyes" -a "x$enable_read_only" != "xyes" ; then
+ NETSNMP_BUILD_TLS_PROG_TRUE=''
+ NETSNMP_BUILD_TLS_PROG_FALSE='#'
+else
+ NETSNMP_BUILD_TLS_PROG_TRUE='#'
+ NETSNMP_BUILD_TLS_PROG_FALSE=''
+fi
+if echo " ${security_mod_list} " | grep ' usm ' ; then
+ if test "x$enable_read_only" != "xyes" ; then
+ NETSNMP_BUILD_USM_PROG_TRUE=''
+ NETSNMP_BUILD_USM_PROG_FALSE='#'
+ else
+ NETSNMP_BUILD_USM_PROG_TRUE='#'
+ NETSNMP_BUILD_USM_PROG_FALSE=''
+ fi
+else
+ NETSNMP_BUILD_USM_PROG_TRUE='#'
+ NETSNMP_BUILD_USM_PROG_FALSE=''
+fi
+if test "x$enable_read_only" != "xyes" ; then
+ NETSNMP_BUILD_SET_PROG_TRUE=""
+ NETSNMP_BUILD_SET_PROG_FALSE="#"
+else
+ NETSNMP_BUILD_SET_PROG_TRUE="#"
+ NETSNMP_BUILD_SET_PROG_FALSE=""
+fi
+AC_SUBST(NETSNMP_BUILD_SSH_PROG_TRUE)
+AC_SUBST(NETSNMP_BUILD_SSH_PROG_FALSE)
+AC_SUBST(NETSNMP_BUILD_TLS_PROG_TRUE)
+AC_SUBST(NETSNMP_BUILD_TLS_PROG_FALSE)
+AC_SUBST(NETSNMP_BUILD_USM_PROG_TRUE)
+AC_SUBST(NETSNMP_BUILD_USM_PROG_FALSE)
+AC_SUBST(NETSNMP_BUILD_SET_PROG_TRUE)
+AC_SUBST(NETSNMP_BUILD_SET_PROG_FALSE)
+
+#
+# If we're using internal crypto support we need to compile in extra files
+#
+crypto_files_c=""
+crypto_files_o=""
+crypto_files_lo=""
+if test "x$tryopenssl" != "xno" -a "x$CRYPTO" = "x"; then
+ # If we:
+ # 1) couldn't find needed openssl support
+ # 2) OR were asked to use internal support
+ # 3) AND we have the needed files
+ # then use it
+ CRYPTO="internal"
+ crypto_files_c="openssl/openssl_sha1.c openssl/openssl_md5.c openssl/openssl_set_key.c openssl/openssl_des_enc.c openssl/openssl_cbc_enc.c openssl/openssl_aes_cfb.c openssl/openssl_aes_core.c openssl/openssl_cfb128.c"
+ crypto_files_o="openssl/openssl_sha1.o openssl/openssl_md5.o openssl/openssl_set_key.o openssl/openssl_des_enc.o openssl/openssl_cbc_enc.o openssl/openssl_aes_cfb.o openssl/openssl_aes_core.oo openssl/openssl_cfb128.o"
+ crypto_files_lo="openssl/openssl_sha1.lo openssl/openssl_md5.lo openssl/openssl_set_key.lo openssl/openssl_des_enc.lo openssl/openssl_cbc_enc.lo openssl/openssl_aes_cfb.lo openssl/openssl_aes_core.lo openssl/openssl_cfb128.lo"
+ AC_DEFINE(HAVE_AES_CFB128_ENCRYPT)
+fi
+AC_SUBST(crypto_files_c)
+AC_SUBST(crypto_files_o)
+AC_SUBST(crypto_files_lo)
+
+#
+# if we can do any sort of crypto then note it
+#
+if test "x$CRYPTO" != "x" ; then
+ AC_DEFINE(NETSNMP_CAN_DO_CRYPTO, 1, "Define if crytography support is possible")
+fi
+
+# TCP wrapper support
+#
+_cppflags="${CPPFLAGS}"
+_ldflags="${LDFLAGS}"
+if test "$with_libwrap" != "no"; then
+ if test "$with_libwrap" != "yes"; then
+ CPPFLAGS="${CPPFLAGS} -I$with_libwrap/include"
+ LDFLAGS="${LDFLAGS} -L$with_libwrap/lib"
+ fi
+
+ _libs=${LIBS}
+ AC_CHECK_HEADER(tcpd.h, ,
+ AC_MSG_ERROR([Asked to use libwrap but I couldn't find tcpd.h.]))
+
+ LIBS="$LIBS -lwrap"
+ AC_MSG_CHECKING([for TCP wrappers library -lwrap])
+ # XXX: should check for hosts_ctl
+ AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <sys/types.h>
+ #include <tcpd.h>
+ int allow_severity = 0;
+ int deny_severity = 0;]],
+ [[hosts_access((void *)0)]])],
+ [AC_MSG_RESULT([yes])
+ AC_DEFINE(NETSNMP_USE_LIBWRAP)
+ test "$with_libwrap" != no -a "$with_libwrap" != yes && _wraplibs="-L$with_libwrap/lib"
+ _wraplibs="$_wraplibs -lwrap"],
+ [AC_MSG_RESULT([no])
+ # Linux RedHat 6.1 won't link libwrap without libnsl
+ AC_CHECK_FUNC(yp_get_default_domain, ,
+ AC_CHECK_LIB(nsl, yp_get_default_domain))
+ AC_MSG_CHECKING([for TCP wrappers library -lwrap linked with -lnsl])
+ AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <sys/types.h>
+ #include <tcpd.h>
+ int allow_severity = 0;
+ int deny_severity = 0;]],
+ [[hosts_access((void *)0)]])],
+ [AC_MSG_RESULT(yes)
+ AC_DEFINE(NETSNMP_USE_LIBWRAP)
+ test "$with_libwrap" != no -a "$with_libwrap" != yes && _wraplibs="-L$with_libwrap/lib"
+ _wraplibs="$_wraplibs -lwrap -lnsl"],
+ [AC_MSG_RESULT(no)
+ AC_MSG_ERROR(Asked to use libwrap but I couldn't find it.)])])
+ LAGENTLIBS="$_wraplibs"
+ CPPFLAGS=${_cppflags}
+ LDFLAGS=${_ldflags}
+ LIBS=${_libs}
+fi
+
+
+##
+# mysql
+##
+if test "x$with_mysql" = "xyes" ; then
+ AC_PATH_PROGS(MYSQLCONFIG,mysql_config)
+ AC_CHECK_HEADERS(mysql/mysql.h)
+ AC_CHECK_HEADER(mysql/mysql.h,mysql_h=yes,mysql_h=no)
+ if test "x$MYSQLCONFIG" = "x" -o "x$mysql_h" = "xno"; then
+ AC_MSG_ERROR([Could not find mysql_config or mysql.h and was specifically asked to use MySQL support])
+ fi
+ MYSQL_LIBS=`$MYSQLCONFIG --libs`
+ MYSQL_INCLUDES=`$MYSQLCONFIG --cflags`
+ AC_MSG_CHECKING([whether MY_INIT() works])
+ _libs="${LIBS}"
+ _cppflags="${CPPFLAGS}"
+ LIBS="${LIBS} ${MYSQL_LIBS}"
+ CPPFLAGS="${CPPFLAGS} ${MYSQL_INCLUDES}"
+ AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <mysql/my_global.h>
+ #include <mysql/my_sys.h>]], [[MY_INIT("my_init_test")]])],[AC_MSG_RESULT(yes)],[AC_MSG_RESULT(no)
+ AC_DEFINE([HAVE_BROKEN_LIBMYSQLCLIENT], 1,
+ [Define if using MY_INIT() causes a linker error])])
+ CPPFLAGS="${_cppflags}"
+ LIBS="${_libs}"
+ AC_MSG_CACHE_ADD(MYSQL Trap Logging: enabled)
+else
+ AC_MSG_CACHE_ADD(MYSQL Trap Logging: unavailable)
+fi
+AC_SUBST(MYSQL_LIBS)
+AC_SUBST(MYSQL_INCLUDES)
+
+
+##
+# Non-library checks
+##
+
+# nlist
+AC_CHECK_FUNCS(nlist nlist64 knlist)
+