dnl Process this file with autoconf to produce a configure script. AC_INIT(agent/mibgroup/extensible.c) AC_CONFIG_HEADER(config.h) AC_ARG_ENABLE(debugging,[ --enable-debugging Outputs extra debugging information.],AC_DEFINE(DODEBUG)) AC_ARG_ENABLE(shared,[ --enable-shared Compile and install shared libraries.],with_shared="yes",with_shared="no") AC_ARG_WITH(defaults,[ --with-defaults Use defaults for prompted values.],defaults="yes",defaults="no") AC_ARG_WITH(root-access,[ --without-root-access Agent won't require root access.]) 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.],ac_cv_user_prompt_LOGFILE="$with_logfile") AC_ARG_WITH(mibdirs,[ --with-mibdirs=\"dir1:dir2:\" Default directories to look for mibs. (Default: LIBDIR/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 load. (Default: SNMPv2-SMI:SNMPv2-TC:SNMPv2-MIB: SNMPv2-MIB:RFC1213-MIB:UCD-SNMP-MIB)], 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_WITH(mib_modules,[ --with-mib-modules=\"list\" Compile with additional mib modules.]) AC_ARG_WITH(out_mib_modules,[ --with-out-mib-modules=\"list\" Compile without these mib modules.]) AC_ARG_WITH(libwrap, [ --with-libwrap[=LIBPATH] Compile in libwrap (tcp_wrappers) support.], if test -d "$withval"; then LIBS="-L$withval -lwrap $LIBS" else LIBS="$withval $LIBS" fi AC_DEFINE(USE_LIBWRAP) ) dnl Only define if specifically chosen as --without (ie, default to true). if test "x$with_root_access" = "xno"; then AC_DEFINE(NO_ROOT_ACCESS) fi dnl overflow problems with hpux's sh dnl taken from Perl's Configure script echo $ac_n "Checking if I need to feed myself to ksh... $ac_c" if test -f /hp-ux -a -f /bin/ksh; then if (PATH=.; alias -x) >/dev/null 2>&1; then echo "no" else echo "yes" if test "x$1" = "x"; then exec /bin/ksh $0 else exec /bin/ksh $0 "$@" fi fi else echo "no" fi dnl Checks for programs. AC_CHECK_PROGS(CC,cc gcc c89 shlicc2,cc) AC_PROG_CC AC_PROG_CPP AC_PROG_INSTALL AC_PROG_LN_S AC_PROG_MAKE_SET AC_PATH_PROG(PSPROG,ps) AC_CHECK_PROGS(WHOAMI, whoami logname, whoami) AC_CHECK_PROGS(SED,sed gsed) AC_PATH_PROG(UNAMEPROG,uname) AC_DEFINE_UNQUOTED(UNAMEPROG,"$UNAMEPROG") AC_AIX AC_C_CONST 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 while test "x$filebase" != "x$last" -a ! -f 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 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 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 set the *** environmental variable CC to a different compiler and re-run configure. ]) 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 dnl BSDI3 needs the BSDI2 define, as does freebsd3 case $target_os in bsdi3*) CFLAGS="$CFLAGS -Dbsdi2" ;; freebsd3*) CFLAGS="$CFLAGS -Dfreebsd2" ;; esac AC_SUBST(EXTRACPPFLAGS) AC_MSG_RESULT($EXTRACPPFLAGS) dnl Set SNMPLIBPATH & SNMPSHAREPATH if test "x$prefix" = "xNONE"; then prefix=/usr/local fi if test "x$exec_prefix" = "xNONE"; then exec_prefix=$prefix fi SNMPLIBPATH="" tmpset="$libdir/snmp" while test "x$tmpset" != "x$SNMPLIBPATH"; do SNMPLIBPATH="$tmpset" eval tmpset="$tmpset" done AC_DEFINE_UNQUOTED(SNMPLIBPATH,"$SNMPLIBPATH") 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,"$SNMPSHAREPATH/mibs") fi dnl dnl Figure out appropriate shared libraries extensions if necessary. dnl if test "x$with_shared" = "xyes"; then dnl defaults if test "x$GCC" = "xyes"; then SHLIB_CFLAGS="-fpic -shared" else SHLIB_CFLAGS="-Kpic" fi SHLIB_EXTENSION="so" SHLIB_LD_CMD="ld -r -o" SHLIB_LDCONFIG_CMD= CC_RUNTIME_ARG= RANLIB=":" dnl over-rides case $target_os in linux*) SHLIB_LDCONFIG_CMD='PATH="$$PATH:/sbin" ldconfig -n $(libdir)' ;; irix*) SHLIB_LD_CMD="ld -shared -o" CC_RUNTIME_ARG="-Wl,-rpath -Wl,$libdir" ;; netbsd* | openbsd*) SHLIB_LD_CMD="ld -Bshareable -o" CC_RUNTIME_ARG="-R$libdir" SHLIB_LDCONFIG_CMD='PATH="$$PATH:/sbin" ldconfig -m $(libdir)' ;; hpux*) SHLIB_EXTENSION="sl" if test "x$GCC" != "xyes"; then SHLIB_CFLAGS="+Z" fi CC_RUNTIME_ARG="-Wl,+b,$libdir" SHLIB_LD_CMD="ld -b -o" ;; osf*) CC_RUNTIME_ARG="-rpath $libdir" SHLIB_LD_CMD="ld -shared -o" ;; aix*) ;; sysv4*) CC_RUNTIME_ARG="-R$libdir" ;; sunos*) if test "x$GCC" != "xyes"; then SHLIB_CFLAGS="-PIC" fi SHLIB_LDCONFIG_CMD='PATH="$$PATH:/usr/etc" ldconfig $(libdir)' ;; solaris*) SHLIB_LD_CMD="ld -G -o" CC_RUNTIME_ARG="-R$libdir" ;; freebsd*) SHLIB_LD_CMD="ld -Bshareable -o" ;; *) AC_MSG_ERROR([ *** shared libraries aren't supported for architecture $target_os ]) ;; esac else SHLIB_EXTENSION="a" SHLIB_LD_CMD="ar cr" SHLIB_LDCONFIG_CMD=":" fi AC_SUBST(CC_RUNTIME_ARG) AC_SUBST(SHLIB_CFLAGS) AC_SUBST(SHLIB_EXTENSION) AC_SUBST(SHLIB_LDCONFIG_CMD) AC_SUBST(SHLIB_LD_CMD) AC_PROG_RANLIB AC_MSG_CHECKING(for how to build the library) AC_MSG_RESULT([EXTENISON=$SHLIB_EXTENSION, LD=$SHLIB_LD_CMD, LDCONFIG=$SHLIB_LDCONFIG_CMD, RANLIB=$RANLIB, CCFLAGS=$SHLIB_CFLAGS $CC_RUNTIME_ARG]) 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_module_list="mibII ucd_snmp v2party $with_mib_modules" trap_list_o="" case $target_os in solaris*) trap_list_o="../agent/mibgroup/kernel_sunos5.o" ;; esac 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_loads.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="" default_mibs=IP-MIB:IF-MIB:TCP-MIB:UDP-MIB:SNMPv2-MIB:RFC1213-MIB for i in $test_modules do if echo " $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 " $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) fi if echo " $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) fi if 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 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 if test -f $srcdir/$mibdir/$i.c; then module_list_code="$module_list_code $i" if grep init_$i $srcdir/$mibdir/$i.c > /dev/null; then echo " init_$i();" >> $mibdir/mib_module_inits.h fi fi grep config_load_mib $srcdir/$mibdir/$i.h | sed 's@.*config_load_mib(\([^)]*\), *\([^),]*\), *\([^),]*\)).*@{{\1}, \2, (struct variable *) \3, sizeof(\3)/sizeof(*\3),sizeof(*\3),"'$i'"},@;s/\.\([0-9]*\)/,\1/g' >> $mibdir/mib_module_loads.h grep config_parse_dot_conf $srcdir/$mibdir/$i.h | sed 's@.*config_parse_dot_conf(\([^)]*\), *\([^),]*\), *\([^),]*\)).*@{\1, \2, \3},@' >> $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" 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_c=`echo "$module_list_code " | sed 's/\([^ ]\) /\1.c /g'` mibgroup_list_o=`echo " $module_list_o " | sed 's@ \([^ ]*\)\.o@ mibgroup/\1.o @g'` changequote([, ]) AC_SUBST(module_list_c) AC_SUBST(module_list_o) AC_SUBST(mibgroup_list_o) AC_SUBST(trap_list_o) 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 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 Checks for libraries. dnl AC_CHECK_LIB(des, main) AC_CHECK_LIB(elf, nlist) AC_CHECK_LIB(m, asin) AC_CHECK_LIB(nsl, gethostbyname) AC_CHECK_LIB(socket, getservbyname) dnl AC_CHECK_LIB(ucb, bzero) AC_CHECK_LIB(rpm, rpmdbOpen,[ AC_DEFINE(HAVE_LIBRPM) LIBS="$LIBS -lrpm -ldb" ],,-ldb) 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 Checks for header files. AC_HEADER_STDC AC_HEADER_DIRENT AC_HEADER_SYS_WAIT AC_CHECK_HEADERS(string.h fcntl.h limits.h sys/file.h sys/ioctl.h syslog.h unistd.h netinet/tcpip.h netinet/in.h sys/dmap.h machine/pte.h xti.h sys/sockio.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) 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) dnl Linux (lame) doesn't have these AC_CHECK_HEADERS(sys/conf.h netinet/in_var.h netinet/in_pcb.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) dnl NetBSD required headers AC_CHECK_HEADERS(arpa/inet.h kvm.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 WIN32 AC_CHECK_HEADERS(winsock.h io.h) dnl Checks for typedefs, structures, and compiler characteristics. AC_TYPE_OFF_T AC_TYPE_PID_T AC_HEADER_TIME AC_MSG_CHECKING([for __P in sys/cdefs.h]) AC_CACHE_VAL(ac_cv_sys_cdefs_h_has_P, [ AC_EGREP_CPP(xxxyesxxx, [ #ifdef HAVE_SYS_CDEFS_H #include #endif #ifdef __P xxxyesxxx #endif ], ac_cv_sys_cdefs_h_has_P=yes, ac_cv_sys_cdefs_h_has_P=no)]) AC_MSG_RESULT($ac_cv_sys_cdefs_h_has_P) if test $ac_cv_sys_cdefs_h_has_P = yes; then AC_DEFINE(SYS_CDEFS_DEFINES___P) fi 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 <>dnl changequote([,]), [#include #if STDC_HEADERS #include #include #endif #ifdef HAVE_NETINET_IN_H #include #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" 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 AC_C_BIGENDIAN 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) AC_CHECK_FUNCS(strchr strdup memcpy memmove index bcopy) AC_CHECK_FUNCS(signal sigset sigblock sighold strerror) AC_CHECK_FUNCS(random lrand48 rand) AC_CHECK_FUNCS(getloadavg) AC_CHECK_FUNCS(kvm_openfiles nlist) dnl BSDi2 functions differ AC_CHECK_FUNCS(statvfs statfs) # 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 #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([#include #ifdef HAVE_SYS_PARAM_H #include #endif #ifdef HAVE_SYS_MOUNT_H #include #endif #ifdef HAVE_SYS_FS_TYPES_H #include #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 accepts void pointers AC_CACHE_CHECK(if $CC allows pointers to void,ac_cv_PTR_TO_VOID, [ AC_TRY_COMPILE([ void generic_function(a) void *a; { } ],[ char *cp; generic_function((void *) cp); ], ac_cv_PTR_TO_VOID=yes, ac_cv_PTR_TO_VOID=no)]) if test "x$ac_cv_PTR_TO_VOID" = "xno"; then AC_DEFINE(void,char) fi AC_CHECK_STRUCT_FOR([ #include #define KERNEL #define _KERNEL #include #undef KERNEL #undef _KERNEL #include ], 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([ #include #define KERNEL #define _KERNEL #include #undef KERNEL #undef _KERNEL #include ],[ #ifndef STRUCT_RTENTRY_HAS_RT_DST #define rt_dst rt_nodes->rn_key #endif struct rtentry rt; rt.rt_nodes[0].rn_b = 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([ #include #define KERNEL #define _KERNEL #include #undef KERNEL #undef _KERNEL #include ],[ 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_WARN(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 ], 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 "xac_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([ #include #define KERNEL #define _KERNEL #include #undef KERNEL #undef _KERNEL #include ],[ 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([ #include #define KERNEL #define _KERNEL #include #undef KERNEL #undef _KERNEL #include ], rtentry, rt_unit) AC_CHECK_STRUCT_FOR([ #include #define KERNEL #define _KERNEL #include #undef KERNEL #undef _KERNEL #include ], rtentry, rt_refcnt) AC_CHECK_STRUCT_FOR([ #include #define KERNEL #define _KERNEL #include #undef KERNEL #undef _KERNEL #include ], rtentry, rt_hash) AC_CHECK_STRUCT_FOR([ #include #define KERNEL #define _KERNEL #include #undef KERNEL #undef _KERNEL #include ], rtentry, rt_use) dnl Check tcpstat for tcpstat.tcp_rcvmemdrop AC_CHECK_STRUCT_FOR([ #include #include #ifdef HAVE_NETINET_TCP_TIMER_H #include #endif #ifdef HAVE_NETINET_TCP_VAR_H #include #endif ], tcpstat, tcp_rcvmemdrop) dnl irix checks AC_CHECK_STRUCT_FOR([ #include #include #ifdef HAVE_NET_IF_VAR_H #include #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 #include #include #ifdef HAVE_SYS_TIME_H #include #endif #include #ifdef HAVE_NET_IF_VAR_H #include #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 #include #include #ifdef HAVE_SYS_TIME_H #include #endif #include #ifdef HAVE_NET_IF_VAR_H #include #endif ], ifaddr, ifa_next) dnl Check ifnet entries using macro defined in aclocal.m4. AC_CHECK_IFNET_FOR(if_baudrate) 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([ #if HAVE_NETINET_UDP_VAR_H #include #endif ],udpstat,udps_discard) AC_CHECK_STRUCT_FOR([ #include #include #ifdef HAVE_SYS_TIME_H #include #endif #include #if HAVE_NETINET_IN_H #include #endif #if HAVE_NETINET_IF_ETHER_H #include #endif ],arphd,at_next) AC_CHECK_STRUCT_FOR([ #if HAVE_SYS_CONF_H #include #endif ],swdevt,sw_nblksenabled) AC_CHECK_STRUCT_FOR([ #ifdef HAVE_SYS_STAT_H #include #endif #if HAVE_SYS_STATFS_H #include #endif #if HAVE_SYS_STATVFS_H #include #endif ],statvfs,f_frsize) AC_CHECK_STRUCT_FOR([ #if HAVE_NLIST_H #include #endif ],nlist,n_value) dnl attempt to figure out if sysctl is usable AC_CACHE_CHECK(if sysctl can read kernel information,ac_cv_CAN_USE_SYSCTL, [AC_TRY_RUN([ #if TIME_WITH_SYS_TIME # include # include #else # if HAVE_SYS_TIME_H # include # else # include # endif #endif #include #if HAVE_SYS_PARAM_H # include #endif #if HAVE_SYS_SYSCTL_H # include #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)]) if test "x$ac_cv_CAN_USE_SYSCTL" = "xyes"; then AC_DEFINE(CAN_USE_SYSCTL) fi 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 by 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 over written. -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) AC_OUTPUT([ Makefile:Makefile.top:Makefile.in snmplib/Makefile:Makefile.top:snmplib/Makefile.in agent/Makefile:Makefile.top:agent/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 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: sh dnl comment-start: "dnl" dnl End: