summaryrefslogtreecommitdiffstats
path: root/Makefile.PL
diff options
context:
space:
mode:
authorP. J. McDermott <pj@pehjota.net>2017-01-03 20:29:26 (EST)
committer P. J. McDermott <pj@pehjota.net>2017-01-04 20:24:38 (EST)
commit68eb6e29b5e5c001c172897fefdcf689b4cd5657 (patch)
tree8f26a724a028df954d7a50eec5cd47c441d4953d /Makefile.PL
parent35abc27c3363a2c0d78c8babd4a6ac49ebae246c (diff)
downloadMath-Decimal-FastPP-68eb6e29b5e5c001c172897fefdcf689b4cd5657.zip
Math-Decimal-FastPP-68eb6e29b5e5c001c172897fefdcf689b4cd5657.tar.gz
Math-Decimal-FastPP-68eb6e29b5e5c001c172897fefdcf689b4cd5657.tar.bz2
Makefile.PL: New file
Diffstat (limited to 'Makefile.PL')
-rw-r--r--Makefile.PL90
1 files changed, 90 insertions, 0 deletions
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 <http://www.gnu.org/licenses/>.
+
+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 <patrick.mcdermott\@libiquity.com>",
+ "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
+);