# 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::Decimal::FastPP", "VERSION" => "0.001", "AUTHOR" => "Patrick McDermott ", "LICENSE" => "gpl_3", "CONFIGURE_REQUIRES" => { "ExtUtils::MakeMaker" => 0, }, "PREREQ_PM" => find_prereqs(qr{^(bin|lib)/}), ); if (eval {ExtUtils::MakeMaker->VERSION("6.46");}) { $mm_args{"META_MERGE"} = { "meta-spec" => { version => 2 }, "resources" => { "homepage" => "http://www.pehjota.net/projects/decmath/", "repository" => { "type" => "git", "url" => "git://git.pehjota.net/decmath/Math-Decimal-FastPP.git", "web" => "http://git.pehjota.net/decmath/Math-Decimal-FastPP.git/", }, }, }; } 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 );