Wrap the macro arguments for ck_proto in ().
[p5sagit/p5-mst-13.2.git] / ext / SDBM_File / Makefile.PL
index 7494785..1267efc 100644 (file)
@@ -1,12 +1,17 @@
 use ExtUtils::MakeMaker;
+use Config;
 
 # The existence of the ./sdbm/Makefile.PL file causes MakeMaker
 # to automatically include Makefile code for the targets
 #      config, all, clean, realclean and sdbm/Makefile
 # which perform the corresponding actions in the subdirectory.
 
+# Work around: Darwin ppc64 bug ignores archive contents when building bundles
+
 $define = ($^O eq 'MSWin32') ? '-DMSDOS' : '';
 if ($^O eq 'MSWin32') { $myextlib = 'sdbm\\libsdbm$(LIB_EXT)'; }
+elsif ($^O eq 'darwin' && $Config{'ldflags'} =~/-arch ppc64/) {
+                        $myextlib = '-all_load sdbm/libsdbm$(LIB_EXT)'; }
 else                  { $myextlib = 'sdbm/libsdbm$(LIB_EXT)';  }
 
 WriteMakefile(
@@ -16,16 +21,38 @@ WriteMakefile(
               XSPROTOARG => '-noprototypes',           # XXX remove later?
               VERSION_FROM => 'SDBM_File.pm',
               DEFINE => $define,
+             PERL_MALLOC_OK => 1,
              );
 
 sub MY::postamble {
-  if ($^O ne 'VMS') {
+  if ($^O =~ /MSWin32/ && !defined($ENV{SYSTEMROOT})) {
+       if ($Config{'make'} =~ /dmake/i) {
+           # dmake-specific
+           return <<'EOT';
+$(MYEXTLIB): sdbm/Makefile
+@[
+       cd sdbm
+       $(MAKE) all
+       cd ..
+]
+EOT
+       } elsif ($Config{'make'} =~ /nmake/i) {
+           #
+           return <<'EOT';
+$(MYEXTLIB): sdbm/Makefile
+       cd sdbm
+       $(MAKE) all
+       cd ..
+EOT
+       } 
+} elsif ($^O ne 'VMS') {
     '
 $(MYEXTLIB): sdbm/Makefile
        cd sdbm && $(MAKE) all
 ';
-  } else {
-  '   
+  }
+  else {
+    '   
 $(MYEXTLIB) : [.sdbm]descrip.mms
        set def [.sdbm]
     $(MMS) all