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.002';
4 1     1   7 use Capture::Tiny qw(capture_stdout);
  1         2  
  1         44  
5 1     1   4 use File::Spec;
  1         2  
  1         45  
6              
7 1         350 use constant SWIPL_ARGS => qw(
8             --dump-runtime-variables
9             -dump-runtime-variables
10 1     1   6 );
  1         1  
11              
12             sub get_plvars {
13 1     1 0 48000 my ($pl_bin) = @_;
14 1         3 for my $arg ( SWIPL_ARGS() ) {
15             my ($out, $exit) = capture_stdout {
16 1     1   24819 system( $pl_bin, $arg );
17 1         31 };
18 1         1103 my $plvars = parse_plvars($out);
19 1         20 return $plvars;
20             }
21             }
22              
23             sub plvars_to_props {
24 0     0 0 0 my ($pl, $plvars) = @_;
25              
26             # older swipl have PLLDFLAGS but no PLLIBDIR
27 0         0 my $gen_PLLIBDIR;
28 0 0       0 if( ! exists $plvars->{PLLIBDIR} ) {
29             $gen_PLLIBDIR = File::Spec->catfile(
30             $plvars->{PLBASE},
31             'lib',
32             $plvars->{PLARCH}, )
33 0         0 }
34              
35             return +{
36             'swipl-bin' => $pl,
37             home => $plvars->{PLBASE},
38             cflags => "-I$plvars->{PLBASE}/include",
39             libs => ( exists $plvars->{PLLIBDIR}
40             ? join(' ', "-L$plvars->{PLLIBDIR}", $plvars->{PLLIB})
41             : join(' ', "-L$gen_PLLIBDIR", $plvars->{PLLDFLAGS}, $plvars->{PLLIB}),
42             ),
43             rpath => [
44             ( exists $plvars->{PLLIBDIR}
45             ? $plvars->{PLLIBDIR}
46 0 0       0 : $gen_PLLIBDIR
    0          
47             )
48             ],
49             _PLVARS => $plvars,
50             }
51             }
52              
53             sub parse_plvars {
54 1     1 0 8 my ($pl_dump_output) = @_;
55 1         57 return +{ $pl_dump_output =~ /^(PL.*?)="(.*)";$/mg };
56             }
57              
58             1;
59              
60             __END__