net-snmp/configure.d/config_os_progs

460 lines
12 KiB
Plaintext
Raw Normal View History

2022-06-27 15:01:12 +08:00
# -*- 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)