blob: 708aa09928ac3ef5a9a9a74eb6c40cf7e8619004 [file] [log] [blame]
#########################################
##
# Checks for header files.
##
#########################################
##
# Standard checks:
##
# Core:
AC_HEADER_STDC # <stdlib.h>, <stdarg.h>, <string.h> & <float.h>
AC_HEADER_DIRENT # <dirent.h>, <sys/ndir.h>, <sys/dir.h> & <ndir.h>
# Apps:
AC_HEADER_SYS_WAIT # <sys/wait.h>
# allow for quick module/library/etc processing checks
if test "x$NETSNMP_QUICK_CHECK" = "x" ; then
##
# Stand-alone headers:
##
# Core:
AC_CHECK_HEADERS([getopt.h pthread.h regex.h ] dnl
[string.h syslog.h unistd.h ] dnl
[stdint.h inttypes.h ] dnl
[sys/param.h ] dnl
[sys/select.h ] dnl
[sys/socket.h ] dnl
[sys/time.h ] dnl
[sys/timeb.h ] dnl
[sys/un.h ])
# Library and Agent:
AC_CHECK_HEADERS([nlist.h],,,[
AC_INCLUDES_DEFAULT
[
#ifndef LIBBSD_DISABLE_DEPRECATED
#define LIBBSD_DISABLE_DEPRECATED 1
#endif
]])
# Library:
AC_CHECK_HEADERS([fcntl.h io.h kstat.h ] dnl
[limits.h locale.h ] dnl
[sys/file.h sys/ioctl.h ] dnl
[sys/sockio.h sys/stat.h ] dnl
[sys/systemcfg.h sys/systeminfo.h ] dnl
[sys/times.h sys/uio.h ] dnl
[sys/utsname.h ] dnl
[netipx/ipx.h ])
# Agent:
AC_CHECK_HEADERS([dlfcn.h err.h fcntl.h fstab.h ] dnl
[ grp.h io.h ] dnl
[ioctls.h kstat.h kvm.h limits.h ] dnl
[ mntent.h mtab.h ] dnl
[ pkglocs.h pwd.h ] dnl
[ com_err.h et/com_err.h ] dnl
[ utmpx.h utsname.h ])
AC_CHECK_HEADERS([sys/diskio.h sys/dkio.h ] dnl
[sys/file.h sys/filio.h sys/fixpoint.h ] dnl
[sys/fs.h sys/ioctl.h sys/loadavg.h sys/mntent.h ] dnl
[sys/mnttab.h sys/pool.h sys/protosw.h sys/pstat.h ] dnl
[sys/sockio.h sys/stat.h sys/statfs.h sys/statvfs.h ] dnl
[sys/stream.h sys/sysget.h sys/sysmp.h ] dnl
[sys/tcpipstats.h sys/utsname.h sys/vfs.h ] dnl
[sys/vm.h sys/vmmac.h sys/vmmeter.h sys/vmparam.h ] dnl
[sys/vmsystm.h ])
AC_CHECK_HEADERS([asm/page.h asm/types.h ] dnl
[inet/mib2.h ] dnl
[linux/hdreg.h linux/tasks.h ] dnl
[machine/param.h ] dnl
[netinet/tcp_fsm.h ] dnl
[ufs/fs.h ] dnl
[uvm/uvm_extern.h uvm/uvm_param.h ] dnl
[vm/vm.h vm/vm_extern.h vm/vm_param.h ])
# Apps:
AC_CHECK_HEADERS([fcntl.h grp.h pwd.h ] dnl
[sys/cdefs.h sys/ioctl.h ] dnl
[sys/socket.h sys/sockio.h ] dnl
[sys/time.h ])
# Not-Used:
AC_CHECK_HEADERS([search.h sgtty.h xti.h ] dnl
[sys/dmap.h sys/poll.h ] dnl
[sys/timeout.h ] dnl
[machine/pte.h ] dnl
[pci/pci.h ])
# Valgrind
AC_CHECK_HEADERS([valgrind/valgrind.h valgrind/memcheck.h])
# OpenSSL
AC_CHECK_HEADERS([openssl/aes.h ]) # (Core)
AC_CHECK_HEADERS([openssl/dh.h ]) # (Apps)
# Not-Used:
AC_CHECK_HEADERS([openssl/des.h openssl/hmac.h ] dnl
[openssl/evp.h security/cryptoki.h])
# RPM subdirectory path (Agent)
if test "x$with_rpm" != "xno"; then
AC_CHECK_HEADERS([rpm/rpmts.h rpm/rpmfileutil.h], [], [],
[[#include <rpm/rpmlib.h>]])
fi
##
# Pre-requisite on other headers:
##
# requiring <sys/param.h> (MAXPATHLEN) (OpenBSD 3.4)
# Agent:
#
AC_CHECK_HEADERS(sys/swap.h,,,
AC_INCLUDES_DEFAULT([])
[
#if HAVE_SYS_PARAM_H
#include <sys/param.h>
#endif
])
# requiring <sys/param.h> (FreeBSD)
#
# Core: (? Tested above? )
AC_CHECK_HEADERS([stdlib.h ],,,
[[
#if HAVE_SYS_TYPES_H
#include <sys/types.h>
#endif
#if HAVE_SYS_PARAM_H
#include <sys/param.h>
#endif
]])
#
# Library:
AC_CHECK_HEADERS([malloc.h net/if_dl.h sys/sysctl.h ],,,
[[
#if HAVE_SYS_TYPES_H
#include <sys/types.h>
#endif
#if HAVE_SYS_PARAM_H
#include <sys/param.h>
#endif
]])
#
# Agent:
AC_CHECK_HEADERS([malloc.h osreldate.h ] dnl
[machine/types.h net/if_dl.h net/if_types.h ] dnl
[sys/dkstat.h sys/conf.h sys/mbuf.h ] dnl
[sys/mount.h sys/proc.h sys/queue.h ] dnl
[sys/sysctl.h sys/user.h ],,,
[[
#if HAVE_SYS_TYPES_H
#include <sys/types.h>
#endif
#if HAVE_SYS_PARAM_H
#include <sys/param.h>
#endif
]])
# requiring <sys/sema.h> (IRIX 6.5)
# Agent:
#
AC_CHECK_HEADERS([sys/sema.h])
AC_CHECK_HEADERS(sys/hashing.h,,,
AC_INCLUDES_DEFAULT([])
[
#if HAVE_SYS_SEMA_H
#include <sys/sema.h>
#endif
])
# requiring <sys/socket.h> (Solaris 9)
# Agent:
#
AC_CHECK_HEADERS(sys/socketvar.h,,,
AC_INCLUDES_DEFAULT([])
[
#if HAVE_SYS_SOCKET_H
#include <sys/socket.h>
#endif
])
# requiring _KMEMUSER and <sys/types.h> (BSDi3/IRIX)
# Agent:
#
AC_CHECK_HEADERS(sys/vnode.h,,,
[
#define _KMEMUSER 1
#if HAVE_SYS_TYPES_H
#include <sys/types.h>
#endif
])
# requiring <machine/types.h> (NetBSD)
# Agent:
#
AC_CHECK_HEADERS(sys/disklabel.h,,,
[[
#if HAVE_SYS_TYPES_H
#include <sys/types.h>
#endif
#if HAVE_SYS_PARAM_H
#include <sys/param.h>
#endif
#if HAVE_MACHINE_TYPES_H
#include <machine/types.h>
#endif
]])
# QNX
AC_CHECK_HEADERS([nbutil.h])
# UFS headers
# Agent:
#
AC_CHECK_HEADERS([ufs/ufs/dinode.h ufs/ufs/quota.h ufs/ufs/inode.h ufs/ffs/fs.h],,,
[[
#if HAVE_SYS_TYPES_H
#include <sys/types.h>
#endif
#if HAVE_UFS_UFS_DINODE_H
#include <ufs/ufs/dinode.h>
#endif
#if HAVE_UFS_UFS_QUOTA_H
#include <ufs/ufs/quota.h>
#endif
]])
# requiring <vm/vm.h> (BSDi2)
# Agent:
#
AC_CHECK_HEADERS(vm/swap_pager.h,,,
[[
#if HAVE_VM_VM_H
#include <vm/vm.h>
#endif
]])
# netlink/rtnetlink (Linux)
# Agent:
#
AC_CHECK_HEADERS([linux/netlink.h linux/rtnetlink.h],,,
[[
#if HAVE_ASM_TYPES_H
#include <asm/types.h>
#endif
#if HAVE_SYS_SOCKET_H
#include <sys/socket.h>
#endif
#if HAVE_LINUX_NETLINK_H
#include <linux/netlink.h>
#endif
]])
# Network headers
# Core or Library/Agent/Apps:
#
AC_CHECK_HEADERS([arpa/inet.h net/if.h ] dnl
[netinet/in.h netdb.h ],,,
[[
#if HAVE_SYS_TYPES_H
#include <sys/types.h>
#endif
#if HAVE_SYS_TIMEOUT_H
#include <sys/timeout.h>
#endif
#if HAVE_SYS_SOCKET_H
#include <sys/socket.h>
#endif
#if HAVE_SYS_SOCKETVAR_H
#include <sys/socketvar.h>
#endif
#if HAVE_ARPA_INET_H
#include <arpa/inet.h>
#endif
#if HAVE_NETINET_IN_SYSTM_H
#include <netinet/in_systm.h>
#endif
#if HAVE_NETINET_IN_H
#include <netinet/in.h>
#endif
#if HAVE_NETINET_IP_H
#include <netinet/ip.h>
#endif
#if HAVE_NET_IF_H
#include <net/if.h>
#endif
#if HAVE_NETINET_IP_VAR_H
#include <netinet/ip_var.h>
#endif
#if HAVE_NETINET_IP_ICMP_H
#include <netinet/ip_icmp.h>
#endif
#if HAVE_NETINET_TCP_H
#include <netinet/tcp.h>
#endif
#if HAVE_NETINET_UDP_H
#include <netinet/udp.h>
#endif
#if HAVE_NETINET_TCP_TIMER_H
#include <netinet/tcp_timer.h>
#endif
]])
#
# Agent:
AC_CHECK_HEADERS([net/if_arp.h net/if_mib.h net/if_var.h ] dnl
[netinet/if_ether.h netinet/in_systm.h netinet/in_var.h ] dnl
[netinet/ip.h netinet/ip_icmp.h ] dnl
[netinet/icmp_var.h netinet/ip_var.h ] dnl
[netinet/tcp.h netinet/tcp_timer.h netinet/tcp_var.h] dnl
[netinet/tcpip.h netinet/udp.h netinet/udp_var.h] dnl
[net/route.h netinet/icmp6.h ],,,
[[
#if HAVE_SYS_PARAM_H
#include <sys/param.h>
#endif
#if HAVE_SYS_TYPES_H
#include <sys/types.h>
#endif
#if HAVE_SYS_TIMEOUT_H
#include <sys/timeout.h>
#endif
#if HAVE_SYS_SOCKET_H
#include <sys/socket.h>
#endif
#if HAVE_SYS_SOCKETVAR_H
#include <sys/socketvar.h>
#endif
#if HAVE_ARPA_INET_H
#include <arpa/inet.h>
#endif
#if HAVE_NETINET_IN_SYSTM_H
#include <netinet/in_systm.h>
#endif
#if HAVE_NETINET_IN_H
#include <netinet/in.h>
#endif
#if HAVE_NETINET_IP_H
#include <netinet/ip.h>
#endif
#if HAVE_NET_IF_H
#include <net/if.h>
#endif
#if HAVE_NET_IF_VAR_H
#include <net/if_var.h>
#endif
#if HAVE_NETINET_IP_VAR_H
#include <netinet/ip_var.h>
#endif
#if HAVE_NETINET_IP_ICMP_H
#include <netinet/ip_icmp.h>
#endif
#if HAVE_NETINET_TCP_H
#include <netinet/tcp.h>
#endif
#if HAVE_NETINET_UDP_H
#include <netinet/udp.h>
#endif
#if HAVE_NETINET_TCP_TIMER_H
#include <netinet/tcp_timer.h>
#endif
#if HAVE_NETINET_ICMP6_H
#include <netinet/icmp6.h>
#endif
]])
# KAME (IPv6) headers
# Agent:
#
# KAME
AC_CHECK_HEADERS([netinet/ip6.h ] dnl
[netinet6/in6_var.h netinet6/in6_pcb.h ] dnl
[netinet6/ip6_var.h netinet6/nd6.h ] dnl
[netinet6/tcp6.h netinet6/tcp6_fsm.h ] dnl
[netinet6/tcp6_timer.h netinet6/tcp6_var.h],,,
[[
#if HAVE_SYS_PARAM_H
#include <sys/param.h>
#endif
#if HAVE_SYS_TYPES_H
#include <sys/types.h>
#endif
#if HAVE_SYS_QUEUE_H
#include <sys/queue.h>
#endif
#if HAVE_SYS_SOCKET_H
#include <sys/socket.h>
#endif
#if HAVE_NET_IF_H
#include <net/if.h>
#endif
#if HAVE_NET_IF_VAR_H
#include <net/if_var.h>
#endif
#if HAVE_NET_ROUTE_H
#include <net/route.h>
#endif
#if HAVE_NETINET_IN_H
#include <netinet/in.h>
#endif
#if HAVE_NETINET_IP6_H
#include <netinet/ip6.h>
#endif
]])
# requiring <netinet/in.h> (OpenBSD 2.6)
# Agent:
#
AC_CHECK_HEADERS(netinet/in_pcb.h,,,
[[
#if HAVE_SYS_PARAM_H
#include <sys/param.h>
#endif
#if HAVE_SYS_TYPES_H
#include <sys/types.h>
#endif
#if HAVE_SYS_TIMEOUT_H
#include <sys/timeout.h>
#endif
#if HAVE_SYS_SOCKET_H
#include <sys/socket.h>
#endif
#if HAVE_SYS_SOCKETVAR_H
#include <sys/socketvar.h>
#endif
#if HAVE_NETINET_IN_H
#include <netinet/in.h>
#endif
#if HAVE_NETINET_IN_SYSTM_H
#include <netinet/in_systm.h>
#endif
#if HAVE_NETINET_IP_H
#include <netinet/ip.h>
#endif
#if HAVE_NET_ROUTE_H
#include <net/route.h>
#endif
#if HAVE_ARPA_INET_H
#include <arpa/inet.h>
#endif
]])
##
# Pre-requisite on specific types
##
# Special hack to get around various problems on older Linux kernels
# (major ugh!)
# Agent:
#
AC_CHECK_HEADERS([linux/ethtool.h],,,
[[
#include <linux/types.h>
typedef __u64 u64; /* hack, so we may include kernel's ethtool.h */
typedef __u32 u32; /* ditto */
typedef __u16 u16; /* ditto */
typedef __u8 u8; /* ditto */
]])
##
# Headers requiring particular libraries
##
# for HostRes (Solaris 2.x)
# Agent:
#
AC_CHECK_HEADERS(pkginfo.h,
NETSNMP_SEARCH_LIBS(pkginfo, adm,
AC_DEFINE(HAVE_PKGINFO, 1, [define if you have pkginfo]),,,LMIBLIBS))
AC_CHECK_HEADERS(pkg.h,
NETSNMP_SEARCH_LIBS(pkg_init, pkg,
AC_DEFINE(HAVE_LIBPKG, 1, [define if you have BSD pkg-ng])))
if test $ac_cv_header_pkg_h = no
then
unset ac_cv_header_pkg_h
netsnmp_save_CPPFLAGS="$CPPFLAGS"
netsnmp_save_LDFLAGS="$LDFLAGS"
CPPFLAGS="$CPPFLAGS -I/usr/local/include"
LDFLAGS="$LDFLAGS -L/usr/local/lib"
AC_CHECK_HEADERS(pkg.h,
NETSNMP_SEARCH_LIBS(pkg_init, pkg,
AC_DEFINE(HAVE_LIBPKG, 1, [define if you have BSD pkg-ng])))
if test $ac_cv_header_pkg_h = no
then
CPPFLAGS="$netsnmp_save_CPPFLAGS"
LDFLAGS="$netsnmp_save_LDFLAGS"
fi
fi
case $target_os in
aix*)
# for CPU/memory statistics (AIX)
# Agent:
#
AC_CHECK_HEADERS(libperfstat.h,
NETSNMP_SEARCH_LIBS(perfstat_cpu_total, perfstat,
AC_DEFINE(HAVE_PERFSTAT, 1, [on aix, if you have perfstat]),
AC_MSG_ERROR([
*** To monitor CPU/memory values in AIX you need to install
*** libperfstat which can be found in bos.perf
]),,
LMIBLIBS),,
[[
#if HAVE_SYS_PROTOSW_H
#include <sys/protosw.h>
#endif
]])
;;
hpux*)
# HP-UX agent needs open_mib (XXX - not a header check!)
#
NETSNMP_SEARCH_LIBS(open_mib, nm,
AC_DEFINE(HAVE_LIBNM, 1, [define if you have libnm]),,,LMIBLIBS)
;;
*)
;;
esac
# for MIB-2 info (Cygwin and MinGW)
# Core:
#
AC_CHECK_HEADERS([windows.h iphlpapi.h], [], [], [
#ifdef HAVE_WINDOWS_H
#include <windows.h>
#endif
])
# for MIB-2 info (MinGW)
# Core:
#
if test x$with_socklib = xwinsock2; then
AC_CHECK_HEADERS([winsock.h winsock2.h ws2tcpip.h])
fi
#
# for ucd-snmp/lmsensorsMib
#
AC_CHECK_HEADERS([sensors/sensors.h picl.h])
## This is here to avoid loads of redefinition warnings during
## module configuration
##
# rtentry structure checks:
##
# Check struct rtentry for common fields
# Agent:
#
AC_CHECK_MEMBERS([struct rtentry.rt_dst,
struct rtentry.rt_hash,
struct rtentry.rt_next,
struct rtentry.rt_refcnt,
struct rtentry.rt_unit,
struct rtentry.rt_use],,,
[
#ifdef HAVE_SYS_PARAM_H
#include <sys/param.h>
#endif
#include <sys/types.h>
#ifdef NETSNMP_IFNET_NEEDS_KERNEL_STRUCTURES
#define _KERNEL_STRUCTURES 1
#endif
#ifdef HAVE_SYS_SOCKET_H
#ifdef NETSNMP_IFNET_NEEDS_KERNEL
#define KERNEL
#if !defined(__DragonFly__)
#define _KERNEL 1
#endif
#endif
#include <sys/socket.h>
#undef KERNEL
#undef _KERNEL
#endif
#ifdef HAVE_NET_ROUTE_H
#include <net/route.h>
#endif
])
fi # NETSNMP_QUICK_CHECK