# OVERVIEW
#
# Set up for building SWIG bindings. Note that shipped tarballs contain pre-built
# SWIG bindings, so there should be no need for SWIG on non-developer machines.
# SYNOPSIS
#
# Find perl and SWIG, and substitute PERL_INC, the -I command that will lead the compiler
# to perl.h and friends.
#
# Supports --with-perlextlibs, for adding extra LIBS declarations to perl extensions.
#
AC_DEFUN([AMANDA_SETUP_SWIG],
[
AC_REQUIRE([AMANDA_PROG_SWIG])
AC_REQUIRE([AMANDA_PROG_PERL])
WANT_CYGWIN_COPY_PERL_DLL=false
WANT_MANDATORY_THREAD_CHECK=false
# test for ExtUtils::Embed
AC_PERL_MODULE_VERSION([ExtUtils::Embed 0.0], [], [
AC_MSG_ERROR([*** Amanda requires the perl package ExtUtils::Embed to build its perl modules])
])
# get the include path for building perl extensions
PERL_INC=`$PERL -MExtUtils::Embed -e perl_inc`
AC_SUBST(PERL_INC)
if test x"$enable_shared" = x"no"; then
AC_MSG_ERROR([*** Amanda cannot be compiled without shared-library support (do not use --disable-shared)])
fi
case "$host" in
*freebsd@<:@123456@:>@.*) # up to and including FreeBSD 6.*
# Before 7.0, FreeBSD systems don't include a DT_NEEDS segment in
# libgthread to automatically pull in the desired threading library.
# Instead, they assume that any application linking against
# libgthread will pull in the threading library. This is fine for
# Amanda C applications, but for Perl applications this assumption
# means that the perl binary would pull in the threading library.
# But perl is compiled without threading by default.
#
# Specifically, this occurs on any FreeBSD using gcc-3.*: the linking
# decision is made in gcc's spec files, which were changed in
# gcc-4.0. For a more in-depth discussion, see
# http://wiki.zmanda.com/index.php/Installation/OS_Specific_Notes/Installing_Amanda_on_FreeBSD
#
# The easiest solution for the "default" case is to link all perl
# extension libraries against the threading library, so it is loaded
# when perl loads the extension library. The default threading
# library in FreeBSD is libpthread. The below default will work on
# such a FreeBSD system, but ports maintainers and those with
# different configurations may need to override this value with
# --with-perlextlibs.
#
# We can't use -pthread because gcc on FreeBSD ignores -pthread in
# combination with -shared. See
# http://lists.freebsd.org/pipermail/freebsd-stable/2006-June/026229.html
PERLEXTLIBS="-lpthread"
WANT_MANDATORY_THREAD_CHECK=true
;;
*freebsd*) # all FreeBSD not matched above
# for all FreeBSD (including 1.0-6.0, above), we want to run the
# thread-check rule in perl/Makefile.am to double-check that a Perl
# script can call a C extension that uses threads.
WANT_MANDATORY_THREAD_CHECK=true
;;
*-pc-cygwin)
# When need -lperl and the '-L' where it is located,
# we don't want the DynaLoader.a
PERLEXTLIBS=`perl -MExtUtils::Embed -e ldopts | sed -e 's/^.*-L/-L/'`
# we want cygwin to copy ddl to modules directory.
WANT_CYGWIN_COPY_PERL_DLL="true";
;;
esac
AM_CONDITIONAL(WANT_CYGWIN_COPY_PERL_DLL,$WANT_CYGWIN_COPY_PERL_DLL)
AM_CONDITIONAL(WANT_MANDATORY_THREAD_CHECK,$WANT_MANDATORY_THREAD_CHECK)
AC_ARG_WITH(perlextlibs,
AC_HELP_STRING([--with-perlextlibs=libs],[extra LIBS for Perl extensions]),
[
case "$withval" in
y|ye|yes) AC_MSG_ERROR([*** You must specify a value for --with-perlextlibs]);;
n|no) PERLEXTLIBS='';;
*) PERLEXTLIBS="$withval" ;;
esac
])
AC_SUBST(PERLEXTLIBS)
])