From b598ba3f2d4b8347c6621cff022b8e2329b79ea5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= Date: Wed, 3 Jul 2013 11:01:02 +0200 Subject: [PATCH] Link XS modules to libperl.so with EU::CBuilder on Linux MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Petr Písař --- MANIFEST | 1 + .../lib/ExtUtils/CBuilder/Platform/linux.pm | 26 ++++++++++++++++++++++ 2 files changed, 27 insertions(+) create mode 100644 dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/linux.pm diff --git a/MANIFEST b/MANIFEST index 397252a..d7c519b 100644 --- a/MANIFEST +++ b/MANIFEST @@ -3093,6 +3093,7 @@ dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/aix.pm CBuilder methods fo dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/cygwin.pm CBuilder methods for cygwin dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/darwin.pm CBuilder methods for darwin dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/dec_osf.pm CBuilder methods for OSF +dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/linux.pm CBuilder methods for Linux dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/os2.pm CBuilder methods for OS/2 dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/Unix.pm CBuilder methods for Unix dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/VMS.pm CBuilder methods for VMS diff --git a/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/linux.pm b/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/linux.pm new file mode 100644 index 0000000..e3251c4 --- /dev/null +++ b/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/linux.pm @@ -0,0 +1,26 @@ +package ExtUtils::CBuilder::Platform::linux; + +use strict; +use ExtUtils::CBuilder::Platform::Unix; +use File::Spec; + +use vars qw($VERSION @ISA); +$VERSION = '0.280206'; +@ISA = qw(ExtUtils::CBuilder::Platform::Unix); + +sub link { + my ($self, %args) = @_; + my $cf = $self->{config}; + + # Link XS modules to libperl.so explicitly because multiple + # dlopen(, RTLD_LOCAL) hides libperl symbols from XS module. + local $cf->{lddlflags} = $cf->{lddlflags}; + if ($ENV{PERL_CORE}) { + $cf->{lddlflags} .= ' -L' . $self->perl_inc(); + } + $cf->{lddlflags} .= ' -lperl'; + + return $self->SUPER::link(%args); +} + +1; -- 1.8.1.4