Revert 109e4020 and 2da760ce for now. Win32 needs to AutoSplit DynaLoader.pm
Nicholas Clark [Wed, 16 Sep 2009 08:03:10 +0000 (09:03 +0100)]
Khan! Win32 is special. It builds DynaLoader by hand, copies in DynaLoader.pm
(and XSLoader.pm) to lib, and *then* runs, and relies on, the general AutoSplit
to split them. It would be better if everything standardised on building
DynaLoader via its Makefile.PL and MakeMaker.

    This reverts commit 2da760ceef1d2d90b3141bdeb239c7d7580be05a.
    This reverts commit 109e4020ef40828991be28fb05d9f269b4d92530.

MANIFEST
NetWare/Makefile
NetWare/splittree.pl [new file with mode: 0644]
win32/Makefile
win32/makefile.mk
win32/splittree.pl [new file with mode: 0644]

index 30ba2e0..ce6279c 100644 (file)
--- a/MANIFEST
+++ b/MANIFEST
@@ -3679,6 +3679,7 @@ NetWare/NWUtil.c          NetWare port
 NetWare/nwutil.h               NetWare port
 NetWare/nwvmem.h               NetWare port
 NetWare/perllib.cpp            NetWare port
+NetWare/splittree.pl           NetWare port
 NetWare/sv_nw.c                        NetWare port
 NetWare/testnlm/echo/echo.c    NetWare port
 NetWare/testnlm/type/type.c    NetWare port
@@ -4617,6 +4618,7 @@ win32/perlmaince.c                WinCE port
 win32/perl.rc                  WinCE port
 win32/pod.mak                  Win32 port
 win32/runperl.c                        Win32 port
+win32/splittree.pl             Win32 port
 win32/sync_ext.pl              Win32 port
 win32/vdir.h                   Perl "host" virtual directory manager for CE
 win32/vmem.h                   Perl "host" memory manager for CE
