Happy chainsaw stories; The removal of the 5005 threads
[p5sagit/p5-mst-13.2.git] / wince / Makefile.ce
index a4b4bf4..2771bcc 100644 (file)
@@ -3,22 +3,35 @@
 # Time-stamp: <26/10/01 15:10:06 keuchel@keuchelnt>
 
 SRCDIR     = ..
-PV         = 57
-INST_VER   = 5.7.3
+PV         = 59
+INST_VER   = 5.9.0
 
+# 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\wince
 
-WCEROOT    = N:\Windows CE Tools
+# WCEROOT is a directory where Windows CE Tools was installed
 WCEROOT    = D:\Windows CE Tools
-NTPERL     = N:\Programme\perl\bin\perl.exe
-NTPERL     = D:\Programme\ActiveState\perl-5.6\bin\Perl.exe
-CEPATH     = N:\Programme\Microsoft eMbedded Tools\EVC\WCE211\BIN
+
+# 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)
@@ -28,13 +41,22 @@ 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
+
+
 NOOP      = @echo
 # keep this untouched!
 NULL      =
 
 
-CFG=DEBUG
-#CFG=RELEASE
+#CFG=DEBUG
+CFG=RELEASE
 
 !if "$(MACHINE)" == ""
 MACHINE=wince-arm-hpc-wce300
@@ -353,14 +375,6 @@ CRYPT_FLAG = -DHAVE_DES_FCRYPT
 PERL_MALLOC    = undef
 !ENDIF
 
-!IF "$(USE_5005THREADS)" == ""
-USE_5005THREADS        = undef
-!ENDIF
-
-!IF "$(USE_5005THREADS)" == "define"
-USE_ITHREADS   = undef
-!ENDIF
-
 !IF "$(USE_IMP_SYS)" == "define"
 PERL_MALLOC    = undef
 !ENDIF
@@ -377,20 +391,23 @@ USE_ITHREADS      = undef
 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)$(USE_5005THREADS)" == "defineundefundef"
+!IF "$(USE_IMP_SYS)$(USE_MULTI)" == "defineundef"
 USE_MULTI      = define
 !ENDIF
 
 !IF "$(USE_ITHREADS)$(USE_MULTI)" == "defineundef"
 USE_MULTI      = define
-USE_5005THREADS        = undef
 !ENDIF
 
-!IF "$(USE_MULTI)$(USE_5005THREADS)" != "undefundef"
+!IF "$(USE_MULTI)" != "undef"
 BUILDOPT       = $(BUILDOPT) -DPERL_IMPLICIT_CONTEXT
 !ENDIF
 
@@ -398,14 +415,22 @@ BUILDOPT  = $(BUILDOPT) -DPERL_IMPLICIT_CONTEXT
 BUILDOPT       = $(BUILDOPT) -DPERL_IMPLICIT_SYS
 !ENDIF
 
+!IF "$(USE_PERLIO)" == "define"
+BUILDOPT       = $(BUILDOPT) -DUSE_PERLIO
+!ENDIF
+
+!IF "$(CROSS_NAME)" == ""
+CROSS_NAME     = wince
+!ENDIF
+
 # new option - automatically defined in perl.h...
 #BUILDOPT        = $(BUILDOPT) -DUSE_ENVIRON_ARRAY
 
 PROCESSOR_ARCHITECTURE = $(TARGETCPU)
 ARCHNAME       = $(PLATFORM)-$(OSVERSION)-$(PROCESSOR_ARCHITECTURE)
-# unused yet
 ARCHDIR                = ..\lib\$(ARCHNAME)
 COREDIR                = ..\lib\CORE
+XCOREDIR       = ..\xlib\$(CROSS_NAME)\CORE
 AUTODIR                = ..\lib\auto
 LIBDIR         = ..\lib
 EXTDIR         = ..\ext
@@ -482,16 +507,22 @@ $(o).dll:
        $(RSC) -i.. $<
 
 # This must be relative to ../lib/CORE, else the ext dll build fails...
-PERLIMPLIB_EXP = ..\..\wince\$(MACHINE)\perl$(PV).lib
+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       = ..\lib\Config.pm
+CONFIGPM       = ..\xlib\$(CROSS_NAME)\Config.pm
 MINIMOD                = ..\lib\ExtUtils\Miniperl.pm
 
