summaryrefslogtreecommitdiff
path: root/configure.d/config_project_perl_python
diff options
context:
space:
mode:
Diffstat (limited to 'configure.d/config_project_perl_python')
-rw-r--r--configure.d/config_project_perl_python379
1 files changed, 379 insertions, 0 deletions
diff --git a/configure.d/config_project_perl_python b/configure.d/config_project_perl_python
new file mode 100644
index 0000000..23f8c7e
--- /dev/null
+++ b/configure.d/config_project_perl_python
@@ -0,0 +1,379 @@
+# -*- autoconf -*-
+#########################################
+##
+# Perl & Python support
+##
+#########################################
+
+##
+# Check whether Net-SNMP configuration will support Perl
+##
+
+# Inputs:
+# install_perl: whether or not to install the Perl modules
+# yes/no/try (i.e. 'maybe' - the default)
+# embed_perl: whether or not to embed Perl support within the agent
+# yes/no/try (i.e. 'maybe' - the default)
+#
+# ac_cv_path_PERLPROG: Path to perl binary
+
+
+# Embedded Perl requires Perl modules, and the perl binary
+#
+if test "x$embed_perl" = "xtry" ; then
+ if test "x$install_perl" = "xno" ; then
+ install_perl="try"
+ fi
+ if test "x$ac_cv_path_PERLPROG" = "x" -o "x$ac_cv_path_PERLPROG" = "xno" ; then
+ install_perl="no"
+ embed_perl="no"
+ fi
+fi
+
+# Perl modules require the perl binary
+#
+if test "x$install_perl" != "xno" ; then
+ myperl=$ac_cv_path_PERLPROG
+ if test $myperl = "no" ; then
+ if test "x$install_perl" = "xtry" ; then
+ install_perl="no"
+ else
+ AC_MSG_ERROR(--enable-embedded-perl requested but no perl executable found)
+ fi
+ fi
+fi
+
+# Perl modules require shared libraries
+#
+if test "x$install_perl" != "xno" ; then
+ if test "x$enable_shared" != "xyes"; then
+ if test "x$install_perl" = "xtry" ; then
+ install_perl="no"
+ else
+ AC_MSG_ERROR(Perl support requires --enable-shared)
+ fi
+ fi
+fi
+
+# Perl modules can only be installed from within the source tree
+#
+if test "x$install_perl" != "xno" ; then
+ AC_MSG_CHECKING([if we are in the source tree so we can install Perl modules])
+ if test "x$srcdir" = "x." -o -d perl/agent/default_store ; then
+ AC_MSG_RESULT([Yes])
+ else
+ if test "x$install_perl" = "xtry" ; then
+ install_perl="no"
+ AC_MSG_RESULT([No])
+ else
+ AC_MSG_ERROR([Perl modules can not be built outside the source directory])
+ fi
+ fi
+fi
+
+
+# The rest of the Perl-related checks aren't relevant
+# if we're not using the Perl modules
+#
+if test "x$install_perl" != "xno" ; then
+
+
+##
+# Check compiler compatability
+##
+
+ # What compiler was used to build the perl binary?
+ #
+ if test "xenable_perl_cc_checks" != "xno" ; then
+ AC_MSG_CHECKING([for Perl cc])
+ changequote(, )
+ PERLCC=`$myperl -V:cc | $myperl -n -e 'print if (s/^\s*cc=.([-=\w\s\/]+).;\s*/$1/);'`
+ changequote([, ])
+ if test "x$PERLCC" != "x" ; then
+ AC_MSG_RESULT([$PERLCC])
+ else
+ if test "x$install_perl" = "xtry" ; then
+ install_perl="no"
+ else
+ AC_MSG_ERROR([Could not determine the compiler that was used to build $myperl. Either set the environment variable PERLPROG to a different perl binary or use --without-perl-modules to build without Perl.])
+ fi
+ fi
+ fi
+
+ # Was GCC used to build the perl binary?
+ #
+ if test "x$install_perl" != "xno" ; then
+ AC_MSG_CHECKING([whether $PERLCC is a GNU C compiler])
+ OLDCC=$CC
+ CC="$PERLCC"
+ AC_COMPILE_IFELSE([
+ AC_LANG_PROGRAM([], [[
+#ifndef __GNUC__
+ choke me
+#endif
+ ]])], [perlcc_is_gnu=yes], [perlcc_is_gnu=no])
+ AC_MSG_RESULT([$perlcc_is_gnu])
+ CC=$OLDCC
+
+ # Check compatability: Gnu Net-SNMP vs Non-Gnu perl
+ #
+ if test "x$GCC" = "xyes" -a "x$perlcc_is_gnu" = "xno" ; then
+ if test "x$install_perl" = "xtry" ; then
+ install_perl="no"
+ else
+ AC_MSG_ERROR([This build is using a GNU C compiler ($CC) while Perl has been compiled with a non-GNU (or non-working) compiler ($PERLCC). This likely won't work for building with Perl support. Either specify a different compiler (--with-cc=PATH), disable this check (--disable-perl-cc-checks) or build without Perl (--without-perl-modules).])
+ fi
+ fi
+ fi
+
+ # Check compatability: Non-Gnu Net-SNMP vs Gnu perl
+ #
+ if test "x$install_perl" != "xno" ; then
+ if test "x$GCC" != "xyes" -a "x$perlcc_is_gnu" = "xyes" ; then
+ if test "x$install_perl" = "xtry" ; then
+ install_perl="no"
+ else
+ AC_MSG_ERROR([This build is using a non-GNU C compiler ($CC) while Perl has been compiled with a GNU compiler ($PERLCC). This likely won't work for building with Perl support. Either specify a different compiler (--with-cc=PATH), disable this check (--disable-perl-cc-checks) or build without Perl (--without-perl-modules).])
+ fi
+ fi
+ fi
+
+ # Are we clear to proceed?
+ #
+ if test "x$install_perl" = "xtry" ; then
+ install_perl="yes"
+ else
+ if test "x$install_perl" = "xno" ; then
+ install_perl="no"
+ embed_perl="no"
+ fi
+ fi
+
+
+##
+# Determine compilation environment needed for embedded Perl
+##
+
+# System-specific requirements
+#
+case $target_os in
+ solaris*)
+ if test "x$embed_perl" != "xno" ; then
+ # Check for LARGEFILE support (Solaris)
+ #
+ AC_MSG_CHECKING([for problematic Perl cc flags on Suns])
+ if $myperl -V:ccflags | $GREP LARGEFILE > /dev/null ; then
+ if test "x$embed_perl" = "xtry" ; then
+ embed_perl="no"
+ else
+ AC_MSG_ERROR([Perl was compiled with LARGEFILE support which will break Net-SNMP. Either set the environment variable PERLPROG to a different perl binary or use --disable-embedded-perl to turn off embedded Perl functionality altogether.])
+ fi
+ else
+ AC_MSG_RESULT([none known])
+ fi
+ fi
+ ;;
+
+ # Embedded perl typically fails on HP-UX and Mac OS X
+ # We really need to investigate why, and check for this explicitly
+ # But for the time being, turn this off by default
+ hpux*|darwin8*|darwin9*|darwin10*)
+ if test "x$embed_perl" = "xtry" ; then
+ AC_MSG_WARN([Embedded perl defaulting to off])
+ embed_perl="no"
+ fi
+ ;;
+
+ *)
+ ;;
+esac
+
+# Compiler flags
+#
+if test "x$embed_perl" != "xno" ; then
+ AC_MSG_CHECKING([for Perl CFLAGS])
+ perlcflags=`$myperl -MExtUtils::Embed -e ccopts`
+ if test "x$perlcflags" != "x" ; then
+ AC_MSG_RESULT([$perlcflags])
+ CFLAGS="$CFLAGS $perlcflags"
+ else
+ if test "x$embed_perl" = "xtry" ; then
+ embed_perl="no"
+ else
+ AC_MSG_ERROR([Could not determine the C compiler flags that were used to build $myperl. Either set the environment variable PERLPROG to a different Perl binary or use --disable-embedded-perl to turn off embedded Perl functionality altogether.])
+ fi
+ fi
+fi
+
+# Linker flags
+#
+if test "x$embed_perl" != "xno" ; then
+ AC_MSG_CHECKING([for Perl LDFLAGS])
+ netsnmp_perlldopts=`$myperl -MExtUtils::Embed -e ldopts`
+ if test "x$netsnmp_perlldopts" != "x" ; then
+ AC_MSG_RESULT([$netsnmp_perlldopts])
+ else
+ if test "x$embed_perl" = "xtry" ; then
+ embed_perl="no"
+ else
+ AC_MSG_ERROR([Could not determine the linker options that were used to build $myperl. Either set the environment variable PERLPROG to a different Perl binary or use --disable-embedded-perl to turn off embedded Perl functionality altogether.])
+ fi
+ fi
+ if test "x$enable_as_needed" != "xno" ; then
+ # Just-in-time linking will embed the Perl library within
+ # the Net-SNMP library (rather than the agent application)
+ #
+ PERLLDOPTS_FOR_LIBS="$netsnmp_perlldopts"
+ # Perl ccdlflags (RPATH to libperl, hopefully)
+ #
+ AC_MSG_CHECKING([for Perl CCDLFLAGS])
+ changequote(, )
+ netsnmp_perlccdlflags=`$myperl -V:ccdlflags | $myperl -n -e 'print $1 '"if (/^\s*ccdlflags='([^']+)';/);"`
+ changequote([, ])
+ AC_MSG_RESULT([$netsnmp_perlccdlflags])
+ PERLLDOPTS_FOR_APPS="$netsnmp_perlccdlflags"
+ else
+ # Otherwise embed the Perl library within the application
+ #
+ PERLLDOPTS_FOR_LIBS="$netsnmp_perlldopts"
+ # link *applications* against libperl
+ PERLLDOPTS_FOR_APPS="$netsnmp_perlldopts"
+ fi
+fi
+
+# 'Perl_eval_pv' function (and equivalents)
+#
+if test "x$embed_perl" != "xno" ; then
+ # Three possible versions of this routine:
+ # eval_pv (to 5.003_97d)
+ # perl_eval_pv (5.004/5.005)
+ # Perl_eval_pv (from 5.6ff)
+ #
+ OLDLIBS="$LIBS"
+ LIBS="$LIBS $netsnmp_perlldopts"
+ AC_CHECK_FUNCS(eval_pv)
+ AC_CHECK_FUNC(perl_eval_pv,
+ AC_DEFINE(HAVE_PERL_EVAL_PV_LC, 1,
+ [Define to 1 if you have `the perl_eval_pv' function.]))
+ AC_CHECK_FUNC(Perl_eval_pv,
+ AC_DEFINE(HAVE_PERL_EVAL_PV_UC, 1,
+ [Define to 1 if you have the `Perl_eval_pv' function.]))
+ LIBS="$OLDLIBS"
+ #
+ # Note that autoconf flattens case when defining tokens,
+ # so we need to explicitly distinguish between the latter two.
+
+ if test "x$ac_cv_func_perl_eval_pv" != "xyes" -a "x$ac_cv_func_Perl_eval_pv" != "xyes" -a "x$ac_cv_func_eval_pv" != "xyes" ; then
+ if test "x$embed_perl" = "xtry" ; then
+ embed_perl="no"
+ else
+ AC_MSG_ERROR([Could not find the eval_pv, perl_eval_pv or Perl_eval_pv functions needed for embedded Perl support. Either set the environment variable PERLPROG to a different perl binary or use --disable-embedded-perl to turn off embedded Perl functionality altogether.])
+ fi
+ else
+ # Activate Embedded Perl
+ #
+ AC_DEFINE(NETSNMP_EMBEDDED_PERL, 1,
+ [Define if you are embedding perl in the main agent.])
+ OTHERAGENTLIBOBJS="snmp_perl.o"
+ OTHERAGENTLIBLOBJS="snmp_perl.lo"
+ OTHERAGENTLIBLFTS="snmp_perl.ft"
+
+ EMBEDPERLINSTALL="embedperlinstall"
+ EMBEDPERLUNINSTALL="embedperluninstall"
+ embed_perl="yes"
+ fi
+else
+ EMBEDPERLINSTALL=""
+ EMBEDPERLUNINSTALL=""
+ embed_perl="no"
+ fi
+fi
+
+
+##
+# Report and configure results
+##
+
+AC_SUBST(EMBEDPERLINSTALL)
+AC_SUBST(EMBEDPERLUNINSTALL)
+AC_SUBST(PERLLDOPTS_FOR_LIBS)
+AC_SUBST(PERLLDOPTS_FOR_APPS)
+
+# Results of Embedded Perl checks
+#
+AC_MSG_CHECKING([for potential embedded Perl support])
+if test "x$embed_perl" != "xyes" ; then
+ AC_MSG_CACHE_ADD(Embedded Perl support: disabled)
+ AC_MSG_RESULT([disabled])
+else
+ AC_MSG_CACHE_ADD(Embedded Perl support: enabled)
+ AC_MSG_RESULT([enabled])
+fi
+
+# Results of Perl Module checks
+#
+PERLTARGS=""
+PERLINSTALLTARGS=""
+PERLUNINSTALLTARGS=""
+PERLFEATURES=""
+AC_MSG_CHECKING([if we can install the Perl modules])
+if test "x$install_perl" = "xyes" ; then
+ PERLTARGS="perlmodules"
+ PERLINSTALLTARGS="perlinstall"
+ PERLUNINSTALLTARGS="perluninstall"
+ PERLFEATURES="perlfeatures"
+ if test "x$embed_perl" = "xyes" ; then
+ AC_MSG_CACHE_ADD(SNMP Perl modules: building -- embeddable)
+ AC_MSG_RESULT([yes -- and embeddable])
+ else
+ AC_MSG_CACHE_ADD(SNMP Perl modules: building -- not embeddable)
+ AC_MSG_RESULT([yes -- not embeddable])
+ fi
+else
+ AC_MSG_RESULT([no])
+ AC_MSG_CACHE_ADD(SNMP Perl modules: disabled)
+fi
+AC_SUBST(PERLTARGS)
+AC_SUBST(PERLINSTALLTARGS)
+AC_SUBST(PERLUNINSTALLTARGS)
+AC_SUBST(PERLARGS)
+AC_SUBST(PERLFEATURES)
+
+
+# Reset LIBS to pre-libwrap value (???)
+#
+AGENTLIBS=$LIBS
+LIBS=$NONAGENTLIBS
+
+
+
+##
+# Python checks
+##
+
+PYTHONTARGS=""
+PYTHONINSTALLTARGS=""
+PYTHONUNINSTALLTARGS=""
+PYTHONCLEANTARGS=""
+PYTHONFEATURES=""
+AC_MSG_CHECKING([if we should install the python bindings])
+if test "x$install_python" = "xyes" ; then
+ PYTHONTARGS="pythonmodules"
+ PYTHONINSTALLTARGS="pythoninstall"
+ PYTHONUNINSTALLTARGS="pythonuninstall"
+ PYTHONCLEANTARGS="pythonclean"
+ PYTHONFEATURES="pythonfeatures"
+ AC_MSG_CACHE_ADD(SNMP Python modules: building for $PYTHONPROG)
+ AC_MSG_RESULT([yes])
+else
+ AC_MSG_CACHE_ADD(SNMP Python modules: disabled)
+ AC_MSG_RESULT([no])
+fi
+AC_SUBST(PYTHONTARGS)
+AC_SUBST(PYTHONINSTALLTARGS)
+AC_SUBST(PYTHONUNINSTALLTARGS)
+AC_SUBST(PYTHONCLEANTARGS)
+AC_SUBST(PYTHONARGS)
+AC_SUBST(PYTHONFEATURES)
+
+