Change 30208 by [EMAIL PROTECTED] on 2007/02/10 23:36:59

        Integrate:
        [ 28513]
        Integrate mkppport. All ppport.h files in the core will now
        be autogenerated at build time (and removed during cleanup).

Affected files ...

... //depot/maint-5.8/perl/MANIFEST#317 integrate
... //depot/maint-5.8/perl/Makefile.SH#66 integrate
... //depot/maint-5.8/perl/ext/Cwd/ppport.h#3 delete
... //depot/maint-5.8/perl/ext/Time/HiRes/ppport.h#4 delete
... //depot/maint-5.8/perl/mkppport#1 branch
... //depot/maint-5.8/perl/mkppport.lst#1 branch
... //depot/maint-5.8/perl/vms/descrip_mms.template#47 integrate
... //depot/maint-5.8/perl/win32/Makefile#61 integrate
... //depot/maint-5.8/perl/win32/Makefile.ce#1 branch
... //depot/maint-5.8/perl/win32/ext/Win32API/File/ppport.h#2 delete
... //depot/maint-5.8/perl/win32/makefile.mk#69 integrate

Differences ...

==== //depot/maint-5.8/perl/MANIFEST#317 (text) ====
Index: perl/MANIFEST
--- perl/MANIFEST#316~30207~    2007-02-10 15:17:30.000000000 -0800
+++ perl/MANIFEST       2007-02-10 15:36:59.000000000 -0800
@@ -153,7 +153,6 @@
 ext/Cwd/Changes                        Cwd extension Changelog
 ext/Cwd/Cwd.xs                 Cwd extension external subroutines
 ext/Cwd/Makefile.PL            Cwd extension makefile maker
-ext/Cwd/ppport.h               portability header for Cwd
 ext/Cwd/t/cwd.t                        See if Cwd works
 ext/Cwd/t/taint.t              See if Cwd works with taint
 ext/Cwd/t/win32.t              See if Cwd works on Win32
@@ -976,7 +975,6 @@
 ext/Time/HiRes/HiRes.pm                Time::HiRes extension
 ext/Time/HiRes/HiRes.xs                Time::HiRes extension
 ext/Time/HiRes/Makefile.PL     Time::HiRes extension
-ext/Time/HiRes/ppport.h                portability header for Time::HiRes
 ext/Time/HiRes/t/HiRes.t       Test for Time::HiRes
 ext/Time/HiRes/typemap         Time::HiRes extension
 ext/Unicode/Normalize/Changes  Unicode::Normalize
@@ -2186,6 +2184,8 @@
 mint/stdio.h                   MiNT port
 mint/sys/time.h                        MiNT port
 mint/time.h                    MiNT port
+mkppport                       A script that distributes ppport.h
+mkppport.lst                   List of extensions that need a ppport.h
 mpeix/mpeix.c                  MPE/iX port
 mpeix/mpeixish.h               MPE/iX port
 mpeix/mpeix_setjmp.c           MPE/iX port
@@ -3109,7 +3109,6 @@
 win32/ext/Win32API/File/File.pm                                Win32API::File 
extension
 win32/ext/Win32API/File/File.xs                                Win32API::File 
extension
 win32/ext/Win32API/File/Makefile.PL                    Win32API::File 
extension makefile write
-win32/ext/Win32API/File/ppport.h                       Win32API::File extension
 win32/ext/Win32API/File/README                         Win32API::File 
extension Readme
 win32/ext/Win32API/File/t/file.t                       See if Win32API::File 
extension works
 win32/ext/Win32API/File/t/tie.t                                See if 
Win32API::File extension works

==== //depot/maint-5.8/perl/Makefile.SH#66 (text) ====
Index: perl/Makefile.SH
--- perl/Makefile.SH#65~30206~  2007-02-10 14:44:37.000000000 -0800
+++ perl/Makefile.SH    2007-02-10 15:36:59.000000000 -0800
@@ -830,6 +830,10 @@
                autosplit_lib_modules(@ARGV)' lib/*/*.pm
        $(MAKE) lib/re.pm
 
+.PHONY: makeppport
+makeppport: miniperl$(EXE_EXT) $(CONFIGPM)
+       $(LDLIBPTH) ./miniperl -Ilib mkppport
+
 lib/Config.pod: config.sh miniperl$(EXE_EXT) configpm Porting/Glossary
        $(LDLIBPTH) ./miniperl -Ilib configpm --heavy=lib/Config_heavy.pl 
lib/Config.pm
 
@@ -1037,10 +1041,10 @@
 $(DYNALOADER): miniperl$(EXE_EXT) preplibrary FORCE
        @$(LDLIBPTH) sh ext/util/make_ext $(STATIC) $@ MAKE=$(MAKE) 
LIBPERL_A=$(LIBPERL)
 
-d_dummy $(dynamic_ext):        miniperl$(EXE_EXT) preplibrary $(DYNALOADER) 
FORCE
+d_dummy $(dynamic_ext):        miniperl$(EXE_EXT) preplibrary makeppport 
$(DYNALOADER) FORCE
        @$(LDLIBPTH) sh ext/util/make_ext dynamic $@ MAKE=$(MAKE) 
LIBPERL_A=$(LIBPERL)
 
-s_dummy $(static_ext): miniperl$(EXE_EXT) preplibrary $(DYNALOADER) FORCE
+s_dummy $(static_ext): miniperl$(EXE_EXT) preplibrary makeppport $(DYNALOADER) 
FORCE
        @$(LDLIBPTH) sh ext/util/make_ext $(STATIC) $@ MAKE=$(MAKE) 
LIBPERL_A=$(LIBPERL)
 
 n_dummy $(nonxs_ext):  miniperl$(EXE_EXT) preplibrary $(DYNALOADER) FORCE
@@ -1113,6 +1117,7 @@
        [EMAIL PROTECTED] x in $(DYNALOADER) $(dynamic_ext) $(static_ext) 
$(nonxs_ext) ; do \
        $(LDLIBPTH) sh ext/util/make_ext $(CLEAN) $$x MAKE=$(MAKE) ; \
        done
+       $(LDLIBPTH) ./miniperl -Ilib mkppport --clean
 
 # Some systems do not support "?", so keep these files separate.
 _cleaner2:

