# -*- 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 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 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 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)