This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
ext/XS-APItest/t/handy.t: White-space only
[perl5.git] / win32 / Makefile.ce
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
7 SRCDIR     = ..
8 PV         = 517
9
10 # INSTALL_ROOT specifies a path where this perl will be installed on CE device
11 INSTALL_ROOT=/netzwerk/sprache/perl
12 INST_TOP=$(INSTALL_ROOT)
13 INST_VER=
14
15 # PERLCEDIR shoud be set to current directory
16 PERLCEDIR  = H:\src\wince\perl\win32
17
18 # WCEROOT is a directory where Windows CE Tools was installed
19 WCEROOT    = 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
24 HPERL = $(MAKEDIR)\..\miniperl.exe
25
26 CEPATH     = D:\Programme\Microsoft eMbedded Tools\EVC\WCE211\BIN
27 CELIBDLLDIR  = h:\src\wince\celib-palm-3.0
28 CECONSOLEDIR = h:\src\wince\w32console
29
30 # specify following options to build perl on local machine, by MSVC
31 MSVCDIR         = D:\MSVStudio\VC98
32 CCHOME          = $(MSVCDIR)
33 CCINCDIR        = $(CCHOME)\include
34 CCLIBDIR        = $(CCHOME)\lib
35
36 # Only for WIN2000
37 #YES        = /y
38 COPY       = copy $(YES)
39 XCOPY      = xcopy $(YES) /f /r /i /d
40 RCOPY      = xcopy $(YES) /f /r /i /e /d
41
42 # cecopy program. Make shure it is in your path, as well as cemkdir, cedel
43 CECOPY     = cecopy
44
45 #
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
50 # encodings and may see lower IO performance. You have been warned.
51 USE_PERLIO      = define
52
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 #
59 PERL_MALLOC     = define
60
61
62 NOOP       = @echo
63 # keep this untouched!
64 NULL       =
65
66
67 #CFG=DEBUG
68 CFG=RELEASE
69
70 !if "$(MACHINE)" == ""
71 MACHINE=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
86 # set this to your email address
87 #
88 #EMAIL          =
89
90 ##################### CHANGE THESE ONLY IF YOU MUST #####################
91
92 ######################################################################
93 # machines
94
95 !if "$(MACHINE)" == "wince-sh3-hpc-wce211"
96 CC         = shcl.exe
97 ARCH       = SH3
98 CPU        = SH3
99 TARGETCPU  = SH3
100 CEVersion  = 211
101 OSVERSION  = WCE211
102 PLATFORM   = MS HPC Pro
103 MCFLAGS    = -MDd -DSH3 -D_SH3_ -DSHx -DPROCESSOR_SH3 -DPALM_SIZE \
104              -I $(CELIBDLLDIR)\inc
105 SUBSYS     = -subsystem:windowsce,2.11
106 CELIBPATH  = $(CELIBDLLDIR)\$(MACHINE)-release
107 LDLIBPATH  = -libpath:$(CELIBPATH)
108 STARTOBJS  = $(CECONSOLEDIR)/$(MACHINE)/wmain.obj \
109              $(CECONSOLEDIR)/$(MACHINE)/w32console.obj
110 !endif
111
112 !if "$(MACHINE)" == "wince-mips-hpc-wce211"
113 CC         = clmips.exe
114 ARCH       = MIPS
115 CPU        = MIPS
116 TARGETCPU  = MIPS
117 CEVersion  = 211
118 OSVERSION  = WCE211
119 PLATFORM   = MS HPC Pro
120 MCFLAGS    = -D _MT -D _DLL \
121              -D MIPS -D mips -D _MIPS_ -D _mips_ -DPROCESSOR_MIPS \
122              -D PALM_SIZE \
123              -I $(CELIBDLLDIR)\inc
124 SUBSYS     = -subsystem:windowsce,2.11
125 CELIBPATH  = $(CELIBDLLDIR)\$(MACHINE)-release
126 LDLIBPATH  = -libpath:$(CELIBPATH)
127 STARTOBJS  = $(CECONSOLEDIR)/$(MACHINE)/wmain.obj \
128              $(CECONSOLEDIR)/$(MACHINE)/w32console.obj
129 !endif
130
131 !if "$(MACHINE)" == "wince-mips-hpc-wce200"
132 CC         = clmips.exe
133 ARCH       = MIPS
134 CPU        = MIPS
135 TARGETCPU  = MIPS
136 CEVersion  = 200
137 OSVERSION  = WCE200
138 PLATFORM   = MS HPC
139 # MUST USE -MD to get the right FPE stuff...
140 MCFLAGS    = -D _MT -D _DLL -MD \
141              -D MIPS -D mips -D _MIPS_ -D _mips_ -DPROCESSOR_MIPS \
142              -D PALM_SIZE \
143              -I $(CELIBDLLDIR)\inc
144 SUBSYS     = -subsystem:windowsce,2.00
145 CELIBPATH  = $(CELIBDLLDIR)\$(MACHINE)-release
146 LDLIBPATH  = -libpath:$(CELIBPATH)
147 STARTOBJS  = $(CECONSOLEDIR)/$(MACHINE)/wmain.obj \
148              $(CECONSOLEDIR)/$(MACHINE)/w32console.obj
149 !endif
150
151 !if "$(MACHINE)" == "wince-sh3-hpc-wce200"
152 CC         = shcl.exe
153 ARCH       = SH3
154 CPU        = SH3
155 TARGETCPU  = SH3
156 CEVersion  = 200
157 OSVERSION  = WCE200
158 PLATFORM   = MS HPC
159 # MUST USE -MD to get the right FPE stuff...
160 MCFLAGS    = -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
164 SUBSYS     = -subsystem:windowsce,2.00
165 CELIBPATH  = $(CELIBDLLDIR)\$(MACHINE)-release
166 LDLIBPATH  = -libpath:$(CELIBPATH)
167 STARTOBJS  = $(CECONSOLEDIR)/$(MACHINE)/wmain.obj \
168              $(CECONSOLEDIR)/$(MACHINE)/w32console.obj
169 !endif
170
171 !if "$(MACHINE)" == "wince-arm-hpc-wce211"
172 CC         = clarm.exe
173 ARCH       = ARM
174 CPU        = ARM
175 TARGETCPU  = ARM
176 CEVersion  = 211
177 OSVERSION  = WCE211
178 PLATFORM   = MS HPC Pro
179 MCFLAGS    = -D _MT -D _DLL -D ARM -D arm -D _arm_ -D _ARM_ \
180              -DPROCESSOR_ARM -DPALM_SIZE \
181              -I $(CELIBDLLDIR)\inc
182 SUBSYS     = -subsystem:windowsce,2.11
183 CELIBPATH  = $(CELIBDLLDIR)\$(MACHINE)-release
184 LDLIBPATH  = -libpath:$(CELIBPATH)
185 STARTOBJS  = $(CECONSOLEDIR)/$(MACHINE)/wmain.obj \
186              $(CECONSOLEDIR)/$(MACHINE)/w32console.obj
187 !endif
188
189 !if "$(MACHINE)" == "wince-arm-hpc-wce300"
190 CC         = clarm.exe
191 ARCH       = ARM
192 CPU        = ARM
193 TARGETCPU  = ARM
194 CEVersion  = 300
195 OSVERSION  = WCE300
196 #PLATFORM   = HPC2000
197 MCFLAGS    = -D _MT -D _DLL -D ARM -D arm -D _arm_ -D _ARM_ \
198              -DPROCESSOR_ARM -DPALM_SIZE \
199              -I $(CELIBDLLDIR)\inc
200 SUBSYS     = -subsystem:windowsce,3.00
201 CELIBPATH  = $(CELIBDLLDIR)\$(MACHINE)-release
202 LDLIBPATH  = -libpath:$(CELIBPATH)
203 STARTOBJS  = $(CECONSOLEDIR)/$(MACHINE)/wmain.obj \
204              $(CECONSOLEDIR)/$(MACHINE)/w32console.obj
205 !endif
206
207 !if "$(MACHINE)" == "wince-mips-palm-wce211"
208 CC         = clmips.exe
209 ARCH       = MIPS
210 CPU        = MIPS
211 TARGETCPU  = MIPS
212 CEVersion  = 211
213 OSVERSION  = WCE211
214 PLATFORM   = MS Palm Size PC
215 MCFLAGS    = -DMIPS -D_MIPS_ -DPROCESSOR_MIPS -D PALM_SIZE -D _DLL -D _MT \
216              -I $(CELIBDLLDIR)\inc
217 SUBSYS     = -subsystem:windowsce,2.11
218 CELIBPATH  = $(CELIBDLLDIR)\$(MACHINE)-release
219 LDLIBPATH  = -libpath:$(CELIBPATH)
220 STARTOBJS  = $(CECONSOLEDIR)/$(MACHINE)/wmain.obj \
221              $(CECONSOLEDIR)/$(MACHINE)/w32console.obj
222 !endif
223
224 !if "$(MACHINE)" == "wince-sh3-palm-wce211"
225 CC         = shcl.exe
226 ARCH       = SH3
227 CPU        = SH3
228 TARGETCPU  = SH3
229 CEVersion  = 211
230 OSVERSION  = WCE211
231 PLATFORM   = MS Palm Size PC
232 MCFLAGS    = -D _MT -D _DLL -DSH3 -D_SH3_ -DSHx -DPROCESSOR_SH3 -DPALM_SIZE \
233              -I $(CELIBDLLDIR)\inc
234 SUBSYS     = -subsystem:windowsce,2.11
235 CELIBPATH  = $(CELIBDLLDIR)\$(MACHINE)-release
236 LDLIBPATH  = -libpath:$(CELIBPATH)
237 STARTOBJS  = $(CECONSOLEDIR)/$(MACHINE)/wmain.obj \
238              $(CECONSOLEDIR)/$(MACHINE)/w32console.obj
239 !endif
240
241 !if "$(MACHINE)" == "wince-x86em-palm-wce211"
242 CC         = cl.exe
243 ARCH       = X86EM
244 CPU        = X86
245 TARGETCPU  = X86
246 CEVersion  = 211
247 OSVERSION  = WCE211
248 PLATFORM   = MS Palm Size PC
249 MCFLAGS    = -MDd -DX86 -D_X86_ -DPROCESSOR_X86 \
250              -D_WIN32_WCE_EMULATION -DPALM_SIZE \
251              -I $(CELIBDLLDIR)\inc
252 MACH       = -machine:x86
253 SUBSYS     = -subsystem:windows
254 CELIBPATH  = $(CELIBDLLDIR)\$(MACHINE)-release
255 LDLIBPATH  = -libpath:$(CELIBPATH)
256 STARTOBJS  = $(CECONSOLEDIR)/$(MACHINE)/wmain.obj \
257              $(CECONSOLEDIR)/$(MACHINE)/w32console.obj
258 !endif
259
260 !if "$(MACHINE)" == "wince-x86em-pocket-wce300"
261 CC         = cl.exe
262 ARCH       = X86EM
263 CPU        = X86
264 TARGETCPU  = X86
265 CEVersion  = 300
266 OSVERSION  = WCE300
267 PLATFORM   = MS Pocket PC
268 MCFLAGS    = -DX86 -D_X86_ -DPROCESSOR_X86 -D _MT -D _DLL \
269              -D_WIN32_WCE_EMULATION -DPALM_SIZE -DPOCKET_SIZE \
270              -I $(CELIBDLLDIR)\inc
271 MACH       = -machine:x86
272 SUBSYS     = -subsystem:windows
273 CELIBPATH  = $(CELIBDLLDIR)\$(MACHINE)-release
274 LDLIBPATH  = -libpath:$(CELIBPATH)
275 STARTOBJS  = $(CECONSOLEDIR)/$(MACHINE)/wmain.obj \
276              $(CECONSOLEDIR)/$(MACHINE)/w32console.obj
277 !endif
278
279 !if "$(MACHINE)" == "wince-mips-pocket-wce300"
280 CC         = clmips.exe
281 ARCH       = MIPS
282 CPU        = MIPS
283 TARGETCPU  = MIPS
284 CEVersion  = 300
285 OSVERSION  = WCE300
286 PLATFORM   = MS Pocket PC
287 MCFLAGS    = -D MIPS -D mips -D _MIPS_ -D _mips_ -DPROCESSOR_MIPS \
288              -D _MT -D _DLL -DPALM_SIZE -DPOCKET_SIZE \
289              -I $(CELIBDLLDIR)\inc
290 MACH       = -machine:mips
291 SUBSYS     = -subsystem:windowsce,3.00
292 CELIBPATH  = $(CELIBDLLDIR)\$(MACHINE)-release
293 #STDLIBPATH = $(WCEROOT)\$(OSVERSION)\$(PLATFORM)\lib\$(CPU)
294 LDLIBPATH  = -libpath:$(CELIBPATH)
295 #"-libpath:$(STDLIBPATH)"
296 STARTOBJS  = $(CECONSOLEDIR)/$(MACHINE)/wmain.obj \
297              $(CECONSOLEDIR)/$(MACHINE)/w32console.obj
298 !endif
299
300 !if "$(MACHINE)" == "wince-sh3-pocket-wce300"
301 CC         = shcl.exe
302 ARCH       = SH3
303 CPU        = SH3
304 TARGETCPU  = SH3
305 CEVersion  = 300
306 OSVERSION  = WCE300
307 PLATFORM   = MS Pocket PC
308 MCFLAGS    = -D _MT -D _DLL -DSH3 -D_SH3_ -DSHx -DPROCESSOR_SH3 \
309              -DPALM_SIZE -DPOCKET_SIZE \
310              -I $(CELIBDLLDIR)\inc
311 MACH       = -machine:sh3
312 SUBSYS     = -subsystem:windowsce,3.00
313 CELIBPATH  = $(CELIBDLLDIR)\$(MACHINE)-release
314 LDLIBPATH  = -libpath:$(CELIBPATH)
315 STARTOBJS  = $(CECONSOLEDIR)/$(MACHINE)/wmain.obj \
316              $(CECONSOLEDIR)/$(MACHINE)/w32console.obj
317 !endif
318
319 !if "$(MACHINE)" == "wince-arm-pocket-wce300"
320 CC         = clarm.exe
321 ARCH       = ARM
322 CPU        = ARM
323 TARGETCPU  = ARM
324 CEVersion  = 300
325 OSVERSION  = WCE300
326 PLATFORM   = MS Pocket PC
327 MCFLAGS    = -D ARM -D arm -D _ARM_ -D _arm_ -DPROCESSOR_ARM \
328              -D _MT -D _DLL -DPALM_SIZE -DPOCKET_SIZE \
329              -I $(CELIBDLLDIR)\inc
330 MACH       = -machine:arm
331 SUBSYS     = -subsystem:windowsce,3.00
332 CELIBPATH  = $(CELIBDLLDIR)\$(MACHINE)-release
333 LDLIBPATH  = -libpath:$(CELIBPATH)
334 STARTOBJS  = $(CECONSOLEDIR)/$(MACHINE)/wmain.obj \
335              $(CECONSOLEDIR)/$(MACHINE)/w32console.obj
336 !endif
337
338 ######################################################################
339 # common section
340
341 CEDEFS    = -D_WINDOWS -D_WIN32_WCE=$(CEVersion) -DUNDER_CE=$(CEVersion) \
342             $(MCFLAGS) -D PERL
343
344 CECFLAGS  = $(CEDEFS)
345
346 !if "$(CFG)" == "DEBUG"
347 CECFLAGS  = $(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...
353 !if "$(CPU)" == "SH3"
354 !else
355 CECFLAGS  = $(CECFLAGS) -O2 -Ot
356 !endif
357
358 !endif
359
360 RCDEFS    = /l 0x407 /r /d "UNICODE" /d UNDER_CE=$(CEVersion) \
361             /d _WIN32_WCE=$(CEVersion)
362
363 PATH=$(CEPATH);$(PATH)
364
365 INCLUDE=$(WCEROOT)\$(OSVERSION)\$(PLATFORM)\include
366 LIB=$(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
382 BUILDOPT        = $(BUILDOPT) $(CECFLAGS) -DUSE_CROSS_COMPILE
383
384
385 !IF "$(CRYPT_SRC)$(CRYPT_LIB)" == ""
386 D_CRYPT         = undef
387 !ELSE
388 D_CRYPT         = define
389 CRYPT_FLAG      = -DHAVE_DES_FCRYPT
390 !ENDIF
391
392 !IF "$(PERL_MALLOC)" == ""
393 PERL_MALLOC     = undef
394 !ENDIF
395
396 !IF "$(USE_MULTI)" == ""
397 USE_MULTI       = undef
398 !ENDIF
399
400 !IF "$(USE_ITHREADS)" == ""
401 USE_ITHREADS    = undef
402 !ENDIF
403
404 !IF "$(USE_IMP_SYS)" == ""
405 USE_IMP_SYS     = undef
406 !ENDIF
407
408 !IF "$(USE_PERLIO)" == ""
409 USE_PERLIO      = undef
410 !ENDIF
411
412 !IF "$(USE_PERLCRT)" == ""
413 USE_PERLCRT     = undef
414 !ENDIF
415
416 !IF "$(USE_IMP_SYS)$(USE_MULTI)" == "defineundef"
417 USE_MULTI       = define
418 !ENDIF
419
420 !IF "$(USE_ITHREADS)$(USE_MULTI)" == "defineundef"
421 USE_MULTI       = define
422 !ENDIF
423
424 !IF "$(USE_MULTI)" != "undef"
425 BUILDOPT        = $(BUILDOPT) -DPERL_IMPLICIT_CONTEXT
426 !ENDIF
427
428 !IF "$(USE_IMP_SYS)" != "undef"
429 BUILDOPT        = $(BUILDOPT) -DPERL_IMPLICIT_SYS
430 !ENDIF
431
432 !IF "$(USE_PERLIO)" == "define"
433 BUILDOPT        = $(BUILDOPT) -DUSE_PERLIO
434 !ENDIF
435
436 !IF "$(CROSS_NAME)" == ""
437 CROSS_NAME      = $(MACHINE)
438 !ENDIF
439
440 # new option - automatically defined in perl.h...
441 #BUILDOPT        = $(BUILDOPT) -DUSE_ENVIRON_ARRAY
442
443 PROCESSOR_ARCHITECTURE = $(TARGETCPU)
444 ARCHNAME        = $(PLATFORM)-$(OSVERSION)-$(PROCESSOR_ARCHITECTURE)
445 ARCHDIR         = ..\lib\$(ARCHNAME)
446 COREDIR         = ..\lib\CORE
447 XCOREDIR        = ..\xlib\$(CROSS_NAME)\CORE
448 AUTODIR         = ..\lib\auto
449 LIBDIR          = ..\lib
450 EXTDIR          = ..\ext
451 PODDIR          = ..\pod
452 EXTUTILSDIR     = $(LIBDIR)\ExtUtils
453
454 LINK32          = link
455 LIB32           = $(LINK32) -lib
456 RSC             = rc
457
458 INCLUDES        = -I.\include -I. -I..
459 DEFINES         = -DWIN32 -D_CONSOLE -DNO_STRICT $(CRYPT_FLAG) $(CECFLAGS)
460 LOCDEFS         = -DPERLDLL -DPERL_CORE
461 CXX_FLAG        = -TP
462
463 PERLEXE_RES     = perl.res
464 PERLDLL_RES     =
465
466 !if "$(CFG)" == "RELEASE"
467 CELIB           = celib.lib
468 !endif
469
470 !if "$(CFG)" == "DEBUG"
471 CELIB           = celib.lib
472 !endif
473
474 CELIBS          = -nodefaultlib \
475                   winsock.lib $(CELIB) coredll.lib
476
477 !if $(CEVersion) > 200
478 CELIBS          = $(CELIBS) corelibc.lib
479 !else
480 CELIBS          = $(CELIBS) msvcrt.lib
481 !endif
482
483 LIBBASEFILES    = $(CRYPT_LIB) $(CELIBS)
484
485 LIBFILES        = $(LIBBASEFILES) $(LIBC)
486
487 CFLAGS          = -nologo -Gf -W3 $(INCLUDES) $(DEFINES) $(LOCDEFS) \
488                 $(PCHFLAGS) $(OPTIMIZE)
489
490 LINK_FLAGS      = -nologo -machine:$(PROCESSOR_ARCHITECTURE)
491
492 !if "$(CFG)" == "DEBUG"
493 LINK_FLAGS      = $(LINK_FLAGS) -debug:full -pdb:none
494 !else
495 LINK_FLAGS      = $(LINK_FLAGS) -release
496 !endif
497
498 OBJOUT_FLAG     = -Fo
499 EXEOUT_FLAG     = -Fe
500
501 CFLAGS_O        = $(CFLAGS) $(BUILDOPT)
502
503 o = .obj
504
505 #
506 # Rules
507 #
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 \
520             -out:$@ $(LINK_FLAGS) $(LIBFILES) $< $(LIBPERL)
521
522 .rc.res:
523         $(RSC) -i.. $<
524
525 # This must be relative to ../lib/CORE, else the ext dll build fails...
526 PERLIMPLIB_EXP  = ..\..\..\xlib\$(CROSS_NAME)\CORE\perl$(PV).lib
527 PERLIMPLIB      = $(PERLCEDIR)\$(MACHINE)\perl$(PV).lib
528 PERLDLL         = $(MACHINE)\perl$(PV).dll
529
530 DLLDIR          = $(MACHINE)\dll
531 PERLEXE         = $(MACHINE)\perl.exe
532
533 CONFIGPM        = ..\xlib\$(CROSS_NAME)\Config.pm
534 MINIMOD         = ..\lib\ExtUtils\Miniperl.pm
535
536 # Unicode data files generated by mktables
537 FIRSTUNIFILE     = ..\lib\unicore\Decomposition.pl
538 UNIDATAFILES     = ..\lib\unicore\Decomposition.pl \
539                    ..\lib\unicore\CombiningClass.pl ..\lib\unicore\Name.pl \
540                    ..\lib\unicore\Heavy.pl ..\lib\unicore\mktables.lst \
541                    ..\lib\unicore\UCD.pl ..\lib\unicore\Name.pm \
542                    ..\lib\unicore\TestProp.pl
543
544 PERLEXE_MANIFEST= .\perlexe.manifest
545 PERLEXE_ICO     = .\perlexe.ico
546 PERLEXE_RES     = .\perlexe.res
547 PERLDLL_RES     =
548
549 # Directories of Unicode data files generated by mktables
550 UNIDATADIR1     = ..\lib\unicore\To
551 UNIDATADIR2     = ..\lib\unicore\lib
552
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
557 PERLDEP         = perldll.def
558
559 MAKE            = nmake -nologo
560
561 CFGSH_TMPL      = config.ce
562 CFGH_TMPL       = config_H.ce
563
564 MICROCORE_SRC   =               \
565                 ..\av.c         \
566                 ..\deb.c        \
567                 ..\doio.c       \
568                 ..\doop.c       \
569                 ..\dump.c       \
570                 ..\globals.c    \
571                 ..\gv.c         \
572                 ..\mro.c        \
573                 ..\hv.c         \
574                 ..\keywords.c   \
575                 ..\mg.c         \
576                 ..\op.c         \
577                 ..\pad.c        \
578                 ..\perl.c       \
579                 ..\perlapi.c    \
580                 ..\perly.c      \
581                 ..\pp.c         \
582                 ..\pp_ctl.c     \
583                 ..\pp_hot.c     \
584                 ..\pp_pack.c    \
585                 ..\pp_sort.c    \
586                 ..\pp_sys.c     \
587                 ..\reentr.c     \
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       \
597                 ..\util.c
598
599 EXTRACORE_SRC   = $(EXTRACORE_SRC) perllib.c
600
601 !IF "$(PERL_MALLOC)" == "define"
602 EXTRACORE_SRC   = $(EXTRACORE_SRC) ..\malloc.c
603 !ENDIF
604
605 EXTRACORE_SRC   = $(EXTRACORE_SRC) ..\perlio.c .\win32io.c
606
607 WIN32_SRC       =               \
608                 .\wince.c       \
609                 .\wincesck.c    \
610                 .\win32thread.c
611
612 !IF "$(CRYPT_SRC)" != ""
613 WIN32_SRC       = $(WIN32_SRC) .\$(CRYPT_SRC)
614 !ENDIF
615
616 DLL_SRC         = $(DYNALOADER).c
617
618 CORE_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   \
652                 .\include\dirent.h      \
653                 .\include\netdb.h       \
654                 .\include\sys\socket.h  \
655                 .\win32.h
656
657 DYNAMIC_EXT     = Socket IO Fcntl Opcode SDBM_File POSIX attributes B re \
658                 Data/Dumper Devel/Peek ByteLoader Devel/DProf File/Glob \
659                 Sys/Hostname
660
661 STATIC_EXT      = DynaLoader
662
663 DYNALOADER      = $(EXTDIR)\DynaLoader\DynaLoader
664
665 ERRNO_PM        = $(LIBDIR)\Errno.pm
666
667
668 EXTENSION_PM    =               \
669                 $(ERRNO_PM)
670
671 CFG_VARS = \
672  "INST_TOP=$(INST_TOP)" \
673  "INST_VER=$(INST_VER)" \
674  "INST_ARCH=$(INST_ARCH)" \
675  "archname=$(ARCHNAME)" \
676  "CC=$(CC)" \
677  "ccflags=$(OPTIMIZE) $(DEFINES) $(BUILDOPT)" \
678  "cppflags=$(OPTIMIZE) $(DEFINES) $(BUILDOPT)" \
679  "cf_by=vkon" \
680  "cf_email=$(EMAIL)" \
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)" \
691  "useithreads=$(USE_ITHREADS)" \
692  "usemultiplicity=$(USE_MULTI)" \
693  "useperlio=$(USE_PERLIO)" \
694  "LINK_FLAGS=$(LDLIBPATH) $(LINK_FLAGS) $(SUBSYS)" \
695  "optimize=$(OPTIMIZE)"
696
697 ICWD = -I..\dist\Cwd -I..\dist\Cwd\lib
698 ICWD1 = -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)
703 XSUBPP          = $(HPERL) -I..\..\lib $(ICWD1) -MCross=$(CROSS_NAME) ..\$(EXTUTILSDIR)\xsubpp \
704                 -C++ -prototypes
705
706
707 #
708 # Top targets
709 #
710
711 all: hostminiperl $(MINIMOD) $(CONFIGPM) $(UNIDATAFILES) $(PERLEXE) MakePPPort Extensions
712
713 $(DYNALOADER)$(o) : $(DYNALOADER).c xconfig.h $(EXTDIR)\DynaLoader\dlutils.c
714
715 $(CONFIGPM) : $(HPERL) ..\config.sh config_h.PL ..\minimod.pl
716         cd .. && $(HPERL) -Ilib configpm --cross=$(CROSS_NAME) --no-glossary
717         -mkdir $(XCOREDIR)
718         $(XCOPY) ..\*.h $(XCOREDIR)\*.*
719         $(XCOPY) ..\*.inc $(XCOREDIR)\*.*
720         $(XCOPY) *.h $(XCOREDIR)\*.*
721         $(XCOPY) ..\ext\re\re.pm $(LIBDIR)\*.*
722         $(RCOPY) include $(XCOREDIR)\*.*
723
724 .\xconfig.h:
725         -del /f xconfig.h
726         -mkdir $(XCOREDIR)
727         -$(HPERL) -I..\lib $(ICWD) -MCross=$(CROSS_NAME) config_h.PL "INST_VER=$(INST_VER)" "CORE_DIR=$(XCOREDIR)" "CONFIG_H=xconfig.h"
728         $(XCOPY) xconfig.h $(XCOREDIR)\config.h
729
730 ..\config.sh: config.ce config_sh.PL
731         $(HPERL) -I..\lib -I. config_sh.PL $(CFG_VARS) config.ce > ..\config.sh
732
733 $(MINIMOD) : ..\minimod.pl
734         cd .. && $(HPERL) minimod.pl > lib\ExtUtils\Miniperl.pm
735
736 $(DYNALOADER).c: $(EXTDIR)\DynaLoader\dl_win32.xs $(CONFIGPM)
737         if not exist $(AUTODIR) mkdir $(AUTODIR)
738         cd $(EXTDIR)\$(*B)
739         $(HPERL) -I..\..\lib -MCross=$(CROSS_NAME) $(*B)_pm.PL
740         cd ..\..\win32
741         $(XCOPY) $(EXTDIR)\$(*B)\$(*B).pm $(LIBDIR)\$(NULL)
742         cd $(EXTDIR)\$(*B)
743         $(XSUBPP) dl_win32.xs > $(*B).c
744         cd ..\..\win32
745
746 $(EXTDIR)\DynaLoader\dl_win32.xs: dl_win32.xs
747         $(COPY) dl_win32.xs $(EXTDIR)\DynaLoader\dl_win32.xs
748
749 MakePPPort: $(MINIPERL) $(CONFIGPM)
750         $(HPERL) -I..\lib -MCross=$(CROSS_NAME) ..\mkppport
751
752 MakePPPort_clean:
753         -if exist $(HPERL) $(HPERL) -I..\lib ..\mkppport --clean
754
755 #----------------------------------------------------------------------------------
756 NOT_COMPILE_EXT =
757 !if "$(MACHINE)" == "wince-sh3-palm-wce211"
758 NOT_COMPILE_EXT = $(NOT_COMPILE_EXT) !XS/Typemap
759 !endif
760 !if "$(MACHINE)" == "wince-mips-palm-wce211"
761 NOT_COMPILE_EXT = $(NOT_COMPILE_EXT) !XS/Typemap
762 !endif
763
764 Extensions: ..\make_ext.pl $(PERLDEP) $(CONFIGPM)
765         $(HPERL) -I..\lib -I. -MCross=$(CROSS_NAME) ..\make_ext.pl "MAKE=$(MAKE)" --dir=$(EXTDIR) --all \
766         !POSIX $(NOT_COMPILE_EXT)
767
768 Extensions_clean:
769         -if exist $(MINIPERL) $(MINIPERL) -I..\lib ..\make_ext.pl "MAKE=$(MAKE)" --dir=$(EXTDIR) --all --target=clean
770
771 #----------------------------------------------------------------------------------
772
773 $(PERLEXE_RES): perlexe.rc perl.rc $(PERLEXE_MANIFEST) $(PERLEXE_ICO)
774         rc $(RCDEFS) perlexe.rc
775
776 clean:
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
783         -rm -f config.h xconfig.h perl.res
784         -rm -f ../t/test_state
785
786 XDLLOBJS = \
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 \
794 $(DLLDIR)\mro.obj \
795 $(DLLDIR)\hv.obj \
796 $(DLLDIR)\locale.obj \
797 $(DLLDIR)\keywords.obj \
798 $(DLLDIR)\mathoms.obj \
799 $(DLLDIR)\mg.obj \
800 $(DLLDIR)\numeric.obj \
801 $(DLLDIR)\op.obj \
802 $(DLLDIR)\pad.obj \
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 \
811 $(DLLDIR)\pp_sort.obj \
812 $(DLLDIR)\pp_sys.obj \
813 $(DLLDIR)\reentr.obj \
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 \
826 $(DLLDIR)\win32io.obj \
827 $(DLLDIR)\wincesck.obj \
828 $(DLLDIR)\perllib.obj \
829 $(DLLDIR)\DynaLoader.obj
830 !IF "$(PERL_MALLOC)" == "define"
831 XDLLOBJS        = $(XDLLOBJS) $(DLLDIR)\malloc.obj
832 !ENDIF
833 !IF "$(CRYPT_SRC)" != ""
834 XDLLOBJS        = $(XDLLOBJS) $(DLLDIR)\fcrypt.obj
835 !ENDIF
836
837 {$(SRCDIR)}.c{$(DLLDIR)}.obj:
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
844
845 {$(SRCDIR)/win32}.c{$(DLLDIR)}.obj:
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"
851 $(DLLDIR)\perllib$(o)   : perllib.c .\perlhost.h .\vdir.h .\vmem.h
852         $(CC) -c -I. $(CFLAGS_O) $(CXX_FLAG) $(OBJOUT_FLAG)$@ perllib.c
853         rem (frustrated) mv perllib.obj $(DLLDIR)
854 !ENDIF
855
856 perldll.def : $(HPERL) $(CONFIGPM) ..\embed.fnc ..\makedef.pl create_perllibst_h.pl
857         $(HPERL) -I..\lib -MCross create_perllibst_h.pl
858         $(HPERL) -I..\lib -MCross -w ..\makedef.pl PLATFORM=wince $(OPTIMIZE) $(DEFINES) $(BUILDOPT) \
859             CCTYPE=$(CCTYPE) -DPERL_DLL=$(PERLDLL) TARG_DIR=..\ > perldll.def
860
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
871     $(CC) -c $(CFLAGS_O) -DPERL_EXTERNAL_GLOB -Fo$(DLLDIR)\ \
872           $(EXTDIR)\DynaLoader\DynaLoader.c
873
874 XPERLEXEOBJS = \
875 $(MACHINE)\perlmaince.obj
876
877 $(PERLEXE) : $(PERLDLL) $(CONFIGPM) $(XPERLEXEOBJS) $(PERLEXE_RES) $(STARTOBJS)
878         $(XCOPY) $(MACHINE)\*.lib $(XCOREDIR)
879         $(LINK32) $(SUBSYS) $(LDLIBPATH) \
880             -entry:wWinMainCRTStartup \
881             -out:$(MACHINE)\perl.exe \
882             -stack:0x100000 $(LINK_FLAGS) $(STARTOBJS) $(XPERLEXEOBJS) \
883             $(PERLIMPLIB) $(PERLEXE_RES) $(LIBFILES)
884
885 $(MACHINE)\perlmaince.obj : perlmaince.c
886         $(CC) $(CFLAGS_O) -UPERLDLL -Fo$(MACHINE)\ -c perlmaince.c
887
888 iodll:     $(IO_DLL)
889 socketdll: $(SOCKET_DLL)
890 dumperdll: $(DUMPER_DLL)
891
892 dlls: 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
903 makedist: 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
915 install: 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"
920         $(CECOPY) "pc:$(MACHINE)/perl$(PV).dll" "ce:$(INSTALL_ROOT)/bin"
921         $(CECOPY) "pc:../xlib/$(CROSS_NAME)/Config.pm" "ce:$(INSTALL_ROOT)/lib"
922
923 $(UNIDATAFILES) : $(HPERL) $(CONFIGPM) ..\lib\unicore\mktables
924         cd ..\lib\unicore && \
925         $(HPERL) -I.. -I..\..\lib $(ICWD1) -MCross=$(CROSS_NAME) mktables -P ..\..\pod -maketest -makelist -p -check $@ $(FIRSTUNIFILE)
926
927 dist: all
928         $(HPERL) -I..\lib -MCross=$(CROSS_NAME) ce-helpers\makedist.pl --distdir=dist-$(CROSS_NAME) --cross-name=$(CROSS_NAME)
929
930 zipdist: all
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
933
934 zip:
935         $(HPERL) -I..\lib -MCross=$(CROSS_NAME) ce-helpers\makedist.pl --distdir=dist-$(CROSS_NAME) --cross-name=$(CROSS_NAME) --zip
936
937 hostminiperl: ..\miniperl.exe
938
939 ..\miniperl.exe:
940         set PATH=$(CCHOME)\bin;$(PATH)
941         $(MAKE) -f Makefile "CCHOME=$(MSVCDIR)" "CCINCDIR=$(CCHOME)\include" "CCLIBDIR=$(CCHOME)\lib" "INCLUDE=$(CCHOME)\include" "LIB=$(CCHOME)\lib" "LINK_FLAGS=" .\config.h ..\miniperl.exe
942
943 host-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#"
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#"