This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
devel/devtools.pl: Add debugging info
[perl5.git] / make_ext.pl
index 80d8f68..0280a02 100644 (file)
@@ -48,6 +48,20 @@ my $ext_dirs_re = '(?:' . join('|', @ext_dirs) . ')';
 # by an '!ext' and are appropriate to the type of building being done.
 # An extensions follows the format of Foo/Bar, which would be extension Foo::Bar
 
+# To fix dependency ordering, on *nix systems, edit Makefile.SH to create a
+# rule.  That isn't sufficient for other systems; you also have to do
+# something in this file.  See the code at
+#       '# XXX hack for dependency # ordering'
+# below.
+#
+# The basic logic is:
+#   1) if there's a Makefile.PL in git for the module, use it. and call make
+#   2) If not, auto-generate one (normally)
+#   3) unless the auto-generation code figures out that the extension is
+#      *really* simple, in which case don't.  This will be for pure perl
+#      modules, and all that is needed to be done is to copy from the source
+#      to the dest directories.
+#
 # It may be deleted in a later release of perl so try to
 # avoid using it for other purposes.
 
@@ -201,20 +215,23 @@ elsif (IS_VMS) {
     push @extspec, 'DynaLoader' if $dynaloader;
 }
 
-{
+{ # XXX hack for dependency ordering
     # Cwd needs to be built before Encode recurses into subdirectories.
-    # Pod::Simple needs to be built before Pod::Functions
+    # Pod::Simple needs to be built before Pod::Functions, but after 'if'
     # lib needs to be built before IO-Compress
     # This seems to be the simplest way to ensure this ordering:
-    my (@first, @other);
+    my (@first, @second, @other);
     foreach (@extspec) {
-       if ($_ eq 'Cwd' || $_ eq 'Pod/Simple' || $_ eq 'lib') {
+       if ($_ eq 'Cwd' || $_ eq 'if' || $_ eq 'lib') {
            push @first, $_;
+        }
+       elsif ($_ eq 'Pod/Simple') {
+           push @second, $_;
        } else {
            push @other, $_;
        }
     }
-    @extspec = (@first, @other);
+    @extspec = (@first, @second, @other);
 }
 
 if ($Config{osname} eq 'catamount' and @extspec) {
@@ -303,7 +320,7 @@ sub build_extension {
            last unless defined $oldv;
            require ExtUtils::MM_Unix;
            defined (my $newv = parse_version MM $vmod) or last;
-           if ($newv ne $oldv) {
+           if (version->parse($newv) ne $oldv) {
                close $mfh or die "close $makefile: $!";
                _unlink($makefile);
                {