# # 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 = 520 # 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 # # Comment out next assign to disable perl's I/O subsystem and use compiler's # stdio for IO - depending on your compiler vendor and run time library you may # then get a number of fails from make test i.e. bugs - complain to them not us ;-). # You will also be unable to take full advantage of perl5.8's support for multiple # encodings and may see lower IO performance. You have been warned. USE_PERLIO = define # # set this if you wish to use perl's malloc # This will make perl run few times faster # WARNING: Turning this on/off WILL break binary compatibility with extensions # you may have compiled with/without it. # PERL_MALLOC = define NOOP = @echo # keep this untouched! NULL = # # 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_PERLIO)" == "" USE_PERLIO = undef !ENDIF !IF "$(USE_PERLCRT)" == "" USE_PERLCRT = undef !ENDIF !IF "$(USE_IMP_SYS)$(USE_MULTI)" == "defineundef" USE_MULTI = define !ENDIF !IF "$(USE_ITHREADS)$(USE_MULTI)" == "defineundef" USE_MULTI = define !ENDIF !IF "$(USE_MULTI)" != "undef" BUILDOPT = $(BUILDOPT) -DPERL_IMPLICIT_CONTEXT !ENDIF !IF "$(USE_IMP_SYS)" != "undef" BUILDOPT = $(BUILDOPT) -DPERL_IMPLICIT_SYS !ENDIF !IF "$(USE_PERLIO)" == "define" BUILDOPT = $(BUILDOPT) -DUSE_PERLIO !ENDIF !IF "$(CROSS_NAME)" == "" CROSS_NAME = $(MACHINE) !ENDIF # new option - automatically defined in perl.h... #BUILDOPT = $(BUILDOPT) -DUSE_ENVIRON_ARRAY PROCESSOR_ARCHITECTURE = $(TARGETCPU) ARCHNAME = $(PLATFORM)-$(OSVERSION)-$(PROCESSOR_ARCHITECTURE) ARCHDIR = ..\lib\$(ARCHNAME) COREDIR = ..\lib\CORE 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$( 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.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 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#"