This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
0942b3c2036fb9296af0829e60b20c1959edea16
[perl5.git] / dist / ExtUtils-CBuilder / lib / ExtUtils / CBuilder / Platform / android.pm
1 package ExtUtils::CBuilder::Platform::android;
2 $ExtUtils::CBuilder::Platform::android::VERSION = '0.280223';
3 use strict;
4 use File::Spec;
5 use ExtUtils::CBuilder::Platform::Unix;
6 use Config;
7
8 use vars qw(@ISA);
9 @ISA = qw(ExtUtils::CBuilder::Platform::Unix);
10
11 # The Android linker will not recognize symbols from
12 # libperl unless the module explicitly depends on it.
13 sub link {
14   my ($self, %args) = @_;
15
16   if ($self->{config}{useshrplib} eq 'true') {
17     $args{extra_linker_flags} = [
18       $self->split_like_shell($args{extra_linker_flags}),
19       '-L' . $self->perl_inc(),
20       '-lperl',
21       $self->split_like_shell($Config{perllibs}),
22     ];
23   }
24
25   # Several modules on CPAN rather rightfully expect being
26   # able to pass $so_file to DynaLoader::dl_load_file and
27   # have it Just Work.  However, $so_file will more likely
28   # than not be a relative path, and unless the module 
29   # author subclasses MakeMaker/Module::Build to modify
30   # LD_LIBRARY_PATH, which would be insane, Android's linker
31   # won't find the .so
32   # So we make this all work by returning an absolute path.
33   my($so_file, @so_tmps) = $self->SUPER::link(%args);
34   $so_file = File::Spec->rel2abs($so_file);
35   return wantarray ? ($so_file, @so_tmps) : $so_file;
36 }
37
38 1;