From 599b9b0379a45bd542c399759c244bcbc6ca077c Mon Sep 17 00:00:00 2001 From: Arnavion Date: Mon, 13 Jan 2014 18:27:32 -0800 Subject: [PATCH] configure.ac: Actually check the CFLAGS and LDFLAGS returned by ExtUtils::Embed before deciding to compile the Perl plugin. - openSUSE has ExtUtils::Embed, EXTERN.h and perl.so in the base perl package. - Fedora has ExtUtils::Embed in a separate perl-devel package. - Mageia has ExtUtils::Embed in the base perl package but EXTERN.h in a separate perl-devel package. Without this package, the compiler complains about the missing header. - Debian has ExtUtils::Embed and EXTERN.h in the base perl package but perl.so in a separate libperl-dev package. Without this package, gcc compiles successfully but complains at link-time about -lperl (ExtUtils::Embed returns '-lperl' in ldopts but it's not actually installed). configure.ac already requires ExtUtil::Embed to enable perl. To handle the case of Mageia and Debian, this change uses AC_TRY_LINK to verify that the flags returned by ExtUtils::Embed can actually be used to compile before deciding to enable the perl plugin. --- configure.ac | 31 +++++++++++++++++++------------ 1 file changed, 19 insertions(+), 12 deletions(-) diff --git a/configure.ac b/configure.ac index 9046be6a..085fbed4 100644 --- a/configure.ac +++ b/configure.ac @@ -228,22 +228,29 @@ if test "$perl" = yes; then PERL_LDFLAGS=`echo $PERL_LDFLAGS |$sedpath 's/-lc //'` AC_MSG_RESULT(ok) -# oldLIBS=$LIBS -# LIBS="$LIBS $PERL_LDFLAGS" -# AC_CHECK_FUNC(eval_pv) -# AC_CHECK_FUNC(call_pv) -# LIBS=$oldLIBS - AC_MSG_CHECKING(for perl >= 5.8.0) PERL_VER=`$perlpath -e 'print $]>= 5.008?"yes":"no"'` if test "$PERL_VER" = "yes"; then - AC_MSG_RESULT(yes) - AC_MSG_CHECKING(if perl plugin will be backward compatible) - if test "$perl_old" = "yes"; then - AC_MSG_RESULT(yes) - AC_DEFINE(OLD_PERL) + original_cflags="$CFLAGS" + original_ldflags="$LDFLAGS" + CFLAGS="$PERL_CFLAGS" + LDFLAGS="$PERL_LDFLAGS" + AC_TRY_LINK([#include +#include ], [], perl_is_usable=yes, perl_is_usable=no) + CFLAGS="$original_cflags" + LDFLAGS="$original_ldflags" + if test x$perl_is_usable = xno ; then + AC_MSG_RESULT(no) + perl=no else - AC_MSG_RESULT(no) + AC_MSG_RESULT(yes) + AC_MSG_CHECKING(if perl plugin will be backward compatible) + if test "$perl_old" = "yes"; then + AC_MSG_RESULT(yes) + AC_DEFINE(OLD_PERL) + else + AC_MSG_RESULT(no) + fi fi else AC_MSG_RESULT(no)