summaryrefslogtreecommitdiff
path: root/make_ext.pl
diff options
context:
space:
mode:
Diffstat (limited to 'make_ext.pl')
-rw-r--r--make_ext.pl22
1 files changed, 22 insertions, 0 deletions
diff --git a/make_ext.pl b/make_ext.pl
index 28a67a33f9..32546282c0 100644
--- a/make_ext.pl
+++ b/make_ext.pl
@@ -281,6 +281,28 @@ sub build_extension {
$makefile = 'Makefile';
}
+ if (-f $makefile) {
+ open my $mfh, $makefile or die "Cannot open $makefile: $!";
+ while (<$mfh>) {
+ # Plagiarised from CPAN::Distribution
+ last if /MakeMaker post_initialize section/;
+ next unless /^#\s+VERSION_FROM\s+=>\s+(.+)/;
+ my $vmod = eval $1;
+ my $oldv;
+ while (<$mfh>) {
+ next unless /^XS_VERSION = (\S+)/;
+ $oldv = $1;
+ last;
+ }
+ last unless defined $oldv;
+ require ExtUtils::MM_Unix;
+ defined (my $newv = parse_version MM $vmod) or last;
+ if ($newv ne $oldv) {
+ 1 while unlink $makefile
+ }
+ }
+ }
+
if (!-f $makefile) {
if (!-f 'Makefile.PL') {
print "\nCreating Makefile.PL in $ext_dir for $mname\n";