Re: Strip -mmacosx-version-min options from plperl build
Peter Eisentraut <peter.eisentraut@enterprisedb.com>
From: Peter Eisentraut <peter.eisentraut@enterprisedb.com>
To: Tom Lane <tgl@sss.pgh.pa.us>
Cc: pgsql-hackers <pgsql-hackers@postgresql.org>
Date: 2022-08-24T10:12:15Z
Lists: pgsql-hackers
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.
Commits
-
mingw: Define PGDLLEXPORT as __declspec (dllexport) as done for msvc
- 0e497eadb1f4 16.0 landed
-
Fix PL/Perl build on Cygwin
- 1c3aa54502dd 16.0 landed
-
Remove further unwanted linker flags from perl_embed_ldflags
- b4e936859dc4 16.0 landed