460 lines
12 KiB
Plaintext
460 lines
12 KiB
Plaintext
# -*- autoconf -*-
|
|
#########################################
|
|
##
|
|
# Checks for programs
|
|
##
|
|
#########################################
|
|
|
|
##
|
|
# Shell checks:
|
|
##
|
|
|
|
# Check for 'sh' overflow (HP-UX)
|
|
# (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
|
|
|
|
|
|
##
|
|
# Standard and path program checks:
|
|
##
|
|
|
|
AC_PROG_EGREP
|
|
AC_PROG_GREP
|
|
AC_PROG_INSTALL
|
|
AC_PROG_LN_S
|
|
AC_PROG_MAKE_SET
|
|
AC_PROG_SED
|
|
|
|
AC_CHECK_PROGS([FILE], [file])
|
|
if test x$ac_cv_prog_FILE = x; then
|
|
# The file program is not included in the default Cygwin setup, although
|
|
# this program is essential for libtool to work properly. It is nontrivial
|
|
# to deduce from the message printed by libtool that the 'file' tool is
|
|
# missing and libtool does not abort when the file program is not found. So
|
|
# stop now if the file program has not been found.
|
|
AC_MSG_ERROR([file program not found although it is needed by libtool.], [1])
|
|
fi
|
|
|
|
AC_CHECK_PROGS(FIND, find)
|
|
AC_CHECK_PROGS(WHOAMI, whoami logname, whoami)
|
|
|
|
AC_PATH_PROG(AUTOCONF, autoconf, [:])
|
|
AC_PATH_PROG(AUTOHEADER, autoheader, [:])
|
|
AC_PATH_PROG([PERLPROG], perl)
|
|
AC_PATH_PROG([PSPROG], ps)
|
|
AC_PATH_PROG([PYTHONPROG],python)
|
|
|
|
AC_PATH_PROG([UNAMEPROG], uname)
|
|
AC_DEFINE_UNQUOTED(UNAMEPROG,"$UNAMEPROG", [Where is the uname command])
|
|
|
|
MAKE=${MAKE-"make"}
|
|
$MAKE -v -f /dev/null 2>/dev/null | $GREP GNU >/dev/null
|
|
have_gnu_make=$?
|
|
|
|
|
|
##
|
|
# The Perl function system() is used for running the Net-SNMP regression
|
|
# tests. Find out whether that function invokes a POSIX shell, which is
|
|
# necessary in order to run the regression tests. When using Windows + MSYS
|
|
# + ActiveState Perl, Perl's system() function does invoke Windows' cmd.exe
|
|
# which is not a POSIX shell.
|
|
##
|
|
|
|
AC_MSG_CHECKING([whether the Perl function system() invokes a POSIX shell])
|
|
if test "x$PERLPROG" != 'x' && test -x "$PERLPROG" && test "x`$PERLPROG -e 'system('\''echo $OSTYPE'\'');'`" != 'x$OSTYPE'; then
|
|
PERL_SYSTEM_INVOKES_POSIX_SHELL=yes
|
|
else
|
|
PERL_SYSTEM_INVOKES_POSIX_SHELL=no
|
|
fi
|
|
AC_MSG_RESULT([$PERL_SYSTEM_INVOKES_POSIX_SHELL])
|
|
AC_SUBST([PERL_SYSTEM_INVOKES_POSIX_SHELL])
|
|
|
|
|
|
##
|
|
# Compilation-related program checks:
|
|
##
|
|
|
|
AC_LANG([C])
|
|
AC_PROG_CC
|
|
AC_PROG_CPP
|
|
LINKCC=${LINKCC-"$CC"}
|
|
AC_SUBST(LINKCC)
|
|
|
|
AC_C_CONST
|
|
AC_C_INLINE
|
|
|
|
# libtool stuff for shared/static libraries.
|
|
#
|
|
LT_PREREQ([2.2.6])
|
|
LT_INIT([win32-dll])
|
|
AC_SUBST(LIBTOOL_DEPS)
|
|
|
|
|
|
##
|
|
# Build environment:
|
|
##
|
|
|
|
# developer build
|
|
# (enabled by default when building from SVN checkout)
|
|
#
|
|
if test "x$developer" != "xno" -a -f $srcdir/remove-files; then
|
|
developer="yes"
|
|
fi
|
|
AC_MSG_CHECKING([for developer gcc flags])
|
|
if test "x$developer" = "xyes" -a "x$GCC" = "xyes"; then
|
|
|
|
# WWWXXX - strict type checking
|
|
#
|
|
netsnmp_save_CFLAGS="$CFLAGS"
|
|
for opt in -Wall -Wextra -Wstrict-prototypes -Wwrite-strings -Wcast-qual \
|
|
-Wimplicit-fallthrough=2 -Wlogical-op \
|
|
-Wno-format-truncation -Wno-missing-field-initializers \
|
|
-Wno-sign-compare -Wno-unused-parameter -Wno-type-limits
|
|
do
|
|
AC_MSG_CHECKING([whether the compiler supports $opt])
|
|
if test x$opt != x-Wstrict-prototypes; then
|
|
CFLAGS="-Werror $opt $CFLAGS"
|
|
else
|
|
CFLAGS="$opt $CFLAGS"
|
|
fi
|
|
AC_LINK_IFELSE([AC_LANG_PROGRAM([], [])], [
|
|
AC_MSG_RESULT([yes])
|
|
DEVFLAGS="$DEVFLAGS $opt"
|
|
], [
|
|
AC_MSG_RESULT([no])
|
|
])
|
|
CFLAGS="$netsnmp_save_CFLAGS"
|
|
done
|
|
|
|
else
|
|
DEVFLAGS=""
|
|
fi
|
|
AC_MSG_RESULT($DEVFLAGS)
|
|
AC_SUBST(DEVFLAGS)
|
|
|
|
|
|
# building outside source directory
|
|
#
|
|
# a) ensure build include paths are before source
|
|
# b) ensure GNU make uses 'vpath' instead of 'VPATH'
|
|
#
|
|
NON_GNU_VPATH="VPATH ="
|
|
GNU_vpath="#vpath"
|
|
|
|
# define include paths relative to top_srcdir
|
|
# tweak includes if we're building outside of the source dir
|
|
#
|
|
if test "x$srcdir" = "x."; then
|
|
TOP_INCLUDES=SRC_TOP_INCLUDES
|
|
SNMPLIB_INCLUDES=SRC_SNMPLIB_INCLUDES
|
|
AGENT_INCLUDES=SRC_AGENT_INCLUDES
|
|
HELPER_INCLUDES=SRC_HELPER_INCLUDES
|
|
MIBGROUP_INCLUDES=SRC_MIBGROUP_INCLUDES
|
|
else
|
|
TOP_INCLUDES=BLD_TOP_INCLUDES
|
|
SNMPLIB_INCLUDES=BLD_SNMPLIB_INCLUDES
|
|
AGENT_INCLUDES=BLD_AGENT_INCLUDES
|
|
HELPER_INCLUDES=BLD_HELPER_INCLUDES
|
|
MIBGROUP_INCLUDES=BLD_MIBGROUP_INCLUDES
|
|
if test $have_gnu_make -eq 0 ; then
|
|
NON_GNU_VPATH="#VPATH ="
|
|
GNU_vpath="vpath"
|
|
fi
|
|
fi
|
|
AC_SUBST(TOP_INCLUDES)
|
|
AC_SUBST(SNMPLIB_INCLUDES)
|
|
AC_SUBST(AGENT_INCLUDES)
|
|
AC_SUBST(HELPER_INCLUDES)
|
|
AC_SUBST(MIBGROUP_INCLUDES)
|
|
AC_SUBST(EXTERNAL_MIBGROUP_INCLUDES)
|
|
AC_SUBST(GNU_vpath)
|
|
AC_SUBST(NON_GNU_VPATH)
|
|
|
|
|
|
##
|
|
# System-related compilation checks:
|
|
##
|
|
|
|
# What system are we building for
|
|
#
|
|
AC_CANONICAL_TARGET
|
|
changequote(, )
|
|
PARTIALTARGETOS=`echo $target_os | sed 's/[-._].*//'`
|
|
changequote([, ])
|
|
AC_MSG_CACHE_ADD(Building for: $PARTIALTARGETOS)
|
|
|
|
|
|
# Avoid conflicts on Cygwin between <windows.h> and the openssl header files.
|
|
case x$target_os in
|
|
xcygwin*)
|
|
CPPFLAGS="-DVC_EXTRALEAN -DWIN32_LEAN_AND_MEAN $CPPFLAGS";;
|
|
esac
|
|
|
|
#
|
|
# Whether or not Cygwin's ld recognizes the flag -no-undefined.
|
|
#
|
|
|
|
case x$target_os in
|
|
xcygwin*)
|
|
saved_LDFLAGS=$LDFLAGS
|
|
|
|
AC_MSG_CHECKING([whether the linker supports -no-undefined])
|
|
LDFLAGS="$saved_LDFLAGS -Wl,-no-undefined"
|
|
AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])],
|
|
[AC_MSG_RESULT([yes]); dnl
|
|
LD_NO_UNDEFINED=-no-undefined],
|
|
[AC_MSG_RESULT([no])])
|
|
|
|
LDFLAGS="$saved_LDFLAGS"
|
|
;;
|
|
esac
|
|
|
|
AC_SUBST(LD_NO_UNDEFINED)
|
|
|
|
|
|
#
|
|
# Socket library: either 'default' (non-MinGW) or 'winsock2' (MinGW).
|
|
#
|
|
case x$target_os in
|
|
xmingw*)
|
|
with_socklib=winsock2
|
|
if test "x$enable_ipv6" = "xyes"; then
|
|
CFLAGS="-D_WIN32_WINNT=0x0501 $CFLAGS"
|
|
fi
|
|
;;
|
|
*)
|
|
with_socklib=default;;
|
|
esac
|
|
|
|
|
|
# Check system define behaviour
|
|
# Does "-Ux -Dx=x" work as expected?
|
|
#
|
|
AC_MSG_CHECKING([whether to un-define target system token (before redefining)])
|
|
OLD_CPPFLAGS="$CPPFLAGS"
|
|
CPPFLAGS="-U$PARTIALTARGETOS -D$PARTIALTARGETOS=$PARTIALTARGETOS"
|
|
|
|
AC_EGREP_CPP(yes,
|
|
[[
|
|
#ifdef $PARTIALTARGETOS
|
|
yes
|
|
#endif
|
|
]],
|
|
[ PARTIALTARGETFLAGS="-U$PARTIALTARGETOS -D$PARTIALTARGETOS=$PARTIALTARGETOS"
|
|
AC_MSG_RESULT([yes])],
|
|
[ PARTIALTARGETFLAGS="-D$PARTIALTARGETOS=$PARTIALTARGETOS"
|
|
AC_MSG_RESULT([no])])
|
|
CFLAGS="$CFLAGS $PARTIALTARGETFLAGS"
|
|
CPPFLAGS="$OLD_CPPFLAGS"
|
|
|
|
|
|
# Determine appropriate <net-snmp/system/{os}.h> include
|
|
#
|
|
AC_MSG_CHECKING([for system include file])
|
|
changequote(, )
|
|
filebase=$target_os
|
|
# 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/include/net-snmp/system/$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_NETSNMP_SYSTEM_INCLUDE_FILE="net-snmp/system/$filebase.h"
|
|
changequote([, ])
|
|
AC_MSG_RESULT($ac_cv_NETSNMP_SYSTEM_INCLUDE_FILE)
|
|
AC_DEFINE_UNQUOTED(NETSNMP_SYSTEM_INCLUDE_FILE, "$ac_cv_NETSNMP_SYSTEM_INCLUDE_FILE")
|
|
|
|
|
|
# Determine appropriate <net-snmp/machine/{cpu}.h> include
|
|
#
|
|
AC_MSG_CHECKING([for machine-type include file])
|
|
changequote(, )
|
|
filebase=$target_cpu
|
|
while test "x$filebase" != "x$last" -a ! -f $srcdir/include/net-snmp/machine/$filebase.h
|
|
do
|
|
last=$filebase
|
|
filebase=`echo $filebase | $SED 's/[-._][^-._]*$//'`
|
|
done
|
|
|
|
if test "x$filebase" = "x$last"; then
|
|
filebase="generic"
|
|
fi
|
|
ac_cv_NETSNMP_MACHINE_INCLUDE_FILE="net-snmp/machine/$filebase.h"
|
|
changequote([, ])
|
|
AC_MSG_RESULT([$ac_cv_NETSNMP_MACHINE_INCLUDE_FILE])
|
|
AC_DEFINE_UNQUOTED(NETSNMP_MACHINE_INCLUDE_FILE, "$ac_cv_NETSNMP_MACHINE_INCLUDE_FILE")
|
|
|
|
|
|
##
|
|
# Platform-specific compilation checks:
|
|
##
|
|
|
|
# Preprocessor checks:
|
|
#
|
|
|
|
# More sensible system identifier (MinGW)
|
|
#
|
|
if test "x$PARTIALTARGETOS" = "xmingw32msvc"; then
|
|
CFLAGS="$CFLAGS -Dmingw32"
|
|
fi
|
|
|
|
# Handle .in file extension (GCC)
|
|
#
|
|
AC_MSG_CHECKING([for additional cpp flags])
|
|
if test "x$GCC" = "xyes" -a "x$CPP" = "x$CC -E"; then
|
|
EXTRACPPFLAGS="-x c"
|
|
else
|
|
EXTRACPPFLAGS=""
|
|
fi
|
|
|
|
# Solaris extra CPP flags (Solaris)
|
|
#
|
|
if test "x$GCC" != "xyes"; then
|
|
case $target_os in
|
|
solaris*) EXTRACPPFLAGS="$EXTRACPPFLAGS -Xs" ;;
|
|
esac
|
|
fi
|
|
|
|
AC_SUBST(EXTRACPPFLAGS)
|
|
AC_MSG_RESULT($EXTRACPPFLAGS)
|
|
|
|
|
|
# Compiler checks:
|
|
#
|
|
|
|
AC_PATH_PROG([CCPATH],$CC)
|
|
case $target_os in
|
|
bsdi*)
|
|
# Check for bundled compiler (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*)
|
|
# Check for bundled compiler (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
|
|
|
|
|
|
# Compiler flags:
|
|
#
|
|
|
|
CFLAGS="-DNETSNMP_REMOVE_U64 $CFLAGS"
|
|
|
|
# The Net-SNMP source code is not strict-aliasing safe, so add
|
|
# -fno-strict-aliasing to $CFLAGS if the compiler supports it.
|
|
AC_MSG_CHECKING([whether the compiler supports -fno-strict-aliasing])
|
|
netsnmp_save_CFLAGS="$CFLAGS"
|
|
CFLAGS="-fno-strict-aliasing $CFLAGS"
|
|
AC_LINK_IFELSE([AC_LANG_PROGRAM([], [])], [AC_MSG_RESULT([yes])], [
|
|
AC_MSG_RESULT([no])
|
|
CFLAGS="$netsnmp_save_CFLAGS"
|
|
])
|
|
|
|
|
|
# Linker checks:
|
|
#
|
|
|
|
case $target_os in
|
|
aix4.2*|aix4.3*|aix5*|aix6*|aix7*)
|
|
# Runtime linking flags (AIX)
|
|
#
|
|
AC_MSG_CHECKING([what linker flags to add to enable runtime linking on AIX])
|
|
for ld_flag in $LDFLAGS; do
|
|
if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
|
|
netsnmp_aix_runtimelinking_flags_ok=yes
|
|
break
|
|
fi
|
|
done
|
|
if test "X$netsnmp_aix_runtimelinking_flags_ok" != "Xyes"; then
|
|
if test "x$GCC" = "xyes"; then
|
|
netsnmp_aix_ldflags="-Wl,-brtl"
|
|
else
|
|
netsnmp_aix_ldflags="-brtl"
|
|
fi
|
|
LDFLAGS="$netsnmp_aix_ldflags $LDFLAGS"
|
|
AC_MSG_RESULT($netsnmp_aix_ldflags)
|
|
else
|
|
AC_MSG_RESULT([none])
|
|
fi
|
|
;;
|
|
|
|
darwin*)
|
|
# Flat Namespace linking (Mac OS/X)
|
|
#
|
|
AC_MSG_CHECKING([whether darwin ld might need -flat_namespace])
|
|
if test -z "$MACOSX_DEPLOYMENT_TARGET"; then
|
|
saved_LDFLAGS="$LDFLAGS"
|
|
LDFLAGS="-flat_namespace -framework CoreFoundation -framework CoreServices -framework DiskArbitration -framework IOKit $LDFLAGS"
|
|
AC_LINK_IFELSE([AC_LANG_PROGRAM([], [])],
|
|
[AC_MSG_RESULT([yes])],
|
|
[LDFLAGS="$saved_LDFLAGS"; AC_MSG_RESULT([no])])
|
|
else
|
|
AC_MSG_RESULT([no])
|
|
fi
|
|
;;
|
|
|
|
*)
|
|
;;
|
|
esac
|
|
|
|
|
|
# dpkg package (swintst_apt)
|
|
# used in agent only
|
|
#
|
|
AC_PATH_PROG([DPKG_QUERY_PATH], dpkg-query)
|
|
if test x$DPKG_QUERY_PATH != x; then
|
|
AC_DEFINE(HAVE_DPKG_QUERY, 1, [Set if the dpkg-query command is available])
|
|
fi
|
|
|
|
|
|
##
|
|
# Non-program/compilation checks:
|
|
##
|
|
|
|
# Substitute version number.
|
|
#
|
|
AC_SUBST(VERSION, $PACKAGE_VERSION)
|
|
AC_MSG_CACHE_ADD(Net-SNMP Version: $PACKAGE_VERSION)
|
|
|