File Coverage

blib/lib/ExtUtils/Builder/Linker/ELF/Any.pm
Criterion Covered Total %
statement 23 24 95.8
branch 8 12 66.6
condition 5 8 62.5
subroutine 5 5 100.0
pod 0 1 0.0
total 41 50 82.0


line stmt bran cond sub pod time code
1             package ExtUtils::Builder::Linker::ELF::Any;
2             $ExtUtils::Builder::Linker::ELF::Any::VERSION = '0.037';
3 3     3   98676 use strict;
  3         3  
  3         80  
4 3     3   16 use warnings;
  3         8  
  3         116  
5              
6 3     3   308 use parent 'ExtUtils::Builder::Linker::Unixy';
  3         245  
  3         12  
7              
8             sub _init {
9 5     5   13 my ($self, %args) = @_;
10 5   50     14 $args{ld} //= ['cc'];
11 5 100 33     30 $args{export} //= $args{type} eq 'executable' ? 'none' : 'all';
12 5         22 $self->SUPER::_init(%args);
13 5 50       15 $self->{ccdlflags} = defined $args{ccdlflags} ? $args{ccdlflags} : Carp::croak('');
14 5 50       9 $self->{lddlflags} = defined $args{lddlflags} ? $args{lddlflags} : Carp::croak('');
15 5         29 return;
16             }
17              
18             sub linker_flags {
19 5     5 0 10 my ($self, $from, $to, %args) = @_;
20 5         17 my @ret = $self->SUPER::linker_flags($from, $to, %args);
21              
22 5         14 my $type = $self->type;
23 5 100 100     30 if ($type eq 'shared-library' or $type eq 'loadable-object') {
    50          
24 3         7 push @ret, $self->new_argument(ranking => 10, value => $self->{lddlflags});
25             }
26             elsif ($type eq 'executable') {
27 2 50       12 push @ret, $self->new_argument(ranking => 10, value => $self->{ccdlflags}) if $self->export eq 'all';
28             }
29             else {
30 0         0 croak("Unknown linkage type $type");
31             }
32 5         22 return @ret;
33             }
34              
35             1;