Mercurial > repo
diff perl-5.22.2/win32/Makefile.ce @ 8045:a16537d2fe07
<xfix> tar xf perl-5.22.2.tar.gz # Ah, whatever, I\'m doing it anyway
author | HackBot |
---|---|
date | Sat, 14 May 2016 14:54:38 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/perl-5.22.2/win32/Makefile.ce Sat May 14 14:54:38 2016 +0000 @@ -0,0 +1,1054 @@ +# +# 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 = 522 + +# 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 = $(MAKEDIR) + +# 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 + +# cecopy program. Make shure it is in your path, as well as cemkdir, cedel +CECOPY = cecopy + +# +# 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 = + +# +# 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 + +!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 +#MACHINE=wince-x86-hpc-wce300 +#MACHINE=wince-arm-pocket-wce400 +!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 + +!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) -Zi + +!if "$(CFG)" == "DEBUG" +CECFLAGS = $(CECFLAGS) -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) -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) + +# 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) + +###################################################################### + +!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_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 "$(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 +AUTODIR = ..\lib\auto +LIBDIR = ..\lib +EXTDIR = ..\ext +DISTDIR = ..\dist +CPANDIR = ..\cpan +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 + +#use ws2.lib instead of winsock.lib for WSAGetLastError +CELIBS = -nodefaultlib \ + ws2.lib $(CELIB) coredll.lib + +#this libc's purpose is WinCE entrypoint to main wrapper, not a real C std lib +!if $(CEVersion) > 200 +LIBC = corelibc.lib +!else +LIBC = msvcrt.lib +!endif + +LIBBASEFILES = $(CRYPT_LIB) $(CELIBS) + +LIBFILES = $(LIBBASEFILES) $(LIBC) + +CFLAGS = -nologo -GF -W3 $(INCLUDES) $(DEFINES) $(LOCDEFS) \ + $(PCHFLAGS) $(OPTIMIZE) + +LINK_FLAGS = -nologo -debug -opt:ref,icf -machine:$(PROCESSOR_ARCHITECTURE) + +!if "$(CFG)" == "RELEASE" && "$(CCTYPE)" != "MSVC60" +#see matching flag in CECFLAGS +LINK_FLAGS = $(LINK_FLAGS) -ltcg +!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)$@ $< + +.c.i: + $(CC) -c -I$(<D) $(CFLAGS_O) -P $(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 = 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 ..\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 + +# 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 +MAKE_BARE = nmake + +CFGSH_TMPL = config.ce +CFGH_TMPL = config_H.ce + +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 \ + ..\dump.c \ + ..\globals.c \ + ..\gv.c \ + ..\mro_core.c \ + ..\hv.c \ + ..\locale.c \ + ..\keywords.c \ + ..\mathoms.c \ + ..\mg.c \ + ..\numeric.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 + +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 + +CORE_NOCFG_H = \ + ..\av.h \ + ..\cop.h \ + ..\cv.h \ + ..\dosish.h \ + ..\embed.h \ + ..\form.h \ + ..\gv.h \ + ..\handy.h \ + ..\hv.h \ + ..\hv_func.h \ + ..\iperlsys.h \ + ..\mg.h \ + ..\nostdio.h \ + ..\op.h \ + ..\opcode.h \ + ..\perl.h \ + ..\perlapi.h \ + ..\perlsdio.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 \ + .\include\dirent.h \ + .\include\netdb.h \ + .\include\sys\errno2.h \ + .\include\sys\socket.h \ + .\win32.h + +DYNAMIC_EXT = Socket IO Fcntl Opcode SDBM_File POSIX attributes 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) + +CFG_VARS = \ + "INST_TOP=$(INST_TOP)" \ + "INST_VER=$(INST_VER)" \ + "INST_ARCH=$(INST_ARCH)" \ + "archname=$(ARCHNAME)" \ + "cc=$(CC)" \ + "ld=$(LINK32)" \ + "ccflags=$(OPTIMIZE) $(DEFINES) $(BUILDOPT)" \ + "cppflags=$(OPTIMIZE) $(DEFINES) $(BUILDOPT)" \ + "cf_by=vkon" \ + "cf_email=$(EMAIL)" \ +#9cef8306 + "d_mymalloc=$(PERL_MALLOC)" \ + "libs=$(LIBFILES)" \ + "incpath=$(CCINCDIR)" \ + "libperl=$(PERLIMPLIB_EXP)" \ + "libpth=$(LIBPATH)" \ + "libc=$(LIBC)" \ + "make=$(MAKE_BARE)" \ + "static_ext=$(STATIC_EXT)" \ + "dynamic_ext=$(DYNAMIC_EXT)" \ + "usethreads=$(USE_ITHREADS)" \ + "useithreads=$(USE_ITHREADS)" \ + "usemultiplicity=$(USE_MULTI)" \ + "use64bitint=undef" \ + "uselargefiles=undef" \ + "LINK_FLAGS=$(LDLIBPATH) $(LINK_FLAGS) $(SUBSYS)" \ + "optimize=$(OPTIMIZE)" \ + "WIN64=$(WIN64)" + +# +# filenames given to xsubpp must have forward slashes (since it puts +# full pathnames in #line strings) +XSUBPP = $(HPERL) -I..\..\lib ..\$(EXTUTILSDIR)\xsubpp \ + -C++ -prototypes + + +# +# Top targets +# + +all: hostminiperl force_config_h ..\lib\buildcustomize.pl .\config.h ..\git_version.h $(CONFIGPM) $(UNIDATAFILES) $(PERLEXE) MakePPPort Extensions + +$(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 + +..\git_version.h : ..\make_patchnum.pl + cd .. && $(HPERL) -Ilib make_patchnum.pl && cd win32 + +# make sure that we recompile perl.c if the git version changes +$(DLLDIR)\perl.obj : ..\git_version.h + +MakePPPort: $(HPERL) $(CONFIGPM) Extensions_nonxs + $(HPERL) -I..\lib ..\mkppport + +MakePPPort_clean: + -if exist $(HPERL) $(HPERL) -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: ..\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 $(HPERL) $(HPERL) -I..\lib ..\make_ext.pl "MAKE=$(MAKE)" --dir=$(CPANDIR) --dir=$(DISTDIR) --dir=$(EXTDIR) --all --target=clean + +#---------------------------------------------------------------------------------- + +$(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)\dump.obj \ +$(DLLDIR)\globals.obj \ +$(DLLDIR)\gv.obj \ +$(DLLDIR)\mro_core.obj \ +$(DLLDIR)\hv.obj \ +$(DLLDIR)\locale.obj \ +$(DLLDIR)\keywords.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)\perllib.obj \ +$(DLLDIR)\DynaLoader.obj +!IF "$(PERL_MALLOC)" == "define" +XDLLOBJS = $(XDLLOBJS) $(DLLDIR)\malloc.obj +!ENDIF +!IF "$(CRYPT_SRC)" != "" +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)\ $< + +# 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) ..\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) : 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 $(COREDIR) + $(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 + 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 + 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 + 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) + copy perl.txt $(MACHINE) + copy registry.bat $(MACHINE) + copy ../lib/Config.pm $(MACHINE)/lib + cd $(MACHINE) + -@$(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 + 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:../lib/Config.pm" "ce:$(INSTALL_ROOT)/lib" + +$(UNIDATAFILES) : $(HPERL) $(CONFIGPM) ..\lib\unicore\mktables MakePPPort + cd ..\lib\unicore && \ + $(HPERL) -I.. -I..\..\lib mktables -P ..\..\pod -maketest -makelist -p -check $@ $(FIRSTUNIFILE) + +dist: all + $(HPERL) -I..\lib ce-helpers\makedist.pl --distdir=dist-$(CROSS_NAME) --cross-name=$(CROSS_NAME) + +zipdist: all + $(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 ce-helpers\makedist.pl --distdir=dist-$(CROSS_NAME) --cross-name=$(CROSS_NAME) --zip + +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}/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#/lib'}\" $$Config{installprefixexp}/lib/Config.pm#"