This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
correct Pod-Html tests for new Pod-Simple output
[perl5.git] / win32 / Makefile.ce
CommitLineData
b0f06652 1#
e4451f11 2# perl makefile for wince
b0f06652
VK
3# During the cross-compilation, it first uses Makefile file to build
4# miniperl on HOST and then build required platform
e4451f11 5#
e4451f11
JH
6
7SRCDIR = ..
517bb5c6 8PV = 517
42165d27 9
18f68570 10# INSTALL_ROOT specifies a path where this perl will be installed on CE device
42165d27 11INSTALL_ROOT=/netzwerk/sprache/perl
18f68570
VK
12INST_TOP=$(INSTALL_ROOT)
13INST_VER=
42165d27
VK
14
15# PERLCEDIR shoud be set to current directory
f4257e4d 16PERLCEDIR = H:\src\wince\perl\win32
42165d27 17
18f68570 18# WCEROOT is a directory where Windows CE Tools was installed
ca6c63e1 19WCEROOT = D:\Windows CE Tools
18f68570
VK
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
ca6c63e1
JH
26CEPATH = D:\Programme\Microsoft eMbedded Tools\EVC\WCE211\BIN
27CELIBDLLDIR = h:\src\wince\celib-palm-3.0
e4451f11 28CECONSOLEDIR = h:\src\wince\w32console
18f68570
VK
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
e4451f11 36# Only for WIN2000
ca6c63e1 37#YES = /y
e4451f11
JH
38COPY = copy $(YES)
39XCOPY = xcopy $(YES) /f /r /i /d
40RCOPY = xcopy $(YES) /f /r /i /e /d
42165d27
VK
41
42# cecopy program. Make shure it is in your path, as well as cemkdir, cedel
43CECOPY = cecopy
44
18f68570 45#
f4257e4d
YO
46# Comment out next assign to disable perl's I/O subsystem and use compiler's
47# stdio for IO - depending on your compiler vendor and run time library you may
48# then get a number of fails from make test i.e. bugs - complain to them not us ;-).
49# You will also be unable to take full advantage of perl5.8's support for multiple
18f68570
VK
50# encodings and may see lower IO performance. You have been warned.
51USE_PERLIO = define
52
2e64bfdb
JH
53#
54# set this if you wish to use perl's malloc
55# This will make perl run few times faster
56# WARNING: Turning this on/off WILL break binary compatibility with extensions
57# you may have compiled with/without it.
58#
59PERL_MALLOC = define
60
18f68570 61
e4451f11
JH
62NOOP = @echo
63# keep this untouched!
64NULL =
65
42165d27 66
aebd5ec7
VK
67#CFG=DEBUG
68CFG=RELEASE
e4451f11
JH
69
70!if "$(MACHINE)" == ""
71MACHINE=wince-arm-hpc-wce300
72#MACHINE=wince-arm-hpc-wce211
73#MACHINE=wince-sh3-hpc-wce211
74#MACHINE=wince-mips-hpc-wce211
75#MACHINE=wince-sh3-hpc-wce200
76#MACHINE=wince-mips-hpc-wce200
77#MACHINE=wince-arm-pocket-wce300
78#MACHINE=wince-mips-pocket-wce300
79#MACHINE=wince-sh3-pocket-wce300
80#MACHINE=wince-x86em-pocket-wce300
81#MACHINE=wince-mips-palm-wce211
82#MACHINE=wince-sh3-palm-wce211
83#MACHINE=wince-x86em-palm-wce211
84!endif
85
2e64bfdb
JH
86# set this to your email address
87#
88#EMAIL =
89
90##################### CHANGE THESE ONLY IF YOU MUST #####################
91
e4451f11
JH
92######################################################################
93# machines
94
95!if "$(MACHINE)" == "wince-sh3-hpc-wce211"
96CC = shcl.exe
97ARCH = SH3
98CPU = SH3
99TARGETCPU = SH3
100CEVersion = 211
101OSVERSION = WCE211
102PLATFORM = MS HPC Pro
103MCFLAGS = -MDd -DSH3 -D_SH3_ -DSHx -DPROCESSOR_SH3 -DPALM_SIZE \
104 -I $(CELIBDLLDIR)\inc
105SUBSYS = -subsystem:windowsce,2.11
106CELIBPATH = $(CELIBDLLDIR)\$(MACHINE)-release
107LDLIBPATH = -libpath:$(CELIBPATH)
108STARTOBJS = $(CECONSOLEDIR)/$(MACHINE)/wmain.obj \
109 $(CECONSOLEDIR)/$(MACHINE)/w32console.obj
110!endif
111
112!if "$(MACHINE)" == "wince-mips-hpc-wce211"
113CC = clmips.exe
114ARCH = MIPS
115CPU = MIPS
116TARGETCPU = MIPS
117CEVersion = 211
118OSVERSION = WCE211
119PLATFORM = MS HPC Pro
120MCFLAGS = -D _MT -D _DLL \
121 -D MIPS -D mips -D _MIPS_ -D _mips_ -DPROCESSOR_MIPS \
122 -D PALM_SIZE \
123 -I $(CELIBDLLDIR)\inc
124SUBSYS = -subsystem:windowsce,2.11
125CELIBPATH = $(CELIBDLLDIR)\$(MACHINE)-release
126LDLIBPATH = -libpath:$(CELIBPATH)
127STARTOBJS = $(CECONSOLEDIR)/$(MACHINE)/wmain.obj \
128 $(CECONSOLEDIR)/$(MACHINE)/w32console.obj
129!endif
130
131!if "$(MACHINE)" == "wince-mips-hpc-wce200"
132CC = clmips.exe
133ARCH = MIPS
134CPU = MIPS
135TARGETCPU = MIPS
136CEVersion = 200
137OSVERSION = WCE200
138PLATFORM = MS HPC
139# MUST USE -MD to get the right FPE stuff...
140MCFLAGS = -D _MT -D _DLL -MD \
141 -D MIPS -D mips -D _MIPS_ -D _mips_ -DPROCESSOR_MIPS \
142 -D PALM_SIZE \
143 -I $(CELIBDLLDIR)\inc
144SUBSYS = -subsystem:windowsce,2.00
145CELIBPATH = $(CELIBDLLDIR)\$(MACHINE)-release
146LDLIBPATH = -libpath:$(CELIBPATH)
147STARTOBJS = $(CECONSOLEDIR)/$(MACHINE)/wmain.obj \
148 $(CECONSOLEDIR)/$(MACHINE)/w32console.obj
149!endif
150
151!if "$(MACHINE)" == "wince-sh3-hpc-wce200"
152CC = shcl.exe
153ARCH = SH3
154CPU = SH3
155TARGETCPU = SH3
156CEVersion = 200
157OSVERSION = WCE200
158PLATFORM = MS HPC
159# MUST USE -MD to get the right FPE stuff...
160MCFLAGS = -D _MT -D _DLL -MD \
161 -D SH3 -D sh3 -D _SH3_ -D _sh3_ -D SHx -DPROCESSOR_SH3 \
162 -D PALM_SIZE \
163 -I $(CELIBDLLDIR)\inc
164SUBSYS = -subsystem:windowsce,2.00
165CELIBPATH = $(CELIBDLLDIR)\$(MACHINE)-release
166LDLIBPATH = -libpath:$(CELIBPATH)
167STARTOBJS = $(CECONSOLEDIR)/$(MACHINE)/wmain.obj \
168 $(CECONSOLEDIR)/$(MACHINE)/w32console.obj
169!endif
170
171!if "$(MACHINE)" == "wince-arm-hpc-wce211"
172CC = clarm.exe
173ARCH = ARM
174CPU = ARM
175TARGETCPU = ARM
176CEVersion = 211
177OSVERSION = WCE211
178PLATFORM = MS HPC Pro
179MCFLAGS = -D _MT -D _DLL -D ARM -D arm -D _arm_ -D _ARM_ \
180 -DPROCESSOR_ARM -DPALM_SIZE \
181 -I $(CELIBDLLDIR)\inc
182SUBSYS = -subsystem:windowsce,2.11
183CELIBPATH = $(CELIBDLLDIR)\$(MACHINE)-release
184LDLIBPATH = -libpath:$(CELIBPATH)
185STARTOBJS = $(CECONSOLEDIR)/$(MACHINE)/wmain.obj \
186 $(CECONSOLEDIR)/$(MACHINE)/w32console.obj
187!endif
188
189!if "$(MACHINE)" == "wince-arm-hpc-wce300"
190CC = clarm.exe
191ARCH = ARM
192CPU = ARM
193TARGETCPU = ARM
194CEVersion = 300
195OSVERSION = WCE300
c96f74ce 196#PLATFORM = HPC2000
e4451f11
JH
197MCFLAGS = -D _MT -D _DLL -D ARM -D arm -D _arm_ -D _ARM_ \
198 -DPROCESSOR_ARM -DPALM_SIZE \
199 -I $(CELIBDLLDIR)\inc
200SUBSYS = -subsystem:windowsce,3.00
201CELIBPATH = $(CELIBDLLDIR)\$(MACHINE)-release
202LDLIBPATH = -libpath:$(CELIBPATH)
203STARTOBJS = $(CECONSOLEDIR)/$(MACHINE)/wmain.obj \
204 $(CECONSOLEDIR)/$(MACHINE)/w32console.obj
205!endif
206
207!if "$(MACHINE)" == "wince-mips-palm-wce211"
208CC = clmips.exe
209ARCH = MIPS
210CPU = MIPS
211TARGETCPU = MIPS
212CEVersion = 211
213OSVERSION = WCE211
214PLATFORM = MS Palm Size PC
215MCFLAGS = -DMIPS -D_MIPS_ -DPROCESSOR_MIPS -D PALM_SIZE -D _DLL -D _MT \
216 -I $(CELIBDLLDIR)\inc
217SUBSYS = -subsystem:windowsce,2.11
218CELIBPATH = $(CELIBDLLDIR)\$(MACHINE)-release
219LDLIBPATH = -libpath:$(CELIBPATH)
220STARTOBJS = $(CECONSOLEDIR)/$(MACHINE)/wmain.obj \
221 $(CECONSOLEDIR)/$(MACHINE)/w32console.obj
222!endif
223
224!if "$(MACHINE)" == "wince-sh3-palm-wce211"
225CC = shcl.exe
226ARCH = SH3
227CPU = SH3
228TARGETCPU = SH3
229CEVersion = 211
230OSVERSION = WCE211
231PLATFORM = MS Palm Size PC
232MCFLAGS = -D _MT -D _DLL -DSH3 -D_SH3_ -DSHx -DPROCESSOR_SH3 -DPALM_SIZE \
233 -I $(CELIBDLLDIR)\inc
234SUBSYS = -subsystem:windowsce,2.11
235CELIBPATH = $(CELIBDLLDIR)\$(MACHINE)-release
236LDLIBPATH = -libpath:$(CELIBPATH)
237STARTOBJS = $(CECONSOLEDIR)/$(MACHINE)/wmain.obj \
238 $(CECONSOLEDIR)/$(MACHINE)/w32console.obj
239!endif
240
241!if "$(MACHINE)" == "wince-x86em-palm-wce211"
242CC = cl.exe
243ARCH = X86EM
244CPU = X86
245TARGETCPU = X86
246CEVersion = 211
247OSVERSION = WCE211
248PLATFORM = MS Palm Size PC
249MCFLAGS = -MDd -DX86 -D_X86_ -DPROCESSOR_X86 \
250 -D_WIN32_WCE_EMULATION -DPALM_SIZE \
251 -I $(CELIBDLLDIR)\inc
252MACH = -machine:x86
253SUBSYS = -subsystem:windows
254CELIBPATH = $(CELIBDLLDIR)\$(MACHINE)-release
255LDLIBPATH = -libpath:$(CELIBPATH)
256STARTOBJS = $(CECONSOLEDIR)/$(MACHINE)/wmain.obj \
257 $(CECONSOLEDIR)/$(MACHINE)/w32console.obj
258!endif
259
260!if "$(MACHINE)" == "wince-x86em-pocket-wce300"
261CC = cl.exe
262ARCH = X86EM
263CPU = X86
264TARGETCPU = X86
265CEVersion = 300
266OSVERSION = WCE300
267PLATFORM = MS Pocket PC
268MCFLAGS = -DX86 -D_X86_ -DPROCESSOR_X86 -D _MT -D _DLL \
269 -D_WIN32_WCE_EMULATION -DPALM_SIZE -DPOCKET_SIZE \
f4257e4d 270 -I $(CELIBDLLDIR)\inc
e4451f11
JH
271MACH = -machine:x86
272SUBSYS = -subsystem:windows
273CELIBPATH = $(CELIBDLLDIR)\$(MACHINE)-release
274LDLIBPATH = -libpath:$(CELIBPATH)
275STARTOBJS = $(CECONSOLEDIR)/$(MACHINE)/wmain.obj \
276 $(CECONSOLEDIR)/$(MACHINE)/w32console.obj
277!endif
278
279!if "$(MACHINE)" == "wince-mips-pocket-wce300"
280CC = clmips.exe
281ARCH = MIPS
282CPU = MIPS
283TARGETCPU = MIPS
284CEVersion = 300
285OSVERSION = WCE300
286PLATFORM = MS Pocket PC
287MCFLAGS = -D MIPS -D mips -D _MIPS_ -D _mips_ -DPROCESSOR_MIPS \
288 -D _MT -D _DLL -DPALM_SIZE -DPOCKET_SIZE \
f4257e4d 289 -I $(CELIBDLLDIR)\inc
e4451f11
JH
290MACH = -machine:mips
291SUBSYS = -subsystem:windowsce,3.00
292CELIBPATH = $(CELIBDLLDIR)\$(MACHINE)-release
216db7ee 293#STDLIBPATH = $(WCEROOT)\$(OSVERSION)\$(PLATFORM)\lib\$(CPU)
e4451f11 294LDLIBPATH = -libpath:$(CELIBPATH)
216db7ee 295#"-libpath:$(STDLIBPATH)"
e4451f11
JH
296STARTOBJS = $(CECONSOLEDIR)/$(MACHINE)/wmain.obj \
297 $(CECONSOLEDIR)/$(MACHINE)/w32console.obj
298!endif
299
300!if "$(MACHINE)" == "wince-sh3-pocket-wce300"
301CC = shcl.exe
302ARCH = SH3
303CPU = SH3
304TARGETCPU = SH3
305CEVersion = 300
306OSVERSION = WCE300
307PLATFORM = MS Pocket PC
308MCFLAGS = -D _MT -D _DLL -DSH3 -D_SH3_ -DSHx -DPROCESSOR_SH3 \
309 -DPALM_SIZE -DPOCKET_SIZE \
f4257e4d 310 -I $(CELIBDLLDIR)\inc
2e64bfdb 311MACH = -machine:sh3
e4451f11
JH
312SUBSYS = -subsystem:windowsce,3.00
313CELIBPATH = $(CELIBDLLDIR)\$(MACHINE)-release
314LDLIBPATH = -libpath:$(CELIBPATH)
315STARTOBJS = $(CECONSOLEDIR)/$(MACHINE)/wmain.obj \
316 $(CECONSOLEDIR)/$(MACHINE)/w32console.obj
317!endif
318
319!if "$(MACHINE)" == "wince-arm-pocket-wce300"
320CC = clarm.exe
321ARCH = ARM
322CPU = ARM
323TARGETCPU = ARM
324CEVersion = 300
325OSVERSION = WCE300
326PLATFORM = MS Pocket PC
327MCFLAGS = -D ARM -D arm -D _ARM_ -D _arm_ -DPROCESSOR_ARM \
328 -D _MT -D _DLL -DPALM_SIZE -DPOCKET_SIZE \
f4257e4d 329 -I $(CELIBDLLDIR)\inc
e4451f11
JH
330MACH = -machine:arm
331SUBSYS = -subsystem:windowsce,3.00
332CELIBPATH = $(CELIBDLLDIR)\$(MACHINE)-release
333LDLIBPATH = -libpath:$(CELIBPATH)
334STARTOBJS = $(CECONSOLEDIR)/$(MACHINE)/wmain.obj \
335 $(CECONSOLEDIR)/$(MACHINE)/w32console.obj
336!endif
337
338######################################################################
339# common section
340
341CEDEFS = -D_WINDOWS -D_WIN32_WCE=$(CEVersion) -DUNDER_CE=$(CEVersion) \
ca6c63e1
JH
342 $(MCFLAGS) -D PERL
343
e4451f11
JH
344CECFLAGS = $(CEDEFS)
345
346!if "$(CFG)" == "DEBUG"
347CECFLAGS = $(CECFLAGS) -Zi -Od
348!endif
349
350!if "$(CFG)" == "RELEASE"
351# -O2 and -Ot give internal compiler error in perl.c and lexer.
352# Also the dll cannot be loaded by perl.exe...
c96f74ce
JH
353!if "$(CPU)" == "SH3"
354!else
2e64bfdb 355CECFLAGS = $(CECFLAGS) -O2 -Ot
e4451f11
JH
356!endif
357
c96f74ce
JH
358!endif
359
e4451f11
JH
360RCDEFS = /l 0x407 /r /d "UNICODE" /d UNDER_CE=$(CEVersion) \
361 /d _WIN32_WCE=$(CEVersion)
362
363PATH=$(CEPATH);$(PATH)
364
365INCLUDE=$(WCEROOT)\$(OSVERSION)\$(PLATFORM)\include
366LIB=$(WCEROOT)\$(OSVERSION)\$(PLATFORM)\lib\$(ARCH)
367
368######################################################################
369
370!message
371!message Compiling for $(MACHINE)
372!message LIB=$(LIB)
373!message INCLUDE=$(INCLUDE)
374!message PATH=$(CEPATH)
375!message
376
377######################################################################
378#
379# Additional compiler flags can be specified here.
380#
381
b0f06652 382BUILDOPT = $(BUILDOPT) $(CECFLAGS) -DUSE_CROSS_COMPILE
e4451f11 383
e4451f11
JH
384
385!IF "$(CRYPT_SRC)$(CRYPT_LIB)" == ""
386D_CRYPT = undef
387!ELSE
388D_CRYPT = define
389CRYPT_FLAG = -DHAVE_DES_FCRYPT
390!ENDIF
391
e4451f11
JH
392!IF "$(PERL_MALLOC)" == ""
393PERL_MALLOC = undef
394!ENDIF
395
e4451f11
JH
396!IF "$(USE_MULTI)" == ""
397USE_MULTI = undef
398!ENDIF
399
e4451f11
JH
400!IF "$(USE_ITHREADS)" == ""
401USE_ITHREADS = undef
402!ENDIF
403
404!IF "$(USE_IMP_SYS)" == ""
405USE_IMP_SYS = undef
406!ENDIF
407
18f68570
VK
408!IF "$(USE_PERLIO)" == ""
409USE_PERLIO = undef
410!ENDIF
411
e4451f11
JH
412!IF "$(USE_PERLCRT)" == ""
413USE_PERLCRT = undef
414!ENDIF
415
3db8f154 416!IF "$(USE_IMP_SYS)$(USE_MULTI)" == "defineundef"
e4451f11
JH
417USE_MULTI = define
418!ENDIF
419
acfe0abc 420!IF "$(USE_ITHREADS)$(USE_MULTI)" == "defineundef"
e4451f11 421USE_MULTI = define
e4451f11
JH
422!ENDIF
423
3db8f154 424!IF "$(USE_MULTI)" != "undef"
e4451f11
JH
425BUILDOPT = $(BUILDOPT) -DPERL_IMPLICIT_CONTEXT
426!ENDIF
427
428!IF "$(USE_IMP_SYS)" != "undef"
429BUILDOPT = $(BUILDOPT) -DPERL_IMPLICIT_SYS
430!ENDIF
431
18f68570
VK
432!IF "$(USE_PERLIO)" == "define"
433BUILDOPT = $(BUILDOPT) -DUSE_PERLIO
434!ENDIF
435
47bcb90d 436!IF "$(CROSS_NAME)" == ""
2e64bfdb 437CROSS_NAME = $(MACHINE)
47bcb90d
VK
438!ENDIF
439
e4451f11
JH
440# new option - automatically defined in perl.h...
441#BUILDOPT = $(BUILDOPT) -DUSE_ENVIRON_ARRAY
442
443PROCESSOR_ARCHITECTURE = $(TARGETCPU)
444ARCHNAME = $(PLATFORM)-$(OSVERSION)-$(PROCESSOR_ARCHITECTURE)
e4451f11
JH
445ARCHDIR = ..\lib\$(ARCHNAME)
446COREDIR = ..\lib\CORE
e2a02c1e 447XCOREDIR = ..\xlib\$(CROSS_NAME)\CORE
e4451f11
JH
448AUTODIR = ..\lib\auto
449LIBDIR = ..\lib
450EXTDIR = ..\ext
451PODDIR = ..\pod
452EXTUTILSDIR = $(LIBDIR)\ExtUtils
453
454LINK32 = link
455LIB32 = $(LINK32) -lib
456RSC = rc
457
f4257e4d 458INCLUDES = -I.\include -I. -I..
e4451f11
JH
459DEFINES = -DWIN32 -D_CONSOLE -DNO_STRICT $(CRYPT_FLAG) $(CECFLAGS)
460LOCDEFS = -DPERLDLL -DPERL_CORE
216db7ee 461CXX_FLAG = -TP
e4451f11
JH
462
463PERLEXE_RES = perl.res
464PERLDLL_RES =
465
e4451f11
JH
466!if "$(CFG)" == "RELEASE"
467CELIB = celib.lib
468!endif
469
470!if "$(CFG)" == "DEBUG"
471CELIB = celib.lib
472!endif
473
474CELIBS = -nodefaultlib \
475 winsock.lib $(CELIB) coredll.lib
476
477!if $(CEVersion) > 200
f4257e4d 478CELIBS = $(CELIBS) corelibc.lib
e4451f11 479!else
f4257e4d 480CELIBS = $(CELIBS) msvcrt.lib
e4451f11
JH
481!endif
482
483LIBBASEFILES = $(CRYPT_LIB) $(CELIBS)
484
485LIBFILES = $(LIBBASEFILES) $(LIBC)
486
487CFLAGS = -nologo -Gf -W3 $(INCLUDES) $(DEFINES) $(LOCDEFS) \
488 $(PCHFLAGS) $(OPTIMIZE)
489
490LINK_FLAGS = -nologo -machine:$(PROCESSOR_ARCHITECTURE)
491
492!if "$(CFG)" == "DEBUG"
f4257e4d 493LINK_FLAGS = $(LINK_FLAGS) -debug:full -pdb:none
2e64bfdb 494!else
f4257e4d 495LINK_FLAGS = $(LINK_FLAGS) -release
e4451f11
JH
496!endif
497
498OBJOUT_FLAG = -Fo
499EXEOUT_FLAG = -Fe
500
501CFLAGS_O = $(CFLAGS) $(BUILDOPT)
502
503o = .obj
504
505#
506# Rules
f4257e4d 507#
e4451f11
JH
508
509.SUFFIXES : .c $(o) .dll .lib .exe .rc .res
510
511.c$(o):
512 $(CC) -c -I$(<D) $(CFLAGS_O) $(OBJOUT_FLAG)$@ $<
513
514.y.c:
515 $(NOOP)
516
517$(o).dll:
518 $(LINK32) -dll $(SUBSYS) $(LDLIBPATH) \
519 -implib:$(*B).lib -def:$(*B).def \
f4257e4d 520 -out:$@ $(LINK_FLAGS) $(LIBFILES) $< $(LIBPERL)
e4451f11
JH
521
522.rc.res:
523 $(RSC) -i.. $<
524
525# This must be relative to ../lib/CORE, else the ext dll build fails...
e2a02c1e 526PERLIMPLIB_EXP = ..\..\..\xlib\$(CROSS_NAME)\CORE\perl$(PV).lib
e4451f11
JH
527PERLIMPLIB = $(PERLCEDIR)\$(MACHINE)\perl$(PV).lib
528PERLDLL = $(MACHINE)\perl$(PV).dll
529
530DLLDIR = $(MACHINE)\dll
531PERLEXE = $(MACHINE)\perl.exe
532
e2a02c1e 533CONFIGPM = ..\xlib\$(CROSS_NAME)\Config.pm
e4451f11
JH
534MINIMOD = ..\lib\ExtUtils\Miniperl.pm
535
42d1cefd 536# Unicode data files generated by mktables
517bb5c6 537FIRSTUNIFILE = ..\lib\unicore\Decomposition.pl
3df51b85 538UNIDATAFILES = ..\lib\unicore\Decomposition.pl \
42d1cefd 539 ..\lib\unicore\CombiningClass.pl ..\lib\unicore\Name.pl \
860054a8 540 ..\lib\unicore\Heavy.pl ..\lib\unicore\mktables.lst \
1a234f2b 541 ..\lib\unicore\UCD.pl ..\lib\unicore\Name.pm \
3e344d15 542 ..\lib\unicore\TestProp.pl
42d1cefd 543
517bb5c6
VK
544PERLEXE_MANIFEST= .\perlexe.manifest
545PERLEXE_ICO = .\perlexe.ico
546PERLEXE_RES = .\perlexe.res
547PERLDLL_RES =
548
42d1cefd
RGS
549# Directories of Unicode data files generated by mktables
550UNIDATADIR1 = ..\lib\unicore\To
551UNIDATADIR2 = ..\lib\unicore\lib
552
fefd7080
VK
553# Nominate a target which causes extensions to be re-built
554# This used to be $(PERLEXE), but at worst it is the .dll that they depend
555# on and really only the interface - i.e. the .def file used to export symbols
556# from the .dll
557PERLDEP = perldll.def
558
e4451f11
JH
559MAKE = nmake -nologo
560
561CFGSH_TMPL = config.ce
562CFGH_TMPL = config_H.ce
563
e4451f11
JH
564MICROCORE_SRC = \
565 ..\av.c \
566 ..\deb.c \
567 ..\doio.c \
568 ..\doop.c \
569 ..\dump.c \
570 ..\globals.c \
571 ..\gv.c \
e1a479c5 572 ..\mro.c \
e4451f11 573 ..\hv.c \
26ea9e12 574 ..\keywords.c \
e4451f11
JH
575 ..\mg.c \
576 ..\op.c \
b475b3e6 577 ..\pad.c \
e4451f11
JH
578 ..\perl.c \
579 ..\perlapi.c \
580 ..\perly.c \
581 ..\pp.c \
582 ..\pp_ctl.c \
583 ..\pp_hot.c \
84d4ea48
JH
584 ..\pp_pack.c \
585 ..\pp_sort.c \
e4451f11 586 ..\pp_sys.c \
10bc17b6 587 ..\reentr.c \
e4451f11
JH
588 ..\regcomp.c \
589 ..\regexec.c \
590 ..\run.c \
591 ..\scope.c \
592 ..\sv.c \
593 ..\taint.c \
594 ..\toke.c \
595 ..\universal.c \
596 ..\utf8.c \
48462a74 597 ..\util.c
e4451f11
JH
598
599EXTRACORE_SRC = $(EXTRACORE_SRC) perllib.c
600
601!IF "$(PERL_MALLOC)" == "define"
602EXTRACORE_SRC = $(EXTRACORE_SRC) ..\malloc.c
603!ENDIF
604
42165d27 605EXTRACORE_SRC = $(EXTRACORE_SRC) ..\perlio.c .\win32io.c
e4451f11
JH
606
607WIN32_SRC = \
608 .\wince.c \
609 .\wincesck.c \
f4257e4d 610 .\win32thread.c
e4451f11
JH
611
612!IF "$(CRYPT_SRC)" != ""
613WIN32_SRC = $(WIN32_SRC) .\$(CRYPT_SRC)
614!ENDIF
615
616DLL_SRC = $(DYNALOADER).c
617
618CORE_NOCFG_H = \
619 ..\av.h \
620 ..\cop.h \
621 ..\cv.h \
622 ..\dosish.h \
623 ..\embed.h \
624 ..\form.h \
625 ..\gv.h \
626 ..\handy.h \
627 ..\hv.h \
628 ..\iperlsys.h \
629 ..\mg.h \
630 ..\nostdio.h \
631 ..\op.h \
632 ..\opcode.h \
633 ..\perl.h \
634 ..\perlapi.h \
635 ..\perlsdio.h \
636 ..\perlsfio.h \
637 ..\perly.h \
638 ..\pp.h \
639 ..\proto.h \
640 ..\regexp.h \
641 ..\scope.h \
642 ..\sv.h \
643 ..\thread.h \
644 ..\unixish.h \
645 ..\utf8.h \
646 ..\util.h \
647 ..\warnings.h \
648 ..\XSUB.h \
649 ..\EXTERN.h \
650 ..\perlvars.h \
651 ..\intrpvar.h \
e4451f11
JH
652 .\include\dirent.h \
653 .\include\netdb.h \
654 .\include\sys\socket.h \
655 .\win32.h
656
48462a74 657DYNAMIC_EXT = Socket IO Fcntl Opcode SDBM_File POSIX attributes B re \
e4451f11
JH
658 Data/Dumper Devel/Peek ByteLoader Devel/DProf File/Glob \
659 Sys/Hostname
660
661STATIC_EXT = DynaLoader
e4451f11
JH
662
663DYNALOADER = $(EXTDIR)\DynaLoader\DynaLoader
e4451f11
JH
664
665ERRNO_PM = $(LIBDIR)\Errno.pm
666
e4451f11
JH
667
668EXTENSION_PM = \
669 $(ERRNO_PM)
670
e4451f11 671CFG_VARS = \
e4451f11
JH
672 "INST_TOP=$(INST_TOP)" \
673 "INST_VER=$(INST_VER)" \
674 "INST_ARCH=$(INST_ARCH)" \
675 "archname=$(ARCHNAME)" \
74d57dc4 676 "CC=$(CC)" \
e4451f11 677 "ccflags=$(OPTIMIZE) $(DEFINES) $(BUILDOPT)" \
1829b0dc
VK
678 "cppflags=$(OPTIMIZE) $(DEFINES) $(BUILDOPT)" \
679 "cf_by=vkon" \
2e64bfdb 680 "cf_email=$(EMAIL)" \
e4451f11
JH
681 "d_crypt=$(D_CRYPT)" \
682 "d_mymalloc=$(PERL_MALLOC)" \
683 "libs=$(LIBFILES)" \
684 "incpath=$(CCINCDIR)" \
685 "libperl=$(PERLIMPLIB_EXP)" \
686 "libpth=$(LIBPATH)" \
687 "libc=$(LIBC)" \
688 "make=nmake" \
689 "static_ext=$(STATIC_EXT)" \
690 "dynamic_ext=$(DYNAMIC_EXT)" \
e4451f11 691 "useithreads=$(USE_ITHREADS)" \
e4451f11 692 "usemultiplicity=$(USE_MULTI)" \
18f68570 693 "useperlio=$(USE_PERLIO)" \
e4451f11
JH
694 "LINK_FLAGS=$(LDLIBPATH) $(LINK_FLAGS) $(SUBSYS)" \
695 "optimize=$(OPTIMIZE)"
696
517bb5c6
VK
697ICWD = -I..\dist\Cwd -I..\dist\Cwd\lib
698ICWD1 = -I..\..\dist\Cwd -I..\..\dist\Cwd\lib
699
700#
701# filenames given to xsubpp must have forward slashes (since it puts
702# full pathnames in #line strings)
703XSUBPP = $(HPERL) -I..\..\lib $(ICWD1) -MCross=$(CROSS_NAME) ..\$(EXTUTILSDIR)\xsubpp \
704 -C++ -prototypes
705
706
e4451f11
JH
707#
708# Top targets
709#
710
42e07562 711all: hostminiperl $(MINIMOD) $(CONFIGPM) $(UNIDATAFILES) $(PERLEXE) MakePPPort Extensions
e4451f11 712
d8c3cb99 713$(DYNALOADER)$(o) : $(DYNALOADER).c xconfig.h $(EXTDIR)\DynaLoader\dlutils.c
e4451f11 714
517bb5c6
VK
715$(CONFIGPM) : $(HPERL) ..\config.sh config_h.PL ..\minimod.pl
716 cd .. && $(HPERL) -Ilib configpm --cross=$(CROSS_NAME) --no-glossary
e2a02c1e
VK
717 -mkdir $(XCOREDIR)
718 $(XCOPY) ..\*.h $(XCOREDIR)\*.*
0f133d1f 719 $(XCOPY) ..\*.inc $(XCOREDIR)\*.*
e2a02c1e 720 $(XCOPY) *.h $(XCOREDIR)\*.*
e4451f11 721 $(XCOPY) ..\ext\re\re.pm $(LIBDIR)\*.*
e2a02c1e 722 $(RCOPY) include $(XCOREDIR)\*.*
e4451f11 723
f4257e4d
YO
724.\xconfig.h:
725 -del /f xconfig.h
608969de 726 -mkdir $(XCOREDIR)
517bb5c6 727 -$(HPERL) -I..\lib $(ICWD) -MCross=$(CROSS_NAME) config_h.PL "INST_VER=$(INST_VER)" "CORE_DIR=$(XCOREDIR)" "CONFIG_H=xconfig.h"
608969de 728 $(XCOPY) xconfig.h $(XCOREDIR)\config.h
e2a02c1e
VK
729
730..\config.sh: config.ce config_sh.PL
f4257e4d 731 $(HPERL) -I..\lib -I. config_sh.PL $(CFG_VARS) config.ce > ..\config.sh
e4451f11
JH
732
733$(MINIMOD) : ..\minimod.pl
18f68570 734 cd .. && $(HPERL) minimod.pl > lib\ExtUtils\Miniperl.pm
e4451f11 735
e4451f11
JH
736$(DYNALOADER).c: $(EXTDIR)\DynaLoader\dl_win32.xs $(CONFIGPM)
737 if not exist $(AUTODIR) mkdir $(AUTODIR)
738 cd $(EXTDIR)\$(*B)
3f2394f2 739 $(HPERL) -I..\..\lib -MCross=$(CROSS_NAME) $(*B)_pm.PL
247d8755 740 cd ..\..\win32
e4451f11 741 $(XCOPY) $(EXTDIR)\$(*B)\$(*B).pm $(LIBDIR)\$(NULL)
e4451f11
JH
742 cd $(EXTDIR)\$(*B)
743 $(XSUBPP) dl_win32.xs > $(*B).c
247d8755 744 cd ..\..\win32
e4451f11
JH
745
746$(EXTDIR)\DynaLoader\dl_win32.xs: dl_win32.xs
747 $(COPY) dl_win32.xs $(EXTDIR)\DynaLoader\dl_win32.xs
748
42e07562 749MakePPPort: $(MINIPERL) $(CONFIGPM)
01e90026 750 $(HPERL) -I..\lib -MCross=$(CROSS_NAME) ..\mkppport
42e07562
MHM
751
752MakePPPort_clean:
01e90026 753 -if exist $(HPERL) $(HPERL) -I..\lib ..\mkppport --clean
42e07562 754
fefd7080 755#----------------------------------------------------------------------------------
94081db1
VK
756NOT_COMPILE_EXT =
757!if "$(MACHINE)" == "wince-sh3-palm-wce211"
758NOT_COMPILE_EXT = $(NOT_COMPILE_EXT) !XS/Typemap
759!endif
760!if "$(MACHINE)" == "wince-mips-palm-wce211"
761NOT_COMPILE_EXT = $(NOT_COMPILE_EXT) !XS/Typemap
762!endif
763
d1b15013
NC
764Extensions: ..\make_ext.pl $(PERLDEP) $(CONFIGPM)
765 $(HPERL) -I..\lib -I. -MCross=$(CROSS_NAME) ..\make_ext.pl "MAKE=$(MAKE)" --dir=$(EXTDIR) --all \
75472953 766 !POSIX $(NOT_COMPILE_EXT)
fefd7080 767
f4257e4d 768Extensions_clean:
d1b15013 769 -if exist $(MINIPERL) $(MINIPERL) -I..\lib ..\make_ext.pl "MAKE=$(MAKE)" --dir=$(EXTDIR) --all --target=clean
fefd7080
VK
770
771#----------------------------------------------------------------------------------
772
517bb5c6
VK
773$(PERLEXE_RES): perlexe.rc perl.rc $(PERLEXE_MANIFEST) $(PERLEXE_ICO)
774 rc $(RCDEFS) perlexe.rc
e4451f11 775
f4257e4d 776clean:
e4451f11
JH
777 -rm -f $(MACHINE)/dll/*
778 -rm -f $(MACHINE)/*.obj
779 -rm -f $(MACHINE)/*.exe
780 -rm -f $(MACHINE)/*.dll
781 -rm -f $(MACHINE)/*.lib
782 -rm -f ../config.sh ../lib/Config.pm
d8c3cb99 783 -rm -f config.h xconfig.h perl.res
0279961e 784 -rm -f ../t/test_state
e4451f11 785
e4451f11
JH
786XDLLOBJS = \
787$(DLLDIR)\av.obj \
788$(DLLDIR)\deb.obj \
789$(DLLDIR)\doio.obj \
790$(DLLDIR)\doop.obj \
791$(DLLDIR)\dump.obj \
792$(DLLDIR)\globals.obj \
793$(DLLDIR)\gv.obj \
e1a479c5 794$(DLLDIR)\mro.obj \
e4451f11
JH
795$(DLLDIR)\hv.obj \
796$(DLLDIR)\locale.obj \
517bb5c6 797$(DLLDIR)\keywords.obj \
7ee2227d 798$(DLLDIR)\mathoms.obj \
e4451f11
JH
799$(DLLDIR)\mg.obj \
800$(DLLDIR)\numeric.obj \
801$(DLLDIR)\op.obj \
b475b3e6 802$(DLLDIR)\pad.obj \
e4451f11
JH
803$(DLLDIR)\perl.obj \
804$(DLLDIR)\perlapi.obj \
805$(DLLDIR)\perlio.obj \
806$(DLLDIR)\perly.obj \
807$(DLLDIR)\pp.obj \
808$(DLLDIR)\pp_ctl.obj \
809$(DLLDIR)\pp_hot.obj \
810$(DLLDIR)\pp_pack.obj \
84d4ea48 811$(DLLDIR)\pp_sort.obj \
e4451f11 812$(DLLDIR)\pp_sys.obj \
10bc17b6 813$(DLLDIR)\reentr.obj \
e4451f11
JH
814$(DLLDIR)\regcomp.obj \
815$(DLLDIR)\regexec.obj \
816$(DLLDIR)\run.obj \
817$(DLLDIR)\scope.obj \
818$(DLLDIR)\sv.obj \
819$(DLLDIR)\taint.obj \
820$(DLLDIR)\toke.obj \
821$(DLLDIR)\universal.obj \
822$(DLLDIR)\utf8.obj \
823$(DLLDIR)\util.obj \
824$(DLLDIR)\win32thread.obj \
825$(DLLDIR)\wince.obj \
42165d27 826$(DLLDIR)\win32io.obj \
e4451f11 827$(DLLDIR)\wincesck.obj \
e4451f11
JH
828$(DLLDIR)\perllib.obj \
829$(DLLDIR)\DynaLoader.obj
2e64bfdb
JH
830!IF "$(PERL_MALLOC)" == "define"
831XDLLOBJS = $(XDLLOBJS) $(DLLDIR)\malloc.obj
832!ENDIF
81003058
VK
833!IF "$(CRYPT_SRC)" != ""
834XDLLOBJS = $(XDLLOBJS) $(DLLDIR)\fcrypt.obj
835!ENDIF
e4451f11
JH
836
837{$(SRCDIR)}.c{$(DLLDIR)}.obj:
216db7ee
VK
838 $(CC) -c $(CFLAGS_O) -DPERL_EXTERNAL_GLOB -Fo$(DLLDIR)\ $<
839
840# compiler explains that it will optimize toke.c if we'll give it an
841# option -QMOb<num> with num>=4178
842$(DLLDIR)\toke.obj:
843 $(CC) -c $(CFLAGS_O) -QMOb9000 -DPERL_EXTERNAL_GLOB -Fo$(DLLDIR)\ ..\toke.c
e4451f11 844
247d8755 845{$(SRCDIR)/win32}.c{$(DLLDIR)}.obj:
216db7ee
VK
846 $(CC) -c $(CFLAGS_O) -DPERL_EXTERNAL_GLOB -Fo$(DLLDIR)\ $<
847
848# -DPERL_IMPLICIT_SYS needs C++ for perllib.c
849# This is the only file that depends on perlhost.h, vmem.h, and vdir.h
850!IF "$(USE_IMP_SYS)" == "define"
8f33b42a 851$(DLLDIR)\perllib$(o) : perllib.c .\perlhost.h .\vdir.h .\vmem.h
216db7ee
VK
852 $(CC) -c -I. $(CFLAGS_O) $(CXX_FLAG) $(OBJOUT_FLAG)$@ perllib.c
853 rem (frustrated) mv perllib.obj $(DLLDIR)
854!ENDIF
e4451f11 855
d500e60d 856perldll.def : $(HPERL) $(CONFIGPM) ..\embed.fnc ..\makedef.pl create_perllibst_h.pl
517bb5c6
VK
857 $(HPERL) -I..\lib -MCross create_perllibst_h.pl
858 $(HPERL) -I..\lib -MCross -w ..\makedef.pl PLATFORM=wince $(OPTIMIZE) $(DEFINES) $(BUILDOPT) \
080c3729 859 CCTYPE=$(CCTYPE) -DPERL_DLL=$(PERLDLL) TARG_DIR=..\ > perldll.def
18f68570 860
e4451f11
JH
861$(PERLDLL) : $(DLLDIR) perldll.def $(XDLLOBJS) $(PERLDLL_RES)
862 $(LINK32) -dll -def:perldll.def -out:$@ \
863 $(SUBSYS) $(LDLIBPATH) \
864 $(LINK_FLAGS) $(LIBFILES) \
865 $(XDLLOBJS) $(PERLDLL_RES)
866
867$(DLLDIR) :
868 if not exist "$(DLLDIR)" mkdir "$(DLLDIR)"
869
870$(DLLDIR)\DynaLoader.obj: $(EXTDIR)\DynaLoader\DynaLoader.c
216db7ee 871 $(CC) -c $(CFLAGS_O) -DPERL_EXTERNAL_GLOB -Fo$(DLLDIR)\ \
e4451f11
JH
872 $(EXTDIR)\DynaLoader\DynaLoader.c
873
874XPERLEXEOBJS = \
247d8755 875$(MACHINE)\perlmaince.obj
e4451f11
JH
876
877$(PERLEXE) : $(PERLDLL) $(CONFIGPM) $(XPERLEXEOBJS) $(PERLEXE_RES) $(STARTOBJS)
e2a02c1e 878 $(XCOPY) $(MACHINE)\*.lib $(XCOREDIR)
2e64bfdb 879 $(LINK32) $(SUBSYS) $(LDLIBPATH) \
e4451f11
JH
880 -entry:wWinMainCRTStartup \
881 -out:$(MACHINE)\perl.exe \
882 -stack:0x100000 $(LINK_FLAGS) $(STARTOBJS) $(XPERLEXEOBJS) \
883 $(PERLIMPLIB) $(PERLEXE_RES) $(LIBFILES)
884
247d8755
VK
885$(MACHINE)\perlmaince.obj : perlmaince.c
886 $(CC) $(CFLAGS_O) -UPERLDLL -Fo$(MACHINE)\ -c perlmaince.c
e4451f11
JH
887
888iodll: $(IO_DLL)
889socketdll: $(SOCKET_DLL)
890dumperdll: $(DUMPER_DLL)
891
892dlls: socketdll iodll dumperdll
893 -xmkdir -p $(MACHINE)/lib/auto/IO
894 cp ../lib/auto/IO/IO.bs $(MACHINE)/lib/auto/IO
895 cp ../lib/auto/IO/IO.dll $(MACHINE)/lib/auto/IO
896 -xmkdir $(MACHINE)/lib/auto/Socket
897 cp ../lib/auto/Socket/Socket.bs $(MACHINE)/lib/auto/Socket
898 cp ../lib/auto/Socket/Socket.dll $(MACHINE)/lib/auto/Socket
899 -xmkdir -p $(MACHINE)/lib/auto/Data/Dumper
900 cp ../lib/auto/Data/Dumper/Dumper.bs $(MACHINE)/lib/auto/Data/Dumper
901 cp ../lib/auto/Data/Dumper/Dumper.dll $(MACHINE)/lib/auto/Data/Dumper
902
903makedist: all dlls
904 $(COPY) $(CELIBPATH)\celib.dll $(MACHINE)
905 cp perl.txt $(MACHINE)
906 cp registry.bat $(MACHINE)
907 cp ../lib/Config.pm $(MACHINE)/lib
908 cd $(MACHINE)
909 rm -f perl-$(MACHINE).tar.gz
910 sh -c "tar cf perl-$(MACHINE).tar *.exe *.dll *.txt *.bat lib"
911 gzip -9 perl-$(MACHINE).tar
912 mv perl-$(MACHINE).tar.gz h:/freenet/new
913 cd ..
914
42165d27
VK
915install: all
916 -cemkdir "$(INSTALL_ROOT)"
917 -cemkdir "$(INSTALL_ROOT)\bin"
918 -cemkdir "$(INSTALL_ROOT)\lib"
919 $(CECOPY) "pc:$(MACHINE)/perl.exe" "ce:$(INSTALL_ROOT)/bin"
18f68570 920 $(CECOPY) "pc:$(MACHINE)/perl$(PV).dll" "ce:$(INSTALL_ROOT)/bin"
e2a02c1e 921 $(CECOPY) "pc:../xlib/$(CROSS_NAME)/Config.pm" "ce:$(INSTALL_ROOT)/lib"
42d1cefd
RGS
922
923$(UNIDATAFILES) : $(HPERL) $(CONFIGPM) ..\lib\unicore\mktables
924 cd ..\lib\unicore && \
517bb5c6 925 $(HPERL) -I.. -I..\..\lib $(ICWD1) -MCross=$(CROSS_NAME) mktables -P ..\..\pod -maketest -makelist -p -check $@ $(FIRSTUNIFILE)
e4451f11 926
2e64bfdb 927dist: all
284edc75 928 $(HPERL) -I..\lib -MCross=$(CROSS_NAME) ce-helpers\makedist.pl --distdir=dist-$(CROSS_NAME) --cross-name=$(CROSS_NAME)
c96f74ce
JH
929
930zipdist: all
284edc75
VK
931 $(HPERL) -I..\lib -MCross=$(CROSS_NAME) ce-helpers\makedist.pl --distdir=dist-$(CROSS_NAME) --cross-name=$(CROSS_NAME)
932 $(HPERL) -I..\lib -MCross=$(CROSS_NAME) ce-helpers\makedist.pl --distdir=dist-$(CROSS_NAME) --cross-name=$(CROSS_NAME) --zip
c96f74ce
JH
933
934zip:
284edc75 935 $(HPERL) -I..\lib -MCross=$(CROSS_NAME) ce-helpers\makedist.pl --distdir=dist-$(CROSS_NAME) --cross-name=$(CROSS_NAME) --zip
2e64bfdb 936
18f68570 937hostminiperl: ..\miniperl.exe
e4451f11 938
18f68570 939..\miniperl.exe:
18f68570 940 set PATH=$(CCHOME)\bin;$(PATH)
47bcb90d 941 $(MAKE) -f Makefile "CCHOME=$(MSVCDIR)" "CCINCDIR=$(CCHOME)\include" "CCLIBDIR=$(CCHOME)\lib" "INCLUDE=$(CCHOME)\include" "LIB=$(CCHOME)\lib" "LINK_FLAGS=" .\config.h ..\miniperl.exe
476a6acb 942
47bcb90d
VK
943host-install:
944 perl -MConfig -MExtUtils::Install -we "install({'../lib/CORE', qq#$$Config{installprefixexp}/xlib/$(CROSS_NAME)/CORE#},1)"
945 perl -MConfig -MExtUtils::Install -we "install({'../xlib/$(CROSS_NAME)', qq#$$Config{installprefixexp}/xlib/$(CROSS_NAME)#},1)"
946 perl -MConfig -MFile::Copy -we "copy qq#./$(MACHINE)/perl$(PV).lib#, qq#$$Config{installprefixexp}/xlib/$(CROSS_NAME)/CORE#"
947 perl -MConfig -MFile::Copy -we "copy qq#../lib/Cross.pm#, qq#$$Config{installprefixexp}/lib#"
74a9a7e5
VK
948 perl -MConfig -we "system qq#perl -pi.bak -we \"s{((arch^|priv)libexp)='.*'}{\$$1='# . \
949 quotemeta($$Config{installprefixexp}) . \
950 qq#/xlib/$(CROSS_NAME)'}\" $$Config{installprefixexp}/xlib/$(CROSS_NAME)/Config.pm#"