+# 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
@@ -500,7 +531,7 @@ CFGH_TMPL   = config_H.ce
 #
 # filenames given to xsubpp must have forward slashes (since it puts
 # full pathnames in #line strings)
-XSUBPP         = $(NTPERL) -I..\..\lib ..\$(EXTUTILSDIR)\xsubpp \
+XSUBPP         = $(HPERL) -I..\..\lib -MCross=$(CROSS_NAME) ..\$(EXTUTILSDIR)\xsubpp \
                -C++ -prototypes
 
 MICROCORE_SRC  =               \
@@ -694,7 +725,7 @@ CFG_VARS = \
  "INST_VER=$(INST_VER)" \
  "INST_ARCH=$(INST_ARCH)" \
  "archname=$(ARCHNAME)" \
- "cc=$(CC)" \
+ "CC=$(CC)" \
  "ccflags=$(OPTIMIZE) $(DEFINES) $(BUILDOPT)" \
  "cf_by=Rainer Keuchel" \
  "cf_email=coyxc@rainer-keuchel.de" \
@@ -709,10 +740,9 @@ CFG_VARS = \
  "static_ext=$(STATIC_EXT)" \
  "dynamic_ext=$(DYNAMIC_EXT)" \
  "nonxs_ext=$(NONXS_EXT)" \
- "use5005threads=$(USE_5005THREADS)" \
  "useithreads=$(USE_ITHREADS)" \
- "usethreads=$(USE_5005THREADS)" \
  "usemultiplicity=$(USE_MULTI)" \
+ "useperlio=$(USE_PERLIO)" \
  "LINK_FLAGS=$(LDLIBPATH) $(LINK_FLAGS) $(SUBSYS)" \
  "optimize=$(OPTIMIZE)"
 
@@ -720,24 +750,29 @@ CFG_VARS = \
 # Top targets
 #
 
-all: $(MINIMOD) $(CONFIGPM) $(PERLEXE)
+all: hostminiperl $(MINIMOD) $(CONFIGPM) $(PERLEXE) Extensions
 
 $(DYNALOADER)$(o) : $(DYNALOADER).c $(CORE_H) $(EXTDIR)\DynaLoader\dlutils.c
 
-$(CONFIGPM): config.h ..\config.sh ..\minimod.pl
-       cd .. && $(NTPERL) configpm
-       -mkdir $(COREDIR)
-       $(XCOPY) ..\*.h $(COREDIR)\*.*
-       $(XCOPY) *.h $(COREDIR)\*.*
+$(CONFIGPM): .\config.h ..\config.sh ..\minimod.pl
+       cd .. && $(HPERL) configpm --cross=$(CROSS_NAME) --no-glossary
+       -mkdir $(XCOREDIR)
+       $(XCOPY) ..\*.h $(XCOREDIR)\*.*
+       $(XCOPY) *.h $(XCOREDIR)\*.*
        $(XCOPY) ..\ext\re\re.pm $(LIBDIR)\*.*
-       $(RCOPY) include $(COREDIR)\*.*
-       $(NTPERL) -I..\lib config_h.PL "INST_VER=$(INST_VER)"
+       $(RCOPY) include $(XCOREDIR)\*.*
+       -$(HPERL) -I..\lib -MCross=$(CROSS_NAME) config_h.PL "INST_VER=$(INST_VER)" "CORE_DIR=$(XCOREDIR)"
+       if errorlevel 1 $(MAKE) /$(MAKEFLAGS) $(CONFIGPM)
+
+.\config.h:
+       -del /f config.h
+       copy config_H.ce config.h
 
-..\config.sh config.h: config.ce config_sh.PL
-       $(NTPERL) -I..\lib config_sh.PL $(CFG_VARS) config.ce > ..\config.sh
+..\config.sh: config.ce config_sh.PL
+       $(HPERL) -I..\lib -I..\win32 config_sh.PL $(CFG_VARS) config.ce > ..\config.sh
 
 $(MINIMOD) : ..\minimod.pl
-       cd .. && $(NTPERL) minimod.pl > lib\ExtUtils\Miniperl.pm
+       cd .. && $(HPERL) minimod.pl > lib\ExtUtils\Miniperl.pm
 
 perlmain.c : runperl.c 
        $(COPY) runperl.c perlmain.c
