| # -*- autoconf -*- |
| # |
| # Maybe add library extensions for thread mutex locking. |
| # |
| |
| if test "x$with_res_locks" = "xyes"; then |
| AC_DEFINE(NETSNMP_REENTRANT, 1, |
| [Define to 1 if you want to build with reentrant/threaded |
| code (incomplete).]) |
| |
| case $target_os in |
| |
| aix*) |
| CC_RUNTIME_ARG="$CC_RUNTIME_ARG -lpthreads" |
| ;; |
| |
| *) |
| ;; |
| |
| esac |
| fi |
| |
| # |
| # Add platform-specific source files. |
| # |
| AC_MSG_CHECKING([for platform-specific source]) |
| other_src_list="" |
| other_objs_list="" |
| other_lobjs_list="" |
| other_agentobjs="" |
| other_lagentobjs="" |
| other_trapd_objects="" |
| |
| # Win32 service code |
| if test "x$PARTIALTARGETOS" = "xmingw32" -o "x$PARTIALTARGETOS" = "xmingw32msvc"; then |
| other_src_list="$other_src_list winservice.c winservicerc.rc" |
| other_objs_list="$other_objs_list winservice.o winservicerc.o" |
| other_lobjs_list="$other_lobjs_list winservice.lo winservicerc.lo" |
| other_agentobjs="../snmplib/winservicerc.o" |
| other_lagentobjs="../snmplib/winservicerc.lo" |
| other_trapd_objects="../snmplib/winservicerc.o" |
| fi |
| |
| # Win32 pipes |
| if test "x$PARTIALTARGETOS" = "xmingw32" -o "x$PARTIALTARGETOS" = "xmingw32msvc"; then |
| other_src_list="$other_src_list winpipe.c" |
| other_objs_list="$other_objs_list winpipe.o" |
| other_lobjs_list="$other_lobjs_list winpipe.lo" |
| fi |
| |
| AC_SUBST(other_src_list) |
| AC_SUBST(other_objs_list) |
| AC_SUBST(other_lobjs_list) |
| AC_SUBST(other_agentobjs) |
| AC_SUBST(other_lagentobjs) |
| AC_SUBST(other_trapd_objects) |
| |
| AC_MSG_RESULT([$other_src_list $other_objs_list $other_lobjs_list]) |
| AC_MSG_RESULT([$other_agentobjs $other_lagentobjs $other_trapd_objects]) |
| |
| # |
| # Do transport module processing. |
| # |
| AC_MSG_CHECKING([for and configuring transport modules to use]) |
| transport_src_list="" |
| transport_hdr_list="" |
| transport_def_list="" |
| transport_result_list="" |
| transport_add_list="" |
| new_with_transport_list=`echo $with_transports | $SED 's/,/ /g;'` |
| new_with_out_transport_list=`echo $with_out_transports | $SED 's/,/ /g;'` |
| |
| # |
| # Add the default transports to the list |
| # |
| if test "x$PARTIALTARGETOS" = "xmingw32" -o "x$PARTIALTARGETOS" = "xmingw32msvc"; then |
| transport_default_list="UDP TCP Alias Callback" |
| else |
| transport_default_list="UDP TCP Alias Unix Callback" |
| fi |
| if test "x$enable_ipv6" = "xyes"; then |
| transport_default_list="UDPIPv6 TCPIPv6 $transport_default_list" |
| fi |
| for i in $transport_default_list; do |
| if echo " $new_with_transport_list " | $GREP " $i " >/dev/null; then |
| : |
| else |
| transport_add_list="$i $transport_add_list" |
| fi |
| done |
| new_transport_list="$transport_add_list $new_with_transport_list" |
| |
| for i in $new_transport_list; do |
| if echo " $new_with_out_transport_list " | $GREP " $i " >/dev/null; then |
| if test "x$i" = "xUDP"; then |
| echo |
| AC_MSG_ERROR(It is not possible to compile without UDP/IP support.) |
| fi |
| continue |
| else |
| if test "x$i" = "xAAL5PVC"; then |
| if test "x$PARTIALTARGETOS" != "xlinux"; then |
| echo |
| AC_MSG_ERROR(AAL5 PVC support unavailable for this platform (Linux only)) |
| fi |
| fi |
| if test "x$i" = "xIPX"; then |
| if test "x$PARTIALTARGETOS" != "xlinux"; then |
| echo |
| AC_MSG_ERROR(IPX support unavailable for this platform (Linux only)) |
| fi |
| fi |
| if test "x$i" = "xUnix"; then |
| if test "x$PARTIALTARGETOS" = "xmingw32" -o "x$PARTIALTARGETOS" = "xmingw32msvc"; then |
| echo |
| AC_MSG_ERROR(Unix domain protocol support unavailable for this platform) |
| fi |
| fi |
| if test ! "x$enable_ipv6" = "xyes"; then |
| if test "x$i" = "xUDPIPv6" -o "x$i" = "xTCPIPv6"; then |
| echo |
| AC_MSG_ERROR(IPv6 transports not available if IPv6 support is not enabled) |
| fi |
| fi |
| transport_src="snmp"$i"Domain.c" |
| transport_hdr="snmp"$i"Domain.h" |
| rel_transport_src="snmplib/"$transport_src |
| rel_transport_hdr="include/net-snmp/library/"$transport_hdr |
| if test -f "$srcdir/$rel_transport_src"; then |
| transport_result_list="$transport_result_list $i" |
| transport_src_list="$transport_src $transport_src_list" |
| if test -f "$srcdir/$rel_transport_hdr"; then |
| transport_hdr_list="$transport_hdr $transport_hdr_list" |
| fi |
| transport_def=`echo $i | $SED 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'` |
| transport_def_list="NETSNMP_TRANSPORT_"$transport_def"_DOMAIN $transport_def_list" |
| else |
| echo |
| AC_MSG_ERROR(Cannot find file $srcdir/$rel_transport_src to support SNMP transport domain $i.) |
| fi |
| fi |
| done |
| transport_obj_list=`echo " $transport_src_list " | $SED 's/\.c/\.o/g'` |
| transport_lobj_list=`echo " $transport_src_list " | $SED 's/\.c/\.lo/g'` |
| |
| ## MinGW requires inet_ntop() and inet_pton(). |
| if test "x$PARTIALTARGETOS" = "xmingw32" -o "x$PARTIALTARGETOS" = "xmingw32msvc"; then |
| if echo "$transport_def_list" | $GREP "IPV6" >/dev/null; then |
| transport_obj_list="$transport_obj_list inet_ntop.o inet_pton.o" |
| transport_lobj_list="$transport_lobj_list inet_ntop.lo inet_pton.lo" |
| fi |
| fi |
| |
| AC_SUBST(transport_hdr_list) |
| AC_SUBST(transport_src_list) |
| AC_SUBST(transport_obj_list) |
| AC_SUBST(transport_lobj_list) |
| for i in $transport_def_list; do |
| AC_DEFINE_UNQUOTED($i) |
| done |
| AC_MSG_RESULT($transport_result_list.) |
| AC_MSG_CACHE_ADD(Network transport support: $transport_result_list) |
| |
| # |
| # Security modules to use |
| # |
| |
| AC_MSG_CHECKING([for security modules to use]) |
| security_def_list="usm" |
| security_src_list="" |
| security_obj_list="" |
| security_lobj_list="" |
| security_init_file="snmplib/snmpsm_init.h" |
| security_incl_file="include/net-snmp/library/snmpv3-security-includes.h" |
| new_with_security=`echo $with_security_modules | $SED 's/,/ /g;'` |
| new_with_out_security=`echo $with_out_security_modules | $SED 's/,/ /g;'` |
| |
| if test ! -d include; then |
| mkdir include |
| fi |
| if test ! -d include/net-snmp; then |
| mkdir include/net-snmp |
| fi |
| if test ! -d include/net-snmp/agent; then |
| mkdir include/net-snmp/agent |
| fi |
| if test ! -d include/net-snmp/library; then |
| mkdir include/net-snmp/library |
| fi |
| if test ! -d include/ucd-snmp; then |
| mkdir include/ucd-snmp |
| fi |
| |
| if test ! -d snmplib; then |
| mkdir snmplib |
| fi |
| echo "/* This file is automatically generated by configure. Do not modify by hand. */" > $security_init_file |
| echo "/* This file is automatically generated by configure. Do not modify by hand. */" > $security_incl_file |
| |
| for i in $security_def_list; do |
| if echo " $new_with_out_security " | $GREP " $i " > /dev/null; then |
| if test "x$i" = "xusm"; then |
| echo |
| AC_MSG_ERROR(The USM security module is mandatory) |
| fi |
| else |
| new_with_security="$new_with_security $i" |
| fi |
| done |
| |
| for i in $new_with_security; do |
| cfile="snmp"$i".c" |
| hfile="snmp"$i".h" |
| |
| # make sure support exists for it |
| if test -f $srcdir"/snmplib/"$cfile -a -f $srcdir"/include/net-snmp/library/"$hfile; then |
| : |
| else |
| echo |
| AC_MSG_ERROR(No such security module: $i / $cfile / $hfile) |
| fi |
| |
| # define a bunch of stuff to enable it |
| security_src_list="$security_src_list $cfile" |
| security_hdr_list="$security_hdr_list $hfile" |
| security_obj_list="$security_obj_list snmp"$i".o" |
| security_lobj_list="$security_lobj_list snmp"$i".lo" |
| def_name="NETSNMP_SECMOD_"`echo $i | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` |
| echo "init_"$i"();" >> $security_init_file |
| echo "#include <net-snmp/library/$hfile>" >> $security_incl_file |
| AC_DEFINE_UNQUOTED($def_name) |
| done |
| |
| AC_SUBST(security_src_list) |
| AC_SUBST(security_hdr_list) |
| AC_SUBST(security_obj_list) |
| AC_SUBST(security_lobj_list) |
| AC_MSG_RESULT($new_with_security) |
| AC_MSG_CACHE_ADD(SNMPv3 Security Modules: $new_with_security) |
| |
| # |
| # Handle the special case of KSM to see which crypto API we support |
| # |
| |
| rebuilt_new_with_security= |
| already_checked_krb5=no |
| |
| for sec in $new_with_security |
| do |
| if test "x$sec" = "xksm"; then |
| if test "xyes" = "x$already_checked_krb5"; then |
| continue |
| else |
| already_checked_krb5=yes |
| fi |
| fi |
| |
| if test x$sec != xksm; then |
| rebuilt_new_with_security="$rebuilt_new_with_security $sec" |
| else |
| if test no = $trykrb5; then |
| AC_MSG_NOTICE([configured not to use krb5. disabling ksm]) |
| continue |
| fi |
| |
| AC_PATH_PROG([krb5_config],krb5-config,[no],$krb5path/bin:$PATH) |
| |
| if test no != $krb5_config; then |
| CPPFLAGS="$CPPFLAGS `$krb5_config --cflags`" |
| LIBS="$LIBS `$krb5_config --libs`" |
| elif test $krb5path != no; then |
| AC_ADD_SEARCH_PATH($krb5path) |
| else |
| AC_ADD_SEARCH_PATH(/usr/kerberos) |
| fi |
| |
| AC_MSG_CHECKING([for krb5]) |
| AC_CACHE_VAL(ac_cv_have_krb5, |
| AC_CHECK_LIB(krb5, krb5_init_context, |
| ac_cv_have_krb5=yes, ac_cv_have_krb5=no |
| ) |
| ) |
| |
| if test $ac_cv_have_krb5 = no; then |
| if test "x$askedkrb5" = "xyes"; then |
| AC_MSG_ERROR(Asked to use krb5 but I couldn't find it.) |
| fi |
| AC_MSG_RESULT(no. disabling ksm) |
| continue |
| fi |
| |
| AC_MSG_RESULT(yes) |
| rebuilt_new_with_security="$rebuilt_new_with_security ksm" |
| |
| AC_MSG_CHECKING([[for heimdal]]) |
| AC_CACHE_VAL(ac_cv_heimdal, |
| [AC_TRY_COMPILE( |
| [#include <krb5.h>], |
| [const char *v = heimdal_version;], |
| ac_cv_heimdal=yes, |
| ac_cv_heimdal=no |
| )]) |
| AC_MSG_RESULT($ac_cv_heimdal) |
| if test $ac_cv_heimdal = yes; then |
| AC_DEFINE(NETSNMP_USE_KERBEROS_HEIMDAL, 1, |
| [Define this if you're using Heimdal Kerberos]) |
| if test no = $krb5_config; then |
| LIBS="$LIBS -lkrb5 -lasn1 -lcom_err -lroken" |
| fi |
| elif test no = $krb5_config; then |
| LIBS="$LIBS -lkrb5 -lcom_err" |
| fi |
| |
| AC_MSG_CHECKING([to see which crypto API we need to use]) |
| AC_CACHE_VAL(ac_cv_NETSNMP_USE_KERBEROS_MIT, |
| AC_CHECK_LIB(k5crypto, krb5_init_context, |
| ac_cv_NETSNMP_USE_KERBEROS_MIT=yes, ac_cv_NETSNMP_USE_KERBEROS_MIT=no |
| ) |
| ) |
| |
| if test yes = $ac_cv_NETSNMP_USE_KERBEROS_MIT; then |
| AC_MSG_RESULT(new MIT crypto API) |
| AC_DEFINE(NETSNMP_USE_KERBEROS_MIT, 1, |
| [Define this if we're using the new MIT crypto API]) |
| if test no = $krb5_config; then |
| LIBS="$LIBS -lk5crypto" |
| fi |
| else |
| AC_MSG_RESULT(old MIT crypto API) |
| fi |
| AC_CHECK_FUNCS([krb5_auth_con_getsendsubkey]) |
| fi |
| done |
| |
| new_with_security=$rebuilt_new_with_security |
| |
| # |
| # Detect lm_sensors version |
| # |
| if test "x$ac_cv_header_sensors_sensors_h" = "xyes"; then |
| AC_CHECK_DECLS([sensors_get_all_subfeatures], |
| [AC_DEFINE(NETSNMP_USE_SENSORS_V3, 1, |
| [Define this if you have lim_sensors v3 or later])],, |
| [[#include <sensors/sensors.h>]]) |
| fi |