==== //depot/maint-5.8/perl/mkppport#1 (text) ====
Index: perl/mkppport
--- /dev/null   2007-01-16 11:55:45.526841103 -0800
+++ perl/mkppport       2007-02-10 15:36:59.000000000 -0800
@@ -0,0 +1,181 @@
+use strict;
+use warnings;
+
+use Getopt::Long;
+use Pod::Usage;
+use File::Spec;
+use File::Copy qw( copy );
+use File::Basename qw( dirname );
+
+sub iterdirs(&);
+
+my $rootdir = dirname($0);
+
+unshift @INC, File::Spec->catfile($rootdir, 't', 'lib');
+
+eval q{ use MakeMaker::Test::Utils qw( which_perl ) };
+$@ and die $@;
+
+my %opt = (
+  list   => File::Spec->catfile($rootdir, 'mkppport.lst'),
+  clean  => 0,
+);
+
+GetOptions(\%opt, qw( clean list=s )) or pod2usage(2);
+
+my $absroot = File::Spec->rel2abs($rootdir);
+my @destdirs = readlist($opt{list});
+
+# Nothing to do...
+unless (@destdirs) {
+  print "no destination directories found in $opt{list}\n";
+  exit 0;
+}
+
+# Remove all installed ppport.h files
+if ($opt{clean}) {
+  iterdirs {
+    my($dir, $fulldir) = @_;
+    my $dest = File::Spec->catfile($fulldir, 'ppport.h');
+    if (-f $dest) {
+      print "removing ppport.h for $dir\n";
+      unlink $dest or warn "WARNING: could not remove $dest: $!\n";
+      1 while unlink $dest;  # remove any remaining versions
+    }
+  };
+  exit 0;
+}
+
+# Determine full perl location
+my $perl = which_perl();
+
+# We're now changing the directory, which confuses the deferred
+# loading in Config.pm, so we better use an absolute @INC path
+unshift @INC, File::Spec->catdir($absroot, 'lib');
+
+# Change to Devel::PPPort directory, as it needs the stuff
+# from the parts/ directory
+chdir File::Spec->catdir($rootdir, 'ext', 'Devel', 'PPPort');
+
+# Capture and remove temporary files
+my @unlink;
+
+END {
+  for my $file (@unlink) {
+    print "removing temporary file $file\n";
+    unlink $file or warn "WARNING: could not remove $file: $!\n";
+    1 while unlink $file;  # remove any remaining versions
+  }
+}
+
+# Try to create a ppport.h if it doesn't exist yet, and
+# remember all files that need to be removed later.
+unless (-e 'ppport.h') {
+  unless (-e 'PPPort.pm') {
+    run('PPPort_pm.PL');
+    push @unlink, 'PPPort.pm';
+  }
+  run('ppport_h.PL');
+  push @unlink, 'ppport.h';
+}
+
+# Now install the created ppport.h into extension directories
+iterdirs {
+  my($dir, $fulldir) = @_;
+  print "installing ppport.h for $dir\n";
+  my $dest = File::Spec->catfile($fulldir, 'ppport.h');
+  copy('ppport.h', $dest) or die "copying ppport.h to $dest failed: $!\n";
+};
+
+exit 0;
+
+#---------------------------------------
+# Iterate through extension directories
+#---------------------------------------
+sub iterdirs(&)
+{
+  my $code = shift;
+  
+  for my $dir (@destdirs) {
+    my $fulldir = File::Spec->catdir($absroot, $dir);
+    if (-d $fulldir) {
+      $code->($dir, $fulldir);
+    }
+    else {
+      warn "WARNING: no such directory: $fulldir\n";
+    }
+  }
+}
+
+#----------------------------------------
+# Read the list of extension directories
+#----------------------------------------
+sub readlist
+{
+  my $list = shift;
+  my @dirs;
+  open LIST, $list or die "$list: $!\n";
+  while (<LIST>) {
+    chomp;
+    /^\s*(?:$|#)/ or push @dirs, $_;
+  }
+  close LIST;
+  return @dirs;
+}
+
+#----------------------------------------------
+# Runs a script in the Devel::PPPort directory
+#----------------------------------------------
+sub run
+{
+  my @args = ("-I" . File::Spec->catdir((File::Spec->updir) x 3, 'lib'), @_);
+  my $run = $perl =~ m/\s/ ? qq("$perl") : $perl;
+  for (@args) {
+    $_ = qq("$_") if $^O eq 'VMS' && /^[^"]/;
+    $run .= " $_";
+  }
+  print "running $run\n";
+  system $run and die "$run failed: $?\n";
+}
+
+__END__
+
+=head1 NAME
+
+mkppport - distribute ppport.h among extensions
+
+=head1 SYNOPSIS
+
+mkppport [B<--list>=I<file>] [B<--clean>]
+
+=head1 DESCRIPTION
+
+B<mkppport> generates a I<ppport.h> file using Devel::PPPort
+and distributes it to the various extension directories that
+need it to build.
+
+=head1 OPTIONS
+
+=over 4
+
+=item B<--list>=I<file>
+
+Name of the file that holds the list of extension directories
+that I<ppport.h> should be distributed to.
+This defaults to I<mkppport.lst> in the same directory as this
+script.
+
+=item B<--clean>
+
+Run with this option to clean out all distributed I<ppport.h> files.
+
+=back
+
+=head1 COPYRIGHT
+
+Copyright 2006 by Marcus Holland-Moritz <[EMAIL PROTECTED]>.
+
+This program is free software; you may redistribute it
+and/or modify it under the same terms as Perl itself.
+
+=cut

==== //depot/maint-5.8/perl/mkppport.lst#1 (text) ====
Index: perl/mkppport.lst
--- /dev/null   2007-01-16 11:55:45.526841103 -0800
+++ perl/mkppport.lst   2007-02-10 15:36:59.000000000 -0800
@@ -0,0 +1,14 @@
+#
+# List of directories into which a ppport.h should be installed.
+# Please try to keep the list sorted.
+#
+# This file is read by mkppport at build time.
+#
+
+ext/Compress/Raw/Zlib
+ext/Cwd
+ext/Digest/SHA
+ext/Sys/Syslog
+ext/Time/HiRes
+
+win32/ext/Win32API/File

==== //depot/maint-5.8/perl/vms/descrip_mms.template#47 (text) ====
Index: perl/vms/descrip_mms.template
--- perl/vms/descrip_mms.template#46~30164~     2007-02-07 13:38:12.000000000 
-0800
+++ perl/vms/descrip_mms.template       2007-02-10 15:36:59.000000000 -0800
@@ -526,7 +526,7 @@
        $(MINIPERL) $(MMS$SOURCE)
        @ Rename/Log XSLoader.pm [.ext.DynaLoader]
 
-dynext : $(LIBPREREQ) $(DBG)perlshr$(E) preplibrary
+dynext : $(LIBPREREQ) $(DBG)perlshr$(E) preplibrary makeppport
        @make_ext "$(MINIPERL_EXE)" "$(MMS)"
 
 [.lib]lib.pm : [.lib]lib_pm.PL
@@ -674,6 +674,9 @@
        @ Create/Directory [.lib.auto]
        @ $(MINIPERL) -e "use AutoSplit; autosplit_lib_modules(@ARGV)" 
[.lib]*.pm [.lib.*]*.pm [.lib.*.*]*.pm
 
+makeppport : $(MINIPERL_EXE) $(ARCHDIR)Config.pm
+       $(MINIPERL) mkppport
+
 [.lib.pods]perl.pod : [.pod]perl.pod
        @ If F$Search("[.lib]pods.dir").eqs."" Then Create/Directory [.lib.pods]
        Copy/NoConfirm/Log $(MMS$SOURCE) [.lib.pods]
@@ -1721,6 +1724,7 @@
 
 realclean : clean
        - @make_ext "$(MINIPERL_EXE)" "$(MMS)" realclean
+       - $(MINIPERL) mkppport "--clean"
        - If F$Search("*$(OLB)").nes."" Then Delete/NoConfirm/Log *$(OLB);*
        - If F$Search("*.Opt").nes."" Then Delete/NoConfirm/Log *.Opt;*
        - If F$Search("config.h").nes."" Then Delete/NoConfirm/Log config.h;*

==== //depot/maint-5.8/perl/win32/Makefile#61 (text) ====
Index: perl/win32/Makefile
--- perl/win32/Makefile#60~30207~       2007-02-10 15:17:30.000000000 -0800
+++ perl/win32/Makefile 2007-02-10 15:36:59.000000000 -0800
@@ -925,7 +925,7 @@
 #
 
 all : .\config.h $(GLOBEXE) $(MINIMOD) $(CONFIGPM) $(UNIDATAFILES) $(PERLEXE) \
-       $(X2P) Extensions
+       $(X2P) MakePPPort Extensions
        @echo   Everything is up to date. '$(MAKE_BARE) test' to run test suite.
 
 $(DYNALOADER)$(o) : $(DYNALOADER).c $(CORE_H) $(EXTDIR)\DynaLoader\dlutils.c
@@ -1081,6 +1081,12 @@
 $(EXTDIR)\DynaLoader\dl_win32.xs: dl_win32.xs
        copy dl_win32.xs $(EXTDIR)\DynaLoader\dl_win32.xs
 
+MakePPPort: $(MINIPERL) $(CONFIGPM)
+       $(MINIPERL) -I..\lib ..\mkppport
+
+MakePPPort_clean:
+       -if exist $(MINIPERL) $(MINIPERL) -I..\lib ..\mkppport --clean
+
 
#-------------------------------------------------------------------------------
 Extensions: buildext.pl $(PERLDEP) $(CONFIGPM)
        $(MINIPERL) -I..\lib buildext.pl $(MAKE) $(PERLDEP) $(EXTDIR) --dynamic
@@ -1326,7 +1332,7 @@
 
 clean : Extensions_clean _clean
 
-realclean : Extensions_realclean _clean
+realclean : Extensions_realclean MakePPPort_clean _clean
 
 # Handy way to run perlbug -ok without having to install and run the
 # installed perlbug. We don't re-run the tests here - we trust the user.

==== //depot/maint-5.8/perl/win32/Makefile.ce#1 (text) ====
Index: perl/win32/Makefile.ce
--- /dev/null   2007-01-16 11:55:45.526841103 -0800
+++ perl/win32/Makefile.ce      2007-02-10 15:36:59.000000000 -0800
@@ -0,0 +1,951 @@
+#
+# perl makefile for wince
+# During the cross-compilation, it first uses Makefile file to build
+# miniperl on HOST and then build required platform
+#
+
+SRCDIR     = ..
+PV         = 59
+INST_VER   = 5.9.4
+
+# INSTALL_ROOT specifies a path where this perl will be installed on CE device
+INSTALL_ROOT=/netzwerk/sprache/perl
+INST_TOP=$(INSTALL_ROOT)
+INST_VER=
+
+# PERLCEDIR shoud be set to current directory
+PERLCEDIR  = H:\src\wince\perl\win32
+
+# WCEROOT is a directory where Windows CE Tools was installed
+WCEROOT    = D:\Windows CE Tools
+
+# HPERL stands for host perl, which is perl on local desktop machine
+# which is usually ..\miniperl.exe
+#HPERL     = N:\Programme\perl\bin\perl.exe
+HPERL = $(MAKEDIR)\..\miniperl.exe
+
+CEPATH     = D:\Programme\Microsoft eMbedded Tools\EVC\WCE211\BIN
+CELIBDLLDIR  = h:\src\wince\celib-palm-3.0
+CECONSOLEDIR = h:\src\wince\w32console
+
+# specify following options to build perl on local machine, by MSVC
+MSVCDIR         = D:\MSVStudio\VC98
+CCHOME         = $(MSVCDIR)
+CCINCDIR       = $(CCHOME)\include
+CCLIBDIR       = $(CCHOME)\lib
+
+# Only for WIN2000
+#YES        = /y
+COPY       = copy $(YES)
+XCOPY      = xcopy $(YES) /f /r /i /d
+RCOPY     = xcopy $(YES) /f /r /i /e /d
+
+# cecopy program. Make shure it is in your path, as well as cemkdir, cedel
+CECOPY     = cecopy
+
+#
+# Comment out next assign to disable perl's I/O subsystem and use compiler's
+# stdio for IO - depending on your compiler vendor and run time library you may
+# then get a number of fails from make test i.e. bugs - complain to them not 
us ;-).
+# You will also be unable to take full advantage of perl5.8's support for 
multiple
+# encodings and may see lower IO performance. You have been warned.
+USE_PERLIO     = define
+
+#
+# set this if you wish to use perl's malloc
+# This will make perl run few times faster
+# WARNING: Turning this on/off WILL break binary compatibility with extensions
+# you may have compiled with/without it.
+#
+PERL_MALLOC    = define
+
+
+NOOP      = @echo
+# keep this untouched!
+NULL      =
+
+
+#CFG=DEBUG
+CFG=RELEASE
+
+!if "$(MACHINE)" == ""
+MACHINE=wince-arm-hpc-wce300
+#MACHINE=wince-arm-hpc-wce211
+#MACHINE=wince-sh3-hpc-wce211
+#MACHINE=wince-mips-hpc-wce211
+#MACHINE=wince-sh3-hpc-wce200
+#MACHINE=wince-mips-hpc-wce200
+#MACHINE=wince-arm-pocket-wce300
+#MACHINE=wince-mips-pocket-wce300
+#MACHINE=wince-sh3-pocket-wce300
+#MACHINE=wince-x86em-pocket-wce300
+#MACHINE=wince-mips-palm-wce211
+#MACHINE=wince-sh3-palm-wce211
+#MACHINE=wince-x86em-palm-wce211
+!endif
+
+# set this to your email address
+#
+#EMAIL         =
+
+##################### CHANGE THESE ONLY IF YOU MUST #####################
+
+######################################################################
+# machines
+
+!if "$(MACHINE)" == "wince-sh3-hpc-wce211"
+CC         = shcl.exe
+ARCH       = SH3
+CPU        = SH3
+TARGETCPU  = SH3
+CEVersion  = 211
+OSVERSION  = WCE211
+PLATFORM   = MS HPC Pro
+MCFLAGS    = -MDd -DSH3 -D_SH3_ -DSHx -DPROCESSOR_SH3 -DPALM_SIZE \
+             -I $(CELIBDLLDIR)\inc
+SUBSYS    = -subsystem:windowsce,2.11
+CELIBPATH  = $(CELIBDLLDIR)\$(MACHINE)-release
+LDLIBPATH  = -libpath:$(CELIBPATH)
+STARTOBJS  = $(CECONSOLEDIR)/$(MACHINE)/wmain.obj \
+             $(CECONSOLEDIR)/$(MACHINE)/w32console.obj
+!endif
+
+!if "$(MACHINE)" == "wince-mips-hpc-wce211"
+CC         = clmips.exe
+ARCH       = MIPS
+CPU        = MIPS
+TARGETCPU  = MIPS
+CEVersion  = 211
+OSVERSION  = WCE211
+PLATFORM   = MS HPC Pro
+MCFLAGS    = -D _MT -D _DLL \
+             -D MIPS -D mips -D _MIPS_ -D _mips_ -DPROCESSOR_MIPS \
+             -D PALM_SIZE \
+             -I $(CELIBDLLDIR)\inc
+SUBSYS    = -subsystem:windowsce,2.11
+CELIBPATH  = $(CELIBDLLDIR)\$(MACHINE)-release
+LDLIBPATH  = -libpath:$(CELIBPATH)
+STARTOBJS  = $(CECONSOLEDIR)/$(MACHINE)/wmain.obj \
+             $(CECONSOLEDIR)/$(MACHINE)/w32console.obj
+!endif
+
+!if "$(MACHINE)" == "wince-mips-hpc-wce200"
+CC         = clmips.exe
+ARCH       = MIPS
+CPU        = MIPS
+TARGETCPU  = MIPS
+CEVersion  = 200
+OSVERSION  = WCE200
+PLATFORM   = MS HPC
+# MUST USE -MD to get the right FPE stuff...
+MCFLAGS    = -D _MT -D _DLL -MD \
+             -D MIPS -D mips -D _MIPS_ -D _mips_ -DPROCESSOR_MIPS \
+             -D PALM_SIZE \
+             -I $(CELIBDLLDIR)\inc
+SUBSYS    = -subsystem:windowsce,2.00
+CELIBPATH  = $(CELIBDLLDIR)\$(MACHINE)-release
+LDLIBPATH  = -libpath:$(CELIBPATH)
+STARTOBJS  = $(CECONSOLEDIR)/$(MACHINE)/wmain.obj \
+             $(CECONSOLEDIR)/$(MACHINE)/w32console.obj
+!endif
+
+!if "$(MACHINE)" == "wince-sh3-hpc-wce200"
+CC         = shcl.exe
+ARCH       = SH3
+CPU        = SH3
+TARGETCPU  = SH3
+CEVersion  = 200
+OSVERSION  = WCE200
+PLATFORM   = MS HPC
+# MUST USE -MD to get the right FPE stuff...
+MCFLAGS    = -D _MT -D _DLL -MD \
+             -D SH3 -D sh3 -D _SH3_ -D _sh3_ -D SHx -DPROCESSOR_SH3 \
+             -D PALM_SIZE \
+             -I $(CELIBDLLDIR)\inc
+SUBSYS    = -subsystem:windowsce,2.00
+CELIBPATH  = $(CELIBDLLDIR)\$(MACHINE)-release
+LDLIBPATH  = -libpath:$(CELIBPATH)
+STARTOBJS  = $(CECONSOLEDIR)/$(MACHINE)/wmain.obj \
+             $(CECONSOLEDIR)/$(MACHINE)/w32console.obj
+!endif
+
+!if "$(MACHINE)" == "wince-arm-hpc-wce211"
+CC         = clarm.exe
+ARCH       = ARM
+CPU        = ARM
+TARGETCPU  = ARM
+CEVersion  = 211
+OSVERSION  = WCE211
+PLATFORM   = MS HPC Pro
+MCFLAGS    = -D _MT -D _DLL -D ARM -D arm -D _arm_ -D _ARM_ \
+             -DPROCESSOR_ARM -DPALM_SIZE \
+             -I $(CELIBDLLDIR)\inc
+SUBSYS    = -subsystem:windowsce,2.11
+CELIBPATH  = $(CELIBDLLDIR)\$(MACHINE)-release
+LDLIBPATH  = -libpath:$(CELIBPATH)
+STARTOBJS  = $(CECONSOLEDIR)/$(MACHINE)/wmain.obj \
+             $(CECONSOLEDIR)/$(MACHINE)/w32console.obj
+!endif
+
+!if "$(MACHINE)" == "wince-arm-hpc-wce300"
+CC         = clarm.exe
+ARCH       = ARM
+CPU        = ARM
+TARGETCPU  = ARM
+CEVersion  = 300
+OSVERSION  = WCE300
+#PLATFORM   = HPC2000
+MCFLAGS    = -D _MT -D _DLL -D ARM -D arm -D _arm_ -D _ARM_ \
+             -DPROCESSOR_ARM -DPALM_SIZE \
+             -I $(CELIBDLLDIR)\inc
+SUBSYS    = -subsystem:windowsce,3.00
+CELIBPATH  = $(CELIBDLLDIR)\$(MACHINE)-release
+LDLIBPATH  = -libpath:$(CELIBPATH)
+STARTOBJS  = $(CECONSOLEDIR)/$(MACHINE)/wmain.obj \
+             $(CECONSOLEDIR)/$(MACHINE)/w32console.obj
+!endif
+
+!if "$(MACHINE)" == "wince-mips-palm-wce211"
+CC         = clmips.exe
+ARCH       = MIPS
+CPU        = MIPS
+TARGETCPU  = MIPS
+CEVersion  = 211
+OSVERSION  = WCE211
+PLATFORM   = MS Palm Size PC
+MCFLAGS    = -DMIPS -D_MIPS_ -DPROCESSOR_MIPS -D PALM_SIZE -D _DLL -D _MT \
+             -I $(CELIBDLLDIR)\inc
+SUBSYS    = -subsystem:windowsce,2.11
+CELIBPATH  = $(CELIBDLLDIR)\$(MACHINE)-release
+LDLIBPATH  = -libpath:$(CELIBPATH)
+STARTOBJS  = $(CECONSOLEDIR)/$(MACHINE)/wmain.obj \
+             $(CECONSOLEDIR)/$(MACHINE)/w32console.obj
+!endif
+
+!if "$(MACHINE)" == "wince-sh3-palm-wce211"
+CC         = shcl.exe
+ARCH       = SH3
+CPU        = SH3
+TARGETCPU  = SH3
+CEVersion  = 211
+OSVERSION  = WCE211
+PLATFORM   = MS Palm Size PC
+MCFLAGS    = -D _MT -D _DLL -DSH3 -D_SH3_ -DSHx -DPROCESSOR_SH3 -DPALM_SIZE \
+             -I $(CELIBDLLDIR)\inc
+SUBSYS    = -subsystem:windowsce,2.11
+CELIBPATH  = $(CELIBDLLDIR)\$(MACHINE)-release
+LDLIBPATH  = -libpath:$(CELIBPATH)
+STARTOBJS  = $(CECONSOLEDIR)/$(MACHINE)/wmain.obj \
+             $(CECONSOLEDIR)/$(MACHINE)/w32console.obj
+!endif
+
+!if "$(MACHINE)" == "wince-x86em-palm-wce211"
+CC         = cl.exe
+ARCH       = X86EM
+CPU        = X86
+TARGETCPU  = X86
+CEVersion  = 211
+OSVERSION  = WCE211
+PLATFORM   = MS Palm Size PC
+MCFLAGS    = -MDd -DX86 -D_X86_ -DPROCESSOR_X86 \
+             -D_WIN32_WCE_EMULATION -DPALM_SIZE \
+             -I $(CELIBDLLDIR)\inc
+MACH       = -machine:x86
+SUBSYS     = -subsystem:windows
+CELIBPATH  = $(CELIBDLLDIR)\$(MACHINE)-release
+LDLIBPATH  = -libpath:$(CELIBPATH)
+STARTOBJS  = $(CECONSOLEDIR)/$(MACHINE)/wmain.obj \
+             $(CECONSOLEDIR)/$(MACHINE)/w32console.obj
+!endif
+
+!if "$(MACHINE)" == "wince-x86em-pocket-wce300"
+CC         = cl.exe
+ARCH       = X86EM
+CPU        = X86
+TARGETCPU  = X86
+CEVersion  = 300
+OSVERSION  = WCE300
+PLATFORM   = MS Pocket PC
+MCFLAGS    = -DX86 -D_X86_ -DPROCESSOR_X86 -D _MT -D _DLL \
+             -D_WIN32_WCE_EMULATION -DPALM_SIZE -DPOCKET_SIZE \
+             -I $(CELIBDLLDIR)\inc
+MACH       = -machine:x86
+SUBSYS     = -subsystem:windows
+CELIBPATH  = $(CELIBDLLDIR)\$(MACHINE)-release
+LDLIBPATH  = -libpath:$(CELIBPATH)
+STARTOBJS  = $(CECONSOLEDIR)/$(MACHINE)/wmain.obj \
+             $(CECONSOLEDIR)/$(MACHINE)/w32console.obj
+!endif
+
+!if "$(MACHINE)" == "wince-mips-pocket-wce300"
+CC         = clmips.exe
+ARCH       = MIPS
+CPU        = MIPS
+TARGETCPU  = MIPS
+CEVersion  = 300
+OSVERSION  = WCE300
+PLATFORM   = MS Pocket PC
+MCFLAGS    = -D MIPS -D mips -D _MIPS_ -D _mips_ -DPROCESSOR_MIPS \
+             -D _MT -D _DLL -DPALM_SIZE -DPOCKET_SIZE \
+             -I $(CELIBDLLDIR)\inc
+MACH       = -machine:mips
+SUBSYS     = -subsystem:windowsce,3.00
+CELIBPATH  = $(CELIBDLLDIR)\$(MACHINE)-release
+#STDLIBPATH = $(WCEROOT)\$(OSVERSION)\$(PLATFORM)\lib\$(CPU)
+LDLIBPATH  = -libpath:$(CELIBPATH)
+#"-libpath:$(STDLIBPATH)"
+STARTOBJS  = $(CECONSOLEDIR)/$(MACHINE)/wmain.obj \
+             $(CECONSOLEDIR)/$(MACHINE)/w32console.obj
+!endif
+
+!if "$(MACHINE)" == "wince-sh3-pocket-wce300"
+CC         = shcl.exe
+ARCH       = SH3
+CPU        = SH3
+TARGETCPU  = SH3
+CEVersion  = 300
+OSVERSION  = WCE300
+PLATFORM   = MS Pocket PC
+MCFLAGS    = -D _MT -D _DLL -DSH3 -D_SH3_ -DSHx -DPROCESSOR_SH3 \
+             -DPALM_SIZE -DPOCKET_SIZE \
+             -I $(CELIBDLLDIR)\inc
+MACH       = -machine:sh3
+SUBSYS     = -subsystem:windowsce,3.00
+CELIBPATH  = $(CELIBDLLDIR)\$(MACHINE)-release
+LDLIBPATH  = -libpath:$(CELIBPATH)
+STARTOBJS  = $(CECONSOLEDIR)/$(MACHINE)/wmain.obj \
+             $(CECONSOLEDIR)/$(MACHINE)/w32console.obj
+!endif
+
+!if "$(MACHINE)" == "wince-arm-pocket-wce300"
+CC         = clarm.exe
+ARCH       = ARM
+CPU        = ARM
+TARGETCPU  = ARM
+CEVersion  = 300
+OSVERSION  = WCE300
+PLATFORM   = MS Pocket PC
+MCFLAGS    = -D ARM -D arm -D _ARM_ -D _arm_ -DPROCESSOR_ARM \
+             -D _MT -D _DLL -DPALM_SIZE -DPOCKET_SIZE \
+             -I $(CELIBDLLDIR)\inc
+MACH       = -machine:arm
+SUBSYS     = -subsystem:windowsce,3.00
+CELIBPATH  = $(CELIBDLLDIR)\$(MACHINE)-release
+LDLIBPATH  = -libpath:$(CELIBPATH)
+STARTOBJS  = $(CECONSOLEDIR)/$(MACHINE)/wmain.obj \
+             $(CECONSOLEDIR)/$(MACHINE)/w32console.obj
+!endif
+
+######################################################################
+# common section
+
+CEDEFS    = -D_WINDOWS -D_WIN32_WCE=$(CEVersion) -DUNDER_CE=$(CEVersion) \
+            $(MCFLAGS) -D PERL
+
+#CEDEFS    = $(CEDEFS) -DDEBUGGING_OPS
+
+CECFLAGS  = $(CEDEFS)
+
+!if "$(CFG)" == "DEBUG"
+CECFLAGS  = $(CECFLAGS) -Zi -Od
+!endif
+
+!if "$(CFG)" == "RELEASE"
+# -O2 and -Ot give internal compiler error in perl.c and lexer.
+# Also the dll cannot be loaded by perl.exe...
+!if "$(CPU)" == "SH3"
+!else
+CECFLAGS  = $(CECFLAGS) -O2 -Ot
+!endif
+
+!endif
+
+RCDEFS    = /l 0x407 /r /d "UNICODE" /d UNDER_CE=$(CEVersion) \
+            /d _WIN32_WCE=$(CEVersion)
+
+PATH=$(CEPATH);$(PATH)
+
+INCLUDE=$(WCEROOT)\$(OSVERSION)\$(PLATFORM)\include
+LIB=$(WCEROOT)\$(OSVERSION)\$(PLATFORM)\lib\$(ARCH)
+
+######################################################################
+
+!message
+!message Compiling for $(MACHINE)
+!message LIB=$(LIB)
+!message INCLUDE=$(INCLUDE)
+!message PATH=$(CEPATH)
+!message
+
+######################################################################
+#
+# Additional compiler flags can be specified here.
+#
+
+BUILDOPT       = $(BUILDOPT) $(CECFLAGS) -DUSE_CROSS_COMPILE
+
+
+!IF "$(CRYPT_SRC)$(CRYPT_LIB)" == ""
+D_CRYPT                = undef
+!ELSE
+D_CRYPT                = define
+CRYPT_FLAG     = -DHAVE_DES_FCRYPT
+!ENDIF
+
+!IF "$(PERL_MALLOC)" == ""
+PERL_MALLOC    = undef
+!ENDIF
+
+!IF "$(USE_MULTI)" == ""
+USE_MULTI      = undef
+!ENDIF
+
+!IF "$(USE_ITHREADS)" == ""
+USE_ITHREADS   = undef
+!ENDIF
+
+!IF "$(USE_IMP_SYS)" == ""
+USE_IMP_SYS    = undef
+!ENDIF
+
+!IF "$(USE_PERLIO)" == ""
+USE_PERLIO     = undef
+!ENDIF
+
+!IF "$(USE_PERLCRT)" == ""
+USE_PERLCRT    = undef
+!ENDIF
+
+!IF "$(USE_IMP_SYS)$(USE_MULTI)" == "defineundef"
+USE_MULTI      = define
+!ENDIF
+
+!IF "$(USE_ITHREADS)$(USE_MULTI)" == "defineundef"
+USE_MULTI      = define
+!ENDIF
+
+!IF "$(USE_MULTI)" != "undef"
+BUILDOPT       = $(BUILDOPT) -DPERL_IMPLICIT_CONTEXT
+!ENDIF
+
+!IF "$(USE_IMP_SYS)" != "undef"
+BUILDOPT       = $(BUILDOPT) -DPERL_IMPLICIT_SYS
+!ENDIF
+
+!IF "$(USE_PERLIO)" == "define"
+BUILDOPT       = $(BUILDOPT) -DUSE_PERLIO
+!ENDIF
+
+!IF "$(CROSS_NAME)" == ""
+CROSS_NAME     = $(MACHINE)
+!ENDIF
+
+# new option - automatically defined in perl.h...
+#BUILDOPT        = $(BUILDOPT) -DUSE_ENVIRON_ARRAY
+
+PROCESSOR_ARCHITECTURE = $(TARGETCPU)
+ARCHNAME       = $(PLATFORM)-$(OSVERSION)-$(PROCESSOR_ARCHITECTURE)
+ARCHDIR                = ..\lib\$(ARCHNAME)
+COREDIR                = ..\lib\CORE
+XCOREDIR       = ..\xlib\$(CROSS_NAME)\CORE
+AUTODIR                = ..\lib\auto
+LIBDIR         = ..\lib
+EXTDIR         = ..\ext
+PODDIR         = ..\pod
+EXTUTILSDIR    = $(LIBDIR)\ExtUtils
+
+LINK32         = link
+LIB32          = $(LINK32) -lib
+RSC            = rc
+
+INCLUDES       = -I.\include -I. -I..
+DEFINES                = -DWIN32 -D_CONSOLE -DNO_STRICT $(CRYPT_FLAG) 
$(CECFLAGS)
+LOCDEFS                = -DPERLDLL -DPERL_CORE
+CXX_FLAG       = -TP
+
+PERLEXE_RES    = perl.res
+PERLDLL_RES    =
+
+!if "$(CFG)" == "RELEASE"
+CELIB           = celib.lib
+!endif
+
+!if "$(CFG)" == "DEBUG"
+CELIB           = celib.lib
+!endif
+
+CELIBS          = -nodefaultlib \
+                  winsock.lib $(CELIB) coredll.lib
+
+!if $(CEVersion) > 200
+CELIBS          = $(CELIBS) corelibc.lib
+!else
+CELIBS          = $(CELIBS) msvcrt.lib
+!endif
+
+LIBBASEFILES   = $(CRYPT_LIB) $(CELIBS)
+
+LIBFILES       = $(LIBBASEFILES) $(LIBC)
+
+CFLAGS         = -nologo -Gf -W3 $(INCLUDES) $(DEFINES) $(LOCDEFS) \
+               $(PCHFLAGS) $(OPTIMIZE)
+
+LINK_FLAGS     = -nologo -machine:$(PROCESSOR_ARCHITECTURE)
+
+!if "$(CFG)" == "DEBUG"
+LINK_FLAGS      = $(LINK_FLAGS) -debug:full -pdb:none
+!else
+LINK_FLAGS      = $(LINK_FLAGS) -release
+!endif
+
+OBJOUT_FLAG    = -Fo
+EXEOUT_FLAG    = -Fe
+
+CFLAGS_O       = $(CFLAGS) $(BUILDOPT)
+
+o = .obj
+
+#
+# Rules
+#
+
+.SUFFIXES : .c $(o) .dll .lib .exe .rc .res
+
+.c$(o):
+       $(CC) -c -I$(<D) $(CFLAGS_O) $(OBJOUT_FLAG)$@ $<
+
+.y.c:
+       $(NOOP)
+
+$(o).dll:
+       $(LINK32) -dll $(SUBSYS) $(LDLIBPATH) \
+            -implib:$(*B).lib -def:$(*B).def \
+           -out:$@ $(LINK_FLAGS) $(LIBFILES) $< $(LIBPERL)
+
+.rc.res:
+       $(RSC) -i.. $<
+
+# This must be relative to ../lib/CORE, else the ext dll build fails...
+PERLIMPLIB_EXP = ..\..\..\xlib\$(CROSS_NAME)\CORE\perl$(PV).lib
+PERLIMPLIB     = $(PERLCEDIR)\$(MACHINE)\perl$(PV).lib
+PERLDLL                = $(MACHINE)\perl$(PV).dll
+
+DLLDIR          = $(MACHINE)\dll
+PERLEXE                = $(MACHINE)\perl.exe
+
+CONFIGPM       = ..\xlib\$(CROSS_NAME)\Config.pm
+MINIMOD                = ..\lib\ExtUtils\Miniperl.pm
+
+# Unicode data files generated by mktables
+UNIDATAFILES    = ..\lib\unicore\Canonical.pl ..\lib\unicore\Exact.pl \
+                  ..\lib\unicore\Properties ..\lib\unicore\Decomposition.pl \
+                  ..\lib\unicore\CombiningClass.pl ..\lib\unicore\Name.pl \
+                  ..\lib\unicore\PVA.pl
+
+# Directories of Unicode data files generated by mktables
+UNIDATADIR1    = ..\lib\unicore\To
+UNIDATADIR2    = ..\lib\unicore\lib
+
+# Nominate a target which causes extensions to be re-built
+# This used to be $(PERLEXE), but at worst it is the .dll that they depend
+# on and really only the interface - i.e. the .def file used to export symbols
+# from the .dll
+PERLDEP                = perldll.def
+
+MAKE           = nmake -nologo
+
+CFGSH_TMPL     = config.ce
+CFGH_TMPL      = config_H.ce
+
+#
+# filenames given to xsubpp must have forward slashes (since it puts
+# full pathnames in #line strings)
+XSUBPP         = $(HPERL) -I..\..\lib -MCross=$(CROSS_NAME) 
..\$(EXTUTILSDIR)\xsubpp \
+               -C++ -prototypes
+
+MICROCORE_SRC  =               \
+               ..\av.c         \
+               ..\deb.c        \
+               ..\doio.c       \
+               ..\doop.c       \
+               ..\dump.c       \
+               ..\globals.c    \
+               ..\gv.c         \
+               ..\hv.c         \
+               ..\mg.c         \
+               ..\op.c         \
+               ..\pad.c        \
+               ..\perl.c       \
+               ..\perlapi.c    \
+               ..\perly.c      \
+               ..\pp.c         \
+               ..\pp_ctl.c     \
+               ..\pp_hot.c     \
+               ..\pp_pack.c    \
+               ..\pp_sort.c    \
+               ..\pp_sys.c     \
+               ..\reentr.c     \
+               ..\regcomp.c    \
+               ..\regexec.c    \
+               ..\run.c        \
+               ..\scope.c      \
+               ..\sv.c         \
+               ..\taint.c      \
+               ..\toke.c       \
+               ..\universal.c  \
+               ..\utf8.c       \
+               ..\util.c       \
+               ..\xsutils.c
+
+EXTRACORE_SRC  = $(EXTRACORE_SRC) perllib.c
+
+!IF "$(PERL_MALLOC)" == "define"
+EXTRACORE_SRC  = $(EXTRACORE_SRC) ..\malloc.c
+!ENDIF
+
+EXTRACORE_SRC  = $(EXTRACORE_SRC) ..\perlio.c .\win32io.c
+
+WIN32_SRC      =               \
+               .\wince.c       \
+               .\wincesck.c    \
+               .\win32thread.c
+
+!IF "$(CRYPT_SRC)" != ""
+WIN32_SRC      = $(WIN32_SRC) .\$(CRYPT_SRC)
+!ENDIF
+
+DLL_SRC                = $(DYNALOADER).c
+
+CORE_NOCFG_H   =               \
+               ..\av.h         \
+               ..\cop.h        \
+               ..\cv.h         \
+               ..\dosish.h     \
+               ..\embed.h      \
+               ..\form.h       \
+               ..\gv.h         \
+               ..\handy.h      \
+               ..\hv.h         \
+               ..\iperlsys.h   \
+               ..\mg.h         \
+               ..\nostdio.h    \
+               ..\op.h         \
+               ..\opcode.h     \
+               ..\perl.h       \
+               ..\perlapi.h    \
+               ..\perlsdio.h   \
+               ..\perlsfio.h   \
+               ..\perly.h      \
+               ..\pp.h         \
+               ..\proto.h      \
+               ..\regexp.h     \
+               ..\scope.h      \
+               ..\sv.h         \
+               ..\thread.h     \
+               ..\unixish.h    \
+               ..\utf8.h       \
+               ..\util.h       \
+               ..\warnings.h   \
+               ..\XSUB.h       \
+               ..\EXTERN.h     \
+               ..\perlvars.h   \
+               ..\intrpvar.h   \
+               ..\thrdvar.h    \
+               .\include\dirent.h      \
+               .\include\netdb.h       \
+               .\include\sys\socket.h  \
+               .\win32.h
+
+DYNAMIC_EXT    = Socket IO Fcntl Opcode SDBM_File POSIX attrs Thread B re \
+               Data/Dumper Devel/Peek ByteLoader Devel/DProf File/Glob \
+               Sys/Hostname
+
+STATIC_EXT     = DynaLoader
+
+DYNALOADER     = $(EXTDIR)\DynaLoader\DynaLoader
+
+ERRNO_PM       = $(LIBDIR)\Errno.pm
+
+
+EXTENSION_PM   =               \
+               $(ERRNO_PM)
+
+POD2HTML       = $(PODDIR)\pod2html
+POD2MAN                = $(PODDIR)\pod2man
+POD2LATEX      = $(PODDIR)\pod2latex
+POD2TEXT       = $(PODDIR)\pod2text
+
+CFG_VARS = \
+ "INST_DRV=$(INST_DRV)" \
+ "INST_TOP=$(INST_TOP)" \
+ "INST_VER=$(INST_VER)" \
+ "INST_ARCH=$(INST_ARCH)" \
+ "archname=$(ARCHNAME)" \
+ "CC=$(CC)" \
+ "ccflags=$(OPTIMIZE) $(DEFINES) $(BUILDOPT)" \
+ "cppflags=$(OPTIMIZE) $(DEFINES) $(BUILDOPT)" \
+ "cf_by=vkon" \
+ "cf_email=$(EMAIL)" \
+ "d_crypt=$(D_CRYPT)" \
+ "d_mymalloc=$(PERL_MALLOC)" \
+ "libs=$(LIBFILES)" \
+ "incpath=$(CCINCDIR)" \
+ "libperl=$(PERLIMPLIB_EXP)" \
+ "libpth=$(LIBPATH)" \
+ "libc=$(LIBC)" \
+ "make=nmake" \
+ "static_ext=$(STATIC_EXT)" \
+ "dynamic_ext=$(DYNAMIC_EXT)" \
+ "useithreads=$(USE_ITHREADS)" \
+ "usemultiplicity=$(USE_MULTI)" \
+ "useperlio=$(USE_PERLIO)" \
+ "LINK_FLAGS=$(LDLIBPATH) $(LINK_FLAGS) $(SUBSYS)" \
+ "optimize=$(OPTIMIZE)"
+
+#
+# Top targets
+#
+
+all: hostminiperl $(MINIMOD) $(CONFIGPM) $(UNIDATAFILES) $(PERLEXE) MakePPPort 
Extensions
+
+$(DYNALOADER)$(o) : $(DYNALOADER).c xconfig.h $(EXTDIR)\DynaLoader\dlutils.c
+
+$(CONFIGPM) : $(HPERL) ..\config.sh config_h.PL ..\minimod.pl
+       cd .. && $(HPERL) configpm --cross=$(CROSS_NAME) --no-glossary
+       -mkdir $(XCOREDIR)
+       $(XCOPY) ..\*.h $(XCOREDIR)\*.*
+       $(XCOPY) ..\*.inc $(XCOREDIR)\*.*
+       $(XCOPY) *.h $(XCOREDIR)\*.*
+       $(XCOPY) ..\ext\re\re.pm $(LIBDIR)\*.*
+       $(RCOPY) include $(XCOREDIR)\*.*
+       -$(HPERL) -I..\lib -MCross=$(CROSS_NAME) config_h.PL 
"INST_VER=$(INST_VER)" "CORE_DIR=$(XCOREDIR)" "CONFIG_H=xconfig.h"
+       $(XCOPY) xconfig.h $(XCOREDIR)\config.h
+
+.\xconfig.h:
+       -del /f xconfig.h
+       copy config_H.ce xconfig.h
+
+..\config.sh: config.ce config_sh.PL
+       $(HPERL) -I..\lib -I. config_sh.PL $(CFG_VARS) config.ce > ..\config.sh
+
+$(MINIMOD) : ..\minimod.pl
+       cd .. && $(HPERL) minimod.pl > lib\ExtUtils\Miniperl.pm
+
+$(DYNALOADER).c: $(EXTDIR)\DynaLoader\dl_win32.xs $(CONFIGPM)
+       if not exist $(AUTODIR) mkdir $(AUTODIR)
+       cd $(EXTDIR)\$(*B)
+       $(HPERL) -I..\..\lib -MCross=$(CROSS_NAME) $(*B)_pm.PL
+       $(HPERL) -I..\..\lib -MCross=$(CROSS_NAME) XSLoader_pm.PL
+       cd ..\..\win32
+       $(XCOPY) $(EXTDIR)\$(*B)\$(*B).pm $(LIBDIR)\$(NULL)
+       $(XCOPY) $(EXTDIR)\$(*B)\XSLoader.pm $(LIBDIR)\$(NULL)
+       cd $(EXTDIR)\$(*B)
+       $(XSUBPP) dl_win32.xs > $(*B).c
+       cd ..\..\win32
+
+$(EXTDIR)\DynaLoader\dl_win32.xs: dl_win32.xs
+       $(COPY) dl_win32.xs $(EXTDIR)\DynaLoader\dl_win32.xs
+
+MakePPPort: $(MINIPERL) $(CONFIGPM)
+       $(MINIPERL) -I..\lib ..\mkppport
+
+MakePPPort_clean:
+       -if exist $(MINIPERL) $(MINIPERL) -I..\lib ..\mkppport --clean
+
+#----------------------------------------------------------------------------------
+NOT_COMPILE_EXT =
+!if "$(MACHINE)" == "wince-sh3-palm-wce211"
+NOT_COMPILE_EXT = $(NOT_COMPILE_EXT) !XS/Typemap
+!endif
+!if "$(MACHINE)" == "wince-mips-palm-wce211"
+NOT_COMPILE_EXT = $(NOT_COMPILE_EXT) !XS/Typemap
+!endif
+
+Extensions: .\buildext.pl $(PERLDEP) $(CONFIGPM)
+       $(HPERL) -I..\lib -I. -MCross=$(CROSS_NAME) .\buildext.pl $(MAKE) 
$(PERLDEP) $(EXTDIR) \
+       !POSIX $(NOT_COMPILE_EXT)
+
+Extensions_clean:
+       -if exist $(MINIPERL) $(MINIPERL) -I..\lib buildext.pl $(MAKE) 
$(PERLDEP) $(EXTDIR) clean
+
+#----------------------------------------------------------------------------------
+
+$(PERLEXE_RES): perl.rc perl.ico
+       rc $(RCDEFS) perl.rc
+
+clean:
+       -rm -f $(MACHINE)/dll/*
+       -rm -f $(MACHINE)/*.obj
+       -rm -f $(MACHINE)/*.exe
+       -rm -f $(MACHINE)/*.dll
+       -rm -f $(MACHINE)/*.lib
+       -rm -f ../config.sh ../lib/Config.pm
+       -rm -f config.h xconfig.h perl.res
+
+XDLLOBJS = \
+$(DLLDIR)\av.obj \
+$(DLLDIR)\deb.obj \
+$(DLLDIR)\doio.obj \
+$(DLLDIR)\doop.obj \
+$(DLLDIR)\dump.obj \
+$(DLLDIR)\globals.obj \
+$(DLLDIR)\gv.obj \
+$(DLLDIR)\hv.obj \
+$(DLLDIR)\locale.obj \
+$(DLLDIR)\mathoms.obj \
+$(DLLDIR)\mg.obj \
+$(DLLDIR)\numeric.obj \
+$(DLLDIR)\op.obj \
+$(DLLDIR)\pad.obj \
+$(DLLDIR)\perl.obj \
+$(DLLDIR)\perlapi.obj \
+$(DLLDIR)\perlio.obj \
+$(DLLDIR)\perly.obj \
+$(DLLDIR)\pp.obj \
+$(DLLDIR)\pp_ctl.obj \
+$(DLLDIR)\pp_hot.obj \
+$(DLLDIR)\pp_pack.obj \
+$(DLLDIR)\pp_sort.obj \
+$(DLLDIR)\pp_sys.obj \
+$(DLLDIR)\reentr.obj \
+$(DLLDIR)\regcomp.obj \
+$(DLLDIR)\regexec.obj \
+$(DLLDIR)\run.obj \
+$(DLLDIR)\scope.obj \
+$(DLLDIR)\sv.obj \
+$(DLLDIR)\taint.obj \
+$(DLLDIR)\toke.obj \
+$(DLLDIR)\universal.obj \
+$(DLLDIR)\utf8.obj \
+$(DLLDIR)\util.obj \
+$(DLLDIR)\win32thread.obj \
+$(DLLDIR)\wince.obj \
+$(DLLDIR)\win32io.obj \
+$(DLLDIR)\wincesck.obj \
+$(DLLDIR)\xsutils.obj \
+$(DLLDIR)\perllib.obj \
+$(DLLDIR)\DynaLoader.obj
+!IF "$(PERL_MALLOC)" == "define"
+XDLLOBJS       = $(XDLLOBJS) $(DLLDIR)\malloc.obj
+!ENDIF
+!IF "$(CRYPT_SRC)" != ""
+XDLLOBJS       = $(XDLLOBJS) $(DLLDIR)\fcrypt.obj
+!ENDIF
+
+{$(SRCDIR)}.c{$(DLLDIR)}.obj:
+    $(CC) -c $(CFLAGS_O) -DPERL_EXTERNAL_GLOB -Fo$(DLLDIR)\ $<
+
+# compiler explains that it will optimize toke.c if we'll give it an
+# option -QMOb<num> with num>=4178
+$(DLLDIR)\toke.obj:
+    $(CC) -c $(CFLAGS_O) -QMOb9000 -DPERL_EXTERNAL_GLOB -Fo$(DLLDIR)\ ..\toke.c
+
+{$(SRCDIR)/win32}.c{$(DLLDIR)}.obj:
+    $(CC) -c $(CFLAGS_O) -DPERL_EXTERNAL_GLOB -Fo$(DLLDIR)\ $<
+
+# -DPERL_IMPLICIT_SYS needs C++ for perllib.c
+# This is the only file that depends on perlhost.h, vmem.h, and vdir.h
+!IF "$(USE_IMP_SYS)" == "define"
+$(DLLDIR)\perllib$(o)  : perllib.c .\perlhost.h .\vdir.h .\vmem.h
+       $(CC) -c -I. $(CFLAGS_O) $(CXX_FLAG) $(OBJOUT_FLAG)$@ perllib.c
+       rem (frustrated) mv perllib.obj $(DLLDIR)
+!ENDIF
+
+perldll.def : $(HPERL) $(CONFIGPM) ..\global.sym ..\pp.sym ..\makedef.pl
+       $(HPERL) -MCross -I..\lib buildext.pl --create-perllibst-h
+       $(HPERL) -w ..\makedef.pl PLATFORM=wince $(OPTIMIZE) $(DEFINES) 
$(BUILDOPT) \
+           CCTYPE=$(CCTYPE) -DPERL_DLL=$(PERLDLL) > perldll.def
+
+$(PERLDLL) : $(DLLDIR) perldll.def $(XDLLOBJS) $(PERLDLL_RES)
+       $(LINK32) -dll -def:perldll.def -out:$@ \
+                  $(SUBSYS) $(LDLIBPATH) \
+                 $(LINK_FLAGS) $(LIBFILES) \
+                 $(XDLLOBJS) $(PERLDLL_RES)
+
+$(DLLDIR) :
+       if not exist "$(DLLDIR)" mkdir "$(DLLDIR)"
+
+$(DLLDIR)\DynaLoader.obj: $(EXTDIR)\DynaLoader\DynaLoader.c
+    $(CC) -c $(CFLAGS_O) -DPERL_EXTERNAL_GLOB -Fo$(DLLDIR)\ \
+          $(EXTDIR)\DynaLoader\DynaLoader.c
+
+XPERLEXEOBJS = \
+$(MACHINE)\perlmaince.obj
+
+$(PERLEXE) : $(PERLDLL) $(CONFIGPM) $(XPERLEXEOBJS) $(PERLEXE_RES) $(STARTOBJS)
+       $(XCOPY) $(MACHINE)\*.lib $(XCOREDIR)
+       $(LINK32) $(SUBSYS) $(LDLIBPATH) \
+            -entry:wWinMainCRTStartup \
+            -out:$(MACHINE)\perl.exe \
+            -stack:0x100000 $(LINK_FLAGS) $(STARTOBJS) $(XPERLEXEOBJS) \
+            $(PERLIMPLIB) $(PERLEXE_RES) $(LIBFILES)
+
+$(MACHINE)\perlmaince.obj : perlmaince.c
+       $(CC) $(CFLAGS_O) -UPERLDLL -Fo$(MACHINE)\ -c perlmaince.c
+
+iodll:     $(IO_DLL)
+socketdll: $(SOCKET_DLL)
+dumperdll: $(DUMPER_DLL)
+
+dlls: socketdll iodll dumperdll
+       -xmkdir -p $(MACHINE)/lib/auto/IO
+       cp ../lib/auto/IO/IO.bs $(MACHINE)/lib/auto/IO
+       cp ../lib/auto/IO/IO.dll $(MACHINE)/lib/auto/IO
+       -xmkdir $(MACHINE)/lib/auto/Socket
+       cp ../lib/auto/Socket/Socket.bs $(MACHINE)/lib/auto/Socket
+       cp ../lib/auto/Socket/Socket.dll $(MACHINE)/lib/auto/Socket
+       -xmkdir -p $(MACHINE)/lib/auto/Data/Dumper
+       cp ../lib/auto/Data/Dumper/Dumper.bs $(MACHINE)/lib/auto/Data/Dumper
+       cp ../lib/auto/Data/Dumper/Dumper.dll $(MACHINE)/lib/auto/Data/Dumper
+
+makedist: all dlls
+       $(COPY) $(CELIBPATH)\celib.dll $(MACHINE)
+       cp perl.txt $(MACHINE)
+       cp registry.bat $(MACHINE)
+       cp ../lib/Config.pm $(MACHINE)/lib
+       cd $(MACHINE)
+       rm -f perl-$(MACHINE).tar.gz
+       sh -c "tar cf perl-$(MACHINE).tar *.exe *.dll *.txt *.bat lib"
+       gzip -9 perl-$(MACHINE).tar
+       mv perl-$(MACHINE).tar.gz h:/freenet/new
+       cd ..
+
+install: all
+       -cemkdir "$(INSTALL_ROOT)"
+       -cemkdir "$(INSTALL_ROOT)\bin"
+       -cemkdir "$(INSTALL_ROOT)\lib"
+       $(CECOPY) "pc:$(MACHINE)/perl.exe" "ce:$(INSTALL_ROOT)/bin"
+       $(CECOPY) "pc:$(MACHINE)/perl$(PV).dll" "ce:$(INSTALL_ROOT)/bin"
+       $(CECOPY) "pc:../xlib/$(CROSS_NAME)/Config.pm" "ce:$(INSTALL_ROOT)/lib"
+
+$(UNIDATAFILES) : $(HPERL) $(CONFIGPM) ..\lib\unicore\mktables
+       cd ..\lib\unicore && \
+       $(HPERL) -I.. mktables
+
+dist: all
+       $(HPERL) -I..\lib -MCross=$(CROSS_NAME) ce-helpers\makedist.pl 
--distdir=dist-$(CROSS_NAME) --cross-name=$(CROSS_NAME)
+
+zipdist: all
+       $(HPERL) -I..\lib -MCross=$(CROSS_NAME) ce-helpers\makedist.pl 
--distdir=dist-$(CROSS_NAME) --cross-name=$(CROSS_NAME)
+       $(HPERL) -I..\lib -MCross=$(CROSS_NAME) ce-helpers\makedist.pl 
--distdir=dist-$(CROSS_NAME) --cross-name=$(CROSS_NAME) --zip
+
+zip:
+       $(HPERL) -I..\lib -MCross=$(CROSS_NAME) ce-helpers\makedist.pl 
--distdir=dist-$(CROSS_NAME) --cross-name=$(CROSS_NAME) --zip
+
+perl.ico:
+       $(HPERL) makeico.pl perl.ico
+
+hostminiperl: ..\miniperl.exe
+
+..\miniperl.exe:
+       set PATH=$(CCHOME)\bin;$(PATH)
+       $(MAKE) -f Makefile "CCHOME=$(MSVCDIR)" "CCINCDIR=$(CCHOME)\include" 
"CCLIBDIR=$(CCHOME)\lib" "INCLUDE=$(CCHOME)\include" "LIB=$(CCHOME)\lib" 
"LINK_FLAGS=" .\config.h ..\miniperl.exe
+
+host-install:
+       perl -MConfig -MExtUtils::Install -we "install({'../lib/CORE', 
qq#$$Config{installprefixexp}/xlib/$(CROSS_NAME)/CORE#},1)"
+       perl -MConfig -MExtUtils::Install -we 
"install({'../xlib/$(CROSS_NAME)', 
qq#$$Config{installprefixexp}/xlib/$(CROSS_NAME)#},1)"
+       perl -MConfig -MFile::Copy -we "copy qq#./$(MACHINE)/perl$(PV).lib#, 
qq#$$Config{installprefixexp}/xlib/$(CROSS_NAME)/CORE#"
+       perl -MConfig -MFile::Copy -we "copy qq#../lib/Cross.pm#, 
qq#$$Config{installprefixexp}/lib#"
+       perl -MConfig -we "system qq#perl -pi.bak -we 
\"s{((arch^|priv)libexp)='.*'}{\$$1='# . \
+        quotemeta($$Config{installprefixexp}) . \
+        qq#/xlib/$(CROSS_NAME)'}\" 
$$Config{installprefixexp}/xlib/$(CROSS_NAME)/Config.pm#"

==== //depot/maint-5.8/perl/win32/makefile.mk#69 (text) ====
Index: perl/win32/makefile.mk
--- perl/win32/makefile.mk#68~30207~    2007-02-10 15:17:30.000000000 -0800
+++ perl/win32/makefile.mk      2007-02-10 15:36:59.000000000 -0800
@@ -978,7 +978,7 @@
 
 all : .\config.h $(GLOBEXE) $(MINIPERL) $(MK2)         \
        $(RIGHTMAKE) $(MINIMOD) $(CONFIGPM) $(UNIDATAFILES) $(PERLEXE)  \
-       $(X2P) Extensions
+       $(X2P) MakePPPort Extensions
 
 $(DYNALOADER)$(o) : $(DYNALOADER).c $(CORE_H) $(EXTDIR)\DynaLoader\dlutils.c
 
@@ -1236,6 +1236,12 @@
 $(EXTDIR)\DynaLoader\dl_win32.xs: dl_win32.xs
        copy dl_win32.xs $(EXTDIR)\DynaLoader\dl_win32.xs
 
+MakePPPort: $(MINIPERL) $(CONFIGPM)
+       $(MINIPERL) -I..\lib ..\mkppport
+
+MakePPPort_clean:
+       -if exist $(MINIPERL) $(MINIPERL) -I..\lib ..\mkppport --clean
+
 
#-------------------------------------------------------------------------------
 Extensions : buildext.pl $(PERLDEP) $(CONFIGPM)
        $(MINIPERL) -I..\lib buildext.pl $(MAKE) $(PERLDEP) $(EXTDIR) --dynamic
@@ -1480,7 +1486,7 @@
 
 clean : Extensions_clean _clean
 
-realclean : Extensions_realclean _clean
+realclean : Extensions_realclean MakePPPort_clean _clean
 
 # Handy way to run perlbug -ok without having to install and run the
 # installed perlbug. We don't re-run the tests here - we trust the user.
End of Patch.

Reply via email to