/usr/share/perl5/Inline/MakeMaker.pm is in libinline-perl 0.80-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 | package Inline::MakeMaker;
use strict;
use base 'Exporter';
use ExtUtils::MakeMaker();
use Carp;
our @EXPORT = qw(WriteMakefile WriteInlineMakefile);
our $VERSION = '0.80';
sub WriteInlineMakefile {
carp <<EOF;
======================== DEPRECATION ALERT ======================
WriteInlineMakefile was deprecated in 2002. This warning is from 2014.
WriteInlineMakefile will soon be removed. Please change this Makefile.PL
to use WriteMakefile instead.
========================== MESSAGE ENDS =========================
EOF
goto &WriteMakefile;
}
sub WriteMakefile {
my %args = @_;
my $name = $args{NAME}
or croak "Inline::MakeMaker::WriteMakefile requires the NAME parameter\n";
my $version = '';
croak <<END unless (defined $args{VERSION} or defined $args{VERSION_FROM});
Inline::MakeMaker::WriteMakefile requires either the VERSION or VERSION_FROM
parameter.
END
if (defined $args{VERSION}) {
$version = $args{VERSION};
}
else {
$version = ExtUtils::MM_Unix->parse_version($args{VERSION_FROM})
or croak "Can't determine version for $name\n";
}
croak <<END unless $version =~ /^\d\.\d\d$/;
Invalid version '$version' for $name.
Must be of the form '#.##'. (For instance '1.23')
END
# Provide a convenience rule to clean up Inline's messes
$args{clean} = { FILES => "_Inline *.inl " }
unless defined $args{clean};
# Add Inline to the dependencies
$args{PREREQ_PM}{Inline} = '0.44' unless defined $args{PREREQ_PM}{Inline};
my $mm = &ExtUtils::MakeMaker::WriteMakefile(%args);
my (@objects, @obj_rules);
if (@{$mm->{PMLIBDIRS}} && $mm->{PM}) {
# Sort them longest first so we'll match subdirectories before their parents
my @libdirs = sort { length($b) <=> length($a) } @{$mm->{PMLIBDIRS}};
for my $path (keys %{$mm->{PM}}) {
for my $lib (@libdirs) {
if (index($path,$lib) == 0) {
my ($vol, $dirs, $file) = File::Spec->splitpath(substr($path, length($lib)+1));
my @dirs = File::Spec->splitdir($dirs);
pop @dirs unless length($dirs[$#dirs]);
next unless ($file =~ /.pm$/);
$file =~ s/\.[^.]+$//;
push @objects, join('::', @dirs, $file);
push @obj_rules, join('-', @dirs, "$file.inl");
last;
}
croak "Failed to find module path for '$path'";
}
}
} else {
# no modules found in PMLIBDIRS so assume we've just got $name to do
@objects = $name;
$name =~ s/::/-/g;
@obj_rules = ("$name.inl");
}
if (@objects) {
open MAKEFILE, '>> Makefile'
or croak "Inline::MakeMaker::WriteMakefile can't append to Makefile:\n$!";
print MAKEFILE <<MAKEFILE;
# Well, not quite. Inline::MakeMaker is adding this:
# --- MakeMaker inline section:
MAKEFILE
for (0..$#objects) {
# the subdivision in hashes is done to avoid {}, which break dmake
print MAKEFILE <<MAKEFILE;
$obj_rules[$_] : pm_to_blib
\t\$(PERL) -Mblib -MInline=NOISY,_INSTALL_ -M$objects[$_] -e"my %A = (modinlname => '$obj_rules[$_]', module => '$objects[$_]'); my %S = (API => \\%A); Inline::satisfy_makefile_dep(\\%S);" $version \$(INST_ARCHLIB)
MAKEFILE
}
print MAKEFILE "\ndynamic :: ",join(' ',@obj_rules),"\n";
print MAKEFILE <<MAKEFILE;
# The End is here.
MAKEFILE
close MAKEFILE;
}
}
1;
|