From 68eb6e29b5e5c001c172897fefdcf689b4cd5657 Mon Sep 17 00:00:00 2001 From: P. J. McDermott Date: Tue, 03 Jan 2017 20:29:26 -0500 Subject: Makefile.PL: New file --- (limited to 'Makefile.PL') diff --git a/Makefile.PL b/Makefile.PL new file mode 100644 index 0000000..325a283 --- /dev/null +++ b/Makefile.PL @@ -0,0 +1,90 @@ +# Makefile.PL - Makefile generator +# +# Copyright (C) 2016 Libiquity LLC +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +use strict; +use warnings; + +use ExtUtils::MakeMaker; + +my %mm_args; + +sub parse_use +{ + my ($file) = @_; + my $fh; + my $line; + my $prereqs = {}; + + open($fh, "<", $file); + while ($line = readline($fh)) { + chomp($line); + if ($line =~ s|^use ([A-Z][A-Za-z0-9_:]*) *.*;$|$1|) { + if ($line =~ m/^Math::FastPPDecimal/) { + } else { + %$prereqs = (%$prereqs, $line => 0); + } + } + } + close($fh); + + return $prereqs; +} + +sub find_prereqs +{ + my ($file_pattern) = @_; + my $manifest_fh; + my $file; + my $prereqs = {}; + + open($manifest_fh, "<", "MANIFEST"); + while ($file = readline($manifest_fh)) { + chomp($file); + if ($file =~ $file_pattern) { + $file = parse_use($file); + %$prereqs = (%$prereqs, %$file); + } + } + close($manifest_fh); + + return $prereqs; +} + +%mm_args = ( + "NAME" => "Math::FastPPDecimal", + "VERSION" => "0.001", + "AUTHOR" => "Patrick McDermott ", + "PREREQ_PM" => find_prereqs(qr{^(bin|lib)/}), +); + +if (eval {ExtUtils::MakeMaker->VERSION("6.64");}) { + # 6.64 <= MM + $mm_args{"TEST_REQUIRES"} = find_prereqs(qr{^t/}); +} elsif (eval {ExtUtils::MakeMaker->VERSION("6.5503");}) { + # 6.5503 <= MM < 6.64 + $mm_args{"BUILD_REQUIRES"} = find_prereqs(qr{^t/}); +} else { + # MM < 6.5503 + $mm_args{"PREREQ_PM"} = { + $mm_args{"PREREQ_PM"}, + find_prereqs(qr{^t/}), + }; +} + +WriteMakefile( + %mm_args +); -- cgit v0.9.1