This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Add new dUNDERBAR and UNDERBAR macros, to help XS writers to
[perl5.git] / wince / Makefile.ce
index a57fcfa..67c69ca 100644 (file)
@@ -3,8 +3,8 @@
 # Time-stamp: <26/10/01 15:10:06 keuchel@keuchelnt>
 
 SRCDIR     = ..
-PV         = 57
-INST_VER   = 5.7.3
+PV         = 59
+INST_VER   = 5.9.2
 
 # INSTALL_ROOT specifies a path where this perl will be installed on CE device
 INSTALL_ROOT=/netzwerk/sprache/perl
@@ -49,14 +49,22 @@ CECOPY     = cecopy
 # 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
+#CFG=DEBUG
+CFG=RELEASE
 
 !if "$(MACHINE)" == ""
 MACHINE=wince-arm-hpc-wce300
@@ -74,6 +82,12 @@ MACHINE=wince-arm-hpc-wce300
 #MACHINE=wince-x86em-palm-wce211
 !endif
 
+# set this to your email address
+#
+#EMAIL         =
+
+##################### CHANGE THESE ONLY IF YOU MUST #####################
+
 ######################################################################
 # machines
 
@@ -178,7 +192,7 @@ CPU        = ARM
 TARGETCPU  = ARM
 CEVersion  = 300
 OSVERSION  = WCE300
-PLATFORM   = HPC2000
+#PLATFORM   = HPC2000
 MCFLAGS    = -D _MT -D _DLL -D ARM -D arm -D _arm_ -D _ARM_ \
              -DPROCESSOR_ARM -DPALM_SIZE \
              -I $(CELIBDLLDIR)\inc
@@ -275,7 +289,9 @@ MCFLAGS    = -D MIPS -D mips -D _MIPS_ -D _mips_ -DPROCESSOR_MIPS \
 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
@@ -291,7 +307,7 @@ PLATFORM   = MS Pocket PC
 MCFLAGS    = -D _MT -D _DLL -DSH3 -D_SH3_ -DSHx -DPROCESSOR_SH3 \
              -DPALM_SIZE -DPOCKET_SIZE \
              -I $(CELIBDLLDIR)\inc 
-MACH       = -machine:mips
+MACH       = -machine:sh3
 SUBSYS     = -subsystem:windowsce,3.00
 CELIBPATH  = $(CELIBDLLDIR)\$(MACHINE)-release
 LDLIBPATH  = -libpath:$(CELIBPATH)
@@ -335,7 +351,11 @@ CECFLAGS  = $(CECFLAGS) -Zi -Od
 !if "$(CFG)" == "RELEASE"
 # -O2 and -Ot give internal compiler error in perl.c and lexer.
 # Also the dll cannot be loaded by perl.exe...
-CECFLAGS  = $(CECFLAGS)
+!if "$(CPU)" == "SH3"
+!else
+CECFLAGS  = $(CECFLAGS) -O2 -Ot
+!endif
+
 !endif
 
 RCDEFS    = /l 0x407 /r /d "UNICODE" /d UNDER_CE=$(CEVersion) \
@@ -362,7 +382,6 @@ LIB=$(WCEROOT)\$(OSVERSION)\$(PLATFORM)\lib\$(ARCH)
 
 BUILDOPT       = $(BUILDOPT) $(CECFLAGS)
 
-##################### CHANGE THESE ONLY IF YOU MUST #####################
 
 !IF "$(CRYPT_SRC)$(CRYPT_LIB)" == ""
 D_CRYPT                = undef
@@ -375,18 +394,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
-
 !IF "$(USE_MULTI)" == ""
 USE_MULTI      = undef
 !ENDIF
@@ -407,16 +414,15 @@ USE_PERLIO        = undef
 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
 
@@ -428,14 +434,18 @@ BUILDOPT  = $(BUILDOPT) -DPERL_IMPLICIT_SYS
 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)
-# unused yet
 ARCHDIR                = ..\lib\$(ARCHNAME)
 COREDIR                = ..\lib\CORE
+XCOREDIR       = ..\xlib\$(CROSS_NAME)\CORE
 AUTODIR                = ..\lib\auto
 LIBDIR         = ..\lib
 EXTDIR         = ..\ext
@@ -446,10 +456,10 @@ LINK32            = link
 LIB32          = $(LINK32) -lib
 RSC            = rc
 
-INCLUDES       = -I.\include -I. -I..
+INCLUDES       = -I.\include -I..\win32\include -I. -I..
 DEFINES                = -DWIN32 -D_CONSOLE -DNO_STRICT $(CRYPT_FLAG) $(CECFLAGS)
 LOCDEFS                = -DPERLDLL -DPERL_CORE
-CXX_FLAG       = -TP -GX
+CXX_FLAG       = -TP
 
 PERLEXE_RES    = perl.res
 PERLDLL_RES    =
@@ -482,6 +492,8 @@ 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
@@ -512,16 +524,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
@@ -530,7 +548,7 @@ 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 ..\$(EXTUTILSDIR)\xsubpp \
+XSUBPP         = $(HPERL) -I..\..\lib -MCross=$(CROSS_NAME) ..\$(EXTUTILSDIR)\xsubpp \
                -C++ -prototypes
 
 MICROCORE_SRC  =               \
@@ -544,6 +562,7 @@ MICROCORE_SRC       =               \
                ..\hv.c         \
                ..\mg.c         \
                ..\op.c         \
+               ..\pad.c        \
                ..\perl.c       \
                ..\perlapi.c    \
                ..\perly.c      \
@@ -625,6 +644,26 @@ CORE_NOCFG_H       =               \
                .\include\sys\socket.h  \
                .\win32.h
 
+CORE_H         = $(CORE_NOCFG_H) .\config.h
+
+MICROCORE_OBJ  = $(MICROCORE_SRC:.c=.obj)
+CORE_OBJ       = $(MICROCORE_OBJ) $(EXTRACORE_SRC:.c=.obj)
+WIN32_OBJ      = $(WIN32_SRC:.c=.obj)
+#WIN32_OBJ     = $(WIN32_OBJ:.\=.\$(DLLDIR)\)
+MINICORE_OBJ   = $(MICROCORE_OBJ:..\=.\$(DLLDIR)\)     \
+                 $(MINIDIR)\miniperlmain$(o)   \
+                 $(MINIDIR)\perlio$(o)
+MINIWIN32_OBJ  = $(WIN32_OBJ:.\=.\$(DLLDIR)\)
+MINI_OBJ       = $(MINICORE_OBJ) $(MINIWIN32_OBJ)
+DLL_OBJ                = $(DLL_SRC:.c=.obj)
+X2P_OBJ                = $(X2P_SRC:.c=.obj)
+
+PERLDLL_OBJ    = $(CORE_OBJ)
+PERLEXE_OBJ    = perlmain$(o)
+
+PERLDLL_OBJ    = $(PERLDLL_OBJ) $(WIN32_OBJ) $(DLL_OBJ)
+#PERLEXE_OBJ   = $(PERLEXE_OBJ) $(WIN32_OBJ) $(DLL_OBJ)
+
 !IF "$(USE_SETARGV)" != ""
 SETARGV_OBJ    = setargv$(o)
 !ENDIF
@@ -634,81 +673,11 @@ DYNAMIC_EXT       = Socket IO Fcntl Opcode SDBM_File POSIX attrs Thread B re \
                Sys/Hostname
 
 STATIC_EXT     = DynaLoader
-NONXS_EXT      = Errno
 
 DYNALOADER     = $(EXTDIR)\DynaLoader\DynaLoader
-SOCKET         = $(EXTDIR)\Socket\Socket
-IO             = $(EXTDIR)\IO\IO
-DUMPER         = $(EXTDIR)\Data\Dumper\Dumper
-#
-FCNTL          = $(EXTDIR)\Fcntl\Fcntl
-OPCODE         = $(EXTDIR)\Opcode\Opcode
-SDBM_FILE      = $(EXTDIR)\SDBM_File\SDBM_File
-POSIX          = $(EXTDIR)\POSIX\POSIX
-ATTRS          = $(EXTDIR)\attrs\attrs
-THREAD         = $(EXTDIR)\Thread\Thread
-B              = $(EXTDIR)\B\B
-RE             = $(EXTDIR)\re\re
-ERRNO          = $(EXTDIR)\Errno\Errno
-PEEK           = $(EXTDIR)\Devel\Peek\Peek
-BYTELOADER     = $(EXTDIR)\ByteLoader\ByteLoader
-DPROF          = $(EXTDIR)\Devel\DProf\DProf
-GLOB           = $(EXTDIR)\File\Glob\Glob
-HOSTNAME       = $(EXTDIR)\Sys\Hostname\Hostname
-SOCKET_DLL     = $(AUTODIR)\Socket\Socket.dll
-FCNTL_DLL      = $(AUTODIR)\Fcntl\Fcntl.dll
-OPCODE_DLL     = $(AUTODIR)\Opcode\Opcode.dll
-SDBM_FILE_DLL  = $(AUTODIR)\SDBM_File\SDBM_File.dll
-IO_DLL         = $(AUTODIR)\IO\IO.dll
-POSIX_DLL      = $(AUTODIR)\POSIX\POSIX.dll
-ATTRS_DLL      = $(AUTODIR)\attrs\attrs.dll
-THREAD_DLL     = $(AUTODIR)\Thread\Thread.dll
-B_DLL          = $(AUTODIR)\B\B.dll
-DUMPER_DLL     = $(AUTODIR)\Data\Dumper\Dumper.dll
-PEEK_DLL       = $(AUTODIR)\Devel\Peek\Peek.dll
-RE_DLL         = $(AUTODIR)\re\re.dll
-BYTELOADER_DLL = $(AUTODIR)\ByteLoader\ByteLoader.dll
-DPROF_DLL      = $(AUTODIR)\Devel\DProf\DProf.dll
-GLOB_DLL       = $(AUTODIR)\File\Glob\Glob.dll
-HOSTNAME_DLL   = $(AUTODIR)\Sys\Hostname\Hostname.dll
 
 ERRNO_PM       = $(LIBDIR)\Errno.pm
 
-EXTENSION_C    =               \
-               $(SOCKET).c     \
-               $(FCNTL).c      \
-               $(OPCODE).c     \
-               $(SDBM_FILE).c  \
-               $(IO).c         \
-               $(POSIX).c      \
-               $(ATTRS).c      \
-               $(THREAD).c     \
-               $(RE).c         \
-               $(DUMPER).c     \
-               $(PEEK).c       \
-               $(B).c          \
-               $(BYTELOADER).c \
-               $(DPROF).c      \
-               $(GLOB).c       \
-               $(HOSTNAME).c
-
-EXTENSION_DLL  =               \
-               $(SOCKET_DLL)   \
-               $(FCNTL_DLL)    \
-               $(OPCODE_DLL)   \
-               $(SDBM_FILE_DLL)\
-               $(IO_DLL)       \
-               $(POSIX_DLL)    \
-               $(ATTRS_DLL)    \
-               $(DUMPER_DLL)   \
-               $(PEEK_DLL)     \
-               $(B_DLL)        \
-               $(RE_DLL)       \
-               $(THREAD_DLL)   \
-               $(BYTELOADER_DLL)       \
-               $(DPROF_DLL)    \
-               $(GLOB_DLL)     \
-               $(HOSTNAME_DLL)
 
 EXTENSION_PM   =               \
                $(ERRNO_PM)
@@ -724,10 +693,10 @@ 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" \
+ "cf_email=$(EMAIL)" \
  "d_crypt=$(D_CRYPT)" \
  "d_mymalloc=$(PERL_MALLOC)" \
  "libs=$(LIBFILES)" \
@@ -738,10 +707,7 @@ CFG_VARS = \
  "make=nmake" \
  "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)" \
@@ -751,22 +717,28 @@ CFG_VARS = \
 # Top targets
 #
 
-all: hostminiperl $(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 .. && $(HPERL) configpm
-       cd .. && $(HPERL) configpm --cross=wince --no-glossary
-       -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) ..\*.inc $(XCOREDIR)\*.*
+       $(XCOPY) *.h $(XCOREDIR)\*.*
        $(XCOPY) ..\ext\re\re.pm $(LIBDIR)\*.*
-       $(RCOPY) include $(COREDIR)\*.*
-       $(HPERL) -I..\lib config_h.PL "INST_VER=$(INST_VER)"
+       $(RCOPY) include $(XCOREDIR)\*.*
+       $(XCOPY) ..\win32\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
-       $(HPERL) -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 .. && $(HPERL) minimod.pl > lib\ExtUtils\Miniperl.pm
@@ -777,8 +749,8 @@ perlmain.c : runperl.c
 $(DYNALOADER).c: $(EXTDIR)\DynaLoader\dl_win32.xs $(CONFIGPM)
        if not exist $(AUTODIR) mkdir $(AUTODIR)
        cd $(EXTDIR)\$(*B)