@@ -745,8 +780,8 @@ perlmain.c : runperl.c
 $(DYNALOADER).c: $(EXTDIR)\DynaLoader\dl_win32.xs $(CONFIGPM)
        if not exist $(AUTODIR) mkdir $(AUTODIR)
        cd $(EXTDIR)\$(*B)
-       $(NTPERL) -I..\..\lib $(*B)_pm.PL
-       $(NTPERL) -I..\..\lib XSLoader_pm.PL
+       $(HPERL) -I..\..\lib -MCross=$(CROSS_NAME) $(*B)_pm.PL
+       $(HPERL) -I..\..\lib -MCross=$(CROSS_NAME) XSLoader_pm.PL
        cd ..\..\wince
        $(XCOPY) $(EXTDIR)\$(*B)\$(*B).pm $(LIBDIR)\$(NULL)
        $(XCOPY) $(EXTDIR)\$(*B)\XSLoader.pm $(LIBDIR)\$(NULL)
@@ -757,105 +792,115 @@ $(DYNALOADER).c: $(EXTDIR)\DynaLoader\dl_win32.xs $(CONFIGPM)
 $(EXTDIR)\DynaLoader\dl_win32.xs: dl_win32.xs
        $(COPY) dl_win32.xs $(EXTDIR)\DynaLoader\dl_win32.xs
 
+#----------------------------------------------------------------------------------
+Extensions: ..\win32\buildext.pl $(PERLDEP) $(CONFIGPM)
+       $(HPERL) -I..\lib -I..\win32 -MCross=$(CROSS_NAME) ..\win32\buildext.pl $(MAKE) $(PERLDEP) $(EXTDIR) \
+       !File/Glob !POSIX !Time/HiRes
+
+Extensions_clean: 
+       -if exist $(MINIPERL) $(MINIPERL) -I..\lib buildext.pl $(MAKE) $(PERLDEP) $(EXTDIR) clean
+
+#----------------------------------------------------------------------------------
+
 $(DUMPER_DLL): $(PERLEXE) $(DUMPER).xs
        cd $(EXTDIR)\Data\$(*B)
-       $(NTPERL) -I..\..\..\lib Makefile.PL PERL_CORE=1 INSTALLDIRS=perl
+       $(HPERL) -I..\..\..\lib -MCross Makefile.PL PERL_CORE=1 INSTALLDIRS=perl
        $(MAKE)
        cd ..\..\..\wince
 
 $(DPROF_DLL): $(PERLEXE) $(DPROF).xs
        cd $(EXTDIR)\Devel\$(*B)
-       $(NTPERL) -I..\..\..\lib Makefile.PL PERL_CORE=1 INSTALLDIRS=perl
+       $(HPERL) -I..\..\..\lib -MCross Makefile.PL PERL_CORE=1 INSTALLDIRS=perl
        $(MAKE)
        cd ..\..\..\wince
 
 $(GLOB_DLL): $(PERLEXE) $(GLOB).xs
        cd $(EXTDIR)\File\$(*B)
-       $(NTPERL) -I..\..\..\lib Makefile.PL PERL_CORE=1 INSTALLDIRS=perl
+       $(HPERL) -I..\..\..\lib -MCross Makefile.PL PERL_CORE=1 INSTALLDIRS=perl
        $(MAKE)
        cd ..\..\..\wince
 
 $(PEEK_DLL): $(PERLEXE) $(PEEK).xs
        cd $(EXTDIR)\Devel\$(*B)
-       $(NTPERL) -I..\..\..\lib Makefile.PL PERL_CORE=1 INSTALLDIRS=perl
+       $(HPERL) -I..\..\..\lib -MCross Makefile.PL PERL_CORE=1 INSTALLDIRS=perl
        $(MAKE)
        cd ..\..\..\wince
 
 $(RE_DLL): $(PERLEXE) $(RE).xs
        cd $(EXTDIR)\$(*B)
-       $(NTPERL) -I..\..\lib Makefile.PL PERL_CORE=1 INSTALLDIRS=perl
+       $(HPERL) -I..\..\lib -MCross Makefile.PL PERL_CORE=1 INSTALLDIRS=perl
        $(MAKE)
        cd ..\..\wince
 
 $(B_DLL): $(PERLEXE) $(B).xs
        cd $(EXTDIR)\$(*B)
-       $(NTPERL) -I..\..\lib Makefile.PL PERL_CORE=1 INSTALLDIRS=perl
+       $(HPERL) -I..\..\lib -MCross Makefile.PL PERL_CORE=1 INSTALLDIRS=perl
        $(MAKE)
        cd ..\..\wince
 
 $(THREAD_DLL): $(PERLEXE) $(THREAD).xs
        cd $(EXTDIR)\$(*B)
-       $(NTPERL) -I..\..\lib Makefile.PL PERL_CORE=1 INSTALLDIRS=perl
+       $(HPERL) -I..\..\lib -MCross Makefile.PL PERL_CORE=1 INSTALLDIRS=perl
        $(MAKE)
        cd ..\..\wince
 
 $(ATTRS_DLL): $(PERLEXE) $(ATTRS).xs
        cd $(EXTDIR)\$(*B)
-       $(NTPERL) -I..\..\lib Makefile.PL PERL_CORE=1 INSTALLDIRS=perl
+       $(HPERL) -I..\..\lib -MCross Makefile.PL PERL_CORE=1 INSTALLDIRS=perl
        $(MAKE)
        cd ..\..\wince
 
 $(POSIX_DLL): $(PERLEXE) $(POSIX).xs
        cd $(EXTDIR)\$(*B)
-       $(NTPERL) -I..\..\lib Makefile.PL PERL_CORE=1 INSTALLDIRS=perl
+       $(HPERL) -I..\..\lib -MCross Makefile.PL PERL_CORE=1 INSTALLDIRS=perl
        $(MAKE)
        cd ..\..\wince
 
 $(IO_DLL): $(PERLEXE) $(IO).xs
        cd $(EXTDIR)\$(*B)
-       $(NTPERL) -I..\..\lib Makefile.PL PERL_CORE=1 INSTALLDIRS=perl
+       $(HPERL) -I..\..\lib -MCross Makefile.PL PERL_CORE=1 INSTALLDIRS=perl
        $(MAKE)
        cd ..\..\wince
 
 $(SDBM_FILE_DLL) : $(PERLEXE) $(SDBM_FILE).xs
        cd $(EXTDIR)\$(*B)
-       $(NTPERL) -I..\..\lib Makefile.PL PERL_CORE=1 INSTALLDIRS=perl
+       $(HPERL) -I..\..\lib -MCross Makefile.PL PERL_CORE=1 INSTALLDIRS=perl
        $(MAKE)
        cd ..\..\wince
 
 $(FCNTL_DLL): $(PERLEXE) $(FCNTL).xs
        cd $(EXTDIR)\$(*B)
-       $(NTPERL) -I..\..\lib Makefile.PL PERL_CORE=1 INSTALLDIRS=perl
+       $(HPERL) -I..\..\lib -MCross Makefile.PL PERL_CORE=1 INSTALLDIRS=perl
        $(MAKE)
        cd ..\..\wince
 
 $(OPCODE_DLL): $(PERLEXE) $(OPCODE).xs
        cd $(EXTDIR)\$(*B)
-       $(NTPERL) -I..\..\lib Makefile.PL PERL_CORE=1 INSTALLDIRS=perl
+       $(HPERL) -I..\..\lib -MCross Makefile.PL PERL_CORE=1 INSTALLDIRS=perl
        $(MAKE)
        cd ..\..\wince
 
 $(SOCKET_DLL): $(PERLEXE) $(SOCKET).xs
        cd $(EXTDIR)\$(*B)
-       $(NTPERL) -I..\..\lib Makefile.PL PERL_CORE=1 INSTALLDIRS=perl
+       $(HPERL) -I..\..\lib -MCross Makefile.PL PERL_CORE=1 INSTALLDIRS=perl
        $(MAKE)
        cd ..\..\wince
 
 $(HOSTNAME_DLL): $(PERLEXE) $(HOSTNAME).xs
        cd $(EXTDIR)\Sys\$(*B)
