On 19.08.22 09:12, Peter Eisentraut wrote:
After analyzing the source code of ExtUtils::Embed's ldopts, I think we can also do this by subtracting $Config{ldflags}, since

my $linkage = "$ccdlflags $ldflags @archives $ld_or_bs";

and we really just want the $ld_or_bs part. (@archives should be empty for our uses.)

This would get rid of -mmacosx-version-min and -arch and all the things you showed, including -L/opt/local/lib, which is probably there so that the build of Perl itself could look there for things, but we don't need it.

This patch has failed on Cygwin lorikeet:

Before:

checking for flags to link embedded Perl...
-Wl,--enable-auto-import -Wl,--export-all-symbols -Wl,--enable-auto-image-base -fstack-protector-strong -L/usr/lib/perl5/5.32/x86_64-cygwin-threads/CORE -lperl -lpthread -ldl -lcrypt

After:

checking for flags to link embedded Perl... -L/usr/lib/perl5/5.32/x86_64-cygwin-threads/CORE -lperl -lpthread -ldl -lcrypt

That's as designed.  But the plperl tests fail:

CREATE EXTENSION plperl;
+ERROR: incompatible library "/home/andrew/bf/root/HEAD/inst/lib/postgresql/plperl.dll": missing magic block
+HINT:  Extension libraries are required to use the PG_MODULE_MAGIC macro.

Among the now-dropped options, we can discount -Wl,--enable-auto-import, because that is used anyway via src/template/cygwin.

So one of the options

-Wl,--export-all-symbols
-Wl,--enable-auto-image-base
-fstack-protector-strong

is needed. These options aren't used for any other shared libraries AFAICT, so nothing is clear to me.


Reply via email to