File Coverage

blib/lib/RPerl/Inline.pm
Criterion Covered Total %
statement 9 9 100.0
branch n/a
condition n/a
subroutine 3 3 100.0
pod n/a
total 12 12 100.0


line stmt bran cond sub pod time code
1             # [[[ HEADER ]]]
2             package RPerl::Inline;
3 9     9   58 use strict;
  9         22  
  9         244  
4 9     9   51 use warnings;
  9         21  
  9         377  
5             our $VERSION = 0.001_400;
6              
7             #use RPerl; # ERROR: Too late to run INIT block at ...
8             #use Config;
9 9     9   50 use RPerl::Config; # for $RPerl::DEBUG
  9         17  
  9         2657  
10              
11             # long form
12             #use Inline CPP => config => classes =>
13             #sub {
14             # my $class = shift;
15             # my @class_split = split('__', $class);
16             # my $class_join = join('::', @class_split);
17             # return($class_join);
18             #};
19              
20             # short form
21             #use Inline CPP => config => classes => sub { join('::', split('__', shift)); };
22              
23             # DEV NOTE, CORRELATION #rp011: replace -std=c++0x w/ -std=c++11 for std::string::pop_back()
24             # DEV NOTE: move ccflags outside %ARGS, make individual modules compose ccflags with possible cppflags right before calling Inline
25             #our $CCFLAGSEX = '-DNO_XSLOCKS -Wno-deprecated -std=c++0x -Wno-reserved-user-defined-literal -Wno-literal-suffix';
26             #our $CCFLAGSEX = '-DNO_XSLOCKS -Wno-deprecated -std=c++11 -Wno-reserved-user-defined-literal -Wno-literal-suffix';
27             # DEV NOTE: add -Wno-unused-variable to suppress warnings in GCC v4.9
28             my $is_msvc_compiler = ($Config::Config{cc} =~ /cl/);
29              
30             our $CCFLAGSEX = $is_msvc_compiler ? '-DNO_XSLOCKS'
31             : '-Wno-unused-variable -DNO_XSLOCKS -Wno-deprecated -std=c++11 -Wno-reserved-user-defined-literal -Wno-literal-suffix';
32              
33             our %ARGS = (
34             typemaps => "$RPerl::INCLUDE_PATH/typemap.rperl",
35             # disable default '-O2 -g' (or similar) from Perl core & Makemaker
36             ($is_msvc_compiler
37             ? ()
38             : (optimize => '-O3 -fomit-frame-pointer -march=native -g')
39             ),
40              
41             # NEED UPGRADE: strip C++ incompat CFLAGS
42             # ccflags => $Config{ccflags} . ' -DNO_XSLOCKS -Wno-deprecated -std=c++0x -Wno-reserved-user-defined-literal -Wno-literal-suffix',
43             # force_build => 1, # debug use only
44             inc => "-I$RPerl::INCLUDE_PATH -Ilib",
45             build_noisy => ( $ENV{RPERL_DEBUG} or $RPerl::DEBUG ), # suppress or display actual g++ compiler commands
46             clean_after_build => 0, # used by Inline::C(PP) to cache build, also used by Inline::Filters to save Filters*.c files for use in gdb debugging
47             warnings => (((not defined $ENV{RPERL_WARNINGS}) or $ENV{RPERL_WARNINGS}) and $RPerl::WARNINGS), # suppress or display Inline warnings
48             filters => 'Preprocess',
49             auto_include => # DEV NOTE: include non-RPerl files using AUTO_INCLUDE so they are not parsed by the 'Preprocess' filter
50             [
51             # DEV NOTE, CORRELATION #rp024: sync include files in both RPerl/Inline.pm and rperlstandalone.h
52             '#include <memory>', # smart pointers for memory management
53             '#include <iostream>',
54             '#include <string>',
55             '#include <sstream>',
56             '#include <limits>',
57             '#undef seed', # fix conflict between Perl's source/internal.h & libstdc++-dev's algorithm.h; 'error: macro "seed" passed 1 arguments, but takes just 0'
58             '#include <algorithm>',
59             '#include <vector>',
60             '#include <math.h>',
61             '#include <unordered_map>', # DEV NOTE: unordered_map may require '-std=c++0x' in CCFLAGS above
62             ],
63             classes => sub { join('::', split('__', shift)); }
64             );
65              
66             1;