#
SRCDIR = ..
-PV = 59
-INST_VER = 5.13.11
+PV = 529
# INSTALL_ROOT specifies a path where this perl will be installed on CE device
INSTALL_ROOT=/netzwerk/sprache/perl
INST_VER=
# PERLCEDIR shoud be set to current directory
-PERLCEDIR = H:\src\wince\perl\win32
+PERLCEDIR = $(MAKEDIR)
# WCEROOT is a directory where Windows CE Tools was installed
WCEROOT = D:\Windows CE Tools
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
+# comment this out if you want the legacy default behavior of including '.' at
+# the end of @INC.
+#
+DEFAULT_INC_EXCLUDES_DOT = define
#
# set this if you wish to use perl's malloc
# keep this untouched!
NULL =
+#
+# uncomment exactly one of the following
+#
+# Embedded Visual C++ 4 and older
+CCTYPE = MSVC60
+# Smart Devices for Visual C++ 2005 (aka Visual C++ 8.x) (full version)
+#CCTYPE = MSVC80
+# Smart Devices for Visual C++ 2008 (aka Visual C++ 9.x) (full version)
+#CCTYPE = MSVC90
#CFG=DEBUG
CFG=RELEASE
#MACHINE=wince-mips-palm-wce211
#MACHINE=wince-sh3-palm-wce211
#MACHINE=wince-x86em-palm-wce211
+#MACHINE=wince-x86-hpc-wce300
+#MACHINE=wince-arm-pocket-wce400
!endif
# set this to your email address
$(CECONSOLEDIR)/$(MACHINE)/w32console.obj
!endif
+!if "$(MACHINE)" == "wince-x86-hpc-wce300"
+CC = cl.exe
+ARCH = X86EM
+CPU = X86
+TARGETCPU = X86
+CEVersion = 400
+OSVERSION = WCE400
+PLATFORM = MS Pocket PC
+MCFLAGS = -DX86 -D_X86_ -Dx86 -DPROCESSOR_X86 -D _MT -D _DLL \
+ -DPALM_SIZE -DPOCKET_SIZE -I $(CELIBDLLDIR)\inc
+MACH = -machine:IX86
+SUBSYS = -subsystem:windowsce,2.0
+CELIBPATH = $(CELIBDLLDIR)\wince-x86-hpc-wce300-release
+LDLIBPATH = -libpath:$(CELIBPATH)
+STARTOBJS = $(CECONSOLEDIR)/$(MACHINE)/wmain.obj \
+ $(CECONSOLEDIR)/$(MACHINE)/w32console.obj
+!endif
+
+!if "$(MACHINE)" == "wince-arm-pocket-wce400"
+#CC = clarm.exe #set in WCEARMV4.BAT
+ARCH = ARM
+CPU = ARM
+TARGETCPU = ARM
+CEVersion = 400
+#OSVERSION = WCE300 #set in WCEARMV4.BAT
+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,4.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
-CECFLAGS = $(CEDEFS)
+CECFLAGS = $(CEDEFS) -Zi
!if "$(CFG)" == "DEBUG"
-CECFLAGS = $(CECFLAGS) -Zi -Od
+CECFLAGS = $(CECFLAGS) -Od
!endif
!if "$(CFG)" == "RELEASE"
# Also the dll cannot be loaded by perl.exe...
!if "$(CPU)" == "SH3"
!else
-CECFLAGS = $(CECFLAGS) -O2 -Ot
+CECFLAGS = $(CECFLAGS) -O1
!endif
-
+! IF "$(CCTYPE)" != "MSVC60"
+#turn on LTCG optimization for CCs that have it
+CECFLAGS = $(CECFLAGS) -GL
+! ENDIF
+! IF "$(CCTYPE)" == "MSVC80" || "$(CCTYPE)" == "MSVC90"
+#no stack security cookie for CCs where its on by default
+CECFLAGS = $(CECFLAGS) -GS-
+! ENDIF
!endif
RCDEFS = /l 0x407 /r /d "UNICODE" /d UNDER_CE=$(CEVersion) \
/d _WIN32_WCE=$(CEVersion)
-PATH=$(CEPATH);$(PATH)
+#PATH=$(CEPATH);$(PATH)
-INCLUDE=$(WCEROOT)\$(OSVERSION)\$(PLATFORM)\include
-LIB=$(WCEROOT)\$(OSVERSION)\$(PLATFORM)\lib\$(ARCH)
+# attention, for eVC 4, these paths are not generated correctly since the
+# WinCE SDK is organized differently from eVC 3, replace the next 2 macros
+# with absolute paths to the correct directories on your system
+#INCLUDE=$(WCEROOT)\$(OSVERSION)\$(PLATFORM)\include
+#LIB=$(WCEROOT)\$(OSVERSION)\$(PLATFORM)\lib\$(ARCH)
######################################################################
PERL_MALLOC = undef
!ENDIF
+!IF "$(DEFAULT_INC_EXCLUDES_DOT)" == ""
+DEFAULT_INC_EXCLUDES_DOT = undef
+!ENDIF
+
!IF "$(USE_MULTI)" == ""
USE_MULTI = undef
!ENDIF
USE_IMP_SYS = undef
!ENDIF
-!IF "$(USE_PERLIO)" == ""
-USE_PERLIO = undef
-!ENDIF
-
!IF "$(USE_PERLCRT)" == ""
USE_PERLCRT = undef
!ENDIF
BUILDOPT = $(BUILDOPT) -DPERL_IMPLICIT_SYS
!ENDIF
-!IF "$(USE_PERLIO)" == "define"
-BUILDOPT = $(BUILDOPT) -DUSE_PERLIO
-!ENDIF
-
!IF "$(CROSS_NAME)" == ""
CROSS_NAME = $(MACHINE)
!ENDIF
ARCHNAME = $(PLATFORM)-$(OSVERSION)-$(PROCESSOR_ARCHITECTURE)
ARCHDIR = ..\lib\$(ARCHNAME)
COREDIR = ..\lib\CORE
-XCOREDIR = ..\xlib\$(CROSS_NAME)\CORE
AUTODIR = ..\lib\auto
LIBDIR = ..\lib
EXTDIR = ..\ext
+DISTDIR = ..\dist
+CPANDIR = ..\cpan
PODDIR = ..\pod
EXTUTILSDIR = $(LIBDIR)\ExtUtils
CELIB = celib.lib
!endif
+#use ws2.lib instead of winsock.lib for WSAGetLastError
CELIBS = -nodefaultlib \
- winsock.lib $(CELIB) coredll.lib
+ ws2.lib $(CELIB) coredll.lib
+#this libc's purpose is WinCE entrypoint to main wrapper, not a real C std lib
!if $(CEVersion) > 200
-CELIBS = $(CELIBS) corelibc.lib
+LIBC = corelibc.lib
!else
-CELIBS = $(CELIBS) msvcrt.lib
+LIBC = msvcrt.lib
!endif
LIBBASEFILES = $(CRYPT_LIB) $(CELIBS)
LIBFILES = $(LIBBASEFILES) $(LIBC)
-CFLAGS = -nologo -Gf -W3 $(INCLUDES) $(DEFINES) $(LOCDEFS) \
+CFLAGS = -nologo -GF -W3 $(INCLUDES) $(DEFINES) $(LOCDEFS) \
$(PCHFLAGS) $(OPTIMIZE)
-LINK_FLAGS = -nologo -machine:$(PROCESSOR_ARCHITECTURE)
+LINK_FLAGS = -nologo -debug -opt:ref,icf -machine:$(PROCESSOR_ARCHITECTURE)
-!if "$(CFG)" == "DEBUG"
-LINK_FLAGS = $(LINK_FLAGS) -debug:full -pdb:none
-!else
-LINK_FLAGS = $(LINK_FLAGS) -release
+!if "$(CFG)" == "RELEASE" && "$(CCTYPE)" != "MSVC60"
+#see matching flag in CECFLAGS
+LINK_FLAGS = $(LINK_FLAGS) -ltcg
!endif
OBJOUT_FLAG = -Fo
.c$(o):
$(CC) -c -I$(<D) $(CFLAGS_O) $(OBJOUT_FLAG)$@ $<
+.c.i:
+ $(CC) -c -I$(<D) $(CFLAGS_O) -P $(OBJOUT_FLAG)$@ $<
+
.y.c:
$(NOOP)
$(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_EXP = 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
+CONFIGPM = ..\lib\Config.pm ..\lib\Config_heavy.pl
+GENUUDMAP = ..\generate_uudmap.exe
+
+UUDMAP_H = ..\uudmap.h
+BITCOUNT_H = ..\bitcount.h
+MG_DATA_H = ..\mg_data.h
+GENERATED_HEADERS = $(UUDMAP_H) $(BITCOUNT_H) $(MG_DATA_H)
# Unicode data files generated by mktables
+FIRSTUNIFILE = ..\lib\unicore\Decomposition.pl
UNIDATAFILES = ..\lib\unicore\Decomposition.pl \
..\lib\unicore\CombiningClass.pl ..\lib\unicore\Name.pl \
..\lib\unicore\Heavy.pl ..\lib\unicore\mktables.lst \
+ ..\lib\unicore\UCD.pl ..\lib\unicore\Name.pm \
..\lib\unicore\TestProp.pl
+PERLEXE_MANIFEST= .\perlexe.manifest
+PERLEXE_ICO = .\perlexe.ico
+PERLEXE_RES = .\perlexe.res
+PERLDLL_RES =
+
# Directories of Unicode data files generated by mktables
UNIDATADIR1 = ..\lib\unicore\To
UNIDATADIR2 = ..\lib\unicore\lib
PERLDEP = perldll.def
MAKE = nmake -nologo
+MAKE_BARE = nmake
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
+XCOPY = xcopy /f /r /i /d /y
+RCOPY = xcopy /f /r /i /e /d /y
+NOOP = @rem
+NULL =
+
+DEL = del
MICROCORE_SRC = \
..\av.c \
+ ..\caretx.c \
..\deb.c \
..\doio.c \
..\doop.c \
+ ..\dquote.c \
..\dump.c \
..\globals.c \
..\gv.c \
- ..\mro.c \
+ ..\mro_core.c \
..\hv.c \
+ ..\locale.c \
..\keywords.c \
+ ..\mathoms.c \
..\mg.c \
+ ..\numeric.c \
..\op.c \
..\pad.c \
..\perl.c \
..\scope.c \
..\sv.c \
..\taint.c \
+ ..\time64.c \
..\toke.c \
..\universal.c \
..\utf8.c \
WIN32_SRC = $(WIN32_SRC) .\$(CRYPT_SRC)
!ENDIF
-DLL_SRC = $(DYNALOADER).c
-
CORE_NOCFG_H = \
..\av.h \
..\cop.h \
..\gv.h \
..\handy.h \
..\hv.h \
+ ..\hv_func.h \
..\iperlsys.h \
..\mg.h \
..\nostdio.h \
..\perl.h \
..\perlapi.h \
..\perlsdio.h \
- ..\perlsfio.h \
..\perly.h \
..\pp.h \
..\proto.h \
..\intrpvar.h \
.\include\dirent.h \
.\include\netdb.h \
+ .\include\sys\errno2.h \
.\include\sys\socket.h \
.\win32.h
$(ERRNO_PM)
CFG_VARS = \
- "INST_DRV=$(INST_DRV)" \
"INST_TOP=$(INST_TOP)" \
"INST_VER=$(INST_VER)" \
"INST_ARCH=$(INST_ARCH)" \
"archname=$(ARCHNAME)" \
- "CC=$(CC)" \
+ "cc=$(CC)" \
+ "ld=$(LINK32)" \
"ccflags=$(OPTIMIZE) $(DEFINES) $(BUILDOPT)" \
"cppflags=$(OPTIMIZE) $(DEFINES) $(BUILDOPT)" \
"cf_by=vkon" \
"cf_email=$(EMAIL)" \
- "d_crypt=$(D_CRYPT)" \
+#9cef8306
"d_mymalloc=$(PERL_MALLOC)" \
"libs=$(LIBFILES)" \
"incpath=$(CCINCDIR)" \
"libperl=$(PERLIMPLIB_EXP)" \
"libpth=$(LIBPATH)" \
"libc=$(LIBC)" \
- "make=nmake" \
+ "make=$(MAKE_BARE)" \
"static_ext=$(STATIC_EXT)" \
"dynamic_ext=$(DYNAMIC_EXT)" \
+ "usethreads=$(USE_ITHREADS)" \
"useithreads=$(USE_ITHREADS)" \
"usemultiplicity=$(USE_MULTI)" \
- "useperlio=$(USE_PERLIO)" \
+ "use64bitint=undef" \
+ "uselargefiles=undef" \
+ "default_inc_excludes_dot=$(DEFAULT_INC_EXCLUDES_DOT)" \
"LINK_FLAGS=$(LDLIBPATH) $(LINK_FLAGS) $(SUBSYS)" \
- "optimize=$(OPTIMIZE)"
+ "optimize=$(OPTIMIZE)" \
+ "WIN64=$(WIN64)"
#
-# Top targets
-#
-
-all: hostminiperl $(MINIMOD) $(CONFIGPM) $(UNIDATAFILES) $(PERLEXE) MakePPPort Extensions
-
-$(DYNALOADER)$(o) : $(DYNALOADER).c xconfig.h $(EXTDIR)\DynaLoader\dlutils.c
+# filenames given to xsubpp must have forward slashes (since it puts
+# full pathnames in #line strings)
+XSUBPP = $(HPERL) -I..\..\lib ..\$(EXTUTILSDIR)\xsubpp \
+ -C++ -prototypes
-$(CONFIGPM) : $(HPERL) ..\config.sh .\xconfig.h 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)\*.*
-.\xconfig.h:
- -del /f xconfig.h
- -mkdir $(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
+#
+# Top targets
+#
-..\config.sh: config.ce config_sh.PL
+all: hostminiperl force_config_h ..\lib\buildcustomize.pl .\config.h ..\git_version.h $(CONFIGPM) $(UNIDATAFILES) $(PERLEXE) MakePPPort Extensions PostExt
+
+$(DYNALOADER)$(o) : $(DYNALOADER).c config.h $(EXTDIR)\DynaLoader\dlutils.c
+
+#convenience target
+configpm_targ : $(CONFIGPM)
+
+force_config_h:
+ -@$(DEL) /f config.h
+ -@$(DEL) /f config.sh
+ -@$(DEL) /f ..\config.h
+ -@$(DEL) /f ..\config.sh
+ -@$(DEL) $(PERLEXE_RES)
+ -@mkdir ..\host
+ -@copy $(HPERL) ..\host\miniperl.exe
+ -@copy $(GENUUDMAP) ..\host\generate_uudmap.exe
+ -@$(MAKE) -f Makefile distclean
+ -@copy ..\host\miniperl.exe $(HPERL)
+ -@copy ..\host\generate_uudmap.exe $(GENUUDMAP)
+ $(GENUUDMAP) $(GENERATED_HEADERS)
+ type NUL > force_config_h
+
+$(UUDMAP_H) $(MG_DATA_H) : $(BITCOUNT_H)
+
+$(BITCOUNT_H) :
+ $(GENUUDMAP) $(GENERATED_HEADERS)
+
+$(CONFIGPM) : $(HPERL) ..\config.sh config_h.PL ..\git_version.h
+ cd .. && $(HPERL) -Ilib configpm --no-glossary
+ if exist lib\* $(RCOPY) lib\*.* ..\lib\$(NULL)
+ $(XCOPY) ..\*.h $(COREDIR)\*.*
+ $(XCOPY) *.h $(COREDIR)\*.*
+ $(RCOPY) include $(COREDIR)\*.*
+ if errorlevel 1 $(MAKE) /$(MAKEFLAGS) $(CONFIGPM)
+
+.\config.h: $(CONFIGPM) ..\config.sh
+ -@$(DEL) /f config.h
+ -$(HPERL) -I..\lib config_h.PL "INST_VER=$(INST_VER)" "CORE_DIR=$(COREDIR)" "CONFIG_H=config.h"
+ copy config.h ..\config.h
+
+..\config.sh : config.ce config_sh.PL FindExt.pm
+ -@$(DEL) /f config.sh
$(HPERL) -I..\lib -I. config_sh.PL $(CFG_VARS) config.ce > ..\config.sh
-$(MINIMOD) : ..\minimod.pl
- cd .. && $(HPERL) minimod.pl > lib\ExtUtils\Miniperl.pm
+..\git_version.h : ..\make_patchnum.pl
+ cd .. && $(HPERL) -Ilib make_patchnum.pl && cd win32
-$(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
+# make sure that we recompile perl.c if the git version changes
+$(DLLDIR)\perl.obj : ..\git_version.h
-$(EXTDIR)\DynaLoader\dl_win32.xs: dl_win32.xs
- $(COPY) dl_win32.xs $(EXTDIR)\DynaLoader\dl_win32.xs
-
-MakePPPort: $(MINIPERL) $(CONFIGPM)
- $(HPERL) -I..\lib -MCross=$(CROSS_NAME) ..\mkppport
+MakePPPort: $(HPERL) $(CONFIGPM) Extensions_nonxs
+ $(HPERL) -I..\lib ..\mkppport
MakePPPort_clean:
-if exist $(HPERL) $(HPERL) -I..\lib ..\mkppport --clean
NOT_COMPILE_EXT = $(NOT_COMPILE_EXT) !XS/Typemap
!endif
-Extensions: ..\make_ext.pl $(PERLDEP) $(CONFIGPM)
- $(HPERL) -I..\lib -I. -MCross=$(CROSS_NAME) ..\make_ext.pl "MAKE=$(MAKE)" --dir=$(EXTDIR) --all \
- !POSIX $(NOT_COMPILE_EXT)
+Extensions: ..\make_ext.pl $(CONFIGPM)
+ $(HPERL) -I..\lib -I. ..\make_ext.pl "MAKE=$(MAKE)" --dir=$(CPANDIR) --dir=$(DISTDIR) --dir=$(EXTDIR) --all \
+ !POSIX !Win32 !Win32API/File !Time/HiRes !Time/Piece !re !SDBM_File $(NOT_COMPILE_EXT)
+
+
+Extensions_nonxs: ..\make_ext.pl ..\lib\buildcustomize.pl $(CONFIGPM) ..\pod\perlfunc.pod
+ $(XCOPY) ..\*.h $(COREDIR)\*.*
+ $(HPERL) -I..\lib ..\make_ext.pl "MAKE=$(MAKE)" --dir=$(CPANDIR) --dir=$(DISTDIR) --dir=$(EXTDIR) --nonxs
Extensions_clean:
- -if exist $(MINIPERL) $(MINIPERL) -I..\lib ..\make_ext.pl "MAKE=$(MAKE)" --dir=$(EXTDIR) --all --target=clean
+ -if exist $(HPERL) $(HPERL) -I..\lib ..\make_ext.pl "MAKE=$(MAKE)" --dir=$(CPANDIR) --dir=$(DISTDIR) --dir=$(EXTDIR) --all --target=clean
-#----------------------------------------------------------------------------------
+PostExt: rebuild_storable
+
+rebuild_storable: $(PERLEXE)
+ $(PERLEXE) -I..\lib -I. ..\dist\Storable\stacksize --core
+ cd ..\dist\Storable
+ $(MAKE) PERL_CORE=1
+ cd ..\..\win32
-$(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
- -rm -f ../t/test_state
+$(PERLEXE_RES): perlexe.rc perl.rc $(PERLEXE_MANIFEST) $(PERLEXE_ICO)
+ rc $(RCDEFS) perlexe.rc
+
+clean: Extensions_clean
+ -if exist .\$(MACHINE)\dll rmdir /s /q .\$(MACHINE)\dll
+ -@$(DEL) .\$(MACHINE)\*.obj
+ -@$(DEL) .\$(MACHINE)\*.exe
+ -@$(DEL) .\$(MACHINE)\*.dll
+ -@$(DEL) .\$(MACHINE)\*.lib
+ -@$(DEL) .\$(MACHINE)\*.exp
+ -@$(DEL) .\$(MACHINE)\*.pdb
+ -@$(DEL) ..\git_version.h
+ -@$(DEL) config.h perl.res
+ -@$(DEL) ..\t\test_state
XDLLOBJS = \
$(DLLDIR)\av.obj \
+$(DLLDIR)\caretx.obj \
$(DLLDIR)\deb.obj \
$(DLLDIR)\doio.obj \
$(DLLDIR)\doop.obj \
+$(DLLDIR)\dquote.obj \
$(DLLDIR)\dump.obj \
$(DLLDIR)\globals.obj \
$(DLLDIR)\gv.obj \
-$(DLLDIR)\mro.obj \
+$(DLLDIR)\mro_core.obj \
$(DLLDIR)\hv.obj \
$(DLLDIR)\locale.obj \
+$(DLLDIR)\keywords.obj \
$(DLLDIR)\mathoms.obj \
$(DLLDIR)\mg.obj \
$(DLLDIR)\numeric.obj \
$(DLLDIR)\scope.obj \
$(DLLDIR)\sv.obj \
$(DLLDIR)\taint.obj \
+$(DLLDIR)\time64.obj \
$(DLLDIR)\toke.obj \
$(DLLDIR)\universal.obj \
$(DLLDIR)\utf8.obj \
XDLLOBJS = $(XDLLOBJS) $(DLLDIR)\fcrypt.obj
!ENDIF
+#sanity checks to make sure all our external files (celib, w32console, and
+#MS CE SDK) are locatable
+lib_check :
+ @if not exist $(CECONSOLEDIR)\$(MACHINE)\w32console.obj cmd /k \
+ "echo w32console.obj doesn't seem to exist, check your w32console directory \
+ & exit 1"
+ @if not exist $(CELIBDLLDIR)\$(MACHINE)-release\celib.lib cmd /k \
+ "echo celib.lib doesn't seem to exist, check your celib directory \
+ & exit 1"
+ @for %X in ( $(LIBC) ) do @if exist %~^$LIB:X ( exit 0 ) \
+ else ( echo $(LIBC) doesn't seem to exist, check your build enviroment & exit 1 )
+
+#specific header files to check picked at random
+header_check :
+ @if not exist $(CELIBDLLDIR)\inc\cewin32.h cmd /k \
+ "echo cewin32.h doesn't seem to exist, check your celib directory \
+ & exit 1"
+ @for %X in (ceconfig.h) do @if exist %~^$INCLUDE:X ( exit 0 ) \
+ else ( echo ceconfig.h doesn't seem to exist, check your build enviroment & exit 1 )
+
{$(SRCDIR)}.c{$(DLLDIR)}.obj:
$(CC) -c $(CFLAGS_O) -DPERL_EXTERNAL_GLOB -Fo$(DLLDIR)\ $<
rem (frustrated) mv perllib.obj $(DLLDIR)
!ENDIF
-perldll.def : $(HPERL) $(CONFIGPM) ..\global.sym ..\makedef.pl create_perllibst_h.pl
- $(HPERL) -MCross -I..\lib create_perllibst_h.pl
- $(HPERL) -w ..\makedef.pl PLATFORM=wince $(OPTIMIZE) $(DEFINES) $(BUILDOPT) \
- CCTYPE=$(CCTYPE) -DPERL_DLL=$(PERLDLL) > perldll.def
+perldll.def : $(HPERL) $(CONFIGPM) ..\embed.fnc ..\makedef.pl create_perllibst_h.pl .\config.h
+ $(HPERL) -I..\lib create_perllibst_h.pl
+ $(HPERL) -I..\lib -w ..\makedef.pl PLATFORM=wince $(OPTIMIZE) $(DEFINES) $(BUILDOPT) \
+ CCTYPE=$(CCTYPE) -DPERL_DLL=$(PERLDLL) TARG_DIR=..\ > perldll.def
-$(PERLDLL) : $(DLLDIR) perldll.def $(XDLLOBJS) $(PERLDLL_RES)
- $(LINK32) -dll -def:perldll.def -out:$@ \
+$(PERLDLL) : header_check lib_check $(DLLDIR) perldll.def $(XDLLOBJS) $(PERLDLL_RES)
+ $(LINK32) -dll -def:perldll.def -base:0x28000000 -out:$@ \
$(SUBSYS) $(LDLIBPATH) \
$(LINK_FLAGS) $(LIBFILES) \
$(XDLLOBJS) $(PERLDLL_RES)
$(DLLDIR) :
if not exist "$(DLLDIR)" mkdir "$(DLLDIR)"
+$(EXTDIR)\DynaLoader\DynaLoader.c :
+ $(HPERL) -I..\lib -I. ..\make_ext.pl "MAKE=$(MAKE)" --dir=$(EXTDIR) --dynaloader
+
$(DLLDIR)\DynaLoader.obj: $(EXTDIR)\DynaLoader\DynaLoader.c
$(CC) -c $(CFLAGS_O) -DPERL_EXTERNAL_GLOB -Fo$(DLLDIR)\ \
$(EXTDIR)\DynaLoader\DynaLoader.c
XPERLEXEOBJS = \
$(MACHINE)\perlmaince.obj
+..\lib\buildcustomize.pl :
+ $(HPERL) -I..\lib -f ..\write_buildcustomize.pl ..
+
$(PERLEXE) : $(PERLDLL) $(CONFIGPM) $(XPERLEXEOBJS) $(PERLEXE_RES) $(STARTOBJS)
- $(XCOPY) $(MACHINE)\*.lib $(XCOREDIR)
+ $(XCOPY) $(MACHINE)\*.lib $(COREDIR)
$(LINK32) $(SUBSYS) $(LDLIBPATH) \
-entry:wWinMainCRTStartup \
-out:$(MACHINE)\perl.exe \
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
+ copy ../lib/auto/IO/IO.bs $(MACHINE)/lib/auto/IO
+ copy ../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
+ copy ../lib/auto/Socket/Socket.bs $(MACHINE)/lib/auto/Socket
+ copy ../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
+ copy ../lib/auto/Data/Dumper/Dumper.bs $(MACHINE)/lib/auto/Data/Dumper
+ copy ../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
+ copy perl.txt $(MACHINE)
+ copy registry.bat $(MACHINE)
+ copy ../lib/Config.pm $(MACHINE)/lib
cd $(MACHINE)
- rm -f perl-$(MACHINE).tar.gz
+ -@$(DEL) 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
-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"
+ $(CECOPY) "pc:../lib/Config.pm" "ce:$(INSTALL_ROOT)/lib"
-$(UNIDATAFILES) : $(HPERL) $(CONFIGPM) ..\lib\unicore\mktables
+$(UNIDATAFILES) : $(HPERL) $(CONFIGPM) ..\lib\unicore\mktables MakePPPort
cd ..\lib\unicore && \
- $(HPERL) -I.. mktables -P ..\..\pod -maketest -makelist -p
+ $(HPERL) -I.. -I..\..\lib mktables -P ..\..\pod -maketest -makelist -p -check $@ $(FIRSTUNIFILE)
dist: all
- $(HPERL) -I..\lib -MCross=$(CROSS_NAME) ce-helpers\makedist.pl --distdir=dist-$(CROSS_NAME) --cross-name=$(CROSS_NAME)
+ $(HPERL) -I..\lib 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
+ $(HPERL) -I..\lib ce-helpers\makedist.pl --distdir=dist-$(CROSS_NAME) --cross-name=$(CROSS_NAME)
+ $(HPERL) -I..\lib 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
+ $(HPERL) -I..\lib ce-helpers\makedist.pl --distdir=dist-$(CROSS_NAME) --cross-name=$(CROSS_NAME) --zip
hostminiperl: ..\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
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 -MExtUtils::Install -we "install({'../lib/CORE', qq#$$Config{installprefixexp}/lib/CORE#},1)"
+ perl -MConfig -MExtUtils::Install -we "install({'../lib', qq#$$Config{installprefixexp}/lib#},1)"
+ perl -MConfig -MFile::Copy -we "copy qq#./$(MACHINE)/perl$(PV).lib#, qq#$$Config{installprefixexp}/lib/CORE#"
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#"
+ qq#/lib'}\" $$Config{installprefixexp}/lib/Config.pm#"