From 0c575416d2889e92c6c0d487ec2b52b45882557a 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 lib/ExtUtils/CBuilder/Platform/linux.pm diff --git a/MANIFEST b/MANIFEST index eb71c93..5be739e 100644 --- a/MANIFEST +++ b/MANIFEST @@ -24,6 +24,7 @@ lib/ExtUtils/CBuilder/Platform/android.pm lib/ExtUtils/CBuilder/Platform/cygwin.pm lib/ExtUtils/CBuilder/Platform/darwin.pm lib/ExtUtils/CBuilder/Platform/dec_osf.pm +lib/ExtUtils/CBuilder/Platform/linux.pm lib/ExtUtils/CBuilder/Platform/os2.pm t/00-have-compiler.t t/01-basic.t diff --git a/lib/ExtUtils/CBuilder/Platform/linux.pm b/lib/ExtUtils/CBuilder/Platform/linux.pm new file mode 100644 index 0000000..e3251c4 --- /dev/null +++ b/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.9.3