Suppress -arch switches in the output of ExtUtils::Embed.
authorTom Lane <[email protected]>
Tue, 14 Jun 2011 21:13:58 +0000 (17:13 -0400)
committerTom Lane <[email protected]>
Tue, 14 Jun 2011 21:13:58 +0000 (17:13 -0400)
We previously found out that OS X's standard perl installation tries to put
-arch switches into Perl link commands, evidently in hopes of building
universal binaries.  But it doesn't work to add such switches in plperl's
link step if they weren't being used earlier, so this is basically
unworkable.  When using gcc the result is only some warnings; but LLVM
fails entirely, so this issue isn't as cosmetic as we originally thought.
Hence, back-patch commit d69a419e682c2d39c2355105a7e5e2b90357c8f0 into
pre-9.0 branches.

config/perl.m4
configure

index 6ca8b524fa700187b3097cbc1e003d6c0af00252..fa216f672a06c5ae91cb54d78efc7671f8dd846c 100644 (file)
@@ -25,12 +25,16 @@ AC_DEFUN([PGAC_CHECK_PERL_CONFIGS],
 
 # PGAC_CHECK_PERL_EMBED_LDFLAGS
 # -----------------------------
+# We are after Embed's ldopts, but without the subset mentioned in
+# Config's ccdlflags; and also without any -arch flags, which recent
+# Apple releases put in unhelpfully.  (If you want a multiarch build
+# you'd better be specifying it in more places than plperl's final link.)
 AC_DEFUN([PGAC_CHECK_PERL_EMBED_LDFLAGS],
 [AC_REQUIRE([PGAC_PATH_PERL])
 AC_MSG_CHECKING(for flags to link embedded Perl)
 pgac_tmp1=`$PERL -MExtUtils::Embed -e ldopts`
 pgac_tmp2=`$PERL -MConfig -e 'print $Config{ccdlflags}'`
-perl_embed_ldflags=`echo X"$pgac_tmp1" | sed "s/^X//;s%$pgac_tmp2%%"`
+perl_embed_ldflags=`echo X"$pgac_tmp1" | sed -e "s/^X//" -e "s%$pgac_tmp2%%" -e ["s/ -arch [-a-zA-Z0-9_]*//g"]`
 AC_SUBST(perl_embed_ldflags)dnl
 if test -z "$perl_embed_ldflags" ; then
        AC_MSG_RESULT(no)
index 248b52cd85054e1fc1da8cb1c5254290a25e06ec..628b331a6fcb7ddf6d8cc464b2af19d996c267e8 100755 (executable)
--- a/configure
+++ b/configure
@@ -6808,7 +6808,7 @@ echo "${ECHO_T}$perl_useshrplib" >&6; }
 echo $ECHO_N "checking for flags to link embedded Perl... $ECHO_C" >&6; }
 pgac_tmp1=`$PERL -MExtUtils::Embed -e ldopts`
 pgac_tmp2=`$PERL -MConfig -e 'print $Config{ccdlflags}'`
-perl_embed_ldflags=`echo X"$pgac_tmp1" | sed "s/^X//;s%$pgac_tmp2%%"`
+perl_embed_ldflags=`echo X"$pgac_tmp1" | sed -e "s/^X//" -e "s%$pgac_tmp2%%" -e "s/ -arch [-a-zA-Z0-9_]*//g"`
 if test -z "$perl_embed_ldflags" ; then
        { echo "$as_me:$LINENO: result: no" >&5
 echo "${ECHO_T}no" >&6; }