File Coverage

blib/lib/Alien/SWIProlog/Util.pm
Criterion Covered Total %
statement 17 22 77.2
branch 0 6 0.0
condition n/a
subroutine 6 7 85.7
pod 0 3 0.0
total 23 38 60.5


line stmt bran cond sub pod time code
1             package Alien::SWIProlog::Util;
2             # ABSTRACT: Utilities for SWI-Prolog configuration
3             $Alien::SWIProlog::Util::VERSION = '0.001_02'; # TRIAL
4             $Alien::SWIProlog::Util::VERSION = '0.00102';
5 1     1   6 use Capture::Tiny qw(capture_stdout);
  1         1  
  1         65  
6 1     1   5 use File::Spec;
  1         2  
  1         63  
7              
8 1         394 use constant SWIPL_ARGS => qw(
9             --dump-runtime-variables
10             -dump-runtime-variables
11 1     1   9 );
  1         1  
12              
13             sub get_plvars {
14 1     1 0 47860 my ($pl_bin) = @_;
15 1         15 for my $arg ( SWIPL_ARGS() ) {
16             my ($out, $exit) = capture_stdout {
17 1     1   27584 system( $pl_bin, $arg );
18 1         31 };
19 1         1440 my $plvars = parse_plvars($out);
20 1         30 return $plvars;
21             }
22             }
23              
24             sub plvars_to_props {
25 0     0 0 0 my ($pl, $plvars) = @_;
26              
27             # older swipl have PLLDFLAGS but no PLLIBDIR
28 0         0 my $gen_PLLIBDIR;
29 0 0       0 if( ! exists $plvars->{PLLIBDIR} ) {
30             $gen_PLLIBDIR = File::Spec->catfile(
31             $plvars->{PLBASE},
32             'lib',
33             $plvars->{PLARCH}, )
34 0         0 }
35              
36             return +{
37             'swipl-bin' => $pl,
38             home => $plvars->{PLBASE},
39             cflags => "-I$plvars->{PLBASE}/include",
40             libs => ( exists $plvars->{PLLIBDIR}
41             ? join(' ', "-L$plvars->{PLLIBDIR}", $plvars->{PLLIB})
42             : join(' ', "-L$gen_PLLIBDIR", $plvars->{PLLDFLAGS}, $plvars->{PLLIB}),
43             ),
44             rpath => [
45             ( exists $plvars->{PLLIBDIR}
46             ? $plvars->{PLLIBDIR}
47 0 0       0 : $gen_PLLIBDIR
    0          
48             )
49             ],
50             _PLVARS => $plvars,
51             }
52             }
53              
54             sub parse_plvars {
55 1     1 0 5 my ($pl_dump_output) = @_;
56 1         108 return +{ $pl_dump_output =~ /^(PL.*?)="(.*)";$/mg };
57             }
58              
59             1;
60              
61             __END__