From f55b546a261651ad76a2a339768a599a4d84b4f5 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 | 25 +++++++++++++++++++++++++ 2 files changed, 26 insertions(+) create mode 100644 lib/ExtUtils/CBuilder/Platform/linux.pm diff --git a/MANIFEST b/MANIFEST index fdc8bd9..a7de63a 100644 --- a/MANIFEST +++ b/MANIFEST @@ -25,6 +25,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..823f852 --- /dev/null +++ b/lib/ExtUtils/CBuilder/Platform/linux.pm @@ -0,0 +1,25 @@ +package ExtUtils::CBuilder::Platform::linux; + +use strict; +use ExtUtils::CBuilder::Platform::Unix; +use File::Spec; + +our $VERSION = '0.280230'; +our @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; -- 2.13.6