-       $(HPERL) -I..\..\lib $(*B)_pm.PL
-       $(HPERL) -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)
@@ -789,107 +761,23 @@ $(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
 
-$(DUMPER_DLL): $(PERLEXE) $(DUMPER).xs
-       cd $(EXTDIR)\Data\$(*B)
-       $(HPERL) -I..\..\..\lib Makefile.PL PERL_CORE=1 INSTALLDIRS=perl
-       $(MAKE)
-       cd ..\..\..\wince
-
-$(DPROF_DLL): $(PERLEXE) $(DPROF).xs
-       cd $(EXTDIR)\Devel\$(*B)
-       $(HPERL) -I..\..\..\lib Makefile.PL PERL_CORE=1 INSTALLDIRS=perl
-       $(MAKE)
-       cd ..\..\..\wince
-
-$(GLOB_DLL): $(PERLEXE) $(GLOB).xs
-       cd $(EXTDIR)\File\$(*B)
-       $(HPERL) -I..\..\..\lib Makefile.PL PERL_CORE=1 INSTALLDIRS=perl
-       $(MAKE)
-       cd ..\..\..\wince
-
-$(PEEK_DLL): $(PERLEXE) $(PEEK).xs
-       cd $(EXTDIR)\Devel\$(*B)
-       $(HPERL) -I..\..\..\lib Makefile.PL PERL_CORE=1 INSTALLDIRS=perl
-       $(MAKE)
-       cd ..\..\..\wince
-
-$(RE_DLL): $(PERLEXE) $(RE).xs
-       cd $(EXTDIR)\$(*B)
-       $(HPERL) -I..\..\lib Makefile.PL PERL_CORE=1 INSTALLDIRS=perl
-       $(MAKE)
-       cd ..\..\wince
-
-$(B_DLL): $(PERLEXE) $(B).xs
-       cd $(EXTDIR)\$(*B)
-       $(HPERL) -I..\..\lib Makefile.PL PERL_CORE=1 INSTALLDIRS=perl
-       $(MAKE)
-       cd ..\..\wince
-
-$(THREAD_DLL): $(PERLEXE) $(THREAD).xs
-       cd $(EXTDIR)\$(*B)
-       $(HPERL) -I..\..\lib Makefile.PL PERL_CORE=1 INSTALLDIRS=perl
-       $(MAKE)
-       cd ..\..\wince
-
-$(ATTRS_DLL): $(PERLEXE) $(ATTRS).xs
-       cd $(EXTDIR)\$(*B)
-       $(HPERL) -I..\..\lib Makefile.PL PERL_CORE=1 INSTALLDIRS=perl
-       $(MAKE)
-       cd ..\..\wince
-
-$(POSIX_DLL): $(PERLEXE) $(POSIX).xs
-       cd $(EXTDIR)\$(*B)
-       $(HPERL) -I..\..\lib Makefile.PL PERL_CORE=1 INSTALLDIRS=perl
-       $(MAKE)
-       cd ..\..\wince
-
-$(IO_DLL): $(PERLEXE) $(IO).xs
-       cd $(EXTDIR)\$(*B)
-       $(HPERL) -I..\..\lib Makefile.PL PERL_CORE=1 INSTALLDIRS=perl
-       $(MAKE)
-       cd ..\..\wince
-
-$(SDBM_FILE_DLL) : $(PERLEXE) $(SDBM_FILE).xs
-       cd $(EXTDIR)\$(*B)
-       $(HPERL) -I..\..\lib Makefile.PL PERL_CORE=1 INSTALLDIRS=perl
-       $(MAKE)
-       cd ..\..\wince
-
-$(FCNTL_DLL): $(PERLEXE) $(FCNTL).xs
-       cd $(EXTDIR)\$(*B)
-       $(HPERL) -I..\..\lib Makefile.PL PERL_CORE=1 INSTALLDIRS=perl
-       $(MAKE)
-       cd ..\..\wince
-
-$(OPCODE_DLL): $(PERLEXE) $(OPCODE).xs
-       cd $(EXTDIR)\$(*B)
-       $(HPERL) -I..\..\lib Makefile.PL PERL_CORE=1 INSTALLDIRS=perl
-       $(MAKE)
-       cd ..\..\wince
-
-$(SOCKET_DLL): $(PERLEXE) $(SOCKET).xs
-       cd $(EXTDIR)\$(*B)
-       $(HPERL) -I..\..\lib Makefile.PL PERL_CORE=1 INSTALLDIRS=perl
-       $(MAKE)
-       cd ..\..\wince
+#----------------------------------------------------------------------------------
+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
 
-$(HOSTNAME_DLL): $(PERLEXE) $(HOSTNAME).xs
-       cd $(EXTDIR)\Sys\$(*B)
-       $(HPERL) -I..\..\..\lib Makefile.PL PERL_CORE=1 INSTALLDIRS=perl
-       $(MAKE)
-       cd ..\..\..\wince
+Extensions: ..\win32\buildext.pl $(PERLDEP) $(CONFIGPM)
+       $(HPERL) -I..\lib -I..\win32 -MCross=$(CROSS_NAME) ..\win32\buildext.pl $(MAKE) $(PERLDEP) $(EXTDIR) \
+       !POSIX $(NOT_COMPILE_EXT)
 
-$(BYTELOADER_DLL): $(PERLEXE) $(BYTELOADER).xs
-       cd $(EXTDIR)\$(*B)
-       $(HPERL) -I..\..\lib Makefile.PL PERL_CORE=1 INSTALLDIRS=perl
-       $(MAKE)
-       cd ..\..\wince
+Extensions_clean: 
+       -if exist $(MINIPERL) $(MINIPERL) -I..\lib buildext.pl $(MAKE) $(PERLDEP) $(EXTDIR) clean
 
-$(ERRNO_PM): $(PERLEXE) $(ERRNO)_pm.PL
-       cd $(EXTDIR)\$(*B)
-       $(HPERL) -I..\..\lib Makefile.PL PERL_CORE=1 INSTALLDIRS=perl
-       $(MAKE)
-       cd ..\..\wince
+#----------------------------------------------------------------------------------
 
 $(PERLEXE_RES): perl.rc perl.ico
        rc $(RCDEFS) perl.rc
@@ -903,81 +791,6 @@ clean:
        -rm -f ../config.sh ../lib/Config.pm
        -rm -f config.h perl.res
 
-!IF "$(MACHINE)" == "wince-sh3-hpc"
-
-install_perlexe: $(PERLEXE)
-       cedel /speicherkarte2/bin/perl.exe
-       $(CECOPY) pc:../perl.exe ce:$(INSTALL_ROOT)/bin
-
-install_perldll: $(PERLDLL)
-       cedel /speicherkarte2/bin/perl$(PV).dll
-       $(CECOPY) pc:../perl$(PV).dll ce:/speicherkarte2/bin
-
-install_perl: install_perlexe install_perldll
-
-test_perl:
-       $(CECOPY) pc:test.pl ce:/speicherkarte2/bin
-       ceexec /speicherkarte2/bin/perl.exe /speicherkarte2/bin/test.pl
-
-install_lib: ../lib/Config.pm
-       $(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:$(INSTALL_ROOT)/bin
-
-install_perldll: $(PERLDLL)
-       -cedel /speicherkarte/bin/perl$(PV).dll
-       $(CECOPY) pc:$(MACHINE)/perl$(PV).dll ce:$(INSTALL_ROOT)/bin
-
-install_perl: install_perlexe install_perldll
-
-test_perl:
-       $(CECOPY) pc:test.pl ce:/speicherkarte/bin
-       ceexec /speicherkarte/bin/perl.exe /speicherkarte/bin/test.pl
-
-install_lib: ../lib/Config.pm
-       $(CECOPY)       pc:../lib/Config.pm ce:$(INSTALL_ROOT)/lib
-
-!ELSEIF "$(MACHINE)" == "wince-mips-hpc"
-
-install_perlexe: $(PERLEXE)
-       $(CECOPY) pc:../perl.exe ce:$(INSTALL_ROOT)/bin
-
-install_perldll: $(PERLDLL)
-       $(CECOPY) pc:../perl$(PV).dll ce:$(INSTALL_ROOT)/bin
-
-install_perl: install_perlexe install_perldll
-
-test_perl:
-       $(CECOPY) pc:test.pl ce:/netzwerk/compaq/bin
-       ceexec /netzwerk/compaq/bin/perl.exe $(INSTALL_ROOT)/test.pl
-
-install_lib: ../lib/Config.pm
-       $(CECOPY)       pc:../lib/Config.pm ce:$(INSTALL_ROOT)/lib
-
-!ELSEIF "$(MACHINE)" == "wince-x86em-pocket"
-
-install_lib:
-       ftpcopy ../lib/Config.pm ftp!ftp@localhost:/perl/lib
-       ftpcopy ../lib/Exporter.pm ftp!ftp@localhost:/perl/lib
-       ftpcopy ../lib/Exporter/Heavy.pm ftp!ftp@localhost:/perl/lib/Exporter
-
-install_perlexe: $(PERLEXE)
-       $(CECOPY) pc:../perl.exe ce:$(INSTALL_ROOT)/bin
-
-install_perldll: $(PERLDLL)
-       $(CECOPY) pc:../perl$(PV).dll ce:$(INSTALL_ROOT)/bin
-
-install_perl: install_perlexe install_perldll
-
-test_perl:
-       echo Not yet
-!ENDIF
-
-
 XDLLOBJS = \
 $(DLLDIR)\av.obj \
 $(DLLDIR)\deb.obj \
@@ -991,6 +804,7 @@ $(DLLDIR)\locale.obj \
 $(DLLDIR)\mg.obj \
 $(DLLDIR)\numeric.obj \
 $(DLLDIR)\op.obj \
+$(DLLDIR)\pad.obj \
 $(DLLDIR)\perl.obj \
 $(DLLDIR)\perlapi.obj \
 $(DLLDIR)\perlio.obj \
@@ -1019,14 +833,33 @@ $(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) -DPERL_EXTERNAL_GLOB -Fo$(DLLDIR)\ $<
+    $(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)/wince}.c{$(DLLDIR)}.obj:
-    $(CC) -c $(CFLAGS) -DPERL_EXTERNAL_GLOB -Fo$(DLLDIR)\ $<
+    $(CC) -c $(CFLAGS_O) -DPERL_EXTERNAL_GLOB -Fo$(DLLDIR)\ $<
 
-perldll.def : $(HPERL) $(CONFIGPM) ..\global.sym ..\pp.sym ...\makedef.pl
+# -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) -w ..\makedef.pl PLATFORM=wince $(OPTIMIZE) $(DEFINES) $(BUILDOPT) \
            CCTYPE=$(CCTYPE) -DPERL_DLL=$(PERLDLL) > perldll.def
 
@@ -1040,13 +873,14 @@ $(DLLDIR) :
        if not exist "$(DLLDIR)" mkdir "$(DLLDIR)"
 
 $(DLLDIR)\DynaLoader.obj: $(EXTDIR)\DynaLoader\DynaLoader.c
-    $(CC) -c $(CFLAGS) -DPERL_EXTERNAL_GLOB -Fo$(DLLDIR)\ \
+    $(CC) -c $(CFLAGS_O) -DPERL_EXTERNAL_GLOB -Fo$(DLLDIR)\ \
           $(EXTDIR)\DynaLoader\DynaLoader.c
 
 XPERLEXEOBJS = \
 $(MACHINE)\perlmain.obj
 
 $(PERLEXE) : $(PERLDLL) $(CONFIGPM) $(XPERLEXEOBJS) $(PERLEXE_RES) $(STARTOBJS)
+       $(XCOPY) $(MACHINE)\*.lib $(XCOREDIR)
        $(LINK32) $(SUBSYS) $(LDLIBPATH) \
             -entry:wWinMainCRTStartup \
             -out:$(MACHINE)\perl.exe \
@@ -1096,9 +930,19 @@ install: all
        -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/wince/Config.pm" "ce:$(INSTALL_ROOT)/lib"
+       $(CECOPY) "pc:../xlib/$(CROSS_NAME)/Config.pm" "ce:$(INSTALL_ROOT)/lib"
 !endif
 
+dist: all
+       $(HPERL) -I..\lib -MCross=$(CROSS_NAME) makedist.pl --distdir=dist-$(CROSS_NAME) --cross-name=$(CROSS_NAME)
+
+zipdist: all
+       $(HPERL) -I..\lib -MCross=$(CROSS_NAME) makedist.pl --distdir=dist-$(CROSS_NAME) --cross-name=$(CROSS_NAME)
+       $(HPERL) -I..\lib -MCross=$(CROSS_NAME) makedist.pl --distdir=dist-$(CROSS_NAME) --cross-name=$(CROSS_NAME) --zip
+
+zip:
+       $(HPERL) -I..\lib -MCross=$(CROSS_NAME) makedist.pl --distdir=dist-$(CROSS_NAME) --cross-name=$(CROSS_NAME) --zip
+
 perl.ico:
        $(HPERL) makeico.pl
 
@@ -1107,6 +951,14 @@ 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
+       $(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#"