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.036';
3 3     3   113188 use strict;
  3         6  
  3         122  
4 3     3   40 use warnings;
  3         6  
  3         156  
5              
6 3     3   504 use parent 'ExtUtils::Builder::Linker::Unixy';
  3         396  
  3         18  
7              
8             sub _init {
9 5     5   17 my ($self, %args) = @_;
10 5   50     18 $args{ld} //= ['cc'];
11 5 100 33     38 $args{export} //= $args{type} eq 'executable' ? 'none' : 'all';
12 5         32 $self->SUPER::_init(%args);
13 5 50       54 $self->{ccdlflags} = defined $args{ccdlflags} ? $args{ccdlflags} : Carp::croak('');
14 5 50       15 $self->{lddlflags} = defined $args{lddlflags} ? $args{lddlflags} : Carp::croak('');
15 5         16 return;
16             }
17              
18             sub linker_flags {
19 5     5 0 17 my ($self, $from, $to, %args) = @_;
20 5         27 my @ret = $self->SUPER::linker_flags($from, $to, %args);
21              
22 5         28 my $type = $self->type;
23 5 100 100     33 if ($type eq 'shared-library' or $type eq 'loadable-object') {
    50          
24 3         10 push @ret, $self->new_argument(ranking => 10, value => $self->{lddlflags});
25             }
26             elsif ($type eq 'executable') {
27 2 50       13 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         30 return @ret;
33             }
34              
35             1;