-       $(NTPERL) -I..\..\..\lib Makefile.PL PERL_CORE=1 INSTALLDIRS=perl
+       $(HPERL) -I..\..\..\lib -MCross Makefile.PL PERL_CORE=1 INSTALLDIRS=perl
        $(MAKE)
        cd ..\..\..\wince
 
 $(BYTELOADER_DLL): $(PERLEXE) $(BYTELOADER).xs
        cd $(EXTDIR)\$(*B)
-       $(NTPERL) -I..\..\lib Makefile.PL PERL_CORE=1 INSTALLDIRS=perl
+       $(HPERL) -I..\..\lib -MCross Makefile.PL PERL_CORE=1 INSTALLDIRS=perl
        $(MAKE)
        cd ..\..\wince
 
 $(ERRNO_PM): $(PERLEXE) $(ERRNO)_pm.PL
        cd $(EXTDIR)\$(*B)
-       $(NTPERL) -I..\..\lib Makefile.PL PERL_CORE=1 INSTALLDIRS=perl
+       $(HPERL) -I..\..\lib -MCross Makefile.PL PERL_CORE=1 INSTALLDIRS=perl
        $(MAKE)
        cd ..\..\wince
 
@@ -875,7 +920,7 @@ clean:
 
 install_perlexe: $(PERLEXE)
        cedel /speicherkarte2/bin/perl.exe
-       $(CECOPY) pc:../perl.exe ce:/speicherkarte2/bin
+       $(CECOPY) pc:../perl.exe ce:$(INSTALL_ROOT)/bin
 
 install_perldll: $(PERLDLL)
        cedel /speicherkarte2/bin/perl$(PV).dll
@@ -888,17 +933,17 @@ test_perl:
        ceexec /speicherkarte2/bin/perl.exe /speicherkarte2/bin/test.pl
 
 install_lib: ../lib/Config.pm
-       $(CECOPY)       pc:../lib/Config.pm ce:/speicherkarte2/usr/lib/perl5
+       $(CECOPY)       pc:../lib/Config.pm ce:$(INSTALL_ROOT)/lib
 
 !ELSEIF "$(MACHINE)" == "wince-arm-hpc"
 
 install_perlexe: $(PERLEXE)
        -cedel /speicherkarte/bin/perl.exe
-       $(CECOPY) pc:$(MACHINE)/perl.exe ce:/speicherkarte/bin
+       $(CECOPY) pc:$(MACHINE)/perl.exe ce:$(INSTALL_ROOT)/bin
 
 install_perldll: $(PERLDLL)
        -cedel /speicherkarte/bin/perl$(PV).dll
-       $(CECOPY) pc:$(MACHINE)/perl$(PV).dll ce:/speicherkarte/bin
+       $(CECOPY) pc:$(MACHINE)/perl$(PV).dll ce:$(INSTALL_ROOT)/bin
 
 install_perl: install_perlexe install_perldll
 
@@ -907,7 +952,7 @@ test_perl:
        ceexec /speicherkarte/bin/perl.exe /speicherkarte/bin/test.pl
 
 install_lib: ../lib/Config.pm
-       $(CECOPY)       pc:../lib/Config.pm ce:/speicherkarte/usr/lib/perl5
+       $(CECOPY)       pc:../lib/Config.pm ce:$(INSTALL_ROOT)/lib
 
 !ELSEIF "$(MACHINE)" == "wince-mips-hpc"
 
@@ -924,7 +969,7 @@ test_perl:
        ceexec /netzwerk/compaq/bin/perl.exe $(INSTALL_ROOT)/test.pl
 
 install_lib: ../lib/Config.pm
-       $(CECOPY)       pc:../lib/Config.pm ce:/netzwerk/compaq/usr/lib/perl5
+       $(CECOPY)       pc:../lib/Config.pm ce:$(INSTALL_ROOT)/lib
 
 !ELSEIF "$(MACHINE)" == "wince-x86em-pocket"
 
@@ -934,10 +979,10 @@ install_lib:
        ftpcopy ../lib/Exporter/Heavy.pm ftp!ftp@localhost:/perl/lib/Exporter
 
 install_perlexe: $(PERLEXE)
