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