1#
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
5#
6
7SRCDIR     = ..
8PV         = 530
9
10# INSTALL_ROOT specifies a path where this perl will be installed on CE device
11INSTALL_ROOT=/netzwerk/sprache/perl
12INST_TOP=$(INSTALL_ROOT)
13INST_VER=
14
15# PERLCEDIR shoud be set to current directory
16PERLCEDIR  = $(MAKEDIR)
17
18# WCEROOT is a directory where Windows CE Tools was installed
19WCEROOT    = D:\Windows CE Tools
20
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
24HPERL = $(MAKEDIR)\..\miniperl.exe
25
26CEPATH     = D:\Programme\Microsoft eMbedded Tools\EVC\WCE211\BIN
27CELIBDLLDIR  = h:\src\wince\celib-palm-3.0
28CECONSOLEDIR = h:\src\wince\w32console
29
30# specify following options to build perl on local machine, by MSVC
31MSVCDIR         = D:\MSVStudio\VC98
32CCHOME		= $(MSVCDIR)
33CCINCDIR	= $(CCHOME)\include
34CCLIBDIR	= $(CCHOME)\lib
35
36# cecopy program. Make shure it is in your path, as well as cemkdir, cedel
37CECOPY     = cecopy
38
39#
40# comment this out if you want the legacy default behavior of including '.' at
41# the end of @INC.
42#
43DEFAULT_INC_EXCLUDES_DOT = define
44
45#
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.
50#
51PERL_MALLOC	= define
52
53
54NOOP	   = @echo
55# keep this untouched!
56NULL	   =
57
58#
59# uncomment exactly one of the following
60#
61# Embedded Visual C++ 4 and older
62CCTYPE		= MSVC60
63# Smart Devices for Visual C++ 2005 (aka Visual C++ 8.x) (full version)
64#CCTYPE		= MSVC80
65# Smart Devices for Visual C++ 2008 (aka Visual C++ 9.x) (full version)
66#CCTYPE		= MSVC90
67
68#CFG=DEBUG
69CFG=RELEASE
70
71!if "$(MACHINE)" == ""
72MACHINE=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
87!endif
88
89# set this to your email address
90#
91#EMAIL		=
92
93##################### CHANGE THESE ONLY IF YOU MUST #####################
94
95######################################################################
96# machines
97
98!if "$(MACHINE)" == "wince-sh3-hpc-wce211"
99CC         = shcl.exe
100ARCH       = SH3
101CPU        = SH3
102TARGETCPU  = SH3
103CEVersion  = 211
104OSVERSION  = WCE211
105PLATFORM   = MS HPC Pro
106MCFLAGS    = -MDd -DSH3 -D_SH3_ -DSHx -DPROCESSOR_SH3 -DPALM_SIZE \
107             -I $(CELIBDLLDIR)\inc
108SUBSYS	   = -subsystem:windowsce,2.11
109CELIBPATH  = $(CELIBDLLDIR)\$(MACHINE)-release
110LDLIBPATH  = -libpath:$(CELIBPATH)
111STARTOBJS  = $(CECONSOLEDIR)/$(MACHINE)/wmain.obj \
112             $(CECONSOLEDIR)/$(MACHINE)/w32console.obj
113!endif
114
115!if "$(MACHINE)" == "wince-mips-hpc-wce211"
116CC         = clmips.exe
117ARCH       = MIPS
118CPU        = MIPS
119TARGETCPU  = MIPS
120CEVersion  = 211
121OSVERSION  = WCE211
122PLATFORM   = MS HPC Pro
123MCFLAGS    = -D _MT -D _DLL \
124             -D MIPS -D mips -D _MIPS_ -D _mips_ -DPROCESSOR_MIPS \
125             -D PALM_SIZE \
126             -I $(CELIBDLLDIR)\inc
127SUBSYS	   = -subsystem:windowsce,2.11
128CELIBPATH  = $(CELIBDLLDIR)\$(MACHINE)-release
129LDLIBPATH  = -libpath:$(CELIBPATH)
130STARTOBJS  = $(CECONSOLEDIR)/$(MACHINE)/wmain.obj \
131             $(CECONSOLEDIR)/$(MACHINE)/w32console.obj
132!endif
133
134!if "$(MACHINE)" == "wince-mips-hpc-wce200"
135CC         = clmips.exe
136ARCH       = MIPS
137CPU        = MIPS
138TARGETCPU  = MIPS
139CEVersion  = 200
140OSVERSION  = WCE200
141PLATFORM   = MS HPC
142# MUST USE -MD to get the right FPE stuff...
143MCFLAGS    = -D _MT -D _DLL -MD \
144             -D MIPS -D mips -D _MIPS_ -D _mips_ -DPROCESSOR_MIPS \
145             -D PALM_SIZE \
146             -I $(CELIBDLLDIR)\inc
147SUBSYS	   = -subsystem:windowsce,2.00
148CELIBPATH  = $(CELIBDLLDIR)\$(MACHINE)-release
149LDLIBPATH  = -libpath:$(CELIBPATH)
150STARTOBJS  = $(CECONSOLEDIR)/$(MACHINE)/wmain.obj \
151             $(CECONSOLEDIR)/$(MACHINE)/w32console.obj
152!endif
153
154!if "$(MACHINE)" == "wince-sh3-hpc-wce200"
155CC         = shcl.exe
156ARCH       = SH3
157CPU        = SH3
158TARGETCPU  = SH3
159CEVersion  = 200
160OSVERSION  = WCE200
161PLATFORM   = MS HPC
162# MUST USE -MD to get the right FPE stuff...
163MCFLAGS    = -D _MT -D _DLL -MD \
164             -D SH3 -D sh3 -D _SH3_ -D _sh3_ -D SHx -DPROCESSOR_SH3 \
165             -D PALM_SIZE \
166             -I $(CELIBDLLDIR)\inc
167SUBSYS	   = -subsystem:windowsce,2.00
168CELIBPATH  = $(CELIBDLLDIR)\$(MACHINE)-release
169LDLIBPATH  = -libpath:$(CELIBPATH)
170STARTOBJS  = $(CECONSOLEDIR)/$(MACHINE)/wmain.obj \
171             $(CECONSOLEDIR)/$(MACHINE)/w32console.obj
172!endif
173
174!if "$(MACHINE)" == "wince-arm-hpc-wce211"
175CC         = clarm.exe
176ARCH       = ARM
177CPU        = ARM
178TARGETCPU  = ARM
179CEVersion  = 211
180OSVERSION  = WCE211
181PLATFORM   = MS HPC Pro
182MCFLAGS    = -D _MT -D _DLL -D ARM -D arm -D _arm_ -D _ARM_ \
183             -DPROCESSOR_ARM -DPALM_SIZE \
184             -I $(CELIBDLLDIR)\inc
185SUBSYS	   = -subsystem:windowsce,2.11
186CELIBPATH  = $(CELIBDLLDIR)\$(MACHINE)-release
187LDLIBPATH  = -libpath:$(CELIBPATH)
188STARTOBJS  = $(CECONSOLEDIR)/$(MACHINE)/wmain.obj \
189             $(CECONSOLEDIR)/$(MACHINE)/w32console.obj
190!endif
191
192!if "$(MACHINE)" == "wince-arm-hpc-wce300"
193CC         = clarm.exe
194ARCH       = ARM
195CPU        = ARM
196TARGETCPU  = ARM
197CEVersion  = 300
198OSVERSION  = WCE300
199#PLATFORM   = HPC2000
200MCFLAGS    = -D _MT -D _DLL -D ARM -D arm -D _arm_ -D _ARM_ \
201             -DPROCESSOR_ARM -DPALM_SIZE \
202             -I $(CELIBDLLDIR)\inc
203SUBSYS	   = -subsystem:windowsce,3.00
204CELIBPATH  = $(CELIBDLLDIR)\$(MACHINE)-release
205LDLIBPATH  = -libpath:$(CELIBPATH)
206STARTOBJS  = $(CECONSOLEDIR)/$(MACHINE)/wmain.obj \
207             $(CECONSOLEDIR)/$(MACHINE)/w32console.obj
208!endif
209
210!if "$(MACHINE)" == "wince-mips-palm-wce211"
211CC         = clmips.exe
212ARCH       = MIPS
213CPU        = MIPS
214TARGETCPU  = MIPS
215CEVersion  = 211
216OSVERSION  = WCE211
217PLATFORM   = MS Palm Size PC
218MCFLAGS    = -DMIPS -D_MIPS_ -DPROCESSOR_MIPS -D PALM_SIZE -D _DLL -D _MT \
219             -I $(CELIBDLLDIR)\inc
220SUBSYS	   = -subsystem:windowsce,2.11
221CELIBPATH  = $(CELIBDLLDIR)\$(MACHINE)-release
222LDLIBPATH  = -libpath:$(CELIBPATH)
223STARTOBJS  = $(CECONSOLEDIR)/$(MACHINE)/wmain.obj \
224             $(CECONSOLEDIR)/$(MACHINE)/w32console.obj
225!endif
226
227!if "$(MACHINE)" == "wince-sh3-palm-wce211"
228CC         = shcl.exe
229ARCH       = SH3
230CPU        = SH3
231TARGETCPU  = SH3
232CEVersion  = 211
233OSVERSION  = WCE211
234PLATFORM   = MS Palm Size PC
235MCFLAGS    = -D _MT -D _DLL -DSH3 -D_SH3_ -DSHx -DPROCESSOR_SH3 -DPALM_SIZE \
236             -I $(CELIBDLLDIR)\inc
237SUBSYS	   = -subsystem:windowsce,2.11
238CELIBPATH  = $(CELIBDLLDIR)\$(MACHINE)-release
239LDLIBPATH  = -libpath:$(CELIBPATH)
240STARTOBJS  = $(CECONSOLEDIR)/$(MACHINE)/wmain.obj \
241             $(CECONSOLEDIR)/$(MACHINE)/w32console.obj
242!endif
243
244!if "$(MACHINE)" == "wince-x86em-palm-wce211"
245CC         = cl.exe
246ARCH       = X86EM
247CPU        = X86
248TARGETCPU  = X86
249CEVersion  = 211
250OSVERSION  = WCE211
251PLATFORM   = MS Palm Size PC
252MCFLAGS    = -MDd -DX86 -D_X86_ -DPROCESSOR_X86 \
253             -D_WIN32_WCE_EMULATION -DPALM_SIZE \
254             -I $(CELIBDLLDIR)\inc
255MACH       = -machine:x86
256SUBSYS     = -subsystem:windows
257CELIBPATH  = $(CELIBDLLDIR)\$(MACHINE)-release
258LDLIBPATH  = -libpath:$(CELIBPATH)
259STARTOBJS  = $(CECONSOLEDIR)/$(MACHINE)/wmain.obj \
260             $(CECONSOLEDIR)/$(MACHINE)/w32console.obj
261!endif
262
263!if "$(MACHINE)" == "wince-x86em-pocket-wce300"
264CC         = cl.exe
265ARCH       = X86EM
266CPU        = X86
267TARGETCPU  = X86
268CEVersion  = 300
269OSVERSION  = WCE300
270PLATFORM   = MS Pocket PC
271MCFLAGS    = -DX86 -D_X86_ -DPROCESSOR_X86 -D _MT -D _DLL \
272             -D_WIN32_WCE_EMULATION -DPALM_SIZE -DPOCKET_SIZE \
273             -I $(CELIBDLLDIR)\inc
274MACH       = -machine:x86
275SUBSYS     = -subsystem:windows
276CELIBPATH  = $(CELIBDLLDIR)\$(MACHINE)-release
277LDLIBPATH  = -libpath:$(CELIBPATH)
278STARTOBJS  = $(CECONSOLEDIR)/$(MACHINE)/wmain.obj \
279             $(CECONSOLEDIR)/$(MACHINE)/w32console.obj
280!endif
281
282!if "$(MACHINE)" == "wince-mips-pocket-wce300"
283CC         = clmips.exe
284ARCH       = MIPS
285CPU        = MIPS
286TARGETCPU  = MIPS
287CEVersion  = 300
288OSVERSION  = WCE300
289PLATFORM   = MS Pocket PC
290MCFLAGS    = -D MIPS -D mips -D _MIPS_ -D _mips_ -DPROCESSOR_MIPS \
291             -D _MT -D _DLL -DPALM_SIZE -DPOCKET_SIZE \
292             -I $(CELIBDLLDIR)\inc
293MACH       = -machine:mips
294SUBSYS     = -subsystem:windowsce,3.00
295CELIBPATH  = $(CELIBDLLDIR)\$(MACHINE)-release
296#STDLIBPATH = $(WCEROOT)\$(OSVERSION)\$(PLATFORM)\lib\$(CPU)
297LDLIBPATH  = -libpath:$(CELIBPATH)
298#"-libpath:$(STDLIBPATH)"
299STARTOBJS  = $(CECONSOLEDIR)/$(MACHINE)/wmain.obj \
300             $(CECONSOLEDIR)/$(MACHINE)/w32console.obj
301!endif
302
303!if "$(MACHINE)" == "wince-sh3-pocket-wce300"
304CC         = shcl.exe
305ARCH       = SH3
306CPU        = SH3
307TARGETCPU  = SH3
308CEVersion  = 300
309OSVERSION  = WCE300
310PLATFORM   = MS Pocket PC
311MCFLAGS    = -D _MT -D _DLL -DSH3 -D_SH3_ -DSHx -DPROCESSOR_SH3 \
312             -DPALM_SIZE -DPOCKET_SIZE \
313             -I $(CELIBDLLDIR)\inc
314MACH       = -machine:sh3
315SUBSYS     = -subsystem:windowsce,3.00
316CELIBPATH  = $(CELIBDLLDIR)\$(MACHINE)-release
317LDLIBPATH  = -libpath:$(CELIBPATH)
318STARTOBJS  = $(CECONSOLEDIR)/$(MACHINE)/wmain.obj \
319             $(CECONSOLEDIR)/$(MACHINE)/w32console.obj
320!endif
321
322!if "$(MACHINE)" == "wince-arm-pocket-wce300"
323CC         = clarm.exe
324ARCH       = ARM
325CPU        = ARM
326TARGETCPU  = ARM
327CEVersion  = 300
328OSVERSION  = WCE300
329PLATFORM   = MS Pocket PC
330MCFLAGS    = -D ARM -D arm -D _ARM_ -D _arm_ -DPROCESSOR_ARM \
331             -D _MT -D _DLL -DPALM_SIZE -DPOCKET_SIZE \
332             -I $(CELIBDLLDIR)\inc
333MACH       = -machine:arm
334SUBSYS     = -subsystem:windowsce,3.00
335CELIBPATH  = $(CELIBDLLDIR)\$(MACHINE)-release
336LDLIBPATH  = -libpath:$(CELIBPATH)
337STARTOBJS  = $(CECONSOLEDIR)/$(MACHINE)/wmain.obj \
338             $(CECONSOLEDIR)/$(MACHINE)/w32console.obj
339!endif
340
341!if "$(MACHINE)" == "wince-x86-hpc-wce300"
342CC         = cl.exe
343ARCH       = X86EM
344CPU        = X86
345TARGETCPU  = X86
346CEVersion  = 400
347OSVERSION  = WCE400
348PLATFORM   = MS Pocket PC
349MCFLAGS    = -DX86 -D_X86_ -Dx86 -DPROCESSOR_X86 -D _MT -D _DLL \
350             -DPALM_SIZE -DPOCKET_SIZE -I $(CELIBDLLDIR)\inc
351MACH       = -machine:IX86
352SUBSYS     = -subsystem:windowsce,2.0
353CELIBPATH  = $(CELIBDLLDIR)\wince-x86-hpc-wce300-release
354LDLIBPATH  = -libpath:$(CELIBPATH)
355STARTOBJS  = $(CECONSOLEDIR)/$(MACHINE)/wmain.obj \
356             $(CECONSOLEDIR)/$(MACHINE)/w32console.obj
357!endif
358
359!if "$(MACHINE)" == "wince-arm-pocket-wce400"
360#CC         = clarm.exe #set in WCEARMV4.BAT
361ARCH       = ARM
362CPU        = ARM
363TARGETCPU  = ARM
364CEVersion  = 400
365#OSVERSION  = WCE300 #set in WCEARMV4.BAT
366PLATFORM   = MS Pocket PC
367MCFLAGS    = -D ARM -D arm -D _ARM_ -D _arm_ -DPROCESSOR_ARM \
368             -D _MT -D _DLL -DPALM_SIZE -DPOCKET_SIZE \
369             -I $(CELIBDLLDIR)\inc
370MACH       = -machine:arm
371SUBSYS     = -subsystem:windowsce,4.00
372CELIBPATH  = $(CELIBDLLDIR)\$(MACHINE)-release
373LDLIBPATH  = -libpath:$(CELIBPATH)
374STARTOBJS  = $(CECONSOLEDIR)/$(MACHINE)/wmain.obj \
375             $(CECONSOLEDIR)/$(MACHINE)/w32console.obj
376!endif
377
378
379######################################################################
380# common section
381
382CEDEFS    = -D_WINDOWS -D_WIN32_WCE=$(CEVersion) -DUNDER_CE=$(CEVersion) \
383            $(MCFLAGS) -D PERL
384
385CECFLAGS  = $(CEDEFS) -Zi
386
387!if "$(CFG)" == "DEBUG"
388CECFLAGS  = $(CECFLAGS) -Od
389!endif
390
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"
395!else
396CECFLAGS  = $(CECFLAGS) -O1
397!endif
398!  IF "$(CCTYPE)" != "MSVC60"
399#turn on LTCG optimization for CCs that have it
400CECFLAGS	= $(CECFLAGS) -GL
401!  ENDIF
402!  IF "$(CCTYPE)" == "MSVC80" || "$(CCTYPE)" == "MSVC90"
403#no stack security cookie for CCs where its on by default
404CECFLAGS	= $(CECFLAGS) -GS-
405!  ENDIF
406!endif
407
408RCDEFS    = /l 0x407 /r /d "UNICODE" /d UNDER_CE=$(CEVersion) \
409            /d _WIN32_WCE=$(CEVersion)
410
411#PATH=$(CEPATH);$(PATH)
412
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)
418
419######################################################################
420
421!message
422!message Compiling for $(MACHINE)
423!message LIB=$(LIB)
424!message INCLUDE=$(INCLUDE)
425!message PATH=$(CEPATH)
426!message
427
428######################################################################
429#
430# Additional compiler flags can be specified here.
431#
432
433BUILDOPT	= $(BUILDOPT) $(CECFLAGS) -DUSE_CROSS_COMPILE
434
435
436!IF "$(CRYPT_SRC)$(CRYPT_LIB)" == ""
437D_CRYPT		= undef
438!ELSE
439D_CRYPT		= define
440CRYPT_FLAG	= -DHAVE_DES_FCRYPT
441!ENDIF
442
443!IF "$(PERL_MALLOC)" == ""
444PERL_MALLOC	= undef
445!ENDIF
446
447!IF "$(DEFAULT_INC_EXCLUDES_DOT)" == ""
448DEFAULT_INC_EXCLUDES_DOT = undef
449!ENDIF
450
451!IF "$(USE_MULTI)" == ""
452USE_MULTI	= undef
453!ENDIF
454
455!IF "$(USE_ITHREADS)" == ""
456USE_ITHREADS	= undef
457!ENDIF
458
459!IF "$(USE_IMP_SYS)" == ""
460USE_IMP_SYS	= undef
461!ENDIF
462
463!IF "$(USE_PERLCRT)" == ""
464USE_PERLCRT	= undef
465!ENDIF
466
467!IF "$(USE_IMP_SYS)$(USE_MULTI)" == "defineundef"
468USE_MULTI	= define
469!ENDIF
470
471!IF "$(USE_ITHREADS)$(USE_MULTI)" == "defineundef"
472USE_MULTI	= define
473!ENDIF
474
475!IF "$(USE_MULTI)" != "undef"
476BUILDOPT	= $(BUILDOPT) -DPERL_IMPLICIT_CONTEXT
477!ENDIF
478
479!IF "$(USE_IMP_SYS)" != "undef"
480BUILDOPT	= $(BUILDOPT) -DPERL_IMPLICIT_SYS
481!ENDIF
482
483!IF "$(CROSS_NAME)" == ""
484CROSS_NAME	= $(MACHINE)
485!ENDIF
486
487# new option - automatically defined in perl.h...
488#BUILDOPT        = $(BUILDOPT) -DUSE_ENVIRON_ARRAY
489
490PROCESSOR_ARCHITECTURE = $(TARGETCPU)
491ARCHNAME	= $(PLATFORM)-$(OSVERSION)-$(PROCESSOR_ARCHITECTURE)
492ARCHDIR		= ..\lib\$(ARCHNAME)
493COREDIR		= ..\lib\CORE
494AUTODIR		= ..\lib\auto
495LIBDIR		= ..\lib
496EXTDIR		= ..\ext
497DISTDIR		= ..\dist
498CPANDIR		= ..\cpan
499PODDIR		= ..\pod
500EXTUTILSDIR	= $(LIBDIR)\ExtUtils
501
502LINK32		= link
503LIB32		= $(LINK32) -lib
504RSC		= rc
505
506INCLUDES	= -I.\include -I. -I..
507DEFINES		= -DWIN32 -D_CONSOLE -DNO_STRICT $(CRYPT_FLAG) $(CECFLAGS)
508LOCDEFS		= -DPERLDLL -DPERL_CORE
509CXX_FLAG	= -TP
510
511PERLEXE_RES	= perl.res
512PERLDLL_RES	=
513
514!if "$(CFG)" == "RELEASE"
515CELIB           = celib.lib
516!endif
517
518!if "$(CFG)" == "DEBUG"
519CELIB           = celib.lib
520!endif
521
522#use ws2.lib instead of winsock.lib for WSAGetLastError
523CELIBS          = -nodefaultlib \
524                  ws2.lib $(CELIB) coredll.lib
525
526#this libc's purpose is WinCE entrypoint to main wrapper, not a real C std lib
527!if $(CEVersion) > 200
528LIBC          = corelibc.lib
529!else
530LIBC          = msvcrt.lib
531!endif
532
533LIBBASEFILES	= $(CRYPT_LIB) $(CELIBS)
534
535LIBFILES	= $(LIBBASEFILES) $(LIBC)
536
537CFLAGS		= -nologo -GF -W3 $(INCLUDES) $(DEFINES) $(LOCDEFS) \
538		$(PCHFLAGS) $(OPTIMIZE)
539
540LINK_FLAGS	= -nologo -debug -opt:ref,icf -machine:$(PROCESSOR_ARCHITECTURE)
541
542!if "$(CFG)" == "RELEASE" && "$(CCTYPE)" != "MSVC60"
543#see matching flag in CECFLAGS
544LINK_FLAGS	= $(LINK_FLAGS) -ltcg
545!endif
546
547OBJOUT_FLAG	= -Fo
548EXEOUT_FLAG	= -Fe
549
550CFLAGS_O	= $(CFLAGS) $(BUILDOPT)
551
552o = .obj
553
554#
555# Rules
556#
557
558.SUFFIXES : .c $(o) .dll .lib .exe .rc .res
559
560.c$(o):
561	$(CC) -c -I$(<D) $(CFLAGS_O) $(OBJOUT_FLAG)$@ $<
562
563.c.i:
564	$(CC) -c -I$(<D) $(CFLAGS_O) -P $(OBJOUT_FLAG)$@ $<
565
566.y.c:
567	$(NOOP)
568
569$(o).dll:
570	$(LINK32) -dll $(SUBSYS) $(LDLIBPATH) \
571            -implib:$(*B).lib -def:$(*B).def \
572	    -out:$@ $(LINK_FLAGS) $(LIBFILES) $< $(LIBPERL)
573
574.rc.res:
575	$(RSC) -i.. $<
576
577# This must be relative to ../lib/CORE, else the ext dll build fails...
578PERLIMPLIB_EXP	= perl$(PV).lib
579PERLIMPLIB	= $(PERLCEDIR)\$(MACHINE)\perl$(PV).lib
580PERLDLL		= $(MACHINE)\perl$(PV).dll
581
582DLLDIR          = $(MACHINE)\dll
583PERLEXE		= $(MACHINE)\perl.exe
584
585CONFIGPM	= ..\lib\Config.pm ..\lib\Config_heavy.pl
586GENUUDMAP	= ..\generate_uudmap.exe
587
588UUDMAP_H	= ..\uudmap.h
589BITCOUNT_H	= ..\bitcount.h
590MG_DATA_H	= ..\mg_data.h
591GENERATED_HEADERS = $(UUDMAP_H) $(BITCOUNT_H) $(MG_DATA_H)
592
593# Unicode data files generated by mktables
594FIRSTUNIFILE     = ..\lib\unicore\Decomposition.pl
595UNIDATAFILES	 = ..\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
600
601PERLEXE_MANIFEST= .\perlexe.manifest
602PERLEXE_ICO	= .\perlexe.ico
603PERLEXE_RES	= .\perlexe.res
604PERLDLL_RES	=
605
606# Directories of Unicode data files generated by mktables
607UNIDATADIR1	= ..\lib\unicore\To
608UNIDATADIR2	= ..\lib\unicore\lib
609
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
613# from the .dll
614PERLDEP		= perldll.def
615
616MAKE		= nmake -nologo
617MAKE_BARE	= nmake
618
619CFGSH_TMPL	= config.ce
620CFGH_TMPL	= config_H.ce
621
622XCOPY		= xcopy /f /r /i /d /y
623RCOPY		= xcopy /f /r /i /e /d /y
624NOOP		= @rem
625NULL		=
626
627DEL		= del
628
629MICROCORE_SRC	=		\
630		..\av.c		\
631		..\caretx.c	\
632		..\deb.c	\
633		..\doio.c	\
634		..\doop.c	\
635		..\dquote.c	\
636		..\dump.c	\
637		..\globals.c	\
638		..\gv.c		\
639		..\mro_core.c	\
640		..\hv.c		\
641		..\locale.c	\
642		..\keywords.c	\
643		..\mathoms.c    \
644		..\mg.c		\
645		..\numeric.c	\
646		..\op.c		\
647		..\pad.c	\
648		..\perl.c	\
649		..\perlapi.c	\
650		..\perly.c	\
651		..\pp.c		\
652		..\pp_ctl.c	\
653		..\pp_hot.c	\
654		..\pp_pack.c	\
655		..\pp_sort.c	\
656		..\pp_sys.c	\
657		..\reentr.c	\
658		..\regcomp.c	\
659		..\regexec.c	\
660		..\run.c	\
661		..\scope.c	\
662		..\sv.c		\
663		..\taint.c	\
664		..\time64.c	\
665		..\toke.c	\
666		..\universal.c	\
667		..\utf8.c	\
668		..\util.c
669
670EXTRACORE_SRC	= $(EXTRACORE_SRC) perllib.c
671
672!IF "$(PERL_MALLOC)" == "define"
673EXTRACORE_SRC	= $(EXTRACORE_SRC) ..\malloc.c
674!ENDIF
675
676EXTRACORE_SRC	= $(EXTRACORE_SRC) ..\perlio.c .\win32io.c
677
678WIN32_SRC	=		\
679		.\wince.c	\
680		.\wincesck.c	\
681		.\win32thread.c
682
683!IF "$(CRYPT_SRC)" != ""
684WIN32_SRC	= $(WIN32_SRC) .\$(CRYPT_SRC)
685!ENDIF
686
687CORE_NOCFG_H	=		\
688		..\av.h		\
689		..\cop.h	\
690		..\cv.h		\
691		..\dosish.h	\
692		..\embed.h	\
693		..\form.h	\
694		..\gv.h		\
695		..\handy.h	\
696		..\hv.h		\
697		..\hv_func.h	\
698		..\iperlsys.h	\
699		..\mg.h		\
700		..\nostdio.h	\
701		..\op.h		\
702		..\opcode.h	\
703		..\perl.h	\
704		..\perlapi.h	\
705		..\perlsdio.h	\
706		..\perly.h	\
707		..\pp.h		\
708		..\proto.h	\
709		..\regexp.h	\
710		..\scope.h	\
711		..\sv.h		\
712		..\thread.h	\
713		..\unixish.h	\
714		..\utf8.h	\
715		..\util.h	\
716		..\warnings.h	\
717		..\XSUB.h	\
718		..\EXTERN.h	\
719		..\perlvars.h	\
720		..\intrpvar.h	\
721		.\include\dirent.h	\
722		.\include\netdb.h	\
723		.\include\sys\errno2.h	\
724		.\include\sys\socket.h	\
725		.\win32.h
726
727DYNAMIC_EXT	= Socket IO Fcntl Opcode SDBM_File POSIX attributes B re \
728		Data/Dumper Devel/Peek ByteLoader Devel/DProf File/Glob \
729		Sys/Hostname
730
731STATIC_EXT	= DynaLoader
732
733DYNALOADER	= $(EXTDIR)\DynaLoader\DynaLoader
734
735ERRNO_PM	= $(LIBDIR)\Errno.pm
736
737
738EXTENSION_PM	=		\
739		$(ERRNO_PM)
740
741CFG_VARS = \
742 "INST_TOP=$(INST_TOP)" \
743 "INST_VER=$(INST_VER)" \
744 "INST_ARCH=$(INST_ARCH)" \
745 "archname=$(ARCHNAME)" \
746 "cc=$(CC)" \
747 "ld=$(LINK32)"	 \
748 "ccflags=$(OPTIMIZE) $(DEFINES) $(BUILDOPT)" \
749 "cppflags=$(OPTIMIZE) $(DEFINES) $(BUILDOPT)" \
750 "cf_by=vkon" \
751 "cf_email=$(EMAIL)" \
752#9cef8306
753 "d_mymalloc=$(PERL_MALLOC)" \
754 "libs=$(LIBFILES)" \
755 "incpath=$(CCINCDIR)" \
756 "libperl=$(PERLIMPLIB_EXP)" \
757 "libpth=$(LIBPATH)" \
758 "libc=$(LIBC)" \
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)" \
770 "WIN64=$(WIN64)"
771
772#
773# filenames given to xsubpp must have forward slashes (since it puts
774# full pathnames in #line strings)
775XSUBPP		= $(HPERL) -I..\..\lib ..\$(EXTUTILSDIR)\xsubpp \
776		-C++ -prototypes
777
778
779#
780# Top targets
781#
782
783all: hostminiperl force_config_h ..\lib\buildcustomize.pl .\config.h ..\git_version.h $(CONFIGPM) $(UNIDATAFILES) $(PERLEXE) MakePPPort Extensions PostExt
784
785$(DYNALOADER)$(o) : $(DYNALOADER).c config.h $(EXTDIR)\DynaLoader\dlutils.c
786
787#convenience target
788configpm_targ : $(CONFIGPM)
789
790force_config_h:
791	-@$(DEL) /f config.h
792	-@$(DEL) /f config.sh
793	-@$(DEL) /f ..\config.h
794	-@$(DEL) /f ..\config.sh
795	-@$(DEL) $(PERLEXE_RES)
796	-@mkdir ..\host
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
804
805$(UUDMAP_H) $(MG_DATA_H) : $(BITCOUNT_H)
806
807$(BITCOUNT_H) :
808	$(GENUUDMAP) $(GENERATED_HEADERS)
809
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)
817
818.\config.h: $(CONFIGPM) ..\config.sh
819	-@$(DEL) /f config.h
820	-$(HPERL) -I..\lib config_h.PL "INST_VER=$(INST_VER)" "CORE_DIR=$(COREDIR)" "CONFIG_H=config.h"
821	copy config.h ..\config.h
822
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
826
827..\git_version.h : ..\make_patchnum.pl
828	cd .. && $(HPERL) -Ilib make_patchnum.pl && cd win32
829
830# make sure that we recompile perl.c if the git version changes
831$(DLLDIR)\perl.obj : ..\git_version.h
832
833MakePPPort: $(HPERL) $(CONFIGPM) Extensions_nonxs
834	$(HPERL) -I..\lib ..\mkppport
835
836MakePPPort_clean:
837	-if exist $(HPERL) $(HPERL) -I..\lib ..\mkppport --clean
838
839#----------------------------------------------------------------------------------
840NOT_COMPILE_EXT =
841!if "$(MACHINE)" == "wince-sh3-palm-wce211"
842NOT_COMPILE_EXT = $(NOT_COMPILE_EXT) !XS/Typemap
843!endif
844!if "$(MACHINE)" == "wince-mips-palm-wce211"
845NOT_COMPILE_EXT = $(NOT_COMPILE_EXT) !XS/Typemap
846!endif
847
848Extensions: ..\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)
851
852
853Extensions_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
856
857Extensions_clean:
858	-if exist $(HPERL) $(HPERL) -I..\lib ..\make_ext.pl "MAKE=$(MAKE)" --dir=$(CPANDIR) --dir=$(DISTDIR) --dir=$(EXTDIR)  --all --target=clean
859
860PostExt: rebuild_storable
861
862rebuild_storable: $(PERLEXE)
863	$(PERLEXE) -I..\lib -I. ..\dist\Storable\stacksize --core
864	cd ..\dist\Storable
865	$(MAKE) PERL_CORE=1
866	cd ..\..\win32
867
868#----------------------------------------------------------------------------------
869
870$(PERLEXE_RES): perlexe.rc perl.rc $(PERLEXE_MANIFEST) $(PERLEXE_ICO)
871	rc $(RCDEFS) perlexe.rc
872
873clean: 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
884
885XDLLOBJS = \
886$(DLLDIR)\av.obj \
887$(DLLDIR)\caretx.obj \
888$(DLLDIR)\deb.obj \
889$(DLLDIR)\doio.obj \
890$(DLLDIR)\doop.obj \
891$(DLLDIR)\dquote.obj \
892$(DLLDIR)\dump.obj \
893$(DLLDIR)\globals.obj \
894$(DLLDIR)\gv.obj \
895$(DLLDIR)\mro_core.obj \
896$(DLLDIR)\hv.obj \
897$(DLLDIR)\locale.obj \
898$(DLLDIR)\keywords.obj \
899$(DLLDIR)\mathoms.obj \
900$(DLLDIR)\mg.obj \
901$(DLLDIR)\numeric.obj \
902$(DLLDIR)\op.obj \
903$(DLLDIR)\pad.obj \
904$(DLLDIR)\perl.obj \
905$(DLLDIR)\perlapi.obj \
906$(DLLDIR)\perlio.obj \
907$(DLLDIR)\perly.obj \
908$(DLLDIR)\pp.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 \
917$(DLLDIR)\run.obj \
918$(DLLDIR)\scope.obj \
919$(DLLDIR)\sv.obj \
920$(DLLDIR)\taint.obj \
921$(DLLDIR)\time64.obj \
922$(DLLDIR)\toke.obj \
923$(DLLDIR)\universal.obj \
924$(DLLDIR)\utf8.obj \
925$(DLLDIR)\util.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"
933XDLLOBJS	= $(XDLLOBJS) $(DLLDIR)\malloc.obj
934!ENDIF
935!IF "$(CRYPT_SRC)" != ""
936XDLLOBJS	= $(XDLLOBJS) $(DLLDIR)\fcrypt.obj
937!ENDIF
938
939#sanity checks to make sure all our external files (celib, w32console, and
940#MS CE SDK) are locatable
941lib_check :
942    @if not exist $(CECONSOLEDIR)\$(MACHINE)\w32console.obj cmd /k \
943        "echo w32console.obj doesn't seem to exist, check your w32console directory \
944        & exit 1"
945    @if not exist $(CELIBDLLDIR)\$(MACHINE)-release\celib.lib cmd /k \
946        "echo celib.lib doesn't seem to exist, check your celib directory \
947        & exit 1"
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 )
950
951#specific header files to check picked at random
952header_check  :
953    @if not exist $(CELIBDLLDIR)\inc\cewin32.h  cmd /k \
954        "echo cewin32.h doesn't seem to exist, check your celib directory \
955        & exit 1"
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 )
958
959{$(SRCDIR)}.c{$(DLLDIR)}.obj:
960    $(CC) -c $(CFLAGS_O) -DPERL_EXTERNAL_GLOB -Fo$(DLLDIR)\ $<
961
962# compiler explains that it will optimize toke.c if we'll give it an
963# option -QMOb<num> with num>=4178
964$(DLLDIR)\toke.obj:
965    $(CC) -c $(CFLAGS_O) -QMOb9000 -DPERL_EXTERNAL_GLOB -Fo$(DLLDIR)\ ..\toke.c
966
967{$(SRCDIR)/win32}.c{$(DLLDIR)}.obj:
968    $(CC) -c $(CFLAGS_O) -DPERL_EXTERNAL_GLOB -Fo$(DLLDIR)\ $<
969
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)
976!ENDIF
977
978perldll.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
982
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)
988
989$(DLLDIR) :
990	if not exist "$(DLLDIR)" mkdir "$(DLLDIR)"
991
992$(EXTDIR)\DynaLoader\DynaLoader.c :
993	$(HPERL) -I..\lib -I. ..\make_ext.pl "MAKE=$(MAKE)" --dir=$(EXTDIR) --dynaloader
994
995$(DLLDIR)\DynaLoader.obj: $(EXTDIR)\DynaLoader\DynaLoader.c
996    $(CC) -c $(CFLAGS_O) -DPERL_EXTERNAL_GLOB -Fo$(DLLDIR)\ \
997          $(EXTDIR)\DynaLoader\DynaLoader.c
998
999XPERLEXEOBJS = \
1000$(MACHINE)\perlmaince.obj
1001
1002..\lib\buildcustomize.pl :
1003	$(HPERL) -I..\lib -f ..\write_buildcustomize.pl ..
1004
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)
1012
1013$(MACHINE)\perlmaince.obj : perlmaince.c
1014	$(CC) $(CFLAGS_O) -UPERLDLL -Fo$(MACHINE)\ -c perlmaince.c
1015
1016iodll:     $(IO_DLL)
1017socketdll: $(SOCKET_DLL)
1018dumperdll: $(DUMPER_DLL)
1019
1020dlls: 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
1030
1031makedist: all dlls
1032	$(COPY) $(CELIBPATH)\celib.dll $(MACHINE)
1033	copy perl.txt $(MACHINE)
1034	copy registry.bat $(MACHINE)
1035	copy ../lib/Config.pm $(MACHINE)/lib
1036	cd $(MACHINE)
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
1041	cd ..
1042
1043install: all
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"
1050
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)
1054
1055dist: all
1056	$(HPERL) -I..\lib ce-helpers\makedist.pl --distdir=dist-$(CROSS_NAME) --cross-name=$(CROSS_NAME)
1057
1058zipdist: all
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
1061
1062zip:
1063	$(HPERL) -I..\lib ce-helpers\makedist.pl --distdir=dist-$(CROSS_NAME) --cross-name=$(CROSS_NAME) --zip
1064
1065hostminiperl: ..\miniperl.exe
1066
1067..\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
1070
1071host-install:
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#"
1078