index 0696df1..9ae1c7a 100644 (file)
@@ -1041,6 +1041,8 @@ $(NLM_NAME): MESSAGE HEADERS $(BLDDIR)\nul $(NLM_OBJ) $(NEWTARE_OBJ_DEP) $(NEWTA
 !endif
 ##    $(LINK) $(LDFLAGS) $(BS_CFLAGS) -desc "Perl 5.6.1 for NetWare" $(NEWTARE_OBJ_DEP:.obj=.obj) $(NLM_OBJ:.obj=.obj) $(PERL_IO_OBJ_DEP:.obj=.obj) $(DLL_OBJ:.obj=.obj) $(NEWTARE_CPP_OBJ_DEP:.obj=.obj) -commandfile $*.def -o .\$(BLDDIR)\$@
        $(LINK) $(LDFLAGS) -desc $(MODULE_DESC) $(NEWTARE_OBJ_DEP:.obj=.obj) $(NLM_OBJ:.obj=.obj) $(PERL_IO_OBJ_DEP:.obj=.obj) $(DLL_OBJ:.obj=.obj) $(NEWTARE_CPP_OBJ_DEP:.obj=.obj) -commandfile $*.def -o .\$(BLDDIR)\$@
+       copy splittree.pl .. 
+       $(MINIPERL) -I..\lib ..\splittree.pl "../LIB" $(AUTODIR)
        @echo ========Linked $@ ==========
 
        @echo======= Finished building $(BUILT).
@@ -1417,7 +1419,7 @@ distclean: clean nwclean
        -del /f /q *.bat *.exe
        -del /f /q *.obj *.map *.link *.xdc *.err
        cd ..\netware
-       -del /f /q ..\config.sh dlutils.c config.h.new
+       -del /f /q ..\config.sh ..\splittree.pl dlutils.c config.h.new
        -del /f /q $(CONFIGPM)
        -del /f /q bin\*.bat
        cd $(EXTDIR)
@@ -1463,6 +1465,8 @@ install_tests :
 nwinstall: utils installnw install_tests
 
 inst_lib : $(CONFIGPM)
+       copy ..\win32\splittree.pl .. 
+       $(MINIPERL) -I..\lib ..\splittree.pl "../LIB" $(AUTODIR)
        $(RCOPY) ..\lib $(INST_LIB)\*.*
 
 clean : 
diff --git a/NetWare/splittree.pl b/NetWare/splittree.pl
new file mode 100644 (file)
index 0000000..3c76daa
--- /dev/null
@@ -0,0 +1,24 @@
+use DirHandle;
+use AutoSplit;
+
+sub splitthis {
+my ($top,$base,$dest) = @_;
+my $d = new DirHandle $base;
+if (defined $d) {
+       while (defined($_ = $d->read)) {
+               next if $_ eq ".";
+               next if $_ eq "..";
+               my $entry = "$base\\$_";
+               my $entrywithouttop = $entry;
+               $entrywithouttop =~ s/^$top//;
+               if (-d $entry) {splitthis ($top,$entry,$dest);}
+               else { 
+                       next unless ($entry=~/pm$/i);
+                       #print "Will run autosplit on $entry to $dest\n";
+                       autosplit($entry,$dest,0,1,1);
+                       };
+               };
+       };
+}
+
+splitthis $ARGV[0],$ARGV[0],$ARGV[1];
index f737f52..d4eb178 100644 (file)
@@ -1026,6 +1026,8 @@ $(PERLEXE): $(PERLDLL) $(CONFIGPM) $(PERLEXE_OBJ) $(PERLEXE_RES)
        $(EMBED_EXE_MANI)
        copy $(PERLEXE) $(WPERLEXE)
        $(MINIPERL) -I..\lib bin\exetype.pl $(WPERLEXE) WINDOWS
+       copy splittree.pl ..
+       $(MINIPERL) -I..\lib -I..\ext\Cwd ..\splittree.pl "../LIB" $(AUTODIR)
 
 $(PERLEXESTATIC): $(PERLSTATICLIB) $(CONFIGPM) $(PERLEXEST_OBJ) $(PERLEXE_RES)
        $(LINK32) -subsystem:console -out:$@ -stack:0x1000000 $(LINK_FLAGS) \
@@ -1222,7 +1224,7 @@ distclean: realclean
            perldoc perlivp dprofpp libnetcfg enc2xs piconv cpan *.bat \
            xsubpp instmodsh prove ptar ptardiff cpanp-run-perl cpanp cpan2dist shasum corelist config_data
        -cd ..\x2p && del /f find2perl s2p psed *.bat
-       -del /f ..\config.sh perlmain.c dlutils.c config.h.new \
+       -del /f ..\config.sh ..\splittree.pl perlmain.c dlutils.c config.h.new \
                perlmainst.c
        -del /f $(CONFIGPM)
        -del /f ..\lib\Config_git.pl
@@ -1253,6 +1255,8 @@ installhtml : doc
        $(RCOPY) $(HTMLDIR)\*.* $(INST_HTML)\*.*
 
 inst_lib : $(CONFIGPM)
+       copy splittree.pl ..
+       $(MINIPERL) -I..\lib -I..\ext\Cwd ..\splittree.pl "../LIB" $(AUTODIR)
        $(RCOPY) ..\lib $(INST_LIB)\*.*
 
 $(UNIDATAFILES) : $(MINIPERL) $(CONFIGPM) ..\lib\unicore\mktables Extensions_nonxs
index 83387c7..a4dc36a 100644 (file)
@@ -1346,6 +1346,8 @@ $(PERLEXE): $(PERLDLL) $(CONFIGPM) $(PERLEXE_OBJ) $(PERLEXE_RES)
 .ENDIF
        copy $(PERLEXE) $(WPERLEXE)
        $(MINIPERL) -I..\lib bin\exetype.pl $(WPERLEXE) WINDOWS
+       copy splittree.pl ..
+       $(MINIPERL) -I..\lib -I..\ext\Cwd ..\splittree.pl "../LIB" $(AUTODIR)
 
 $(PERLEXESTATIC): $(PERLSTATICLIB) $(CONFIGPM) $(PERLEXEST_OBJ) $(PERLEXE_RES)
 .IF "$(CCTYPE)" == "BORLAND"
@@ -1547,7 +1549,7 @@ distclean: realclean
            perldoc perlivp dprofpp libnetcfg enc2xs piconv cpan *.bat \
            xsubpp instmodsh prove ptar ptardiff cpanp-run-perl cpanp cpan2dist shasum corelist config_data
        -cd ..\x2p && del /f find2perl s2p psed *.bat
-       -del /f ..\config.sh perlmain.c dlutils.c config.h.new \
+       -del /f ..\config.sh ..\splittree.pl perlmain.c dlutils.c config.h.new \
            perlmainst.c
        -del /f $(CONFIGPM)
        -del /f ..\lib\Config_git.pl
@@ -1578,6 +1580,8 @@ installhtml : doc
        $(RCOPY) $(HTMLDIR)\*.* $(INST_HTML)\*.*
 
 inst_lib : $(CONFIGPM)
+       copy splittree.pl ..
+       $(MINIPERL) -I..\lib -I..\ext\Cwd ..\splittree.pl "../LIB" $(AUTODIR)
        $(RCOPY) ..\lib $(INST_LIB)\*.*
 
 $(UNIDATAFILES) .UPDATEALL : $(MINIPERL) $(CONFIGPM) ..\lib\unicore\mktables Extensions_nonxs
diff --git a/win32/splittree.pl b/win32/splittree.pl
new file mode 100644 (file)
index 0000000..3c76daa
--- /dev/null
@@ -0,0 +1,24 @@
+use DirHandle;
+use AutoSplit;
+
+sub splitthis {
+my ($top,$base,$dest) = @_;
+my $d = new DirHandle $base;
+if (defined $d) {
+       while (defined($_ = $d->read)) {
+               next if $_ eq ".";
+               next if $_ eq "..";
+               my $entry = "$base\\$_";
+               my $entrywithouttop = $entry;
+               $entrywithouttop =~ s/^$top//;
+               if (-d $entry) {splitthis ($top,$entry,$dest);}
+               else { 
+                       next unless ($entry=~/pm$/i);
+                       #print "Will run autosplit on $entry to $dest\n";
+                       autosplit($entry,$dest,0,1,1);
+                       };
+               };
+       };
+}
+
+splitthis $ARGV[0],$ARGV[0],$ARGV[1];