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.