-       $(CECOPY) pc:../perl.exe ce:/netzwerk/compaq/bin
+       $(CECOPY) pc:../perl.exe ce:$(INSTALL_ROOT)/bin
 
 install_perldll: $(PERLDLL)
-       $(CECOPY) pc:../perl$(PV).dll ce:/netzwerk/compaq/bin
+       $(CECOPY) pc:../perl$(PV).dll ce:$(INSTALL_ROOT)/bin
 
 install_perl: install_perlexe install_perldll
 
@@ -994,6 +1039,10 @@ $(DLLDIR)\DynaLoader.obj
 {$(SRCDIR)/wince}.c{$(DLLDIR)}.obj:
     $(CC) -c $(CFLAGS) -DPERL_EXTERNAL_GLOB -Fo$(DLLDIR)\ $<
 
+perldll.def : $(HPERL) $(CONFIGPM) ..\global.sym ..\pp.sym ..\makedef.pl
+       $(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) \
@@ -1011,7 +1060,8 @@ XPERLEXEOBJS = \
 $(MACHINE)\perlmain.obj
 
 $(PERLEXE) : $(PERLDLL) $(CONFIGPM) $(XPERLEXEOBJS) $(PERLEXE_RES) $(STARTOBJS)
-       $(LINK32) $(SUBSYS) $(LDLIBPATH) \
+       $(XCOPY) $(MACHINE)\*.lib $(XCOREDIR)
+        $(LINK32) $(SUBSYS) $(LDLIBPATH) \
             -entry:wWinMainCRTStartup \
             -out:$(MACHINE)\perl.exe \
             -stack:0x100000 $(LINK_FLAGS) $(STARTOBJS) $(XPERLEXEOBJS) \
@@ -1049,43 +1099,36 @@ makedist: all dlls
 
 !if "$(MACHINE)" == "wince-arm-hpc-wce300"
 install: all
-       $(CECOPY) pc:$(MACHINE)/perl.exe ce:/speicherkarte/bin
-       $(CECOPY) pc:$(MACHINE)/perl$(PV).dll ce:/speicherkarte/bin
+       $(CECOPY) pc:$(MACHINE)/perl.exe ce:$(INSTALL_ROOT)/bin
+       $(CECOPY) pc:$(MACHINE)/perl$(PV).dll ce:$(INSTALL_ROOT)/bin
 install_dlls: dlls
-       $(CECOPY) pc:../lib/auto/IO/io.dll ce:/speicherkarte/usr/lib/perl5/auto/IO/io.dll
+       $(CECOPY) pc:../lib/auto/IO/io.dll ce:$(INSTALL_ROOT)/lib/auto/IO/io.dll
 !else
 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.dll" "ce:$(INSTALL_ROOT)/bin"
-       $(CECOPY) "pc:../lib/Config.pm" "ce:$(INSTALL_ROOT)/lib"
-!endif
-
-!if "$(MACHINE)" == "wince-arm-hpc-wce211"
-install: all
-       $(CECOPY) pc:$(MACHINE)/perl.exe ce:/speicherkarte/bin
-       $(CECOPY) pc:$(MACHINE)/perl$(PV).dll ce:/speicherkarte/bin
-!endif
-
-!if "$(MACHINE)" == "wince-mips-hpc-wce211"
-install:
-       $(CECOPY) pc:$(MACHINE)/perl.exe ce:/bin
-       $(CECOPY) pc:$(MACHINE)/perl$(PV).dll ce:/bin
-!endif
-
-!if "$(MACHINE)" == "wince-mips-hpc-wce200"
-install:
-       $(CECOPY) pc:$(MACHINE)/perl.exe ce:/bin
-       $(CECOPY) pc:$(MACHINE)/perl$(PV).dll ce:/bin
-!endif
-
-!if "$(MACHINE)" == "wince-sh3-hpc-wce211"
-install:
-       $(CECOPY) pc:$(MACHINE)/perl.exe ce:$(INSTALL_ROOT)/bin
-       $(CECOPY) pc:$(MACHINE)/perl$(PV).dll 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"
 !endif
 
 perl.ico:
-       perl makeico.pl
+       $(HPERL) makeico.pl
+
+hostminiperl: ..\miniperl.exe
+
+..\miniperl.exe:
+       cd ../win32
+       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
+       cd ../wince
+
+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#"