Remove further unwanted linker flags from perl_embed_ldflags
authorPeter Eisentraut <[email protected]>
Tue, 23 Aug 2022 14:00:38 +0000 (16:00 +0200)
committerPeter Eisentraut <[email protected]>
Tue, 23 Aug 2022 14:27:24 +0000 (16:27 +0200)
Remove the contents of $Config{ldflags} from ExtUtils::Embed's ldopts,
like we already do with $Config{ccdlflags}.  Those flags are the
choices of those who built the Perl installation, which are not
necessarily appropriate for building PostgreSQL.  What we really want
from ldopts are the options identifying the location and name of the
libperl library, but unfortunately it doesn't appear possible to get
that separately from the other stuff.

The motivation for this was to strip -mmacosx-version-min options.  We
already did something similar for the -arch option.  Both of those are
now covered by this more general approach.

Reviewed-by: Tom Lane <[email protected]>
Reviewed-by: Andres Freund <[email protected]>
Discussion: https://www.postgresql.org/message-id/flat/8c4fcb72-2574-ff7c-4c25-1f032d4a2a57%40enterprisedb.com

config/perl.m4
configure

index c823fc8cf07376d7816ca0f91a2fac17c21190d8..c9fd91397c22a6007c362d91e822b48abb5b2a1f 100644 (file)
@@ -81,9 +81,9 @@ AC_MSG_RESULT([$perl_embed_ccflags])
 # 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.)
+# Config's ccdlflags and ldflags.  (Those are the choices of those who
+# built the Perl installation, which are not necessarily appropriate
+# for building PostgreSQL.)
 AC_DEFUN([PGAC_CHECK_PERL_EMBED_LDFLAGS],
 [AC_REQUIRE([PGAC_PATH_PERL])
 AC_MSG_CHECKING(for flags to link embedded Perl)
@@ -99,8 +99,8 @@ if test "$PORTNAME" = "win32" ; then
        fi
 else
        pgac_tmp1=`$PERL -MExtUtils::Embed -e ldopts`
-       pgac_tmp2=`$PERL -MConfig -e 'print $Config{ccdlflags}'`
-       perl_embed_ldflags=`echo X"$pgac_tmp1" | sed -e "s/^X//" -e "s%$pgac_tmp2%%" -e ["s/ -arch [-a-zA-Z0-9_]*//g"]`
+       pgac_tmp2=`$PERL -MConfig -e 'print "$Config{ccdlflags} $Config{ldflags}"'`
+       perl_embed_ldflags=`echo X"$pgac_tmp1" | sed -e "s/^X//" -e "s%$pgac_tmp2%%"`
 fi
 AC_SUBST(perl_embed_ldflags)dnl
 if test -z "$perl_embed_ldflags" ; then
index 4bd050008bab3c1450a272a0b84128ad87859fcc..814014a96b1c158326576eba1fce08a9fba94092 100755 (executable)
--- a/configure
+++ b/configure
@@ -10477,8 +10477,8 @@ if test "$PORTNAME" = "win32" ; then
        fi
 else
        pgac_tmp1=`$PERL -MExtUtils::Embed -e ldopts`
-       pgac_tmp2=`$PERL -MConfig -e 'print $Config{ccdlflags}'`
-       perl_embed_ldflags=`echo X"$pgac_tmp1" | sed -e "s/^X//" -e "s%$pgac_tmp2%%" -e "s/ -arch [-a-zA-Z0-9_]*//g"`
+       pgac_tmp2=`$PERL -MConfig -e 'print "$Config{ccdlflags} $Config{ldflags}"'`
+       perl_embed_ldflags=`echo X"$pgac_tmp1" | sed -e "s/^X//" -e "s%$pgac_tmp2%%"`
 fi
 if test -z "$perl_embed_ldflags" ; then
        { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5