2 # perl makefile for wince
3 # During the cross-compilation, it first uses Makefile file to build
4 # miniperl on HOST and then build required platform
10 # INSTALL_ROOT specifies a path where this perl will be installed on CE device
11 INSTALL_ROOT=/netzwerk/sprache/perl
12 INST_TOP=$(INSTALL_ROOT)
15 # PERLCEDIR shoud be set to current directory
16 PERLCEDIR = $(MAKEDIR)
18 # WCEROOT is a directory where Windows CE Tools was installed
19 WCEROOT = D:\Windows CE Tools
21 # HPERL stands for host perl, which is perl on local desktop machine
22 # which is usually ..\miniperl.exe
23 #HPERL = N:\Programme\perl\bin\perl.exe
24 HPERL = $(MAKEDIR)\..\miniperl.exe
26 CEPATH = D:\Programme\Microsoft eMbedded Tools\EVC\WCE211\BIN
27 CELIBDLLDIR = h:\src\wince\celib-palm-3.0
28 CECONSOLEDIR = h:\src\wince\w32console
30 # specify following options to build perl on local machine, by MSVC
31 MSVCDIR = D:\MSVStudio\VC98
33 CCINCDIR = $(CCHOME)\include
34 CCLIBDIR = $(CCHOME)\lib
36 # cecopy program. Make shure it is in your path, as well as cemkdir, cedel
40 # comment this out if you want the legacy default behavior of including '.' at
43 DEFAULT_INC_EXCLUDES_DOT = define
46 # set this if you wish to use perl's malloc
47 # This will make perl run few times faster
48 # WARNING: Turning this on/off WILL break binary compatibility with extensions
49 # you may have compiled with/without it.
55 # keep this untouched!
59 # uncomment exactly one of the following
61 # Embedded Visual C++ 4 and older
63 # Smart Devices for Visual C++ 2005 (aka Visual C++ 8.x) (full version)
65 # Smart Devices for Visual C++ 2008 (aka Visual C++ 9.x) (full version)
71 !if "$(MACHINE)" == ""
72 MACHINE=wince-arm-hpc-wce300
73 #MACHINE=wince-arm-hpc-wce211
74 #MACHINE=wince-sh3-hpc-wce211
75 #MACHINE=wince-mips-hpc-wce211
76 #MACHINE=wince-sh3-hpc-wce200
77 #MACHINE=wince-mips-hpc-wce200
78 #MACHINE=wince-arm-pocket-wce300
79 #MACHINE=wince-mips-pocket-wce300
80 #MACHINE=wince-sh3-pocket-wce300
81 #MACHINE=wince-x86em-pocket-wce300
82 #MACHINE=wince-mips-palm-wce211
83 #MACHINE=wince-sh3-palm-wce211
84 #MACHINE=wince-x86em-palm-wce211
85 #MACHINE=wince-x86-hpc-wce300
86 #MACHINE=wince-arm-pocket-wce400
89 # set this to your email address
93 ##################### CHANGE THESE ONLY IF YOU MUST #####################
95 ######################################################################
98 !if "$(MACHINE)" == "wince-sh3-hpc-wce211"
105 PLATFORM = MS HPC Pro
106 MCFLAGS = -MDd -DSH3 -D_SH3_ -DSHx -DPROCESSOR_SH3 -DPALM_SIZE \
107 -I $(CELIBDLLDIR)\inc
108 SUBSYS = -subsystem:windowsce,2.11
109 CELIBPATH = $(CELIBDLLDIR)\$(MACHINE)-release
110 LDLIBPATH = -libpath:$(CELIBPATH)
111 STARTOBJS = $(CECONSOLEDIR)/$(MACHINE)/wmain.obj \
112 $(CECONSOLEDIR)/$(MACHINE)/w32console.obj
115 !if "$(MACHINE)" == "wince-mips-hpc-wce211"
122 PLATFORM = MS HPC Pro
123 MCFLAGS = -D _MT -D _DLL \
124 -D MIPS -D mips -D _MIPS_ -D _mips_ -DPROCESSOR_MIPS \
126 -I $(CELIBDLLDIR)\inc
127 SUBSYS = -subsystem:windowsce,2.11
128 CELIBPATH = $(CELIBDLLDIR)\$(MACHINE)-release
129 LDLIBPATH = -libpath:$(CELIBPATH)
130 STARTOBJS = $(CECONSOLEDIR)/$(MACHINE)/wmain.obj \
131 $(CECONSOLEDIR)/$(MACHINE)/w32console.obj
134 !if "$(MACHINE)" == "wince-mips-hpc-wce200"
142 # MUST USE -MD to get the right FPE stuff...
143 MCFLAGS = -D _MT -D _DLL -MD \
144 -D MIPS -D mips -D _MIPS_ -D _mips_ -DPROCESSOR_MIPS \
146 -I $(CELIBDLLDIR)\inc
147 SUBSYS = -subsystem:windowsce,2.00
148 CELIBPATH = $(CELIBDLLDIR)\$(MACHINE)-release
149 LDLIBPATH = -libpath:$(CELIBPATH)
150 STARTOBJS = $(CECONSOLEDIR)/$(MACHINE)/wmain.obj \
151 $(CECONSOLEDIR)/$(MACHINE)/w32console.obj
154 !if "$(MACHINE)" == "wince-sh3-hpc-wce200"
162 # MUST USE -MD to get the right FPE stuff...
163 MCFLAGS = -D _MT -D _DLL -MD \
164 -D SH3 -D sh3 -D _SH3_ -D _sh3_ -D SHx -DPROCESSOR_SH3 \
166 -I $(CELIBDLLDIR)\inc
167 SUBSYS = -subsystem:windowsce,2.00
168 CELIBPATH = $(CELIBDLLDIR)\$(MACHINE)-release
169 LDLIBPATH = -libpath:$(CELIBPATH)
170 STARTOBJS = $(CECONSOLEDIR)/$(MACHINE)/wmain.obj \
171 $(CECONSOLEDIR)/$(MACHINE)/w32console.obj
174 !if "$(MACHINE)" == "wince-arm-hpc-wce211"
181 PLATFORM = MS HPC Pro
182 MCFLAGS = -D _MT -D _DLL -D ARM -D arm -D _arm_ -D _ARM_ \
183 -DPROCESSOR_ARM -DPALM_SIZE \
184 -I $(CELIBDLLDIR)\inc
185 SUBSYS = -subsystem:windowsce,2.11
186 CELIBPATH = $(CELIBDLLDIR)\$(MACHINE)-release
187 LDLIBPATH = -libpath:$(CELIBPATH)
188 STARTOBJS = $(CECONSOLEDIR)/$(MACHINE)/wmain.obj \
189 $(CECONSOLEDIR)/$(MACHINE)/w32console.obj
192 !if "$(MACHINE)" == "wince-arm-hpc-wce300"
200 MCFLAGS = -D _MT -D _DLL -D ARM -D arm -D _arm_ -D _ARM_ \
201 -DPROCESSOR_ARM -DPALM_SIZE \
202 -I $(CELIBDLLDIR)\inc
203 SUBSYS = -subsystem:windowsce,3.00
204 CELIBPATH = $(CELIBDLLDIR)\$(MACHINE)-release
205 LDLIBPATH = -libpath:$(CELIBPATH)
206 STARTOBJS = $(CECONSOLEDIR)/$(MACHINE)/wmain.obj \
207 $(CECONSOLEDIR)/$(MACHINE)/w32console.obj
210 !if "$(MACHINE)" == "wince-mips-palm-wce211"
217 PLATFORM = MS Palm Size PC
218 MCFLAGS = -DMIPS -D_MIPS_ -DPROCESSOR_MIPS -D PALM_SIZE -D _DLL -D _MT \
219 -I $(CELIBDLLDIR)\inc
220 SUBSYS = -subsystem:windowsce,2.11
221 CELIBPATH = $(CELIBDLLDIR)\$(MACHINE)-release
222 LDLIBPATH = -libpath:$(CELIBPATH)
223 STARTOBJS = $(CECONSOLEDIR)/$(MACHINE)/wmain.obj \
224 $(CECONSOLEDIR)/$(MACHINE)/w32console.obj
227 !if "$(MACHINE)" == "wince-sh3-palm-wce211"
234 PLATFORM = MS Palm Size PC
235 MCFLAGS = -D _MT -D _DLL -DSH3 -D_SH3_ -DSHx -DPROCESSOR_SH3 -DPALM_SIZE \
236 -I $(CELIBDLLDIR)\inc
237 SUBSYS = -subsystem:windowsce,2.11
238 CELIBPATH = $(CELIBDLLDIR)\$(MACHINE)-release
239 LDLIBPATH = -libpath:$(CELIBPATH)
240 STARTOBJS = $(CECONSOLEDIR)/$(MACHINE)/wmain.obj \
241 $(CECONSOLEDIR)/$(MACHINE)/w32console.obj
244 !if "$(MACHINE)" == "wince-x86em-palm-wce211"
251 PLATFORM = MS Palm Size PC
252 MCFLAGS = -MDd -DX86 -D_X86_ -DPROCESSOR_X86 \
253 -D_WIN32_WCE_EMULATION -DPALM_SIZE \
254 -I $(CELIBDLLDIR)\inc
256 SUBSYS = -subsystem:windows
257 CELIBPATH = $(CELIBDLLDIR)\$(MACHINE)-release
258 LDLIBPATH = -libpath:$(CELIBPATH)
259 STARTOBJS = $(CECONSOLEDIR)/$(MACHINE)/wmain.obj \
260 $(CECONSOLEDIR)/$(MACHINE)/w32console.obj
263 !if "$(MACHINE)" == "wince-x86em-pocket-wce300"
270 PLATFORM = MS Pocket PC
271 MCFLAGS = -DX86 -D_X86_ -DPROCESSOR_X86 -D _MT -D _DLL \
272 -D_WIN32_WCE_EMULATION -DPALM_SIZE -DPOCKET_SIZE \
273 -I $(CELIBDLLDIR)\inc
275 SUBSYS = -subsystem:windows
276 CELIBPATH = $(CELIBDLLDIR)\$(MACHINE)-release
277 LDLIBPATH = -libpath:$(CELIBPATH)
278 STARTOBJS = $(CECONSOLEDIR)/$(MACHINE)/wmain.obj \
279 $(CECONSOLEDIR)/$(MACHINE)/w32console.obj
282 !if "$(MACHINE)" == "wince-mips-pocket-wce300"
289 PLATFORM = MS Pocket PC
290 MCFLAGS = -D MIPS -D mips -D _MIPS_ -D _mips_ -DPROCESSOR_MIPS \
291 -D _MT -D _DLL -DPALM_SIZE -DPOCKET_SIZE \
292 -I $(CELIBDLLDIR)\inc
294 SUBSYS = -subsystem:windowsce,3.00
295 CELIBPATH = $(CELIBDLLDIR)\$(MACHINE)-release
296 #STDLIBPATH = $(WCEROOT)\$(OSVERSION)\$(PLATFORM)\lib\$(CPU)
297 LDLIBPATH = -libpath:$(CELIBPATH)
298 #"-libpath:$(STDLIBPATH)"
299 STARTOBJS = $(CECONSOLEDIR)/$(MACHINE)/wmain.obj \
300 $(CECONSOLEDIR)/$(MACHINE)/w32console.obj
303 !if "$(MACHINE)" == "wince-sh3-pocket-wce300"
310 PLATFORM = MS Pocket PC
311 MCFLAGS = -D _MT -D _DLL -DSH3 -D_SH3_ -DSHx -DPROCESSOR_SH3 \
312 -DPALM_SIZE -DPOCKET_SIZE \
313 -I $(CELIBDLLDIR)\inc
315 SUBSYS = -subsystem:windowsce,3.00
316 CELIBPATH = $(CELIBDLLDIR)\$(MACHINE)-release
317 LDLIBPATH = -libpath:$(CELIBPATH)
318 STARTOBJS = $(CECONSOLEDIR)/$(MACHINE)/wmain.obj \
319 $(CECONSOLEDIR)/$(MACHINE)/w32console.obj
322 !if "$(MACHINE)" == "wince-arm-pocket-wce300"
329 PLATFORM = MS Pocket PC
330 MCFLAGS = -D ARM -D arm -D _ARM_ -D _arm_ -DPROCESSOR_ARM \
331 -D _MT -D _DLL -DPALM_SIZE -DPOCKET_SIZE \
332 -I $(CELIBDLLDIR)\inc
334 SUBSYS = -subsystem:windowsce,3.00
335 CELIBPATH = $(CELIBDLLDIR)\$(MACHINE)-release
336 LDLIBPATH = -libpath:$(CELIBPATH)
337 STARTOBJS = $(CECONSOLEDIR)/$(MACHINE)/wmain.obj \
338 $(CECONSOLEDIR)/$(MACHINE)/w32console.obj
341 !if "$(MACHINE)" == "wince-x86-hpc-wce300"
348 PLATFORM = MS Pocket PC
349 MCFLAGS = -DX86 -D_X86_ -Dx86 -DPROCESSOR_X86 -D _MT -D _DLL \
350 -DPALM_SIZE -DPOCKET_SIZE -I $(CELIBDLLDIR)\inc
352 SUBSYS = -subsystem:windowsce,2.0
353 CELIBPATH = $(CELIBDLLDIR)\wince-x86-hpc-wce300-release
354 LDLIBPATH = -libpath:$(CELIBPATH)
355 STARTOBJS = $(CECONSOLEDIR)/$(MACHINE)/wmain.obj \
356 $(CECONSOLEDIR)/$(MACHINE)/w32console.obj
359 !if "$(MACHINE)" == "wince-arm-pocket-wce400"
360 #CC = clarm.exe #set in WCEARMV4.BAT
365 #OSVERSION = WCE300 #set in WCEARMV4.BAT
366 PLATFORM = MS Pocket PC
367 MCFLAGS = -D ARM -D arm -D _ARM_ -D _arm_ -DPROCESSOR_ARM \
368 -D _MT -D _DLL -DPALM_SIZE -DPOCKET_SIZE \
369 -I $(CELIBDLLDIR)\inc
371 SUBSYS = -subsystem:windowsce,4.00
372 CELIBPATH = $(CELIBDLLDIR)\$(MACHINE)-release
373 LDLIBPATH = -libpath:$(CELIBPATH)
374 STARTOBJS = $(CECONSOLEDIR)/$(MACHINE)/wmain.obj \
375 $(CECONSOLEDIR)/$(MACHINE)/w32console.obj
379 ######################################################################
382 CEDEFS = -D_WINDOWS -D_WIN32_WCE=$(CEVersion) -DUNDER_CE=$(CEVersion) \
385 CECFLAGS = $(CEDEFS) -Zi
387 !if "$(CFG)" == "DEBUG"
388 CECFLAGS = $(CECFLAGS) -Od
391 !if "$(CFG)" == "RELEASE"
392 # -O2 and -Ot give internal compiler error in perl.c and lexer.
393 # Also the dll cannot be loaded by perl.exe...
394 !if "$(CPU)" == "SH3"
396 CECFLAGS = $(CECFLAGS) -O1
398 ! IF "$(CCTYPE)" != "MSVC60"
399 #turn on LTCG optimization for CCs that have it
400 CECFLAGS = $(CECFLAGS) -GL
402 ! IF "$(CCTYPE)" == "MSVC80" || "$(CCTYPE)" == "MSVC90"
403 #no stack security cookie for CCs where its on by default
404 CECFLAGS = $(CECFLAGS) -GS-
408 RCDEFS = /l 0x407 /r /d "UNICODE" /d UNDER_CE=$(CEVersion) \
409 /d _WIN32_WCE=$(CEVersion)
411 #PATH=$(CEPATH);$(PATH)
413 # attention, for eVC 4, these paths are not generated correctly since the
414 # WinCE SDK is organized differently from eVC 3, replace the next 2 macros
415 # with absolute paths to the correct directories on your system
416 #INCLUDE=$(WCEROOT)\$(OSVERSION)\$(PLATFORM)\include
417 #LIB=$(WCEROOT)\$(OSVERSION)\$(PLATFORM)\lib\$(ARCH)
419 ######################################################################
422 !message Compiling for $(MACHINE)
424 !message INCLUDE=$(INCLUDE)
425 !message PATH=$(CEPATH)
428 ######################################################################
430 # Additional compiler flags can be specified here.
433 BUILDOPT = $(BUILDOPT) $(CECFLAGS) -DUSE_CROSS_COMPILE
436 !IF "$(CRYPT_SRC)$(CRYPT_LIB)" == ""
440 CRYPT_FLAG = -DHAVE_DES_FCRYPT
443 !IF "$(PERL_MALLOC)" == ""
447 !IF "$(DEFAULT_INC_EXCLUDES_DOT)" == ""
448 DEFAULT_INC_EXCLUDES_DOT = undef
451 !IF "$(USE_MULTI)" == ""
455 !IF "$(USE_ITHREADS)" == ""
459 !IF "$(USE_IMP_SYS)" == ""
463 !IF "$(USE_PERLCRT)" == ""
467 !IF "$(USE_IMP_SYS)$(USE_MULTI)" == "defineundef"
471 !IF "$(USE_ITHREADS)$(USE_MULTI)" == "defineundef"
475 !IF "$(USE_MULTI)" != "undef"
476 BUILDOPT = $(BUILDOPT) -DPERL_IMPLICIT_CONTEXT
479 !IF "$(USE_IMP_SYS)" != "undef"
480 BUILDOPT = $(BUILDOPT) -DPERL_IMPLICIT_SYS
483 !IF "$(CROSS_NAME)" == ""
484 CROSS_NAME = $(MACHINE)
487 # new option - automatically defined in perl.h...
488 #BUILDOPT = $(BUILDOPT) -DUSE_ENVIRON_ARRAY
490 PROCESSOR_ARCHITECTURE = $(TARGETCPU)
491 ARCHNAME = $(PLATFORM)-$(OSVERSION)-$(PROCESSOR_ARCHITECTURE)
492 ARCHDIR = ..\lib\$(ARCHNAME)
493 COREDIR = ..\lib\CORE
494 AUTODIR = ..\lib\auto
500 EXTUTILSDIR = $(LIBDIR)\ExtUtils
503 LIB32 = $(LINK32) -lib
506 INCLUDES = -I.\include -I. -I..
507 DEFINES = -DWIN32 -D_CONSOLE -DNO_STRICT $(CRYPT_FLAG) $(CECFLAGS)
508 LOCDEFS = -DPERLDLL -DPERL_CORE
511 PERLEXE_RES = perl.res
514 !if "$(CFG)" == "RELEASE"
518 !if "$(CFG)" == "DEBUG"
522 #use ws2.lib instead of winsock.lib for WSAGetLastError
523 CELIBS = -nodefaultlib \
524 ws2.lib $(CELIB) coredll.lib
526 #this libc's purpose is WinCE entrypoint to main wrapper, not a real C std lib
527 !if $(CEVersion) > 200
533 LIBBASEFILES = $(CRYPT_LIB) $(CELIBS)
535 LIBFILES = $(LIBBASEFILES) $(LIBC)
537 CFLAGS = -nologo -GF -W3 $(INCLUDES) $(DEFINES) $(LOCDEFS) \
538 $(PCHFLAGS) $(OPTIMIZE)
540 LINK_FLAGS = -nologo -debug -opt:ref,icf -machine:$(PROCESSOR_ARCHITECTURE)
542 !if "$(CFG)" == "RELEASE" && "$(CCTYPE)" != "MSVC60"
543 #see matching flag in CECFLAGS
544 LINK_FLAGS = $(LINK_FLAGS) -ltcg
550 CFLAGS_O = $(CFLAGS) $(BUILDOPT)
558 .SUFFIXES : .c $(o) .dll .lib .exe .rc .res
561 $(CC) -c -I$(<D) $(CFLAGS_O) $(OBJOUT_FLAG)$@ $<
564 $(CC) -c -I$(<D) $(CFLAGS_O) -P $(OBJOUT_FLAG)$@ $<
570 $(LINK32) -dll $(SUBSYS) $(LDLIBPATH) \
571 -implib:$(*B).lib -def:$(*B).def \
572 -out:$@ $(LINK_FLAGS) $(LIBFILES) $< $(LIBPERL)
577 # This must be relative to ../lib/CORE, else the ext dll build fails...
578 PERLIMPLIB_EXP = perl$(PV).lib
579 PERLIMPLIB = $(PERLCEDIR)\$(MACHINE)\perl$(PV).lib
580 PERLDLL = $(MACHINE)\perl$(PV).dll
582 DLLDIR = $(MACHINE)\dll
583 PERLEXE = $(MACHINE)\perl.exe
585 CONFIGPM = ..\lib\Config.pm ..\lib\Config_heavy.pl
586 GENUUDMAP = ..\generate_uudmap.exe
588 UUDMAP_H = ..\uudmap.h
589 BITCOUNT_H = ..\bitcount.h
590 MG_DATA_H = ..\mg_data.h
591 GENERATED_HEADERS = $(UUDMAP_H) $(BITCOUNT_H) $(MG_DATA_H)
593 # Unicode data files generated by mktables
594 FIRSTUNIFILE = ..\lib\unicore\Decomposition.pl
595 UNIDATAFILES = ..\lib\unicore\Decomposition.pl \
596 ..\lib\unicore\CombiningClass.pl ..\lib\unicore\Name.pl \
597 ..\lib\unicore\Heavy.pl ..\lib\unicore\mktables.lst \
598 ..\lib\unicore\UCD.pl ..\lib\unicore\Name.pm \
599 ..\lib\unicore\TestProp.pl
601 PERLEXE_MANIFEST= .\perlexe.manifest
602 PERLEXE_ICO = .\perlexe.ico
603 PERLEXE_RES = .\perlexe.res
606 # Directories of Unicode data files generated by mktables
607 UNIDATADIR1 = ..\lib\unicore\To
608 UNIDATADIR2 = ..\lib\unicore\lib
610 # Nominate a target which causes extensions to be re-built
611 # This used to be $(PERLEXE), but at worst it is the .dll that they depend
612 # on and really only the interface - i.e. the .def file used to export symbols
614 PERLDEP = perldll.def
619 CFGSH_TMPL = config.ce
620 CFGH_TMPL = config_H.ce
622 XCOPY = xcopy /f /r /i /d /y
623 RCOPY = xcopy /f /r /i /e /d /y
670 EXTRACORE_SRC = $(EXTRACORE_SRC) perllib.c
672 !IF "$(PERL_MALLOC)" == "define"
673 EXTRACORE_SRC = $(EXTRACORE_SRC) ..\malloc.c
676 EXTRACORE_SRC = $(EXTRACORE_SRC) ..\perlio.c .\win32io.c
683 !IF "$(CRYPT_SRC)" != ""
684 WIN32_SRC = $(WIN32_SRC) .\$(CRYPT_SRC)
723 .\include\sys\errno2.h \
724 .\include\sys\socket.h \
727 DYNAMIC_EXT = Socket IO Fcntl Opcode SDBM_File POSIX attributes B re \
728 Data/Dumper Devel/Peek ByteLoader Devel/DProf File/Glob \
731 STATIC_EXT = DynaLoader
733 DYNALOADER = $(EXTDIR)\DynaLoader\DynaLoader
735 ERRNO_PM = $(LIBDIR)\Errno.pm
742 "INST_TOP=$(INST_TOP)" \
743 "INST_VER=$(INST_VER)" \
744 "INST_ARCH=$(INST_ARCH)" \
745 "archname=$(ARCHNAME)" \
748 "ccflags=$(OPTIMIZE) $(DEFINES) $(BUILDOPT)" \
749 "cppflags=$(OPTIMIZE) $(DEFINES) $(BUILDOPT)" \
751 "cf_email=$(EMAIL)" \
753 "d_mymalloc=$(PERL_MALLOC)" \
755 "incpath=$(CCINCDIR)" \
756 "libperl=$(PERLIMPLIB_EXP)" \
757 "libpth=$(LIBPATH)" \
759 "make=$(MAKE_BARE)" \
760 "static_ext=$(STATIC_EXT)" \
761 "dynamic_ext=$(DYNAMIC_EXT)" \
762 "usethreads=$(USE_ITHREADS)" \
763 "useithreads=$(USE_ITHREADS)" \
764 "usemultiplicity=$(USE_MULTI)" \
765 "use64bitint=undef" \
766 "uselargefiles=undef" \
767 "default_inc_excludes_dot=$(DEFAULT_INC_EXCLUDES_DOT)" \
768 "LINK_FLAGS=$(LDLIBPATH) $(LINK_FLAGS) $(SUBSYS)" \
769 "optimize=$(OPTIMIZE)" \
773 # filenames given to xsubpp must have forward slashes (since it puts
774 # full pathnames in #line strings)
775 XSUBPP = $(HPERL) -I..\..\lib ..\$(EXTUTILSDIR)\xsubpp \
783 all: hostminiperl force_config_h ..\lib\buildcustomize.pl .\config.h ..\git_version.h $(CONFIGPM) $(UNIDATAFILES) $(PERLEXE) MakePPPort Extensions PostExt
785 $(DYNALOADER)$(o) : $(DYNALOADER).c config.h $(EXTDIR)\DynaLoader\dlutils.c
788 configpm_targ : $(CONFIGPM)
792 -@$(DEL) /f config.sh
793 -@$(DEL) /f ..\config.h
794 -@$(DEL) /f ..\config.sh
795 -@$(DEL) $(PERLEXE_RES)
797 -@copy $(HPERL) ..\host\miniperl.exe
798 -@copy $(GENUUDMAP) ..\host\generate_uudmap.exe
799 -@$(MAKE) -f Makefile distclean
800 -@copy ..\host\miniperl.exe $(HPERL)
801 -@copy ..\host\generate_uudmap.exe $(GENUUDMAP)
802 $(GENUUDMAP) $(GENERATED_HEADERS)
803 type NUL > force_config_h
805 $(UUDMAP_H) $(MG_DATA_H) : $(BITCOUNT_H)
808 $(GENUUDMAP) $(GENERATED_HEADERS)
810 $(CONFIGPM) : $(HPERL) ..\config.sh config_h.PL ..\git_version.h
811 cd .. && $(HPERL) -Ilib configpm --no-glossary
812 if exist lib\* $(RCOPY) lib\*.* ..\lib\$(NULL)
813 $(XCOPY) ..\*.h $(COREDIR)\*.*
814 $(XCOPY) *.h $(COREDIR)\*.*
815 $(RCOPY) include $(COREDIR)\*.*
816 if errorlevel 1 $(MAKE) /$(MAKEFLAGS) $(CONFIGPM)
818 .\config.h: $(CONFIGPM) ..\config.sh
820 -$(HPERL) -I..\lib config_h.PL "INST_VER=$(INST_VER)" "CORE_DIR=$(COREDIR)" "CONFIG_H=config.h"
821 copy config.h ..\config.h
823 ..\config.sh : config.ce config_sh.PL FindExt.pm
824 -@$(DEL) /f config.sh
825 $(HPERL) -I..\lib -I. config_sh.PL $(CFG_VARS) config.ce > ..\config.sh
827 ..\git_version.h : ..\make_patchnum.pl
828 cd .. && $(HPERL) -Ilib make_patchnum.pl && cd win32
830 # make sure that we recompile perl.c if the git version changes
831 $(DLLDIR)\perl.obj : ..\git_version.h
833 MakePPPort: $(HPERL) $(CONFIGPM) Extensions_nonxs
834 $(HPERL) -I..\lib ..\mkppport
837 -if exist $(HPERL) $(HPERL) -I..\lib ..\mkppport --clean
839 #----------------------------------------------------------------------------------
841 !if "$(MACHINE)" == "wince-sh3-palm-wce211"
842 NOT_COMPILE_EXT = $(NOT_COMPILE_EXT) !XS/Typemap
844 !if "$(MACHINE)" == "wince-mips-palm-wce211"
845 NOT_COMPILE_EXT = $(NOT_COMPILE_EXT) !XS/Typemap
848 Extensions: ..\make_ext.pl $(CONFIGPM)
849 $(HPERL) -I..\lib -I. ..\make_ext.pl "MAKE=$(MAKE)" --dir=$(CPANDIR) --dir=$(DISTDIR) --dir=$(EXTDIR) --all \
850 !POSIX !Win32 !Win32API/File !Time/HiRes !Time/Piece !re !SDBM_File $(NOT_COMPILE_EXT)
853 Extensions_nonxs: ..\make_ext.pl ..\lib\buildcustomize.pl $(CONFIGPM) ..\pod\perlfunc.pod
854 $(XCOPY) ..\*.h $(COREDIR)\*.*
855 $(HPERL) -I..\lib ..\make_ext.pl "MAKE=$(MAKE)" --dir=$(CPANDIR) --dir=$(DISTDIR) --dir=$(EXTDIR) --nonxs
858 -if exist $(HPERL) $(HPERL) -I..\lib ..\make_ext.pl "MAKE=$(MAKE)" --dir=$(CPANDIR) --dir=$(DISTDIR) --dir=$(EXTDIR) --all --target=clean
860 PostExt: rebuild_storable
862 rebuild_storable: $(PERLEXE)
863 $(PERLEXE) -I..\lib -I. ..\dist\Storable\stacksize --core
868 #----------------------------------------------------------------------------------
870 $(PERLEXE_RES): perlexe.rc perl.rc $(PERLEXE_MANIFEST) $(PERLEXE_ICO)
871 rc $(RCDEFS) perlexe.rc
873 clean: Extensions_clean
874 -if exist .\$(MACHINE)\dll rmdir /s /q .\$(MACHINE)\dll
875 -@$(DEL) .\$(MACHINE)\*.obj
876 -@$(DEL) .\$(MACHINE)\*.exe
877 -@$(DEL) .\$(MACHINE)\*.dll
878 -@$(DEL) .\$(MACHINE)\*.lib
879 -@$(DEL) .\$(MACHINE)\*.exp
880 -@$(DEL) .\$(MACHINE)\*.pdb
881 -@$(DEL) ..\git_version.h
882 -@$(DEL) config.h perl.res
883 -@$(DEL) ..\t\test_state
887 $(DLLDIR)\caretx.obj \
891 $(DLLDIR)\dquote.obj \
893 $(DLLDIR)\globals.obj \
895 $(DLLDIR)\mro_core.obj \
897 $(DLLDIR)\locale.obj \
898 $(DLLDIR)\keywords.obj \
899 $(DLLDIR)\mathoms.obj \
901 $(DLLDIR)\numeric.obj \
905 $(DLLDIR)\perlapi.obj \
906 $(DLLDIR)\perlio.obj \
907 $(DLLDIR)\perly.obj \
909 $(DLLDIR)\pp_ctl.obj \
910 $(DLLDIR)\pp_hot.obj \
911 $(DLLDIR)\pp_pack.obj \
912 $(DLLDIR)\pp_sort.obj \
913 $(DLLDIR)\pp_sys.obj \
914 $(DLLDIR)\reentr.obj \
915 $(DLLDIR)\regcomp.obj \
916 $(DLLDIR)\regexec.obj \
918 $(DLLDIR)\scope.obj \
920 $(DLLDIR)\taint.obj \
921 $(DLLDIR)\time64.obj \
923 $(DLLDIR)\universal.obj \
926 $(DLLDIR)\win32thread.obj \
927 $(DLLDIR)\wince.obj \
928 $(DLLDIR)\win32io.obj \
929 $(DLLDIR)\wincesck.obj \
930 $(DLLDIR)\perllib.obj \
931 $(DLLDIR)\DynaLoader.obj
932 !IF "$(PERL_MALLOC)" == "define"
933 XDLLOBJS = $(XDLLOBJS) $(DLLDIR)\malloc.obj
935 !IF "$(CRYPT_SRC)" != ""
936 XDLLOBJS = $(XDLLOBJS) $(DLLDIR)\fcrypt.obj
939 #sanity checks to make sure all our external files (celib, w32console, and
940 #MS CE SDK) are locatable
942 @if not exist $(CECONSOLEDIR)\$(MACHINE)\w32console.obj cmd /k \
943 "echo w32console.obj doesn't seem to exist, check your w32console directory \
945 @if not exist $(CELIBDLLDIR)\$(MACHINE)-release\celib.lib cmd /k \
946 "echo celib.lib doesn't seem to exist, check your celib directory \
948 @for %X in ( $(LIBC) ) do @if exist %~^$LIB:X ( exit 0 ) \
949 else ( echo $(LIBC) doesn't seem to exist, check your build enviroment & exit 1 )
951 #specific header files to check picked at random
953 @if not exist $(CELIBDLLDIR)\inc\cewin32.h cmd /k \
954 "echo cewin32.h doesn't seem to exist, check your celib directory \
956 @for %X in (ceconfig.h) do @if exist %~^$INCLUDE:X ( exit 0 ) \
957 else ( echo ceconfig.h doesn't seem to exist, check your build enviroment & exit 1 )
959 {$(SRCDIR)}.c{$(DLLDIR)}.obj:
960 $(CC) -c $(CFLAGS_O) -DPERL_EXTERNAL_GLOB -Fo$(DLLDIR)\ $<
962 # compiler explains that it will optimize toke.c if we'll give it an
963 # option -QMOb<num> with num>=4178
965 $(CC) -c $(CFLAGS_O) -QMOb9000 -DPERL_EXTERNAL_GLOB -Fo$(DLLDIR)\ ..\toke.c
967 {$(SRCDIR)/win32}.c{$(DLLDIR)}.obj:
968 $(CC) -c $(CFLAGS_O) -DPERL_EXTERNAL_GLOB -Fo$(DLLDIR)\ $<
970 # -DPERL_IMPLICIT_SYS needs C++ for perllib.c
971 # This is the only file that depends on perlhost.h, vmem.h, and vdir.h
972 !IF "$(USE_IMP_SYS)" == "define"
973 $(DLLDIR)\perllib$(o) : perllib.c .\perlhost.h .\vdir.h .\vmem.h
974 $(CC) -c -I. $(CFLAGS_O) $(CXX_FLAG) $(OBJOUT_FLAG)$@ perllib.c
975 rem (frustrated) mv perllib.obj $(DLLDIR)
978 perldll.def : $(HPERL) $(CONFIGPM) ..\embed.fnc ..\makedef.pl create_perllibst_h.pl .\config.h
979 $(HPERL) -I..\lib create_perllibst_h.pl
980 $(HPERL) -I..\lib -w ..\makedef.pl PLATFORM=wince $(OPTIMIZE) $(DEFINES) $(BUILDOPT) \
981 CCTYPE=$(CCTYPE) -DPERL_DLL=$(PERLDLL) TARG_DIR=..\ > perldll.def
983 $(PERLDLL) : header_check lib_check $(DLLDIR) perldll.def $(XDLLOBJS) $(PERLDLL_RES)
984 $(LINK32) -dll -def:perldll.def -base:0x28000000 -out:$@ \
985 $(SUBSYS) $(LDLIBPATH) \
986 $(LINK_FLAGS) $(LIBFILES) \
987 $(XDLLOBJS) $(PERLDLL_RES)
990 if not exist "$(DLLDIR)" mkdir "$(DLLDIR)"
992 $(EXTDIR)\DynaLoader\DynaLoader.c :
993 $(HPERL) -I..\lib -I. ..\make_ext.pl "MAKE=$(MAKE)" --dir=$(EXTDIR) --dynaloader
995 $(DLLDIR)\DynaLoader.obj: $(EXTDIR)\DynaLoader\DynaLoader.c
996 $(CC) -c $(CFLAGS_O) -DPERL_EXTERNAL_GLOB -Fo$(DLLDIR)\ \
997 $(EXTDIR)\DynaLoader\DynaLoader.c
1000 $(MACHINE)\perlmaince.obj
1002 ..\lib\buildcustomize.pl :
1003 $(HPERL) -I..\lib -f ..\write_buildcustomize.pl ..
1005 $(PERLEXE) : $(PERLDLL) $(CONFIGPM) $(XPERLEXEOBJS) $(PERLEXE_RES) $(STARTOBJS)
1006 $(XCOPY) $(MACHINE)\*.lib $(COREDIR)
1007 $(LINK32) $(SUBSYS) $(LDLIBPATH) \
1008 -entry:wWinMainCRTStartup \
1009 -out:$(MACHINE)\perl.exe \
1010 -stack:0x100000 $(LINK_FLAGS) $(STARTOBJS) $(XPERLEXEOBJS) \
1011 $(PERLIMPLIB) $(PERLEXE_RES) $(LIBFILES)
1013 $(MACHINE)\perlmaince.obj : perlmaince.c
1014 $(CC) $(CFLAGS_O) -UPERLDLL -Fo$(MACHINE)\ -c perlmaince.c
1017 socketdll: $(SOCKET_DLL)
1018 dumperdll: $(DUMPER_DLL)
1020 dlls: socketdll iodll dumperdll
1021 -xmkdir -p $(MACHINE)/lib/auto/IO
1022 copy ../lib/auto/IO/IO.bs $(MACHINE)/lib/auto/IO
1023 copy ../lib/auto/IO/IO.dll $(MACHINE)/lib/auto/IO
1024 -xmkdir $(MACHINE)/lib/auto/Socket
1025 copy ../lib/auto/Socket/Socket.bs $(MACHINE)/lib/auto/Socket
1026 copy ../lib/auto/Socket/Socket.dll $(MACHINE)/lib/auto/Socket
1027 -xmkdir -p $(MACHINE)/lib/auto/Data/Dumper
1028 copy ../lib/auto/Data/Dumper/Dumper.bs $(MACHINE)/lib/auto/Data/Dumper
1029 copy ../lib/auto/Data/Dumper/Dumper.dll $(MACHINE)/lib/auto/Data/Dumper
1032 $(COPY) $(CELIBPATH)\celib.dll $(MACHINE)
1033 copy perl.txt $(MACHINE)
1034 copy registry.bat $(MACHINE)
1035 copy ../lib/Config.pm $(MACHINE)/lib
1037 -@$(DEL) perl-$(MACHINE).tar.gz
1038 sh -c "tar cf perl-$(MACHINE).tar *.exe *.dll *.txt *.bat lib"
1039 gzip -9 perl-$(MACHINE).tar
1040 mv perl-$(MACHINE).tar.gz h:/freenet/new
1044 -cemkdir "$(INSTALL_ROOT)"
1045 -cemkdir "$(INSTALL_ROOT)\bin"
1046 -cemkdir "$(INSTALL_ROOT)\lib"
1047 $(CECOPY) "pc:$(MACHINE)/perl.exe" "ce:$(INSTALL_ROOT)/bin"
1048 $(CECOPY) "pc:$(MACHINE)/perl$(PV).dll" "ce:$(INSTALL_ROOT)/bin"
1049 $(CECOPY) "pc:../lib/Config.pm" "ce:$(INSTALL_ROOT)/lib"
1051 $(UNIDATAFILES) : $(HPERL) $(CONFIGPM) ..\lib\unicore\mktables MakePPPort
1052 cd ..\lib\unicore && \
1053 $(HPERL) -I.. -I..\..\lib mktables -P ..\..\pod -maketest -makelist -p -check $@ $(FIRSTUNIFILE)
1056 $(HPERL) -I..\lib ce-helpers\makedist.pl --distdir=dist-$(CROSS_NAME) --cross-name=$(CROSS_NAME)
1059 $(HPERL) -I..\lib ce-helpers\makedist.pl --distdir=dist-$(CROSS_NAME) --cross-name=$(CROSS_NAME)
1060 $(HPERL) -I..\lib ce-helpers\makedist.pl --distdir=dist-$(CROSS_NAME) --cross-name=$(CROSS_NAME) --zip
1063 $(HPERL) -I..\lib ce-helpers\makedist.pl --distdir=dist-$(CROSS_NAME) --cross-name=$(CROSS_NAME) --zip
1065 hostminiperl: ..\miniperl.exe
1068 set PATH=$(CCHOME)\bin;$(PATH)
1069 $(MAKE) -f Makefile "CCHOME=$(MSVCDIR)" "CCINCDIR=$(CCHOME)\include" "CCLIBDIR=$(CCHOME)\lib" "INCLUDE=$(CCHOME)\include" "LIB=$(CCHOME)\lib" "LINK_FLAGS=" .\config.h ..\miniperl.exe
1072 perl -MConfig -MExtUtils::Install -we "install({'../lib/CORE', qq#$$Config{installprefixexp}/lib/CORE#},1)"
1073 perl -MConfig -MExtUtils::Install -we "install({'../lib', qq#$$Config{installprefixexp}/lib#},1)"
1074 perl -MConfig -MFile::Copy -we "copy qq#./$(MACHINE)/perl$(PV).lib#, qq#$$Config{installprefixexp}/lib/CORE#"
1075 perl -MConfig -we "system qq#perl -pi.bak -we \"s{((arch^|priv)libexp)='.*'}{\$$1='# . \
1076 quotemeta($$Config{installprefixexp}) . \
1077 qq#/lib'}\" $$Config{installprefixexp}/lib/Config.pm#"