This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
(perl #132876) define API macros on if the NEED_ macro is defined
[perl5.git] / dist / Storable / Storable.pm.PL
1 use strict;
2 use warnings;
3
4 use Config;
5
6 my $template;
7 {       # keep all the code in an external template to keep it easy to update
8         local $/;
9         open my $FROM, '<', '__Storable__.pm' or die $!;
10         $template = <$FROM>;
11         close $FROM or die $!;
12 }
13
14 sub CAN_FLOCK {
15         return
16                 $Config{'d_flock'} ||
17                 $Config{'d_fcntl_can_lock'} ||
18                 $Config{'d_lockf'}
19                 ? 1 : 0;
20 }
21
22 my $CAN_FLOCK = CAN_FLOCK();
23
24 # populate the sub and preserve it if used outside
25 $template =~ s{^sub CAN_FLOCK;.*$}{sub CAN_FLOCK { ${CAN_FLOCK} } # computed by Storable.pm.PL}m;
26 # alternatively we could remove the sub
27 #$template =~ s{^sub CAN_FLOCK;.*$}{}m;
28 # replace local function calls to hardcoded value
29 $template =~ s{&CAN_FLOCK}{${CAN_FLOCK}}g;
30
31 {
32         open my $OUT, '>', 'Storable.pm' or die $!;
33         print {$OUT} $template or die $!;
34         close $OUT or die $!;
35 }