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