| dnl Process this file with autoconf to produce a configure script. |
| dnl |
| AC_INIT(agent/mibgroup/ucd-snmp/extensible.c) |
| AC_CONFIG_HEADER(config.h) |
| |
| dnl |
| dnl save the configure arguments |
| dnl |
| AC_DEFINE_UNQUOTED(CONFIGURE_OPTIONS,"$ac_configure_args") |
| |
| dnl |
| dnl Compilation setup |
| dnl |
| AC_ARG_WITH(cc, [ |
| Compiler Options: |
| --with-cc=CC use CC to compile (default=gcc).], |
| [CC=$with_cc;export CC]) |
| |
| AC_ARG_WITH(ar, |
| [ --with-ar=AR use AR as the archiver.], |
| [AR=$with_ar; export AR]) |
| |
| AC_ARG_WITH(endianness, |
| [ --with-endianness=big|little define endianness of target platform when |
| cross-compiling.], |
| [if test $with_endianness != "big" -a $with_endianness != "little" ; then |
| AC_MSG_ERROR([Endianness must be big or little, not \"$with_endianness\".]); |
| fi |
| ]) |
| |
| AC_ARG_WITH(cflags, |
| [ --with-cflags=CFLAGS use CFLAGS as compile time arguments.], |
| [CFLAGS=$with_cflags; export CFLAGS]) |
| |
| AC_ARG_WITH(ldflags, |
| [ --with-ldflags=LDFLAGS use LDFLAGS as link time arguments to ld.], |
| [LDFLAGS=$with_ldflags; export LDFLAGS]) |
| |
| AC_ARG_WITH(libs, |
| [ --with-libs=LIBS use LIBS as link time arguments to ld.], |
| [LIBS=$with_libs; export LIBS]) |
| |
| AC_ARG_ENABLE(silent-libtool, |
| [ --enable-silent-libtool Pass --silent to libtool.], |
| LIBTOOLFLAGS=--silent) |
| AC_SUBST(LIBTOOLFLAGS) |
| |
| AC_ARG_ENABLE(mini_agent, |
| [ --enable-mini-agent Build a minimal agent.], |
| mini_agent="yes",mini_agent="no") |
| |
| AC_ARG_ENABLE(ipv6, |
| [ --enable-ipv6 Generate IPv6 ready version.], |
| [if test "x$enable_ipv6" = "xyes"; then |
| AC_DEFINE(INET6) |
| fi]) |
| |
| AC_ARG_ENABLE(debugging, |
| [ --enable-debugging Outputs extra debugging information at all |
| times. Normally, you should not enable this, |
| but instead use the -D flag of the commands, |
| which toggles debbuging output at runtime. |
| --disable-debugging Disallows debugging code to be built in. |
| This might provide some speed benefits.], |
| AC_DEFINE(SNMP_ALWAYS_DEBUG)) |
| |
| AC_ARG_ENABLE(developer, |
| [ --enable-developer Turns on super-duper-extra-compile-warnings |
| when using gcc.], |
| developer=yes) |
| |
| if test "x$enable_debugging" = "xno"; then |
| AC_DEFINE(SNMP_NO_DEBUGGING) |
| fi |
| |
| AC_ARG_WITH(dmalloc, |
| [ --with-dmalloc=PATH Use dmalloc library (www.dmalloc.com)], |
| if test "x$withval" = "xyes"; then |
| AC_ADD_SEARCH_PATH(/usr/local) |
| LIBS="$LIBS -ldmalloc" |
| AC_DEFINE(HAVE_DMALLOC_H) |
| elif test -d "$withval"; then |
| AC_ADD_SEARCH_PATH($withval) |
| LIBS="$LIBS -ldmalloc" |
| AC_DEFINE(HAVE_DMALLOC_H) |
| fi |
| ) |
| AC_SUBST(HAVE_DMALLOC_H) |
| |
| AC_ARG_WITH(efence, |
| [ --with-efence Look for and use libefence (malloc).], |
| use_efence="$withval") |
| |
| tryrsaref=no |
| AC_ARG_WITH(rsaref, |
| [ --with-rsaref=PATH Look for librsaref in PATH/lib.], |
| if test "x$withval" = "xyes"; then |
| tryrsaref=yes |
| elif test "x$withval" = "xno"; then |
| tryrsaref=no |
| elif test -d "$withval"; then |
| AC_ADD_SEARCH_PATH($withval) |
| tryrsaref=yes |
| fi, |
| ) |
| |
| tryopenssl=defaultyes |
| askedopenssl=no |
| AC_ARG_WITH(openssl, |
| [ --with-openssl=PATH Look for openssl in PATH/lib.], |
| if test "x$withval" = "xyes"; then |
| tryopenssl=yes |
| askedopenssl=yes |
| elif test "x$withval" = "xno"; then |
| tryopenssl=no |
| elif test -d "$withval"; then |
| AC_ADD_SEARCH_PATH($withval) |
| tryopenssl=yes |
| askedopenssl=yes |
| fi, |
| ) |
| if test "x$tryopenssl" = "xdefaultyes"; then |
| AC_ADD_SEARCH_PATH(/usr/local/ssl) |
| tryopenssl=yes |
| fi |
| |
| |
| AC_ARG_ENABLE(privacy, |
| [ --disable-privacy Don't compile in support for privacy.]) |
| if test "x$enable_privacy" != "xno"; then |
| AC_DEFINE(SCAPI_AUTHPRIV) |
| fi |
| |
| AC_ARG_ENABLE(internal-md5, |
| [ --enable-internal-md5 Use the internal MD5 support.], |
| AC_DEFINE(USE_INTERNAL_MD5)) |
| |
| |
| AC_ARG_WITH(opaque-special-types, |
| [ --without-opaque-special-types Don't use special opaque encodings. |
| SNMP normally cannot handle |
| floating numbers, nor large 64 bit |
| integers well. By default, the |
| ucd-snmp package compiles in |
| support for these extra datatypes |
| (in a legal way)]) |
| |
| AC_ARG_WITH(mibdirs, |
| [ --with-mibdirs=\"dir1:dir2:\" Default directories to look for mibs. |
| (Default: \$HOME/.snmp/mibs:DATADIR/snmp/mibs)], |
| [DEFAULT_MIBDIRS="$with_mibdirs" |
| AC_DEFINE_UNQUOTED(DEFAULT_MIBDIRS,"$with_mibdirs")]) |
| |
| AC_ARG_WITH(mibs, |
| [ --with-mibs=\"item1:item2:\" Default mib IDs to read. |
| (The default list is \"IP-MIB:IF-MIB: |
| TCP-MIB:UDP-MIB:SNMPv2-MIB:RFC1213-MIB\" |
| with the addition of any mibs used |
| by the mib modules the agent is |
| configured with)], |
| DEFAULT_MIBS="$with_mibs") |
| |
| AC_ARG_WITH(mibfiles, |
| [ --with-mibfiles=\"file1:file2\" Default mib files to load. |
| (Default: none. uses IDs above instead.)], |
| AC_DEFINE_UNQUOTED(DEFAULT_MIBFILES,"$with_mibfiles")) |
| |
| |
| AC_ARG_ENABLE(testing-code, |
| [ --enable-testing-code Enables some code sections that should |
| only be used for testing of certain |
| SNMP functionalities. This should *not* |
| be turned on for production use. Ever.], |
| AC_DEFINE(SNMP_TESTING_CODE)) |
| |
| AC_ARG_ENABLE(reentrant, |
| [ --enable-reentrant Enables locking functions that protect |
| library resources in some multi-threading |
| environments. This does not guarantee |
| thread-safe operation. |
| Currently an experimental setting.], |
| with_res_locks="yes",with_res_locks="no") |
| |
| AC_ARG_WITH(root-access, |
| [ |
| Configuring the agent: |
| --without-root-access The snmpd agent won't require root access to |
| run it. The information it returns in the |
| mib-II tree may not be correct, however.]) |
| |
| AC_ARG_WITH(dummy-values, |
| [ --with-dummy-values Provide 'placeholder' dummy values where |
| the necessary information is not available. |
| This is technically not compliant with the |
| SNMP specifications, but was how the agent |
| operated for versions < 4.0.]) |
| |
| AC_ARG_WITH(persistent-directory, |
| [ --with-persistent-directory=\"directory\" |
| Default directory for persistent data storage.],ac_cv_user_prompt_PERSISTENT_DIRECTORY="$with_persistent_directory") |
| |
| AC_ARG_WITH(sys_contact, |
| [ --with-sys-contact=\"who@where\" Default system contact. |
| (Default: LOGIN@DOMAINNAME)], |
| ac_cv_user_prompt_SYS_CONTACT="$with_sys_contact") |
| |
| AC_ARG_WITH(sys_location, |
| [ --with-sys-location=\"location\" Default system location. |
| (Default: Unknown)], |
| ac_cv_user_prompt_SYS_LOC="$with_sys_location") |
| |
| AC_ARG_WITH(logfile, |
| [ --with-logfile=\"location\" Default log file location for snmpd.], |
| ac_cv_user_prompt_LOGFILE="$with_logfile") |
| |
| dnl This can't be within AC_ARG_WITH. I don't want to read autoconf m4 |
| dnl to find out why. |
| AC_SUBST(WRAPLIBS) |
| |
| AC_ARG_WITH(transports, |
| [ --with-transports=\"t1 t2 ...\" Compile in the given SNMP transport |
| modules (space separated list).]) |
| AC_ARG_WITH(out_transports, |
| [ --with-out-transports=\"t1 ...\" Exclude listed SNMP transports |
| (space separated list). |
| |
| Available SNMP transport modules are: |
| |
| UDP support for SNMP over UDP/IP. |
| This transport is always compiled in. |
| UDPIPv6 support for SNMP over UDP/IPv6. |
| This transport is available for Linux, Solaris, |
| FreeBSD. |
| It is never compiled in by default. |
| TCPIPv6 support for SNMP over UDP/IPv6. |
| This transport is available for Linux, Solaris, |
| FreeBSD. |
| It is never compiled in by default. |
| TCP support for SNMP over TCP/IP. |
| This transport is compiled in by default, but may be ommitted. |
| Unix support for SNMP over Unix domain protocols. |
| This transport is compiled in by default except on Win32 |
| platforms, and may be omitted. |
| Callback support for SNMP over an internal locally connected pair |
| of snmp_sessions. |
| AAL5PVC support for SNMP over AAL5 PVCs. |
| This transport is presently only available for Linux, |
| is never compiled in by default and may be omitted. |
| IPX support for SNMP over IPX per RFC 1420. |
| This transport is presently only available for Linux, |
| is never compiled in by default and may be omitted. |
| ]) |
| |
| dnl |
| dnl Catch common mistakes in transport options |
| dnl |
| AC_ARG_WITH(transport,, AC_MSG_ERROR([ Invalid option. Use --with-transports instead ]) ) |
| AC_ARG_WITH(out_transport,,AC_MSG_ERROR([ Invalid option. Use --with-out-transports instead ]) ) |
| |
| dnl |
| dnl security modules |
| dnl |
| |
| AC_ARG_WITH(security-modules, |
| [ --with-security-modules=\"s1 s2 ...\" Compile in the given SNMP security |
| module services (space separated list). |
| |
| Available SNMP security services: |
| |
| usm support for user based SNMP security |
| (required and always compiled in) |
| ksm support for kerberos based SNMP security |
| ]) |
| |
| dnl coming soon: |
| |
| dnl |
| dnl mib modules |
| dnl |
| |
| AC_ARG_WITH(mib_modules, |
| [ --with-mib-modules=\"item1 ...\" Compile with additional mib modules |
| (Space separated list).]) |
| |
| AC_ARG_WITH(out_mib_modules, |
| [ --with-out-mib-modules=\"list\" Compile without these mib modules. |
| |
| Default mib modules compiled into the agent (which can be removed): |
| |
| mibII: support for the mib-II tree. |
| snmpv3: support for the snmpv3 mib modules. |
| ucd_snmp: ucd-snmp specific extensions. |
| agentx: (see below) |
| notification: mibs supporting specification of trap destinations. |
| |
| Optional mib modules that can be built into the agent include: |
| host: host resources mib support. |
| (beta level code for linux, hpux, solaris, bsdi) |
| smux: smux support to allow subagents to attach to snmpd. |
| misc/ipfwacc: accounting rules IP firewall information (linux). |
| ipfwchains/ipfwchains: firewall chains under ipfw for linux. |
| (Download separately from the ucd-snmp ftp site.) |
| ucd-snmp/diskio: Table of io-devices and how much data they have |
| read/written. (only tested on Solaris) |
| target: Support for the SNMP WGs TARGET-MIB. |
| (note: this is required for the notification mib |
| above, and hence is usually included). |
| tunnel: Linux TUNNEL-MIB support (ifTable extension) |
| |
| AgentX support: (warning: beta code) |
| agentx/subagent: allows the agent to run as either a snmp agent |
| or as an agentX sub-agent. |
| agentx/master: makes the agent run as an agentX master agent |
| as well as a normal snmp agent. |
| agentx: includes both agentx/master and agentx/client. |
| |
| Optional modules for C coders to look at and/or include as extension examples: |
| |
| examples/ucdDemoPublic: SNMPv3 interoperability testing mib. |
| examples/example: example C code extension.]) |
| |
| |
| dnl |
| AC_ARG_WITH(enterprise-oid, |
| [Enterprise OIDs: (warning: this should be used with caution.) |
| |
| --with-enterprise-oid The enterprise OID assigned to the |
| vendor by IANA. See |
| http://www.iana.org/cgi-bin/enterprise.pl |
| to get one, though using the default is |
| probably the right choice is most cases. |
| (default 8072 = "enterprise.net-snmp")],[ |
| AC_DEFINE_UNQUOTED(ENTERPRISE_OID, $withval) |
| ent_oid="1,3,6,1,4,1,$withval" |
| AC_DEFINE_UNQUOTED(ENTERPRISE_MIB, $ent_oid) |
| ent_dot_oid="1.3.6.1.4.1.$withval" |
| AC_DEFINE_UNQUOTED(ENTERPRISE_DOT_MIB, $ent_dot_oid) |
| AC_MSG_RESULT($withval) |
| ],[ |
| AC_MSG_RESULT(using default "enterprise.net-snmp") |
| ]) |
| |
| AC_ARG_WITH(enterprise-sysoid, |
| [ |
| --with-enterprise-sysoid The sysObjectID of the system group |
| (default .1.6.1.4.1.2021... = |
| "enterprise.ucd-snmp...")],[ |
| sys_oid=`echo "$withval" | sed 's/\./\,/g'` |
| AC_DEFINE_UNQUOTED(SYSTEM_MIB, $sys_oid) |
| sys_dot_oid="$withval" |
| AC_DEFINE_UNQUOTED(SYSTEM_DOT_MIB, $sys_dot_oid) |
| sysoid_len=`echo "$withval" | sed 's/[^\.]//g' | awk '{ print length($0)'` |
| AC_DEFINE_UNQUOTED(SYSTEM_DOT_MIB_LENGTH, $sysoid_len) |
| AC_MSG_RESULT($withval) |
| ],[ |
| AC_MSG_RESULT(using default "enterprise.ucd-snmp...") |
| ]) |
| |
| AC_ARG_WITH(enterprise-notification-oid, |
| [ |
| --with-enterprise-notification-oid The OID used for the root of |
| enterprise specific notifications. |
| (default 2021 = "enterprise.ucdavis.251")],[ |
| notification_oid=`echo "$withval" | sed 's/\./\,/g'` |
| AC_DEFINE_UNQUOTED(NOTIFICATION_MIB, $notification_oid) |
| notification_dot_oid="$withval" |
| AC_DEFINE_UNQUOTED(NOTIFICATION_DOT_MIB, $notification_dot_oid) |
| notificationoid_len=`echo "$withval" | sed 's/[^\.]//g' | awk '{ print length($0)'` |
| AC_DEFINE_UNQUOTED(NOTIFICATION_DOT_MIB_LENGTH, $notificationoid_len) |
| AC_MSG_RESULT($withval) |
| ],[ |
| AC_MSG_RESULT(using default "enterprise.net-snmp") |
| ]) |
| dnl |
| dnl Catch common mistakes in configure options |
| dnl |
| AC_ARG_WITH(mib_module,, AC_MSG_ERROR([ Invalid option. Use --with-mib-modules instead ]) ) |
| AC_ARG_WITH(out_mib_module,,AC_MSG_ERROR([ Invalid option. Use --with-out-mib-modules instead ]) ) |
| |
| dnl |
| dnl otherwise prompted information |
| dnl |
| AC_ARG_WITH(defaults, |
| [ |
| Miscellaneous: |
| --with-defaults Use defaults for prompted values.], |
| defaults="yes",defaults="no") |
| |
| dnl Only define if specifically chosen as --without (i.e., default to true). |
| if test "x$with_root_access" = "xno"; then |
| AC_DEFINE(NO_ROOT_ACCESS) |
| fi |
| |
| dnl Define unless specifically suppressed (i.e., option defaults to false). |
| if test "x$with_dummy_values" != "xyes"; then |
| AC_DEFINE(NO_DUMMY_VALUES) |
| fi |
| |
| dnl Only define if specifically chosen as --without (i.e., default to true). |
| if test "x$with_opaque_special_types" != "xno"; then |
| AC_DEFINE(OPAQUE_SPECIAL_TYPES) |
| fi |
| |
| |
| dnl overflow problems with hpux's sh |
| dnl taken from Perl's Configure script |
| |
| AC_MSG_CHECKING(if I need to feed myself to ksh) |
| if test -f /hp-ux -a -f /bin/ksh; then |
| if (PATH=.; alias -x) >/dev/null 2>&1; then |
| AC_MSG_RESULT(no) |
| else |
| AC_MSG_RESULT(yes) |
| if test "x$1" = "x"; then |
| exec /bin/ksh $0 |
| else |
| exec /bin/ksh $0 "$@" |
| fi |
| fi |
| else |
| AC_MSG_RESULT(no) |
| fi |
| |
| if test "x$developer" != "xno" -a -f $srcdir/remove-files; then |
| dnl turn on the developer flag when taken from a CVS checkout (not a release) |
| developer="yes" |
| fi |
| |
| dnl disable --enable-shared by default in cvs/developer cases. |
| if test "x$developer" = "xyes"; then |
| AC_DISABLE_SHARED |
| fi |
| |
| AC_PROG_CC |
| AC_PROG_CPP |
| AC_AIX |
| AC_EXEEXT |
| |
| dnl libtool stuff for shared/static libraries. |
| AC_LIBTOOL_DLOPEN |
| AC_LIBTOOL_WIN32_DLL |
| AC_PROG_LIBTOOL |
| |
| dnl Checks for programs. |
| AC_PROG_INSTALL |
| AC_PROG_LN_S |
| AC_PROG_MAKE_SET |
| AC_PATH_PROG(PSPROG,ps) |
| AC_PATH_PROG(PERLPROG,perl) |
| AC_CHECK_PROGS(WHOAMI, whoami logname, whoami) |
| AC_CHECK_PROGS(SED,sed gsed) |
| AC_CHECK_PROG(AUTOCONF, autoconf) |
| AC_CHECK_PROG(AUTOHEADER, autoheader) |
| if test "x$test ac_cv_prog_AUTOCONF" = "x"; then |
| AUTOCONF=":" |
| AC_SUBST(AUTOCONF) |
| fi |
| if test "x$test ac_cv_prog_AUTOHEADER" = "x"; then |
| AUTOHEADER=":" |
| AC_SUBST(AUTOHEADER) |
| fi |
| |
| AC_PATH_PROG(UNAMEPROG,uname) |
| AC_DEFINE_UNQUOTED(UNAMEPROG,"$UNAMEPROG") |
| |
| AC_C_CONST |
| AC_C_INLINE |
| |
| dnl get version number. |
| AC_MSG_CHECKING(for ucd-snmp version number) |
| VERSION=`cat $srcdir/version.h | sed 's/";//;s/.*"//;s/pre/0./;'` |
| changequote(, ) |
| RELEASEVERSION=`echo $VERSION | sed 's/^\([0-9]\)\.\([0-9]\)/\1:\2:0/'` |
| changequote([, ]) |
| AC_SUBST(VERSION) |
| AC_SUBST(RELEASEVERSION) |
| AC_MSG_RESULT($VERSION) |
| |
| dnl super type checking |
| AC_MSG_CHECKING(for developer gcc flags) |
| if test "x$developer" = "xyes" -a "x$ac_cv_prog_gcc" = "xyes"; then |
| devflags="-Wall -Wstrict-prototypes -Wwrite-strings -Wcast-qual -Wno-char-subscripts" |
| CFLAGS="$CFLAGS $devflags" |
| else |
| devflags="none" |
| fi |
| AC_MSG_RESULT($devflags) |
| |
| dnl system check |
| AC_CANONICAL_SYSTEM |
| changequote(, ) |
| PARTIALTARGETOS=`echo $target_os | sed 's/[-._].*//'` |
| CFLAGS="$CFLAGS -D$PARTIALTARGETOS" |
| changequote([, ]) |
| |
| dnl |
| dnl check for special includes and pick one |
| dnl |
| |
| AC_MSG_CHECKING(for system include file) |
| changequote(, ) |
| filebase=$target_os |
| dnl ignore binary format indication |
| filebase=`echo $filebase | sed 's/elf//'` |
| filebase=`echo $filebase | sed 's/aout//'` |
| filebase=`echo $filebase | sed 's/ecoff//'` |
| filebase=`echo $filebase | sed 's/coff//'` |
| while test "x$filebase" != "x$last" -a ! -f $srcdir/s/$filebase.h |
| do |
| last=$filebase |
| filebase=`echo $filebase | sed 's/[-._][^-._]*$//'` |
| if test "x$filebase" = "x$last"; then |
| filebase=`echo $filebase | sed 's/[0-9]*$//'` |
| fi |
| done |
| |
| if test "x$filebase" = "x$last"; then |
| filebase="generic" |
| fi |
| ac_cv_SYSTEM_INCLUDE_FILE="s/$filebase.h" |
| |
| changequote([, ]) |
| AC_MSG_RESULT($ac_cv_SYSTEM_INCLUDE_FILE) |
| AC_DEFINE_UNQUOTED(SYSTEM_INCLUDE_FILE, "$ac_cv_SYSTEM_INCLUDE_FILE") |
| |
| dnl second part, the CPU type. |
| |
| AC_MSG_CHECKING(for machine-type include file) |
| changequote(, ) |
| filebase=$target_cpu |
| while test "x$filebase" != "x$last" -a ! -f $srcdir/m/$filebase.h |
| do |
| last=$filebase |
| filebase=`echo $filebase | sed 's/[-._][^-._]*$//'` |
| done |
| |
| if test "x$filebase" = "x$last"; then |
| filebase="generic" |
| fi |
| ac_cv_MACHINE_INCLUDE_FILE="m/$filebase.h" |
| AC_MSG_RESULT($ac_cv_MACHINE_INCLUDE_FILE) |
| |
| changequote([, ]) |
| AC_DEFINE_UNQUOTED(MACHINE_INCLUDE_FILE, "$ac_cv_MACHINE_INCLUDE_FILE") |
| |
| AC_PATH_PROG(CCPATH,$CC) |
| dnl watch out for /usr/ucb/cc on solaris, it doesn't work with this package. |
| case $target_os in |
| bsdi*) |
| if test "x$CCPATH" = "x/usr/ucb/cc" -o "x$CCPATH" = "x/usr/bin/cc"; then |
| AC_MSG_ERROR([ |
| |
| *** The BSDI /usr/ucb/cc compiler does not work with this package. |
| *** Please run configure with --with-cc=gcc |
| ]) |
| fi |
| ;; |
| solaris*) |
| if test "x$CCPATH" = "x/usr/ucb/cc"; then |
| AC_MSG_ERROR([ |
| |
| *** The solaris /usr/ucb/cc compiler does not work with this package. |
| *** Please put a different compiler in your path first or run |
| *** configure with --with-cc=XX, where XX is the compiler you want to use. |
| ]) |
| fi |
| ;; |
| esac |
| |
| AC_MSG_CHECKING(for additional cpp flags) |
| dnl gcc extra CPPFLAGS |
| if test "x$GCC" = "xyes" -a "x$CPP" = "x$CC -E"; then |
| dnl extra cpp flags for gnu c compiler to allow .in file extensions. |
| EXTRACPPFLAGS="-x c" |
| else |
| EXTRACPPFLAGS="" |
| fi |
| |
| dnl Solaris extra cpp flags. |
| if test "x$GCC" != "xyes"; then |
| case $target_os in |
| solaris*) EXTRACPPFLAGS="$EXTRACPPFLAGS -Xs" ;; |
| esac |
| fi |
| |
| AC_SUBST(EXTRACPPFLAGS) |
| AC_MSG_RESULT($EXTRACPPFLAGS) |
| |
| dnl Prefixes must begin with "/" |
| |
| if test "x$prefix" = "xNONE"; then |
| prefix=/usr/local |
| fi |
| |
| fch=`echo $prefix | sed 's/\(.\).*/\1/'` |
| if test $fch != "/" ; then |
| prefix=`pwd`/$prefix |
| echo "adjusting prefix to $prefix" |
| fi |
| |
| if test "x$exec_prefix" = "xNONE"; then |
| exec_prefix=$prefix |
| fi |
| |
| fch=`echo $exec_prefix | sed 's/\(.\).*/\1/'` |
| if test $fch != "/" ; then |
| exec_prefix=`pwd`/$exec_prefix |
| echo "adjusting exec_prefix to $exec_prefix" |
| fi |
| |
| dnl Set SNMPLIBPATH & SNMPSHAREPATH |
| |
| SNMPLIBPATH="" |
| tmpset="$libdir/snmp" |
| while test "x$tmpset" != "x$SNMPLIBPATH"; do |
| SNMPLIBPATH="$tmpset" |
| eval tmpset="$tmpset" |
| done |
| AC_DEFINE_UNQUOTED(SNMPLIBPATH,"$SNMPLIBPATH") |
| AC_DEFINE_UNQUOTED(SNMPDLMODPATH,"$SNMPLIBPATH/dlmod") |
| |
| SNMPSHAREPATH="" |
| tmpset="$datadir/snmp" |
| while test "x$tmpset" != "x$SNMPSHAREPATH"; do |
| SNMPSHAREPATH="$tmpset" |
| eval tmpset="$tmpset" |
| done |
| AC_DEFINE_UNQUOTED(SNMPSHAREPATH,"$SNMPSHAREPATH") |
| |
| if test "x$DEFAULT_MIBDIRS" = "x"; then |
| AC_DEFINE_UNQUOTED(DEFAULT_MIBDIRS,"\$HOME/.snmp/mibs:$SNMPSHAREPATH/mibs") |
| fi |
| |
| SNMPCONFPATH="" |
| tmpset="$sysconfdir/snmp" |
| while test "x$tmpset" != "x$SNMPCONFPATH"; do |
| SNMPCONFPATH="$tmpset" |
| eval tmpset="$tmpset" |
| done |
| AC_DEFINE_UNQUOTED(SNMPCONFPATH,"$SNMPCONFPATH") |
| AC_SUBST(SNMPCONFPATH) |
| |
| dnl guess IPv6 stack type. |
| if test "x$enable_ipv6" = "xyes"; then |
| v6type=unknown |
| v6lib=none |
| v6trylibc=no |
| |
| AC_MSG_CHECKING([ipv6 stack type]) |
| for i in v6d toshiba kame inria zeta linux-glibc linux-inet6; do |
| case $i in |
| v6d) |
| AC_EGREP_CPP(yes, [dnl |
| #include </usr/local/v6/include/sys/types.h> |
| #ifdef __V6D__ |
| yes |
| #endif], |
| [v6type=$i; v6lib=v6; |
| v6libdir=/usr/local/v6/lib; |
| CFLAGS="-I/usr/local/v6/include $CFLAGS"]) |
| ;; |
| toshiba) |
| AC_EGREP_CPP(yes, [dnl |
| #include <sys/param.h> |
| #ifdef _TOSHIBA_INET6 |
| yes |
| #endif], |
| [v6type=$i; v6lib=inet6; |
| v6libdir=/usr/local/v6/lib; |
| CFLAGS="-DINET6 $CFLAGS"]) |
| ;; |
| kame) |
| AC_EGREP_CPP(yes, [dnl |
| #include <netinet/in.h> |
| #ifdef __KAME__ |
| yes |
| #endif], |
| [v6type=$i; v6lib=inet6; |
| v6libdir=/usr/local/v6/lib; |
| v6trylibc=yes; |
| CFLAGS="-DINET6 $CFLAGS"]) |
| ;; |
| inria) |
| AC_EGREP_CPP(yes, [dnl |
| #include <netinet/in.h> |
| #ifdef IPV6_INRIA_VERSION |
| yes |
| #endif], |
| [v6type=$i; |
| v6lib=dummy; |
| v6libdir=none; |
| v6trylibc=yes; |
| CFLAGS="-DINET6 $CFLAGS"]) |
| ;; |
| zeta) |
| AC_EGREP_CPP(yes, [dnl |
| #include <sys/param.h> |
| #ifdef _ZETA_MINAMI_INET6 |
| A |
| yes |
| #endif], |
| [v6type=$i; v6lib=inet6; |
| v6libdir=/usr/local/v6/lib; |
| CFLAGS="-DINET6 $CFLAGS"]) |
| ;; |
| linux-glibc) |
| AC_EGREP_CPP(yes, [dnl |
| #include <features.h> |
| #if defined(__GLIBC__) && ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC_ > 2)) |
| yes |
| #endif], |
| [v6type=$i; |
| v6lib=dummy; |
| v6libdir=none; |
| v6trylibc=yes; |
| CFLAGS="-DINET6 $CFLAGS"]) |
| ;; |
| linux-inet6) |
| if test -d /usr/inet6; then |
| v6type=$i |
| v6lib=inet6 |
| v6libdir=/usr/inet6/lib |
| CFLAGS="-DINET6 $CFLAGS" |
| fi |
| ;; |
| esac |
| if test "$v6type" != "unknown"; then |
| break |
| fi |
| done |
| |
| if test "$v6lib" != "none"; then |
| if test -d $v6libdir -a -f $v6libdir/lib$v6lib.a; then |
| LIBS="-L$v6libdir -l$v6lib $LIBS" |
| enable_ipv6="yes" |
| AC_MSG_RESULT(["$v6type, $enable_ipv6, using lib$v6lib"]) |
| elif test "$v6trylibc" = "yes"; then |
| enable_ipv6="yes" |
| AC_MSG_RESULT(["$v6type, $enable_ipv6, using libc"]) |
| else |
| AC_MSG_ERROR(no IPv6 library lib$v6lib.a found.) |
| exit 1 |
| fi |
| else |
| enable_ipv6="no" |
| AC_MSG_RESULT(["$v6type, $enable_ipv6"]) |
| fi |
| fi |
| |
| dnl |
| dnl Maybe add library extensions for thread mutex locking. |
| dnl |
| |
| if test "x$with_res_locks" = "xyes"; then |
| AC_DEFINE(NS_REENTRANT) |
| EOF |
| |
| case $target_os in |
| |
| aix*) |
| CC_RUNTIME_ARG="$CC_RUNTIME_ARG -lpthreads" |
| ;; |
| |
| *) |
| ;; |
| |
| esac |
| fi |
| |
| AC_MSG_CHECKING(whether we have to build PIC code) |
| echo "$with_mib_modules" | grep "ucd-snmp/dlmod" >/dev/null |
| if test $? -eq 0 ; then |
| DLLIBS="-ldl" |
| LIB_CFLAGS="$LIB_CFLAGS $SHLIB_CFLAGS" |
| AC_MSG_RESULT(yes) |
| else |
| DLLIBS="" |
| AC_MSG_RESULT(no) |
| fi |
| |
| dnl |
| dnl Do transport module processing. |
| dnl |
| 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;'` |
| |
| dnl |
| dnl Add the default transports to the list |
| dnl |
| if test "x$PARTIALTARGETOS" = "xcygwin"; then |
| transport_default_list="UDP TCP" |
| else |
| transport_default_list="UDP TCP Unix Callback" |
| 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 |
| 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" = "xcygwin"; then |
| echo |
| AC_MSG_ERROR(Unix domain protocol support unavailable for this platform) |
| fi |
| fi |
| transport_src="snmp"$i"Domain.c" |
| transport_hdr="snmp"$i"Domain.h" |
| rel_transport_src="snmplib/"$transport_src |
| rel_transport_hdr="snmplib/"$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="SNMP_TRANSPORT_"$transport_def"_DOMAIN $transport_def_list" |
| else |
| echo |
| AC_MSG_ERROR(Cannot find file $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'` |
| 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.) |
| |
| dnl |
| dnl Security modules to use |
| dnl |
| |
| 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" |
| 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 snmplib; then |
| mkdir snmplib |
| fi |
| echo "/* This file is automatically generated by configure. Do not modify by hand. */" > $security_init_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"/snmplib/"$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="SNMP_SECMOD_"`echo $i | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` |
| echo "init_"$i"();" >> $security_init_file |
| AC_DEFINE_UNQUOTED($def_name) |
| done |
| |
| AC_SUBST(security_src_list) |
| AC_SUBST(security_obj_list) |
| AC_SUBST(security_lobj_list) |
| AC_SUBST(security_hdr_list) |
| AC_MSG_RESULT($new_with_security) |
| |
| dnl |
| dnl Handle the special case of KSM to see which crypto API we support |
| dnl |
| |
| for sec in $new_with_security |
| do |
| if test x$sec = xksm; then |
| AC_MSG_CHECKING(to see which crypto API we need to use) |
| |
| AC_CHECK_FUNC(krb5_c_encrypt,[ |
| AC_MSG_RESULT(new MIT crypto API) |
| AC_DEFINE(MIT_NEW_CRYPTO)],[ |
| AC_MSG_RESULT(old MIT crypto API)]) |
| fi |
| done |
| |
| dnl |
| dnl Do hairy agent module processing. |
| dnl |
| changequote(, ) |
| AC_MSG_CHECKING(for and configuring mib modules to use) |
| |
| mibdir="agent/mibgroup" |
| module_list="" |
| module_list_code="" |
| new_with_mib_modules=`echo $with_mib_modules | sed 's/,/ /g;'` |
| new_with_out_mib_modules=`echo $with_out_mib_modules | sed 's/,/ /g;'` |
| new_module_list="mibII ucd_snmp snmpv3mibs notification agentx $new_with_mib_modules" |
| default_mibs=IP-MIB:IF-MIB:TCP-MIB:UDP-MIB:SNMPv2-MIB:RFC1213-MIB:NOTIFICATION-LOG-MIB |
| |
| if test "x$mini_agent" = "xyes"; then |
| new_with_out_mib_modules="mibII $new_with_out_mib_modules" |
| new_module_list="snmpv3mibs mibII/snmp_mib mibII/system_mib mibII/sysORTable examples/ucdDemoPublic mibII/vacm_vars $new_with_mib_modules" |
| default_mibs=SNMPv2-MIB:RFC1213-MIB |
| default_mibs_install=" " |
| fi |
| |
| |
| if test "x$enable_ipv6" = "xyes"; then |
| new_module_list="$new_module_list mibII/ipv6" |
| fi |
| |
| dnl Create include file list for snmp_vars.h to use. |
| if test ! -d agent; then |
| mkdir agent |
| fi |
| if test ! -d agent/mibgroup; then |
| mkdir agent/mibgroup |
| fi |
| for i in $mibdir/mib_module_includes.h $mibdir/mib_module_inits.h $mibdir/mib_module_shutdown.h mib_module_config.h $mibdir/mib_module_dot_conf.h; do |
| rm -f $i |
| echo "/* This file is automatically generated by configure. Do not modify by hand. */" > $i |
| done |
| |
| test_modules="$new_module_list" |
| new_module_list="" |
| module_list_h="" |
| |
| for i in $test_modules |
| do |
| if echo " $new_with_out_mib_modules " | grep " $i " > /dev/null; then |
| : |
| else |
| new_module_list="$new_module_list $i" |
| fi |
| done |
| |
| AC_MSG_RESULT($new_module_list.) |
| |
| AC_MSG_CHECKING(for and configuring mib modules pieces to use) |
| while test "x$new_module_list" != "x"; do |
| for i in $new_module_list |
| do |
| if echo " $new_with_out_mib_modules " | grep " $i " > /dev/null; then |
| : |
| else |
| if test -f $srcdir/$mibdir/$i.h; then |
| new_list="" |
| new_list_arch=`grep config_arch_require $srcdir/$mibdir/$i.h | sed 's/.*config_arch_require(\(.*\), *\(.*\)).*/\1-xarchx-\2/'` |
| if test "x$new_list_arch" != "x"; then |
| for j in $new_list_arch |
| do |
| archtest=`echo $j | sed 's/-xarchx-.*//'` |
| if test "x$target_os" = "x$archtest" -o "x$PARTIALTARGETOS" = "x$archtest"; then |
| new_list="$new_list `echo $j | sed 's/.*-xarchx-//'`" |
| fi |
| done |
| fi |
| new_list="$new_list `grep config_require $srcdir/$mibdir/$i.h | sed 's/.*config_require(\(.*\)).*/\1/'`" |
| if test "x$new_list" != "x"; then |
| for j in $new_list |
| do |
| if test ! -f $srcdir/$mibdir/$j.h; then |
| AC_MSG_ERROR(mib module "$i" requires module "$j" but $j.h or $j.c could not be found in $srcdir/$mibdir) |
| elif echo " $new_with_out_mib_modules " | grep " $j " > /dev/null; then |
| AC_MSG_WARN(mib module "$i" requires module "$j" but you told me to compile without it) |
| elif echo " $module_list $new_list_two $new_module_list " | grep " $j " > /dev/null; then |
| : |
| else |
| new_list_two="$new_list_two $j" |
| fi |
| done |
| fi |
| new_mibs=`grep config_add_mib $srcdir/$mibdir/$i.h | sed 's/.*config_add_mib(\(.*\)).*/\1/'` |
| if test "x$new_mibs" != "x"; then |
| for j in $new_mibs |
| do |
| if test "x`echo :$default_mibs: | grep :$j:`" = "x"; then |
| default_mibs="$default_mibs:$j" |
| fi |
| if test -f $srcdir/mibs/$j.txt; then |
| if echo $default_mibs_install | grep " $j " > /dev/null; then |
| : |
| else |
| default_mibs_install="$default_mibs_install $j.txt" |
| fi |
| fi |
| done |
| fi |
| else |
| AC_MSG_ERROR(module files $i.h or $i.c could not be found in $srcdir/$mibdir) |
| fi |
| module_list="$module_list $i" |
| echo '#include "'"mibgroup/$i.h"'"' >> $mibdir/mib_module_includes.h |
| module_list_h="$module_list_h mibgroup/$i.h" |
| if test -f $srcdir/$mibdir/$i.c; then |
| module_list_code="$module_list_code $i" |
| mnm=`echo $i | sed 's/.*\///;s/\.c$//;'` |
| temp_init=`grep init_$mnm $srcdir/$mibdir/$i.c | grep -v _init_$mnm` |
| if test "x$temp_init" != "x"; then |
| echo " if (should_init(\"$mnm\")) init_$mnm();" >> $mibdir/mib_module_inits.h |
| fi |
| if grep shutdown_`basename $i` $srcdir/$mibdir/$i.c > /dev/null; then |
| echo " if (should_init(\"`basename $i`\")) shutdown_`basename $i`();" >> $mibdir/mib_module_shutdown.h |
| fi |
| fi |
| if test "x`echo $i | sed 's/\///g;'`" != "x$i"; then |
| mnd=`echo $i | sed 's/\/[^/]*$//;'` |
| if test ! -d ./$mibdir/$mnd; then |
| module_directories="$module_directories ./$mibdir/$mnd" |
| fi |
| fi |
| if grep config_load_mib $srcdir/$mibdir/$i.h > /dev/null 2>&1; then |
| AC_MSG_WARN(mib module "$i" uses the "config_load_mib" directive, which is no longer supported. It probably won't work.) |
| fi |
| grep config_parse_dot_conf $srcdir/$mibdir/$i.h | sed 's@.*config_parse_dot_conf(\([^)]*\), *\([^),]*\), *\([^),]*\), *\([^),]*\)).*@register_config_handler("snmpd",\1, \2, \3, \4);@' >> $mibdir/mib_module_dot_conf.h |
| sym="`echo ${i} | sed 's/[^a-zA-Z0-9_]/_/g' | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`" |
| echo "/* Define if compiling with the ${i} module files. */" >> mib_module_config.h |
| echo "#define USING_${sym}_MODULE 1" >> mib_module_config.h |
| echo " " >> mib_module_config.h |
| echo $ac_n " $i$ac_c" >&AC_FD_MSG |
| fi |
| done |
| new_module_list="$new_list_two" |
| new_list_two="" |
| done |
| module_list_o=`echo "$module_list_code " | sed 's/\([^ ]\) /\1.o /g'` |
| module_list_lo=`echo "$module_list_code " | sed 's/\([^ ]\) /\1.lo /g'` |
| module_list_c=`echo "$module_list_code " | sed 's/\([^ ]\) /\1.c /g'` |
| mibgroup_list_o=`echo " $module_list_o " | sed 's@ \([^ ]*\)\.o@ mibgroup/\1.o @g'` |
| mibgroup_list_lo=`echo " $module_list_lo " | sed 's@ \([^ ]*\)\.lo@ mibgroup/\1.lo @g'` |
| changequote([, ]) |
| AC_SUBST(module_list_c) |
| AC_SUBST(module_list_h) |
| AC_SUBST(module_list_o) |
| AC_SUBST(module_list_lo) |
| AC_SUBST(mibgroup_list_o) |
| AC_SUBST(mibgroup_list_lo) |
| AC_SUBST(default_mibs_install) |
| |
| AC_MSG_RESULT(.) |
| |
| AC_MSG_CHECKING(if directories need to be created) |
| for i in $module_directories; do |
| $srcdir/mkinstalldirs $i |
| done |
| AC_MSG_RESULT(.) |
| |
| AC_MSG_CHECKING(default mib files to read) |
| if test "x$DEFAULT_MIBS" = "x"; then |
| DEFAULT_MIBS="$default_mibs" |
| fi |
| AC_DEFINE_UNQUOTED(DEFAULT_MIBS,"$DEFAULT_MIBS") |
| AC_MSG_RESULT($DEFAULT_MIBS) |
| |
| dnl |
| dnl Check for kernel location |
| dnl |
| |
| AC_CACHE_CHECK(for location of system kernel,ac_cv_KERNEL_LOC, |
| [ac_cv_KERNEL_LOC="unknown" |
| dnl First determine if test expects a -f or a -c (character device (SYSV)) |
| |
| if test -c /dev/null; then |
| CFLAG="-c" |
| elif test -f /dev/null; then |
| CFLAG="-f" |
| else |
| dnl fall back |
| CFLAG="-f" |
| fi |
| for i in /vmunix /hp-ux /stand/vmunix /dev/ksyms /kernel/unix /kernel/genunix /netbsd /unix /kernel /bsd /mach_kernel |
| do |
| if test -f $i -o $CFLAG $i; then |
| ac_cv_KERNEL_LOC="$i" |
| break; |
| fi |
| done |
| if test $i = "unknown"; then |
| AC_MSG_WARN(Can't find system kernel... Setting to /vmunix) |
| ac_cv_KERNEL_LOC="/vmunix" |
| fi |
| ]) |
| |
| AC_DEFINE_UNQUOTED(KERNEL_LOC,"$ac_cv_KERNEL_LOC") |
| |
| dnl |
| dnl Check for mount table location |
| dnl |
| |
| AC_CACHE_CHECK(for mount table location,ac_cv_ETC_MNTTAB, |
| [ac_cv_ETC_MNTTAB="unknown" |
| for i in /etc/mnttab /etc/mtab |
| do |
| if test -f $i; then |
| ac_cv_ETC_MNTTAB="$i" |
| break; |
| fi |
| done |
| ]) |
| |
| AC_DEFINE_UNQUOTED(ETC_MNTTAB,"$ac_cv_ETC_MNTTAB") |
| |
| dnl Check for /dev/dmem or /dev/drum location |
| AC_CACHE_CHECK(for location of swap device,ac_cv_DMEM_LOC, |
| [ |
| dnl First determine if test expects a -f or a -c (character device (SYSV)) |
| |
| if test -f /dev/kmem; then |
| CTEST="test -f" |
| elif test -c /dev/kmem; then |
| CTEST="test -c" |
| else |
| dnl fall back |
| CTEST="test -f" |
| fi |
| |
| if $CTEST /dev/dmem; then |
| ac_cv_DMEM_LOC="/dev/dmem" |
| elif $CTEST /dev/drum; then |
| ac_cv_DMEM_LOC="/dev/drum" |
| else |
| ac_cv_DMEM_LOC="none" |
| fi |
| ]) |
| |
| if test "x$ac_cv_DMEM_LOC" != "xnone"; then |
| AC_DEFINE_UNQUOTED(DMEM_LOC,"$ac_cv_DMEM_LOC") |
| fi |
| |
| dnl efence |
| if test "x$developer" = "xyes" -a "x$use_efence" != "xno"; then |
| use_efence="yes" |
| fi |
| |
| if test "x$use_efence" = "xyes"; then |
| AC_CHECK_LIB(efence, EF_Exit) |
| fi |
| |
| dnl Checks for libraries. |
| dnl AC_CHECK_LIB(des, main) |
| AC_CHECK_LIB(elf, nlist) |
| AC_CHECK_LIB(m, asin) |
| |
| dnl On some platforms (Irix) libnsl and libsocket should not be used. |
| AC_CHECK_FUNC(gethostbyname, AC_DEFINE(HAVE_GETHOSTBYNAME), |
| AC_CHECK_LIB(nsl, gethostbyname, AC_DEFINE(HAVE_GETHOSTBYNAME) |
| LIBS="${LIBS} -lnsl")) |
| AC_CHECK_FUNC(getservbyname, AC_DEFINE(HAVE_GETSERVBYNAME), |
| AC_CHECK_LIB(socket, getservbyname, AC_DEFINE(HAVE_GETSERVBYNAME) |
| LIBS="${LIBS} -lsocket")) |
| |
| dnl AC_CHECK_LIB(ucb, bzero) |
| |
| dnl check for tcp wrapper support |
| _cppflags="${CPPFLAGS}" |
| _ldflags="${LDFLAGS}" |
| |
| AC_ARG_WITH(libwrap, |
| [ --with-libwrap[=LIBPATH] Compile in libwrap (tcp_wrappers) support.],[ |
| 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, |
| LIBS="$LIBS -lwrap" |
| AC_MSG_CHECKING(for TCP wrappers library -lwrap) |
| AC_TRY_LINK([#include <tcpd.h> |
| int allow_severity = 0; |
| int deny_severity = 0; |
| ],[hosts_access((void *)0)], |
| AC_MSG_RESULT(yes) |
| AC_DEFINE(USE_LIBWRAP) |
| test "$with_libwrap" != no -a "$with_libwrap" != yes && WRAPLIBS="-L$with_libwrap/lib" |
| WRAPLIBS="$WRAPLIBS -lwrap", |
| AC_MSG_RESULT(no) |
| dnl 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_TRY_LINK([#include <tcpd.h> |
| int allow_severity = 0; |
| int deny_severity = 0; |
| ],[hosts_access((void *)0)], |
| AC_MSG_RESULT(yes) |
| test "$with_libwrap" != no -a "$with_libwrap" != yes && WRAPLIBS="-L$with_libwrap/lib" |
| WRAPLIBS="$WRAPLIBS -lwrap", AC_MSG_RESULT(no)), |
| CPPFLAGS=${_cppflags}), |
| CPPFLAGS=${_cppflags}) |
| LDFLAGS=${_ldflags} |
| LIBS=${_libs} |
| fi |
| ]) |
| |
| dnl ARG. RPM is a real pain. |
| AC_CHECK_LIB(popt, poptParseArgvString) |
| |
| dnl zlib is required for newer versions of rpm |
| _cppflags="${CPPFLAGS}" |
| _ldflags="${LDFLAGS}" |
| |
| AC_ARG_WITH(zlib, |
| [ --with-zlib[=DIR] use libz in DIR],[ |
| if test -d "$withval"; then |
| CPPFLAGS="${CPPFLAGS} -I$withval/include" |
| LDFLAGS="${LDFLAGS} -L$withval/lib" |
| fi |
| ]) |
| |
| AC_CHECK_HEADER(zlib.h, |
| AC_CHECK_LIB(z, gzread, , CPPFLAGS=${_cppflags} LDFLAGS=${_ldflags}), |
| CPPFLAGS=${_cppflags} LDFLAGS=${_ldflags}) |
| |
| dnl |
| dnl with rpm3 or higher, we need db1 to exist |
| dnl |
| |
| AC_CHECK_LIB(db1, dbopen,[ |
| AC_DEFINE(HAVE_LIBDB) |
| LIBS="-ldb1 $LIBS" |
| ],,-lz) |
| |
| dnl Ok, -ldb1 may not exist, try -ldb |
| _cppflags="${CPPFLAGS}" |
| _ldflags="${LDFLAGS}" |
| |
| AC_ARG_WITH(db, |
| [ --with-db[=DIR] use db in DIR],[ |
| if test -d "$withval"; then |
| CPPFLAGS="${CPPFLAGS} -I$withval/include" |
| LDFLAGS="${LDFLAGS} -L$withval/lib" |
| fi |
| ]) |
| |
| if test "x$ac_cv_lib_db1_dbopen" = "xno"; then |
| AC_CHECK_HEADER(db.h, |
| AC_CHECK_LIB(db, dbopen,[ |
| AC_DEFINE(HAVE_LIBDB) |
| LIBS="-ldb $LIBS" |
| ], CPPFLAGS=${_cppflags} LDFLAGS=${_ldflags}), |
| CPPFLAGS=${_cppflags} LDFLAGS=${_ldflags}) |
| fi |
| |
| dnl |
| dnl now check for rpm using the appropriate db library |
| dnl |
| AC_CHECK_LIB(rpm, rpmdbOpen,[ |
| AC_DEFINE(HAVE_LIBRPM) |
| LIBS="-lrpm $LIBS" |
| CFLAGS="$CFLAGS -I/usr/include/rpm" |
| ],,-lz) |
| |
| dnl |
| dnl now check for rpm using the appropriate db library |
| dnl |
| if test x$ac_cv_lib_rpm_rpmdbOpen = xno; then |
| unset ac_cv_lib_rpm_rpmdbOpen |
| AC_CHECK_LIB(rpm, rpmdbOpen,[ |
| AC_DEFINE(HAVE_LIBRPM) |
| LIBS="-lrpm -lpopt $LIBS" |
| CFLAGS="$CFLAGS -I/usr/include/rpm" |
| ],,-lpopt -lz) |
| fi |
| |
| |
| dnl Replace `main' with a function in -lkstat: |
| AC_CHECK_LIB(kstat, kstat_lookup) |
| dnl Replace `main' with a function in -lkvm: |
| AC_CHECK_LIB(kvm, kvm_read) |
| dnl Check for nlist in mld (irix) |
| AC_CHECK_LIB(mld, nlist) |
| dnl DYNAMIC MODULE SUPPORT |
| AC_CHECK_LIB(dl, dlopen) |
| |
| dnl Check for security related functions |
| if test "x$tryopenssl" != "xno"; then |
| if test "x$tryrsaref" != "xno"; then |
| AC_CHECK_LIB(rsaref, RSAPrivateDecrypt) |
| AC_CHECK_LIB(RSAglue, RSA_PKCS1_RSAref) |
| fi |
| |
| AC_CHECK_LIB(crypto, EVP_md5) |
| fi |
| |
| dnl Checks for header files. |
| AC_HEADER_STDC |
| AC_HEADER_DIRENT |
| AC_HEADER_SYS_WAIT |
| AC_CHECK_HEADERS(stdarg.h string.h fcntl.h limits.h sys/file.h sys/ioctl.h syslog.h unistd.h netinet/tcpip.h netinet/in.h netinet/ip.h netinet/ip_icmp.h net/if.h netdb.h sys/dmap.h machine/pte.h xti.h sys/sockio.h sys/socket.h sys/un.h fstab.h sys/fs.h mtab.h ufs/fs.h ufs/ffs/fs.h sys/fixpoint.h machine/param.h sys/vm.h vm/vm.h sys/vmmeter.h sys/vmparam.h sys/vmmac.h sys/vmsystm.h sys/mbuf.h sys/time.h sys/swap.h inet/mib2.h sys/statvfs.h sys/vfs.h sys/mnttab.h sys/user.h sys/proc.h sys/select.h mntent.h sys/mntent.h kstat.h utsname.h sys/utsname.h sys/cdefs.h getopt.h locale.h pthread.h sys/loadavg.h regex.h linux/tasks.h pwd.h grp.h utmpx.h) |
| dnl FreeBSD required headers |
| AC_CHECK_HEADERS(malloc.h sys/param.h net/if_dl.h sys/sysctl.h stdlib.h net/if_mib.h net/if_types.h net/if_var.h sys/queue.h osreldate.h sys/disklabel.h machine/types.h sys/socketvar.h) |
| dnl Linux |
| AC_CHECK_HEADERS(sys/conf.h netinet/in_systm.h netinet/tcp.h netinet/udp.h netinet/in_var.h netinet/if_ether.h netinet/ip_var.h netinet/tcp_timer.h netinet/tcp_var.h netinet/tcp_fsm.h netinet/udp_var.h netinet/icmp_var.h sys/protosw.h nlist.h ioctls.h asm/page.h netipx/ipx.h) |
| dnl NetBSD required headers |
| AC_CHECK_HEADERS(arpa/inet.h kvm.h sys/pool.h) |
| dnl BSDi2 headers |
| AC_CHECK_HEADERS(sys/mount.h vm/swap_pager.h ufs/ufs/dinode.h) |
| dnl BSDi3 headers |
| AC_CHECK_HEADERS(sys/stat.h sys/vnode.h ufs/ufs/quota.h ufs/ufs/inode.h) |
| dnl irix headers |
| AC_CHECK_HEADERS(sys/hashing.h sys/tcpipstats.h sys/sysmp.h) |
| dnl from smux stuff |
| AC_CHECK_HEADERS(err.h sys/filio.h sgtty.h) |
| dnl AIX needs this for statfs func |
| AC_CHECK_HEADERS(sys/statfs.h) |
| dnl Dynix |
| AC_CHECK_HEADERS(net/route.h) |
| dnl for HostRes (HP-UX at least) |
| AC_CHECK_HEADERS(sys/dkio.h sys/diskio.h sys/pstat.h linux/hdreg.h pkglocs.h) |
| dnl for HostRes (Solaris 2.x at least) |
| AC_CHECK_HEADERS(pkginfo.h, |
| AC_CHECK_LIB(adm, pkginfo, AC_DEFINE(HAVE_PKGINFO) |
| LIBS="${LIBS} -ladm")) |
| dnl WIN32 |
| AC_CHECK_HEADERS(winsock.h io.h) |
| dnl SCO |
| AC_CHECK_HEADERS(sys/stream.h) |
| dnl KAME |
| AC_CHECK_HEADERS(netinet/ip6.h netinet6/in6_var.h netinet6/in6_pcb.h netinet6/ip6_var.h netinet6/tcp6.h netinet6/tcp6_fsm.h netinet6/nd6.h netinet6/tcp6_timer.h netinet6/tcp6_var.h) |
| dnl DYNAMIC MODULE SUPPORT |
| AC_CHECK_HEADERS(dlfcn.h) |
| |
| dnl RPM subdirectory path (sigh) |
| AC_CHECK_HEADERS(rpmio.h,, [ |
| AC_CHECK_HEADERS(rpm/rpmio.h, CFLAGS="-I/usr/include/rpm $CFLAGS") |
| ]) |
| |
| |
| dnl OpenBSD 2.6 needs netinet/in.h before netinet/in_pcb.h |
| AC_MSG_CHECKING([for netinet/in_pcb.h]) |
| AC_CACHE_VAL(cv_have_netinet_in_pcb_h, |
| [ AC_TRY_CPP( [ |
| #include <netinet/in.h> |
| #include <netinet/in_pcb.h> |
| ], cv_have_netinet_in_pcb_h=yes, cv_have_netinet_in_pcb_h=no)]) |
| AC_MSG_RESULT($cv_have_netinet_in_pcb_h) |
| if test $cv_have_netinet_in_pcb_h = yes; then |
| AC_DEFINE(HAVE_NETINET_IN_PCB_H) |
| fi |
| |
| dnl OpenSSL |
| AC_CHECK_HEADERS(openssl/hmac.h openssl/evp.h) |
| |
| dnl Printing |
| AC_PATH_PROG(LPSTAT_PATH,lpstat) |
| if test x$LPSTAT_PATH != x; then |
| AC_DEFINE_UNQUOTED(LPSTAT_PATH,"$LPSTAT_PATH") |
| AC_DEFINE(HAVE_LPSTAT) |
| fi |
| AC_CHECK_FUNCS(cgetnext) |
| if test -r /etc/printcap; then |
| AC_DEFINE(HAVE_PRINTCAP) |
| fi |
| |
| AC_MSG_CHECKING(for authentication support) |
| if test "x$ac_cv_lib_crypto_EVP_md5" != "xyes" -o "x$ac_cv_header_openssl_hmac_h" != "xyes" -o "x$ac_cv_header_openssl_hmac_h" != "xyes"; then |
| dnl if OpenSSL is not found, default to using internal md5 support. |
| AC_DEFINE(USE_INTERNAL_MD5) |
| AC_MSG_RESULT(Internal MD5 Support) |
| if test "x$askedopenssl" = "xyes"; then |
| AC_MSG_ERROR(Asked to use OpenSSL but I couldn't find it.) |
| fi |
| else |
| if test "x$tryopenssl" = "xno"; then |
| AC_DEFINE(USE_INTERNAL_MD5) |
| AC_MSG_RESULT(Internal MD5 Support) |
| else |
| AC_DEFINE(USE_OPENSSL) |
| AC_MSG_RESULT(OpenSSL Support) |
| fi |
| fi |
| |
| dnl Checks for typedefs, structures, and compiler characteristics. |
| AC_TYPE_OFF_T |
| AC_TYPE_PID_T |
| AC_HEADER_TIME |
| |
| dnl AIX keeps in_addr_t in /usr/include/netinet/in.h |
| AC_MSG_CHECKING(for in_addr_t) |
| AC_CACHE_VAL(ac_cv_type_$1, |
| [AC_EGREP_CPP(dnl |
| changequote(<<,>>)dnl |
| <<in_addr_t[^a-zA-Z_0-9]>>dnl |
| changequote([,]), [#include <sys/types.h> |
| #if STDC_HEADERS |
| #include <stdlib.h> |
| #include <stddef.h> |
| #endif |
| #ifdef HAVE_NETINET_IN_H |
| #include <netinet/in.h> |
| #endif], ac_cv_type_in_addr_t=yes, ac_cv_type_in_addr_t=no)])dnl |
| |
| AC_MSG_RESULT($ac_cv_type_in_addr_t) |
| if test $ac_cv_type_in_addr_t = no; then |
| AC_DEFINE(in_addr_t, u_int) |
| fi |
| |
| dnl Check ps args |
| AC_CACHE_CHECK(for correct flags to ps, ac_cv_ps_flags, |
| [if test "`($PSPROG -e 2>&1) | egrep ' (ps) *$' | awk '{print $NF}'`" = "ps" ; then |
| ac_cv_ps_flags="-e" |
| elif test "`($PSPROG -el 2>&1) | egrep ' (ps) *$' | awk '{print $NF}'`" = "ps" ; then |
| ac_cv_ps_flags="-el" |
| elif test "`($PSPROG acx 2>&1) | egrep ' (ps) *$' | awk '{print $NF}'`" = "ps" ; then |
| ac_cv_ps_flags="acx" |
| elif test "`($PSPROG -acx 2>&1) | egrep ' (ps) *$' | awk '{print $NF}'`" = "ps" ; then |
| ac_cv_ps_flags="-acx" |
| elif test "`($PSPROG -o pid,tt,state,time,ucomm 2>&1) | egrep ' ps *$' | awk '{print $NF}'`" = "ps" ; then |
| ac_cv_ps_flags="-o pid,tt,state,time,ucomm" |
| elif test "`($PSPROG ax 2>&1) | egrep ' (ps) *$' | awk '{print $NF}'`" = "ps" ; then |
| ac_cv_ps_flags="ax" |
| else |
| AC_MSG_WARN(Unable to determine valid ps flags... defaulting...) |
| ac_cv_ps_flags="-acx" |
| fi |
| ]) |
| |
| AC_DEFINE_UNQUOTED(PSCMD, "$PSPROG $ac_cv_ps_flags") |
| |
| dnl Checks for byte order |
| if test $cross_compiling = yes; then |
| if test $with_endianness = "big"; then |
| AC_DEFINE(WORDS_BIGENDIAN) |
| elif test -z $with_endianness; then |
| AC_MSG_ERROR([You are cross-compiling, but you have not specified the target's endianness]) |
| fi |
| else |
| if test $with_endianness; then |
| AC_MSG_ERROR([Endianness has been specified, but you are not cross-compiling.]) |
| fi |
| AC_C_BIGENDIAN |
| fi |
| |
| dnl Checks for library functions. |
| AC_FUNC_ALLOCA |
| AC_PROG_GCC_TRADITIONAL |
| AC_FUNC_MEMCMP |
| AC_TYPE_SIGNAL |
| AC_FUNC_GETMNTENT |
| AC_CHECK_FUNCS(setmntent gethostname uname gettimeofday select socket strtol strtoul) |
| AC_CHECK_FUNCS(strchr strdup memcpy memmove index bcopy strcasestr regcomp) |
| AC_CHECK_FUNCS(signal sigset sigblock sighold strerror setenv vsnprintf snprintf) |
| AC_CHECK_FUNCS(sigaction) |
| AC_CHECK_FUNCS(snprintf strtoul) |
| AC_CHECK_FUNCS(random lrand48 rand) |
| AC_CHECK_FUNCS(execv system fork getpid strncasecmp sigalrm) |
| AC_CHECK_FUNCS(rpmGetPath) |
| |
| AC_CHECK_FUNCS(getloadavg) |
| AC_CHECK_FUNCS(kvm_openfiles nlist knlist) |
| AC_CHECK_FUNCS(getaddrinfo getipnodebyname) |
| dnl BSDi2 functions differ |
| AC_CHECK_FUNCS(statvfs statfs) |
| AC_CHECK_FUNCS(getdtablesize) |
| dnl freebsd2 checks |
| AC_CHECK_FUNCS(getfsstat kvm_getprocs) |
| AC_CHECK_FUNCS(usleep) |
| AC_CHECK_FUNCS(setlocale) |
| AC_CHECK_FUNCS(tcgetattr) |
| AC_CHECK_FUNCS(if_nameindex if_freenameindex) |
| dnl solaris checks |
| AC_CHECK_FUNCS(getpagesize) |
| dnl DYNAMIC MODULE SUPPORT |
| AC_CHECK_FUNCS(dlopen) |
| AC_CHECK_FUNCS(mkstemp) |
| AC_CHECK_FUNCS(getpwnam getgrnam setgid setuid setgroups) |
| dnl High resolution alarm support |
| AC_CHECK_FUNCS(setitimer) |
| |
| AC_MSG_CHECKING([for SIOCGIFADDR in sys/ioctl.h]) |
| AC_CACHE_VAL(cv_sys_ioctl_h_has_SIOCGIFADDR, |
| [ AC_EGREP_CPP(xxxyesxxx, |
| [ |
| #ifdef HAVE_SYS_IOCTL_H |
| #include <sys/ioctl.h> |
| #endif |
| #ifdef SIOCGIFADDR |
| xxxyesxxx |
| #endif |
| ], cv_sys_ioctl_h_has_SIOCGIFADDR=yes, cv_sys_ioctl_h_has_SIOCGIFADDR=no)]) |
| AC_MSG_RESULT($cv_sys_ioctl_h_has_SIOCGIFADDR) |
| if test $cv_sys_ioctl_h_has_SIOCGIFADDR = yes; then |
| AC_DEFINE(SYS_IOCTL_H_HAS_SIOCGIFADDR) |
| fi |
| |
| # ultrix |
| AC_MSG_CHECKING([for two-argument statfs with struct fs_data (Ultrix)]) |
| AC_CACHE_VAL(fu_cv_sys_stat_fs_data, |
| [AC_TRY_RUN([ |
| #ifdef HAVE_SYS_PARAM_H |
| #include <sys/param.h> |
| #endif |
| #include <sys/types.h> |
| #ifdef HAVE_SYS_MOUNT_H |
| #include <sys/mount.h> |
| #endif |
| #ifdef HAVE_SYS_FS_TYPES_H |
| #include <sys/fs_types.h> |
| #endif |
| main () |
| { |
| struct fs_data fsd; |
| /* Ultrix's statfs returns 1 for success, |
| 0 for not mounted, -1 for failure. */ |
| exit (statfs (".", &fsd) != 1); |
| }], |
| fu_cv_sys_stat_fs_data=yes, |
| fu_cv_sys_stat_fs_data=no, |
| fu_cv_sys_stat_fs_data=no)]) |
| AC_MSG_RESULT($fu_cv_sys_stat_fs_data) |
| if test $fu_cv_sys_stat_fs_data = yes; then |
| AC_DEFINE(STAT_STATFS_FS_DATA) |
| fi |
| |
| dnl check if compiler pre-processor defines __FUNCTION__ |
| AC_CACHE_CHECK(if __FUNCTION__ is defined,ac_cv_HAVE_CPP_UNDERBAR_FUNCTION_DEFINED, |
| [ |
| AC_TRY_COMPILE(,[ |
| char *cp = __FUNCTION__; |
| ], ac_cv_HAVE_CPP_UNDERBAR_FUNCTION_DEFINED=yes, ac_cv_HAVE_CPP_UNDERBAR_FUNCTION_DEFINED=no)]) |
| |
| if test "x$ac_cv_HAVE_CPP_UNDERBAR_FUNCTION_DEFINED" = "xyes"; then |
| AC_DEFINE(HAVE_CPP_UNDERBAR_FUNCTION_DEFINED) |
| fi |
| |
| AC_CHECK_STRUCT_FOR([ |
| #ifdef HAVE_SYS_PARAM_H |
| #include <sys/param.h> |
| #endif |
| #include <sys/types.h> |
| #include <sys/signal.h> |
| ], sigaction, sa_sigaction, no) |
| |
| AC_CHECK_STRUCT_FOR([ |
| #ifdef HAVE_SYS_PARAM_H |
| #include <sys/param.h> |
| #endif |
| #include <sys/types.h> |
| #define KERNEL |
| #define _KERNEL |
| #include <sys/socket.h> |
| #undef KERNEL |
| #undef _KERNEL |
| ], sockaddr, sa_len, no) |
| |
| AC_CHECK_STRUCT_FOR([ |
| #ifdef HAVE_SYS_PARAM_H |
| #include <sys/param.h> |
| #endif |
| #include <sys/types.h> |
| #define KERNEL |
| #define _KERNEL |
| #include <sys/socket.h> |
| #undef KERNEL |
| #undef _KERNEL |
| ], sockaddr, sa_union.sa_generic.sa_family2, no) |
| |
| AC_CHECK_STRUCT_FOR([ |
| #ifdef HAVE_SYS_PARAM_H |
| #include <sys/param.h> |
| #endif |
| #include <sys/types.h> |
| #define KERNEL |
| #define _KERNEL |
| #include <sys/socket.h> |
| #undef KERNEL |
| #undef _KERNEL |
| #include <net/route.h> |
| ], rtentry, rt_dst, no) |
| |
| dnl checking for 4.3 vs 4.4 rtentry. |
| AC_CACHE_CHECK(type of rtentry structure,ac_cv_RTENTRY_TYPE, |
| [ |
| |
| dnl 4.4 compat |
| AC_TRY_COMPILE([ |
| #ifdef HAVE_SYS_PARAM_H |
| #include <sys/param.h> |
| #endif |
| #include <sys/types.h> |
| #define KERNEL |
| #define _KERNEL |
| #include <sys/socket.h> |
| #undef KERNEL |
| #undef _KERNEL |
| #include <net/route.h> |
| ],[ |
| |
| #ifndef STRUCT_RTENTRY_HAS_RT_DST |
| #define rt_dst rt_nodes->rn_key |
| #endif |
| |
| struct rtentry rt; |
| rt.rt_nodes[0].rn_flags = 1; |
| rt.rt_dst; |
| ], ac_cv_RTENTRY_TYPE="BSD-4.4") |
| |
| dnl 4.3 compat |
| if test "x$ac_cv_RTENTRY_TYPE" = "x"; then |
| AC_TRY_COMPILE([ |
| #ifdef HAVE_SYS_PARAM_H |
| #include <sys/param.h> |
| #endif |
| #include <sys/types.h> |
| #define KERNEL |
| #define _KERNEL |
| #include <sys/socket.h> |
| #undef KERNEL |
| #undef _KERNEL |
| #include <net/route.h> |
| ],[ |
| struct rtentry rt; |
| rt.rt_hash; |
| ], ac_cv_RTENTRY_TYPE="BSD-4.3") |
| fi |
| |
| dnl else ack. |
| if test "x$ac_cv_RTENTRY_TYPE" = "x"; then |
| AC_MSG_RESULT(Unknown) |
| ac_cv_RTENTRY_TYPE="unknown" |
| fi |
| |
| ]) |
| |
| if test "x$ac_cv_RTENTRY_TYPE" = "xBSD-4.4"; then |
| AC_DEFINE(RTENTRY_4_4) |
| fi |
| |
| dnl checking for alpha's ortentry vs rtentry |
| if test "x$ac_cv_RTENTRY_TYPE" = "xunknown"; then |
| AC_CACHE_CHECK(for struct rtentry, ac_cv_struct_rtentry, |
| [AC_EGREP_CPP(ortentry, [#define KERNEL |
| #include <net/route.h> |
| ], ac_cv_struct_rtentry=ortentry, ac_cv_struct_rtentry=rtentry ) |
| if test "x$ac_cv_struct_rtentry" = "xrtentry" ; then |
| ac_cv_struct_rtentry="rtentry" |
| else |
| ac_cv_struct_rtentry="ortentry" |
| fi |
| ]) |
| else |
| RTENTRY_TYPE="rtentry" |
| ac_cv_struct_rtentry="rtentry" |
| fi |
| |
| if test "x$ac_cv_struct_rtentry" != "x"; then |
| AC_DEFINE_UNQUOTED(RTENTRY,struct ${ac_cv_struct_rtentry}) |
| else |
| AC_DEFINE(RTENTRY,struct rtentry) |
| fi |
| |
| dnl check for 4.3's rtentry->rt_next |
| if test "x$ac_cv_RTENTRY_TYPE" = "xBSD-4.3"; then |
| AC_CACHE_CHECK(for struct rtentry has a rt_next node, |
| ac_cv_struct_rtentry_rt_next, |
| [ |
| AC_TRY_COMPILE([ |
| #ifdef HAVE_SYS_PARAM_H |
| #include <sys/param.h> |
| #endif |
| #include <sys/types.h> |
| #define KERNEL |
| #define _KERNEL |
| #include <sys/socket.h> |
| #undef KERNEL |
| #undef _KERNEL |
| #include <net/route.h> |
| ],[ |
| struct rtentry rt; |
| rt.rt_next; |
| ], ac_cv_struct_rtentry_rt_next=yes, ac_cv_struct_rtentry_rt_next=no ) |
| ]) |
| |
| if test "x$ac_cv_struct_rtentry_rt_next" = "xyes"; then |
| AC_DEFINE(RTENTRY_RT_NEXT) |
| fi |
| |
| fi |
| |
| dnl Check struct rtentry for various things. |
| AC_CHECK_STRUCT_FOR([ |
| #ifdef HAVE_SYS_PARAM_H |
| #include <sys/param.h> |
| #endif |
| #include <sys/types.h> |
| #define KERNEL |
| #define _KERNEL |
| #include <sys/socket.h> |
| #undef KERNEL |
| #undef _KERNEL |
| #include <net/route.h> |
| ], rtentry, rt_unit) |
| |
| AC_CHECK_STRUCT_FOR([ |
| #ifdef HAVE_SYS_PARAM_H |
| #include <sys/param.h> |
| #endif |
| #include <sys/types.h> |
| #define KERNEL |
| #define _KERNEL |
| #include <sys/socket.h> |
| #undef KERNEL |
| #undef _KERNEL |
| #include <net/route.h> |
| ], rtentry, rt_refcnt) |
| |
| AC_CHECK_STRUCT_FOR([ |
| #ifdef HAVE_SYS_PARAM_H |
| #include <sys/param.h> |
| #endif |
| #include <sys/types.h> |
| #define KERNEL |
| #define _KERNEL |
| #include <sys/socket.h> |
| #undef KERNEL |
| #undef _KERNEL |
| #include <net/route.h> |
| ], rtentry, rt_hash) |
| |
| AC_CHECK_STRUCT_FOR([ |
| #ifdef HAVE_SYS_PARAM_H |
| #include <sys/param.h> |
| #endif |
| #include <sys/types.h> |
| #define KERNEL |
| #define _KERNEL |
| #include <sys/socket.h> |
| #undef KERNEL |
| #undef _KERNEL |
| #include <net/route.h> |
| ], rtentry, rt_use) |
| |
| dnl Check tcpstat for tcpstat.tcp_rcvmemdrop |
| AC_CHECK_STRUCT_FOR([ |
| #ifdef HAVE_SYS_PARAM_H |
| #include <sys/param.h> |
| #endif |
| #include <sys/types.h> |
| #include <netinet/tcp.h> |
| #ifdef HAVE_NETINET_TCP_TIMER_H |
| #include <netinet/tcp_timer.h> |
| #endif |
| |
| #ifdef HAVE_NETINET_TCP_VAR_H |
| #include <netinet/tcp_var.h> |
| #endif |
| ], tcpstat, tcp_rcvmemdrop) |
| |
| dnl irix checks |
| |
| AC_CHECK_STRUCT_FOR([ |
| #ifdef HAVE_SYS_PARAM_H |
| #include <sys/param.h> |
| #endif |
| #include <sys/types.h> |
| #include <sys/socket.h> |
| #include <net/if.h> |
| #ifdef HAVE_NET_IF_VAR_H |
| #include <net/if_var.h> |
| #endif |
| ], ifnet, if_mtu) |
| |
| if test "x$ac_cv_struct_ifnet_has_if_mtu" = "xno"; then |
| AC_CACHE_CHECK(if _KERNEL needs to be defined for if_mtu, ac_cv_IFNET_NEEDS_KERNEL, |
| [ |
| if test "x$ac_cv_struct_ifnet_has_if_mtu" = "xyes"; then |
| ac_cv_IFNET_NEEDS_KERNEL=no |
| else |
| AC_TRY_COMPILE([ |
| #define _KERNEL 1 |
| #ifdef HAVE_SYS_PARAM_H |
| #include <sys/param.h> |
| #endif |
| #include <sys/types.h> |
| #include <sys/socket.h> |
| #ifdef HAVE_SYS_TIME_H |
| #include <sys/time.h> |
| #endif |
| #include <net/if.h> |
| #ifdef HAVE_NET_IF_VAR_H |
| #include <net/if_var.h> |
| #endif |
| ],[ |
| struct ifnet testit; |
| testit.if_mtu = 0; |
| ], ac_cv_IFNET_NEEDS_KERNEL=yes, ac_cv_IFNET_NEEDS_KERNEL=no) |
| fi |
| ]) |
| |
| if test "x$ac_cv_IFNET_NEEDS_KERNEL" = "xyes"; then |
| AC_DEFINE(IFNET_NEEDS_KERNEL) |
| fi |
| fi |
| |
| AC_CHECK_STRUCT_FOR([ |
| #ifdef IFNET_NEEDS_KERNEL |
| #define _KERNEL 1 |
| #endif |
| #ifdef HAVE_SYS_PARAM_H |
| #include <sys/param.h> |
| #endif |
| #include <sys/types.h> |
| #include <sys/socket.h> |
| #ifdef HAVE_SYS_TIME_H |
| #include <sys/time.h> |
| #endif |
| #include <net/if.h> |
| #ifdef HAVE_NET_IF_VAR_H |
| #include <net/if_var.h> |
| #endif |
| ], ifaddr, ifa_next) |
| |
| dnl Check ifnet entries using macro defined in aclocal.m4. |
| dnl |
| dnl XXX Broken on FreeBSD where these are #define'd in <net/if.h> |
| dnl |
| AC_CHECK_IFNET_FOR(if_baudrate) |
| AC_CHECK_IFNET_FOR(if_baudrate.ifs_value) |
| AC_CHECK_IFNET_FOR(if_speed) |
| AC_CHECK_IFNET_FOR(if_type) |
| AC_CHECK_IFNET_FOR(if_imcasts) |
| AC_CHECK_IFNET_FOR(if_iqdrops) |
| AC_CHECK_IFNET_FOR(if_noproto) |
| AC_CHECK_IFNET_FOR(if_omcasts) |
| AC_CHECK_IFNET_FOR(if_xname,no) |
| AC_CHECK_IFNET_FOR(if_lastchange.tv_sec) |
| AC_CHECK_IFNET_FOR(if_obytes) |
| AC_CHECK_IFNET_FOR(if_ibytes) |
| AC_CHECK_IFNET_FOR(if_addrlist) |
| AC_CHECK_IFNET_FOR(if_addrhead.tqh_first) |
| |
| AC_CHECK_STRUCT_FOR([ |
| #include <sys/types.h> |
| #if HAVE_NETINET_IN_H |
| #include <netinet/in.h> |
| #endif |
| #if HAVE_NETINET_IP_VAR_H |
| #include <netinet/ip_var.h> |
| #endif |
| #if HAVE_NETINET_UDP_H |
| #include <netinet/udp.h> |
| #endif |
| #if HAVE_NETINET_UDP_VAR_H |
| #include <netinet/udp_var.h> |
| #endif |
| ],udpstat,udps_discard) |
| |
| AC_CHECK_STRUCT_FOR([ |
| #include <sys/types.h> |
| #if HAVE_NETINET_IN_H |
| #include <netinet/in.h> |
| #endif |
| #if HAVE_NETINET_IP_VAR_H |
| #include <netinet/ip_var.h> |
| #endif |
| #if HAVE_NETINET_UDP_H |
| #include <netinet/udp.h> |
| #endif |
| #if HAVE_NETINET_UDP_VAR_H |
| #include <netinet/udp_var.h> |
| #endif |
| ],udpstat,udps_noport) |
| |
| AC_CHECK_STRUCT_FOR([ |
| #include <sys/types.h> |
| #if HAVE_NETINET_IN_H |
| #include <netinet/in.h> |
| #endif |
| #if HAVE_NETINET_IP_VAR_H |
| #include <netinet/ip_var.h> |
| #endif |
| #if HAVE_NETINET_UDP_H |
| #include <netinet/udp.h> |
| #endif |
| #if HAVE_NETINET_UDP_VAR_H |
| #include <netinet/udp_var.h> |
| #endif |
| ],udpstat,udps_noportbcast) |
| |
| AC_CHECK_STRUCT_FOR([ |
| #include <sys/types.h> |
| #if HAVE_NETINET_IN_H |
| #include <netinet/in.h> |
| #endif |
| #if HAVE_NETINET_IP_VAR_H |
| #include <netinet/ip_var.h> |
| #endif |
| #if HAVE_NETINET_UDP_H |
| #include <netinet/udp.h> |
| #endif |
| #if HAVE_NETINET_UDP_VAR_H |
| #include <netinet/udp_var.h> |
| #endif |
| ],udpstat,udps_fullsock) |
| |
| AC_CHECK_STRUCT_FOR([ |
| #ifdef HAVE_SYS_PARAM_H |
| #include <sys/param.h> |
| #endif |
| #include <sys/types.h> |
| #include <sys/socket.h> |
| #ifdef HAVE_SYS_TIME_H |
| #include <sys/time.h> |
| #endif |
| #include <net/if.h> |
| #if HAVE_NETINET_IN_H |
| #include <netinet/in.h> |
| #endif |
| #if HAVE_NETINET_IF_ETHER_H |
| #include <netinet/if_ether.h> |
| #endif |
| ],arphd,at_next) |
| |
| AC_CHECK_STRUCT_FOR([ |
| #if HAVE_SYS_CONF_H |
| #include <sys/conf.h> |
| #endif |
| ],swdevt,sw_nblksenabled) |
| |
| AC_CHECK_STRUCT_FOR([ |
| #ifdef HAVE_SYS_STAT_H |
| #include <sys/stat.h> |
| #endif |
| #if HAVE_SYS_STATFS_H |
| #include <sys/statfs.h> |
| #endif |
| #if HAVE_SYS_STATVFS_H |
| #include <sys/statvfs.h> |
| #endif |
| ],statvfs,f_frsize) |
| |
| AC_CHECK_STRUCT_FOR([ |
| #ifdef HAVE_SYS_STAT_H |
| #include <sys/stat.h> |
| #endif |
| #if HAVE_SYS_STATFS_H |
| #include <sys/statfs.h> |
| #endif |
| #if HAVE_SYS_STATVFS_H |
| #include <sys/statvfs.h> |
| #endif |
| ],statvfs,f_files) |
| |
| AC_CHECK_STRUCT_FOR([ |
| #if HAVE_NLIST_H |
| #include <nlist.h> |
| #endif |
| ],nlist,n_value) |
| |
| dnl check struct ipstat for various things |
| AC_CHECK_STRUCT_FOR([ |
| #include <sys/types.h> |
| #if HAVE_NETINET_IN_H |
| #include <netinet/in.h> |
| #endif |
| #if HAVE_NETINET_IP_VAR_H |
| #include <netinet/ip_var.h> |
| #endif |
| ], ipstat, ips_cantforward) |
| |
| AC_CHECK_STRUCT_FOR([ |
| #include <sys/types.h> |
| #if HAVE_NETINET_IN_H |
| #include <netinet/in.h> |
| #endif |
| #if HAVE_NETINET_IP_VAR_H |
| #include <netinet/ip_var.h> |
| #endif |
| ], ipstat, ips_cantfrag) |
| |
| AC_CHECK_STRUCT_FOR([ |
| #include <sys/types.h> |
| #if HAVE_NETINET_IN_H |
| #include <netinet/in.h> |
| #endif |
| #if HAVE_NETINET_IP_VAR_H |
| #include <netinet/ip_var.h> |
| #endif |
| ], ipstat, ips_delivered) |
| |
| AC_CHECK_STRUCT_FOR([ |
| #include <sys/types.h> |
| #if HAVE_NETINET_IN_H |
| #include <netinet/in.h> |
| #endif |
| #if HAVE_NETINET_IP_VAR_H |
| #include <netinet/ip_var.h> |
| #endif |
| ], ipstat, ips_fragdropped) |
| |
| AC_CHECK_STRUCT_FOR([ |
| #include <sys/types.h> |
| #if HAVE_NETINET_IN_H |
| #include <netinet/in.h> |
| #endif |
| #if HAVE_NETINET_IP_VAR_H |
| #include <netinet/ip_var.h> |
| #endif |
| ], ipstat, ips_fragtimeout) |
| |
| AC_CHECK_STRUCT_FOR([ |
| #include <sys/types.h> |
| #if HAVE_NETINET_IN_H |
| #include <netinet/in.h> |
| #endif |
| #if HAVE_NETINET_IP_VAR_H |
| #include <netinet/ip_var.h> |
| #endif |
| ], ipstat, ips_localout) |
| |
| AC_CHECK_STRUCT_FOR([ |
| #include <sys/types.h> |
| #if HAVE_NETINET_IN_H |
| #include <netinet/in.h> |
| #endif |
| #if HAVE_NETINET_IP_VAR_H |
| #include <netinet/ip_var.h> |
| #endif |
| ], ipstat, ips_noproto) |
| |
| AC_CHECK_STRUCT_FOR([ |
| #include <sys/types.h> |
| #if HAVE_NETINET_IN_H |
| #include <netinet/in.h> |
| #endif |
| #if HAVE_NETINET_IP_VAR_H |
| #include <netinet/ip_var.h> |
| #endif |
| ], ipstat, ips_noroute) |
| |
| AC_CHECK_STRUCT_FOR([ |
| #include <sys/types.h> |
| #if HAVE_NETINET_IN_H |
| #include <netinet/in.h> |
| #endif |
| #if HAVE_NETINET_IP_VAR_H |
| #include <netinet/ip_var.h> |
| #endif |
| ], ipstat, ips_odropped) |
| |
| AC_CHECK_STRUCT_FOR([ |
| #include <sys/types.h> |
| #if HAVE_NETINET_IN_H |
| #include <netinet/in.h> |
| #endif |
| #if HAVE_NETINET_IP_VAR_H |
| #include <netinet/ip_var.h> |
| #endif |
| ], ipstat, ips_ofragments) |
| |
| AC_CHECK_STRUCT_FOR([ |
| #include <sys/types.h> |
| #if HAVE_NETINET_IN_H |
| #include <netinet/in.h> |
| #endif |
| #if HAVE_NETINET_IP_VAR_H |
| #include <netinet/ip_var.h> |
| #endif |
| ], ipstat, ips_reassembled) |
| |
| dnl attempt to figure out if sysctl is usable |
| |
| if test $cross_compiling = yes; then |
| AC_MSG_WARN([Can't check sysctl, manually define CAN_USE_SYSCTL if platform support available]) |
| else |
| AC_CACHE_CHECK(if sysctl can read kernel information,ac_cv_CAN_USE_SYSCTL, |
| [AC_TRY_RUN([ |
| #if TIME_WITH_SYS_TIME |
| # include <sys/time.h> |
| # include <time.h> |
| #else |
| # if HAVE_SYS_TIME_H |
| # include <sys/time.h> |
| # else |
| # include <time.h> |
| # endif |
| #endif |
| #if HAVE_SYS_PARAM_H |
| # include <sys/param.h> |
| #endif |
| #include <sys/types.h> |
| #if HAVE_SYS_SYSCTL_H |
| # include <sys/sysctl.h> |
| #endif |
| |
| main() { |
| int mib[2]; |
| size_t len; |
| struct timeval boottime; |
| |
| mib[0] = CTL_KERN; |
| mib[1] = KERN_BOOTTIME; |
| |
| len = sizeof(boottime); |
| sysctl(mib, 2, &boottime, &len, NULL, NULL); |
| if (boottime.tv_sec != 0) |
| exit(0); |
| else |
| exit(1); |
| } |
| ], ac_cv_CAN_USE_SYSCTL=yes, ac_cv_CAN_USE_SYSCTL=no, ac_cv_CAN_USE_SYSCTL=no)]) |
| fi |
| |
| if test "x$ac_cv_CAN_USE_SYSCTL" = "xyes"; then |
| AC_DEFINE(CAN_USE_SYSCTL) |
| fi |
| |
| dnl |
| dnl In FreeBSD 4.x, the TCP timer constants aren't. They are defined |
| dnl in terms of `hz', the kernel clock tick. In this case, |
| dnl we need to have a local variable `hz' in scope and set to a useful |
| dnl value whenever we use one of these constants. |
| dnl |
| AC_CACHE_CHECK(whether TCP timers depend on \`hz',ac_cv_TCPTV_NEEDS_HZ, |
| [AC_EGREP_CPP(hz, |
| [#include <netinet/tcp_timer.h> |
| TCPTV_SRTTDFLT |
| ], ac_cv_TCPTV_NEEDS_HZ=yes, ac_cv_TCPTV_NEEDS_HZ=no)]) |
| |
| if test "x$ac_cv_TCPTV_NEEDS_HZ" = "xyes"; then |
| AC_DEFINE(TCPTV_NEEDS_HZ) |
| fi |
| |
| dnl |
| dnl Prompt for various bits of user information |
| dnl |
| |
| if test "x$ac_cv_user_prompt_LOGFILE" = "x" -o "x$ac_cv_user_prompt_SYS_LOC" = "x" -o "x$ac_cv_user_prompt_SYS_CONTACT" = "x"; then |
| AC_CACHE_CHECK(if you have run configure before, ac_cv_have_warned, |
| [ |
| if test "x$defaults" = "xno"; then |
| cat << EOF |
| |
| ************** Configuration Section ************** |
| |
| You are about to be prompted with a series of questions. Answer |
| them carefully, as they determine how the snmp agent and related |
| applications are to function. |
| |
| After the configure script finishes, you can browse the newly |
| created config.h file for further - less important - parameters to |
| modify. Be careful if you re-run configure though, since config.h will |
| be overwritten. |
| |
| -Press return to continue- |
| EOF |
| |
| read tmpinput |
| ac_cv_have_warned="yes" |
| echo $ac_n "disabling above prompt for future runs... $ac_c" |
| else |
| ac_cv_have_warned="no" |
| fi |
| ]) |
| else |
| ac_cv_have_warned="yes" |
| fi |
| |
| ME=`$WHOAMI` |
| if test -f /etc/resolv.conf; then |
| LOC=`cat /etc/resolv.conf | grep '^domain' | tail -1 | awk '{print $NF}'` |
| else |
| LOC="@no.where" |
| fi |
| |
| AC_PROMPT_USER(SYS_CONTACT,[ |
| |
| *** System Contact Information: |
| |
| Describes who should be contacted about the host the agent is |
| running on. This information is available in the MIB-II tree. This |
| can also be over-ridden using the \"syscontact\" syntax in the agent's |
| configuration files. |
| |
| System Contact Information],$ME@$LOC,1) |
| |
| AC_PROMPT_USER(SYS_LOC,[ |
| |
| *** System Location: |
| |
| Describes the location of the system. This information is |
| available in the MIB-II tree. this can also be over-ridden using the |
| \"syslocation\" syntax in the agent's configuration files. |
| |
| System Location],Unknown,1) |
| |
| if test -d /var/log; then |
| defaultlog="/var/log/snmpd.log" |
| else |
| defaultlog="/usr/adm/snmpd.log" |
| fi |
| |
| AC_PROMPT_USER(LOGFILE,[ |
| |
| *** Logfile location: |
| |
| Enter the default location for the snmpd agent to dump |
| information & errors to. If not defined (enter the keyword \"none\" |
| at the prompt below) the agent will use stdout and stderr instead. |
| (Note: This value can be over-ridden using command line options.) |
| |
| Location to write logfile],$defaultlog,1) |
| |
| if test -d /var; then |
| defaultstore="/var/ucd-snmp" |
| else |
| defaultstore="/etc/ucd-snmp" |
| fi |
| |
| AC_PROMPT_USER(PERSISTENT_DIRECTORY,[ |
| |
| *** snmpd persistent storage location: |
| |
| Enter a directory for the snmp library to store persistent |
| data in the form of a configuration file. |
| |
| Location to write persistent information],$defaultstore,1) |
| |
| PERSISTENT_DIRECTORY=$ac_cv_user_prompt_PERSISTENT_DIRECTORY |
| AC_SUBST(PERSISTENT_DIRECTORY) |
| |
| AC_SUBST(DLLIBS) |
| |
| AC_OUTPUT([ |
| Makefile:Makefile.top:Makefile.in |
| snmplib/Makefile:Makefile.top:snmplib/Makefile.in |
| agent/Makefile:Makefile.top:agent/Makefile.in |
| agent/helpers/Makefile:Makefile.top:agent/helpers/Makefile.in |
| apps/Makefile:Makefile.top:apps/Makefile.in |
| apps/snmpnetstat/Makefile:Makefile.top:apps/snmpnetstat/Makefile.in |
| agent/mibgroup/Makefile:Makefile.top:agent/mibgroup/Makefile.in |
| local/Makefile:Makefile.top:local/Makefile.in |
| testing/Makefile:Makefile.top:testing/Makefile.in |
| man/Makefile:Makefile.top:man/Makefile.in |
| ov/Makefile:Makefile.top:ov/Makefile.in |
| mibs/Makefile:Makefile.top:mibs/Makefile.in |
| ], echo timestamp > stamp-h) |
| |
| dnl Local Variables: |
| dnl mode: Autoconf |
| dnl comment-start: "dnl" |
| dnl End: |