Borland C++ for Win32 fixes; perl@9359 (also perl@9424)
[p5sagit/p5-mst-13.2.git] / win32 / makefile.mk
CommitLineData
a9226780 1#
2# Makefile to build perl on Windows NT using DMAKE.
3# Supported compilers:
4# Visual C++ 2.0 thro 6.0
5# Borland C++ 5.02
6# Mingw32 with gcc-2.95.2 or better **experimental**
7#
8# This is set up to build a perl.exe that runs off a shared library
3789aae2 9# (perl57.dll). Also makes individual DLLs for the XS extensions.
a9226780 10#
11
12##
13## Make sure you read README.win32 *before* you mess with anything here!
14##
15
16##
17## Build configuration. Edit the values below to suit your needs.
18##
19
20#
21# Set these to wherever you want "dmake install" to put your
22# newly built perl.
23#
24INST_DRV *= c:
25INST_TOP *= $(INST_DRV)\perl
26
27#
28# Comment this out if you DON'T want your perl installation to be versioned.
29# This means that the new installation will overwrite any files from the
30# old installation at the same INST_TOP location. Leaving it enabled is
31# the safest route, as perl adds the extra version directory to all the
32# locations it installs files to. If you disable it, an alternative
33# versioned installation can be obtained by setting INST_TOP above to a
34# path that includes an arbitrary version string.
35#
3789aae2 36INST_VER *= \5.7.0
a9226780 37
38#
39# Comment this out if you DON'T want your perl installation to have
40# architecture specific components. This means that architecture-
41# specific files will be installed along with the architecture-neutral
42# files. Leaving it enabled is safer and more flexible, in case you
43# want to build multiple flavors of perl and install them together in
44# the same location. Commenting it out gives you a simpler
45# installation that is easier to understand for beginners.
46#
47INST_ARCH *= \$(ARCHNAME)
48
49#
50# uncomment to enable multiple interpreters. This is need for fork()
51# emulation.
52#
adb71456 53USE_MULTI *= define
a9226780 54
55#
56# Beginnings of interpreter cloning/threads; still very incomplete.
57# This should be enabled to get the fork() emulation. This needs
58# USE_MULTI as well.
59#
adb71456 60USE_ITHREADS *= define
a9226780 61
62#
63# uncomment to enable the implicit "host" layer for all system calls
64# made by perl. This needs USE_MULTI above. This is also needed to
65# get fork().
66#
adb71456 67USE_IMP_SYS *= define
a9226780 68
69#
aa832f42 70# uncomment to enable the experimental PerlIO I/O subsystem.
71USE_PERLIO = define
72
73#
a9226780 74# WARNING! This option is deprecated and will eventually go away (enable
75# USE_ITHREADS instead).
76#
77# uncomment to enable threads-capabilities. This is incompatible with
78# USE_ITHREADS, and is only here for people who may have come to rely
79# on the experimental Thread support that was in 5.005.
80#
81#USE_5005THREADS *= define
82
83#
84# WARNING! This option is deprecated and will eventually go away (enable
85# USE_MULTI instead).
86#
87# uncomment next line if you want to use the PERL_OBJECT build option.
88# DO NOT ENABLE unless you have legacy code that relies on the C++
89# CPerlObj class that was available in 5.005. This cannot be enabled
90# if you ask for USE_5005THREADS above.
91#
92#USE_OBJECT *= define
93
94#
95# uncomment exactly one of the following
24c23ab4 96#
a9226780 97# Visual C++ 2.x
98#CCTYPE *= MSVC20
99# Visual C++ > 2.x and < 6.x
100#CCTYPE *= MSVC
101# Visual C++ >= 6.x
24c02676 102#CCTYPE *= MSVC60
a9226780 103# Borland 5.02 or later
24c02676 104CCTYPE *= BORLAND
a9226780 105# mingw32+gcc-2.95.2 or better
8c8a4ace 106#CCTYPE *= GCC
a9226780 107
108#
24c02676 109# uncomment this if your Borland compiler is older than v5.4.
110BCCVER = 5.2
111#
112# uncomment this if you want to use Borland's VCL as your CRT
113#BCCVCL = define
114
115#
a9226780 116# uncomment this if you are compiling under Windows 95/98 and command.com
117# (not needed if you're running under 4DOS/NT 6.01 or later)
118#IS_WIN95 *= define
119
120#
121# uncomment next line if you want debug version of perl (big,slow)
122# If not enabled, we automatically try to use maximum optimization
123# with all compilers that are known to have a working optimizer.
124#
d9b8e8ae 125CFG *= Debug
a9226780 126
127#
128# uncomment to enable use of PerlCRT.DLL when using the Visual C compiler.
129# It has patches that fix known bugs in older versions of MSVCRT.DLL.
130# This currently requires VC 5.0 with Service Pack 3 or later.
131# Get it from CPAN at http://www.perl.com/CPAN/authors/id/D/DO/DOUGL/
132# and follow the directions in the package to install.
133#
134# Not recommended if you have VC 6.x and you're not running Windows 9x.
135#
136#USE_PERLCRT *= define
137
138#
139# uncomment to enable linking with setargv.obj under the Visual C
140# compiler. Setting this options enables perl to expand wildcards in
141# arguments, but it may be harder to use alternate methods like
142# File::DosGlob that are more powerful. This option is supported only with
143# Visual C.
144#
145#USE_SETARGV *= define
146
147#
148# if you have the source for des_fcrypt(), uncomment this and make sure the
149# file exists (see README.win32). File should be located in the same
150# directory as this file.
151#
152#CRYPT_SRC *= fcrypt.c
153
154#
155# if you didn't set CRYPT_SRC and if you have des_fcrypt() available in a
156# library, uncomment this, and make sure the library exists (see README.win32)
157# Specify the full pathname of the library.
158#
159#CRYPT_LIB *= fcrypt.lib
160
161#
162# set this if you wish to use perl's malloc
163# WARNING: Turning this on/off WILL break binary compatibility with extensions
164# you may have compiled with/without it. Be prepared to recompile all
165# extensions if you change the default. Currently, this cannot be enabled
166# if you ask for USE_IMP_SYS above.
167#
168#PERL_MALLOC *= define
169
170#
171# set the install locations of the compiler include/libraries
172# Running VCVARS32.BAT is *required* when using Visual C.
173# Some versions of Visual C don't define MSVCDIR in the environment,
174# so you may have to set CCHOME explicitly (spaces in the path name should
175# not be quoted)
176#
24c02676 177CCHOME *= F:\borland\bc5
a9226780 178#CCHOME *= $(MSVCDIR)
24c02676 179#CCHOME *= c:\gcc-2.95.2
a9226780 180CCINCDIR *= $(CCHOME)\include
181CCLIBDIR *= $(CCHOME)\lib
182
183#
184# Additional compiler flags can be specified here.
185#
186
187#
188# This should normally be disabled. Adding -DPERL_POLLUTE enables support
189# for old symbols by default, at the expense of extreme pollution. You most
190# probably just want to build modules that won't compile with
191# perl Makefile.PL POLLUTE=1
192# instead of enabling this. Please report such modules to the respective
193# authors.
194#
195#BUILDOPT += -DPERL_POLLUTE
196
197#
198# This should normally be disabled. Enabling it will disable the File::Glob
199# implementation of CORE::glob.
200#
201#BUILDOPT += -DPERL_EXTERNAL_GLOB
202
203#
204# This should normally be disabled. Enabling it causes perl to read scripts
205# in text mode (which is the 5.005 behavior) and will break ByteLoader.
206#BUILDOPT += -DPERL_TEXTMODE_SCRIPTS
207
208#
209# specify semicolon-separated list of extra directories that modules will
210# look for libraries (spaces in path names need not be quoted)
211#
212EXTRALIBDIRS *=
213
214#
215# set this to point to cmd.exe (only needed if you use some
216# alternate shell that doesn't grok cmd.exe style commands)
217#
218#SHELL *= g:\winnt\system32\cmd.exe
219
220#
221# set this to your email address (perl will guess a value from
222# from your loginname and your hostname, which may not be right)
223#
224#EMAIL *=
225
226##
227## Build configuration ends.
228##
229
230##################### CHANGE THESE ONLY IF YOU MUST #####################
231
232.IF "$(CRYPT_SRC)$(CRYPT_LIB)" == ""
233D_CRYPT = undef
234.ELSE
235D_CRYPT = define
236CRYPT_FLAG = -DHAVE_DES_FCRYPT
237.ENDIF
238
239.IF "$(USE_OBJECT)" == "define"
240PERL_MALLOC != undef
241USE_5005THREADS != undef
242USE_MULTI != undef
243USE_IMP_SYS != define
244.ENDIF
245
246PERL_MALLOC *= undef
247
248USE_5005THREADS *= undef
249
250.IF "$(USE_5005THREADS)" == "define"
251USE_ITHREADS != undef
252.ENDIF
253
254.IF "$(USE_IMP_SYS)" == "define"
255PERL_MALLOC != undef
256.ENDIF
257
258USE_MULTI *= undef
259USE_OBJECT *= undef
260USE_ITHREADS *= undef
261USE_IMP_SYS *= undef
aa832f42 262USE_PERLIO *= undef
a9226780 263USE_PERLCRT *= undef
264
265.IF "$(USE_IMP_SYS)$(USE_MULTI)$(USE_5005THREADS)$(USE_OBJECT)" == "defineundefundefundef"
266USE_MULTI != define
267.ENDIF
268
269.IF "$(USE_ITHREADS)$(USE_MULTI)$(USE_OBJECT)" == "defineundefundef"
270USE_MULTI != define
271USE_5005THREADS != undef
272.ENDIF
273
274.IF "$(USE_MULTI)$(USE_5005THREADS)$(USE_OBJECT)" != "undefundefundef"
275BUILDOPT += -DPERL_IMPLICIT_CONTEXT
276.ENDIF
277
278.IF "$(USE_IMP_SYS)" != "undef"
279BUILDOPT += -DPERL_IMPLICIT_SYS
280.ENDIF
281
282.IMPORT .IGNORE : PROCESSOR_ARCHITECTURE
283
284PROCESSOR_ARCHITECTURE *= x86
285
286.IF "$(USE_OBJECT)" == "define"
287ARCHNAME = MSWin32-$(PROCESSOR_ARCHITECTURE)-object
288.ELIF "$(USE_5005THREADS)" == "define"
289ARCHNAME = MSWin32-$(PROCESSOR_ARCHITECTURE)-thread
290.ELIF "$(USE_MULTI)" == "define"
291ARCHNAME = MSWin32-$(PROCESSOR_ARCHITECTURE)-multi
292.ELSE
aa832f42 293.IF "$(USE_PERLIO)" == "define"
294ARCHNAME = MSWin32-$(PROCESSOR_ARCHITECTURE)-perlio
295.ELSE
296ARCHNAME = MSWin32-$(PROCESSOR_ARCHITECTURE)
297.ENDIF
a9226780 298ARCHNAME = MSWin32-$(PROCESSOR_ARCHITECTURE)
299.ENDIF
300
301.IF "$(USE_ITHREADS)" == "define"
302ARCHNAME !:= $(ARCHNAME)-thread
303.ENDIF
304
305# Visual Studio 98 specific
306.IF "$(CCTYPE)" == "MSVC60"
307
308# VC 6.0 can load the socket dll on demand. Makes the test suite
309# run in about 10% less time.
24c23ab4 310DELAYLOAD *= -DELAYLOAD:wsock32.dll -DELAYLOAD:shell32.dll delayimp.lib
a9226780 311
8c8a4ace 312.IF "$(CFG)" == "Debug"
313.ELSE
a9226780 314# VC 6.0 seems capable of compiling perl correctly with optimizations
315# enabled. Anything earlier fails tests.
316CFG *= Optimize
317.ENDIF
8c8a4ace 318.ENDIF
a9226780 319
320ARCHDIR = ..\lib\$(ARCHNAME)
321COREDIR = ..\lib\CORE
322AUTODIR = ..\lib\auto
323LIBDIR = ..\lib
324EXTDIR = ..\ext
325PODDIR = ..\pod
326EXTUTILSDIR = $(LIBDIR)\ExtUtils
327
328#
329INST_SCRIPT = $(INST_TOP)$(INST_VER)\bin
330INST_BIN = $(INST_SCRIPT)$(INST_ARCH)
331INST_LIB = $(INST_TOP)$(INST_VER)\lib
332INST_ARCHLIB = $(INST_LIB)$(INST_ARCH)
333INST_COREDIR = $(INST_ARCHLIB)\CORE
334INST_POD = $(INST_LIB)\pod
7c82de66 335INST_HTML = $(INST_TOP)$(INST_VER)\html
a9226780 336
337#
338# Programs to compile, build .lib files and link
339#
340
341.USESHELL :
342
343.IF "$(CCTYPE)" == "BORLAND"
344
345CC = bcc32
24c02676 346.IF $(BCCVER) != 5.2
347LINK32 = ilink32
348.ELSE
a9226780 349LINK32 = tlink32
24c02676 350.ENDIF
a9226780 351LIB32 = tlib /P128
352IMPLIB = implib -c
353RSC = rc
354
355#
356# Options
357#
358INCLUDES = -I$(COREDIR) -I.\include -I. -I.. -I"$(CCINCDIR)"
24c23ab4 359#PCHFLAGS = -H -Hc -H=c:\temp\bcmoduls.pch
24c02676 360DEFINES = -DWIN32 -D_MT $(CRYPT_FLAG)
a9226780 361LOCDEFS = -DPERLDLL -DPERL_CORE
362SUBSYS = console
363CXX_FLAG = -P
364
365LIBC = cw32mti.lib
24c02676 366LIBFILES = $(CRYPT_LIB) import32.lib $(LIBC)
a9226780 367
368.IF "$(CFG)" == "Debug"
369OPTIMIZE = -v -D_RTLDLL -DDEBUGGING
370LINK_DBG = -v
371.ELSE
372OPTIMIZE = -O2 -D_RTLDLL
24c23ab4 373LINK_DBG =
a9226780 374.ENDIF
375
376CFLAGS = -w -g0 -tWM -tWD $(INCLUDES) $(DEFINES) $(LOCDEFS) \
377 $(PCHFLAGS) $(OPTIMIZE)
24c02676 378LINK_FLAGS = $(LINK_DBG) -L"$(INST_COREDIR)" -L"$(CCLIBDIR)"
a9226780 379OBJOUT_FLAG = -o
380EXEOUT_FLAG = -e
24c23ab4 381LIBOUT_FLAG =
24c02676 382.IF $(BCCVER) != 5.2
383LINK_FLAGS += -Gn
384.END
385.IF "$(BCCVCL)" == "define"
386LIBC = cp32mti.lib vcl.lib vcl50.lib vclx50.lib vcle50.lib
387LINK_FLAGS += -L"$(CCLIBDIR)\Release"
388.END
389
a9226780 390
391.ELIF "$(CCTYPE)" == "GCC"
392
393CC = gcc
394LINK32 = gcc
395LIB32 = ar rc
396IMPLIB = dlltool
397RSC = rc
398
adb71456 399i = .i
a9226780 400o = .o
401a = .a
402
403#
404# Options
405#
406
24c23ab4 407INCLUDES = -I.\include -I. -I.. -I$(COREDIR)
a9226780 408DEFINES = -DWIN32 $(CRYPT_FLAG)
409LOCDEFS = -DPERLDLL -DPERL_CORE
410SUBSYS = console
411CXX_FLAG = -xc++
412
413LIBC = -lmsvcrt
414
415# same libs as MSVC
416LIBFILES = $(CRYPT_LIB) $(LIBC) \
417 -lmoldname -lkernel32 -luser32 -lgdi32 \
418 -lwinspool -lcomdlg32 -ladvapi32 -lshell32 -lole32 \
419 -loleaut32 -lnetapi32 -luuid -lwsock32 -lmpr \
420 -lwinmm -lversion -lodbc32
421
422.IF "$(CFG)" == "Debug"
99efab12 423OPTIMIZE = -g -O2 -DDEBUGGING
a9226780 424LINK_DBG = -g
425.ELSE
426OPTIMIZE = -g -O2
24c23ab4 427LINK_DBG = -g
a9226780 428.ENDIF
429
430CFLAGS = $(INCLUDES) $(DEFINES) $(LOCDEFS) $(OPTIMIZE)
431LINK_FLAGS = $(LINK_DBG) -L"$(INST_COREDIR)" -L"$(CCLIBDIR)"
432OBJOUT_FLAG = -o
433EXEOUT_FLAG = -o
24c23ab4 434LIBOUT_FLAG =
a9226780 435
436# NOTE: we assume that GCC uses MSVCRT.DLL
437BUILDOPT += -fno-strict-aliasing -DPERL_MSVCRT_READFIX
438
439.ELSE
440
441CC = cl
442LINK32 = link
443LIB32 = $(LINK32) -lib
444RSC = rc
445
446#
447# Options
448#
449
450INCLUDES = -I$(COREDIR) -I.\include -I. -I..
24c23ab4 451#PCHFLAGS = -Fpc:\temp\vcmoduls.pch -YX
a9226780 452DEFINES = -DWIN32 -D_CONSOLE -DNO_STRICT $(CRYPT_FLAG)
453LOCDEFS = -DPERLDLL -DPERL_CORE
454SUBSYS = console
455CXX_FLAG = -TP -GX
456
457.IF "$(USE_PERLCRT)" != "define"
458LIBC = msvcrt.lib
459.ELSE
460LIBC = PerlCRT.lib
461.ENDIF
462
463PERLEXE_RES =
464PERLDLL_RES =
465
466.IF "$(CFG)" == "Debug"
467.IF "$(CCTYPE)" == "MSVC20"
468OPTIMIZE = -Od -MD -Z7 -DDEBUGGING
be696b0a 469LINK_DBG = -debug -pdb:none
a9226780 470.ELSE
be696b0a 471# -Zi requires .pdb file(s)
472#OPTIMIZE = -Od -MD -Zi -DDEBUGGING
f70490b9 473#LINK_DBG = -debug
be696b0a 474OPTIMIZE = -O1 -MD -Z7 -DDEBUGGING
475LINK_DBG = -debug -debugtype:both -pdb:none
a9226780 476.ENDIF
a9226780 477.ELSE
478.IF "$(CFG)" == "Optimize"
479# -O1 yields smaller code, which turns out to be faster than -O2
480#OPTIMIZE = -O2 -MD -DNDEBUG
481OPTIMIZE = -O1 -MD -DNDEBUG
482.ELSE
483OPTIMIZE = -Od -MD -DNDEBUG
484.ENDIF
485LINK_DBG = -release
486.ENDIF
487
488LIBBASEFILES = $(CRYPT_LIB) \
489 oldnames.lib kernel32.lib user32.lib gdi32.lib winspool.lib \
490 comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib \
491 netapi32.lib uuid.lib wsock32.lib mpr.lib winmm.lib \
492 version.lib odbc32.lib odbccp32.lib
493
494# we add LIBC here, since we may be using PerlCRT.dll
495LIBFILES = $(LIBBASEFILES) $(LIBC)
496
497CFLAGS = -nologo -Gf -W3 $(INCLUDES) $(DEFINES) $(LOCDEFS) \
498 $(PCHFLAGS) $(OPTIMIZE)
499LINK_FLAGS = -nologo -nodefaultlib $(LINK_DBG) \
500 -libpath:"$(INST_COREDIR)" \
501 -machine:$(PROCESSOR_ARCHITECTURE)
502OBJOUT_FLAG = -Fo
503EXEOUT_FLAG = -Fe
504LIBOUT_FLAG = /out:
505
506.IF "$(USE_PERLCRT)" != "define"
507BUILDOPT += -DPERL_MSVCRT_READFIX
508.ENDIF
509
510.ENDIF
511
512.IF "$(USE_OBJECT)" == "define"
513OPTIMIZE += $(CXX_FLAG)
514BUILDOPT += -DPERL_OBJECT
515.ENDIF
516
517CFLAGS_O = $(CFLAGS) $(BUILDOPT)
518
519# used to allow local linking flags that are not propogated into Config.pm,
520# currently unused
521# -- BKS, 12-12-1999
522PRIV_LINK_FLAGS *=
523BLINK_FLAGS = $(PRIV_LINK_FLAGS) $(LINK_FLAGS)
524
525#################### do not edit below this line #######################
526############# NO USER-SERVICEABLE PARTS BEYOND THIS POINT ##############
527
528o *= .obj
529a *= .lib
530
531LKPRE = INPUT (
532LKPOST = )
533
534#
535# Rules
24c23ab4 536#
a9226780 537
adb71456 538.SUFFIXES : .c .i $(o) .dll $(a) .exe .rc .res
a9226780 539
540.c$(o):
541 $(CC) -c $(null,$(<:d) $(NULL) -I$(<:d)) $(CFLAGS_O) $(OBJOUT_FLAG)$@ $<
542
adb71456 543.c.i:
f70490b9 544 $(CC) -c $(null,$(<:d) $(NULL) -I$(<:d)) $(CFLAGS_O) -E $< >$@
adb71456 545
a9226780 546.y.c:
547 $(NOOP)
548
549$(o).dll:
550.IF "$(CCTYPE)" == "BORLAND"
551 $(LINK32) -Tpd -ap $(BLINK_FLAGS) c0d32$(o) $<,$@,,$(LIBFILES),$(*B).def
552 $(IMPLIB) $(*B).lib $@
553.ELIF "$(CCTYPE)" == "GCC"
554 $(LINK32) -o $@ $(BLINK_FLAGS) $< $(LIBFILES)
555 $(IMPLIB) --input-def $(*B).def --output-lib $(*B).a $@
556.ELSE
557 $(LINK32) -dll -subsystem:windows -implib:$(*B).lib -def:$(*B).def \
24c23ab4 558 -out:$@ $(BLINK_FLAGS) $(LIBFILES) $< $(LIBPERL)
a9226780 559.ENDIF
560
561.rc.res:
562 $(RSC) -i.. $<
563
564#
565# various targets
566MINIPERL = ..\miniperl.exe
567MINIDIR = .\mini
568PERLEXE = ..\perl.exe
569WPERLEXE = ..\wperl.exe
570GLOBEXE = ..\perlglob.exe
571CONFIGPM = ..\lib\Config.pm
572MINIMOD = ..\lib\ExtUtils\Miniperl.pm
573X2P = ..\x2p\a2p.exe
574
24c23ab4 575# Nominate a target which causes extensions to be re-built
a77df51f 576# This used to be $(PERLEXE), but at worst it is the .dll that they depend
577# on and really only the interface - i.e. the .def file used to export symbols
578# from the .dll
579PERLDEP = perldll.def
580
581
a9226780 582PL2BAT = bin\pl2bat.pl
583GLOBBAT = bin\perlglob.bat
584
585UTILS = \
586 ..\utils\h2ph \
587 ..\utils\splain \
588 ..\utils\dprofpp \
589 ..\utils\perlbug \
590 ..\utils\pl2pm \
591 ..\utils\c2ph \
592 ..\utils\h2xs \
593 ..\utils\perldoc \
594 ..\utils\perlcc \
595 ..\pod\checkpods \
596 ..\pod\pod2html \
597 ..\pod\pod2latex \
598 ..\pod\pod2man \
599 ..\pod\pod2text \
600 ..\pod\pod2usage \
601 ..\pod\podchecker \
602 ..\pod\podselect \
603 ..\x2p\find2perl \
604 ..\x2p\s2p \
605 bin\exetype.pl \
606 bin\runperl.pl \
607 bin\pl2bat.pl \
608 bin\perlglob.pl \
609 bin\search.pl
610
611.IF "$(CCTYPE)" == "BORLAND"
612
613CFGSH_TMPL = config.bc
614CFGH_TMPL = config_H.bc
615
616.ELIF "$(CCTYPE)" == "GCC"
617
618CFGSH_TMPL = config.gc
619CFGH_TMPL = config_H.gc
3789aae2 620PERLIMPLIB = ..\libperl57$(a)
a9226780 621
622.ELSE
623
624CFGSH_TMPL = config.vc
625CFGH_TMPL = config_H.vc
626
627.ENDIF
628
7d4dff66 629# makedef.pl must be updated if this changes, and this should normally
630# only change when there is an incompatible revision of the public API.
631# XXX so why did we change it from perl56 to perl57?
3789aae2 632PERLIMPLIB *= ..\perl57$(a)
633PERLDLL = ..\perl57.dll
a9226780 634
635XCOPY = xcopy /f /r /i /d
636RCOPY = xcopy /f /r /i /e /d
637NOOP = @echo
638
639#
640# filenames given to xsubpp must have forward slashes (since it puts
641# full pathnames in #line strings)
642XSUBPP = ..\$(MINIPERL) -I..\..\lib ..\$(EXTUTILSDIR)\xsubpp \
643 -C++ -prototypes
644
645MICROCORE_SRC = \
646 ..\av.c \
647 ..\deb.c \
648 ..\doio.c \
649 ..\doop.c \
650 ..\dump.c \
651 ..\globals.c \
652 ..\gv.c \
653 ..\hv.c \
654 ..\mg.c \
655 ..\op.c \
656 ..\perl.c \
657 ..\perlapi.c \
658 ..\perly.c \
659 ..\pp.c \
660 ..\pp_ctl.c \
661 ..\pp_hot.c \
662 ..\pp_sys.c \
663 ..\regcomp.c \
664 ..\regexec.c \
665 ..\run.c \
666 ..\scope.c \
667 ..\sv.c \
668 ..\taint.c \
669 ..\toke.c \
670 ..\universal.c \
671 ..\utf8.c \
672 ..\util.c \
673 ..\xsutils.c
674
675EXTRACORE_SRC += perllib.c
676
677.IF "$(PERL_MALLOC)" == "define"
678EXTRACORE_SRC += ..\malloc.c
679.ENDIF
680
681.IF "$(USE_OBJECT)" != "define"
682EXTRACORE_SRC += ..\perlio.c
683.ENDIF
684
685WIN32_SRC = \
686 .\win32.c \
687 .\win32sck.c \
24c23ab4 688 .\win32thread.c
a9226780 689
690.IF "$(CRYPT_SRC)" != ""
691WIN32_SRC += .\$(CRYPT_SRC)
692.ENDIF
693
694DLL_SRC = $(DYNALOADER).c
695
696X2P_SRC = \
697 ..\x2p\a2p.c \
698 ..\x2p\hash.c \
699 ..\x2p\str.c \
700 ..\x2p\util.c \
701 ..\x2p\walk.c
702
703CORE_NOCFG_H = \
704 ..\av.h \
705 ..\cop.h \
706 ..\cv.h \
707 ..\dosish.h \
708 ..\embed.h \
709 ..\form.h \
710 ..\gv.h \
711 ..\handy.h \
712 ..\hv.h \
713 ..\iperlsys.h \
714 ..\mg.h \
715 ..\nostdio.h \
716 ..\op.h \
717 ..\opcode.h \
718 ..\perl.h \
719 ..\perlapi.h \
720 ..\perlsdio.h \
721 ..\perlsfio.h \
722 ..\perly.h \
723 ..\pp.h \
724 ..\proto.h \
725 ..\regexp.h \
726 ..\scope.h \
727 ..\sv.h \
728 ..\thread.h \
729 ..\unixish.h \
730 ..\utf8.h \
731 ..\util.h \
732 ..\warnings.h \
733 ..\XSUB.h \
734 ..\EXTERN.h \
735 ..\perlvars.h \
736 ..\intrpvar.h \
737 ..\thrdvar.h \
738 .\include\dirent.h \
739 .\include\netdb.h \
740 .\include\sys\socket.h \
741 .\win32.h
742
743CORE_H = $(CORE_NOCFG_H) .\config.h
744
745MICROCORE_OBJ = $(MICROCORE_SRC:db:+$(o))
746CORE_OBJ = $(MICROCORE_OBJ) $(EXTRACORE_SRC:db:+$(o))
747WIN32_OBJ = $(WIN32_SRC:db:+$(o))
748MINICORE_OBJ = $(MINIDIR)\{$(MICROCORE_OBJ:f) miniperlmain$(o) perlio$(o)}
749MINIWIN32_OBJ = $(MINIDIR)\{$(WIN32_OBJ:f)}
750MINI_OBJ = $(MINICORE_OBJ) $(MINIWIN32_OBJ)
751DLL_OBJ = $(DLL_SRC:db:+$(o))
752X2P_OBJ = $(X2P_SRC:db:+$(o))
753
754PERLDLL_OBJ = $(CORE_OBJ)
755PERLEXE_OBJ = perlmain$(o)
756
757PERLDLL_OBJ += $(WIN32_OBJ) $(DLL_OBJ)
758
759.IF "$(USE_SETARGV)" != ""
760SETARGV_OBJ = setargv$(o)
761.ENDIF
762
763DYNAMIC_EXT = Socket IO Fcntl Opcode SDBM_File POSIX attrs Thread B re \
764 Data/Dumper Devel/Peek ByteLoader Devel/DProf File/Glob \
f70490b9 765 Sys/Hostname Storable Filter/Util/Call Encode \
160d5bf4 766 Digest/MD5 PerlIO/Scalar MIME/Base64
a9226780 767STATIC_EXT = DynaLoader
768NONXS_EXT = Errno
769
770DYNALOADER = $(EXTDIR)\DynaLoader\DynaLoader
771SOCKET = $(EXTDIR)\Socket\Socket
772FCNTL = $(EXTDIR)\Fcntl\Fcntl
773OPCODE = $(EXTDIR)\Opcode\Opcode
774SDBM_FILE = $(EXTDIR)\SDBM_File\SDBM_File
775IO = $(EXTDIR)\IO\IO
776POSIX = $(EXTDIR)\POSIX\POSIX
777ATTRS = $(EXTDIR)\attrs\attrs
778THREAD = $(EXTDIR)\Thread\Thread
779B = $(EXTDIR)\B\B
780RE = $(EXTDIR)\re\re
781DUMPER = $(EXTDIR)\Data\Dumper\Dumper
8c0134a8 782SCALAR = $(EXTDIR)\PerlIO\Scalar\Scalar
a9226780 783ERRNO = $(EXTDIR)\Errno\Errno
784PEEK = $(EXTDIR)\Devel\Peek\Peek
785BYTELOADER = $(EXTDIR)\ByteLoader\ByteLoader
786DPROF = $(EXTDIR)\Devel\DProf\DProf
787GLOB = $(EXTDIR)\File\Glob\Glob
788HOSTNAME = $(EXTDIR)\Sys\Hostname\Hostname
789STORABLE = $(EXTDIR)\Storable\Storable
5e506771 790FILTER = $(EXTDIR)\Filter\Util\Call\Call
24c23ab4 791ENCODE = $(EXTDIR)\Encode\Encode
f70490b9 792MD5 = $(EXTDIR)\Digest\MD5\MD5
160d5bf4 793MIMEBASE64 = $(EXTDIR)\MIME\Base64\Base64
a9226780 794
795SOCKET_DLL = $(AUTODIR)\Socket\Socket.dll
796FCNTL_DLL = $(AUTODIR)\Fcntl\Fcntl.dll
797OPCODE_DLL = $(AUTODIR)\Opcode\Opcode.dll
798SDBM_FILE_DLL = $(AUTODIR)\SDBM_File\SDBM_File.dll
799IO_DLL = $(AUTODIR)\IO\IO.dll
800POSIX_DLL = $(AUTODIR)\POSIX\POSIX.dll
801ATTRS_DLL = $(AUTODIR)\attrs\attrs.dll
802THREAD_DLL = $(AUTODIR)\Thread\Thread.dll
803B_DLL = $(AUTODIR)\B\B.dll
804DUMPER_DLL = $(AUTODIR)\Data\Dumper\Dumper.dll
8c0134a8 805SCALAR_DLL = $(AUTODIR)\PerlIO\Scalar\Scalar.dll
a9226780 806PEEK_DLL = $(AUTODIR)\Devel\Peek\Peek.dll
807RE_DLL = $(AUTODIR)\re\re.dll
808BYTELOADER_DLL = $(AUTODIR)\ByteLoader\ByteLoader.dll
809DPROF_DLL = $(AUTODIR)\Devel\DProf\DProf.dll
810GLOB_DLL = $(AUTODIR)\File\Glob\Glob.dll
811HOSTNAME_DLL = $(AUTODIR)\Sys\Hostname\Hostname.dll
812STORABLE_DLL = $(AUTODIR)\Storable\Storable.dll
d9b8e8ae 813FILTER_DLL = $(AUTODIR)\Filter\Util\Call\Call.dll
814ENCODE_DLL = $(AUTODIR)\Encode\Encode.dll
f70490b9 815MD5_DLL = $(AUTODIR)\Digest\MD5\MD5.dll
160d5bf4 816MIMEBASE64_DLL = $(AUTODIR)\MIME\Base64\Base64.dll
a9226780 817
818ERRNO_PM = $(LIBDIR)\Errno.pm
819
820EXTENSION_C = \
821 $(SOCKET).c \
822 $(FCNTL).c \
823 $(OPCODE).c \
824 $(SDBM_FILE).c \
825 $(IO).c \
826 $(POSIX).c \
827 $(ATTRS).c \
828 $(THREAD).c \
829 $(RE).c \
830 $(DUMPER).c \
7975e2ef 831 $(SCALAR).c \
a9226780 832 $(PEEK).c \
833 $(B).c \
834 $(BYTELOADER).c \
835 $(DPROF).c \
836 $(GLOB).c \
837 $(HOSTNAME).c \
a3ee43e0 838 $(STORABLE).c \
d9b8e8ae 839 $(FILTER).c \
f70490b9 840 $(ENCODE).c \
160d5bf4 841 $(MD5).c \
842 $(MIMEBASE64).c
a9226780 843
844EXTENSION_DLL = \
845 $(SOCKET_DLL) \
846 $(FCNTL_DLL) \
847 $(OPCODE_DLL) \
848 $(SDBM_FILE_DLL)\
849 $(IO_DLL) \
850 $(POSIX_DLL) \
851 $(ATTRS_DLL) \
852 $(DUMPER_DLL) \
8c0134a8 853 $(SCALAR_DLL) \
a9226780 854 $(PEEK_DLL) \
855 $(B_DLL) \
856 $(RE_DLL) \
857 $(THREAD_DLL) \
858 $(BYTELOADER_DLL) \
859 $(DPROF_DLL) \
860 $(GLOB_DLL) \
861 $(HOSTNAME_DLL) \
a3ee43e0 862 $(STORABLE_DLL) \
d9b8e8ae 863 $(FILTER_DLL) \
f70490b9 864 $(ENCODE_DLL) \
160d5bf4 865 $(MD5_DLL) \
866 $(MIMEBASE64_DLL)
a9226780 867
868EXTENSION_PM = \
869 $(ERRNO_PM)
870
871POD2HTML = $(PODDIR)\pod2html
872POD2MAN = $(PODDIR)\pod2man
873POD2LATEX = $(PODDIR)\pod2latex
874POD2TEXT = $(PODDIR)\pod2text
875
876# vars must be separated by "\t+~\t+", since we're using the tempfile
877# version of config_sh.pl (we were overflowing someone's buffer by
878# trying to fit them all on the command line)
879# -- BKS 10-17-1999
880CFG_VARS = \
881 INST_DRV=$(INST_DRV) ~ \
882 INST_TOP=$(INST_TOP:s/\/\\/) ~ \
883 INST_VER=$(INST_VER:s/\/\\/) ~ \
884 INST_ARCH=$(INST_ARCH) ~ \
885 archname=$(ARCHNAME) ~ \
886 cc=$(CC) ~ \
fd826df2 887 ld=$(LINK32) ~ \
a9226780 888 ccflags=$(OPTIMIZE) $(DEFINES) $(BUILDOPT) ~ \
889 cf_email=$(EMAIL) ~ \
890 d_crypt=$(D_CRYPT) ~ \
891 d_mymalloc=$(PERL_MALLOC) ~ \
892 libs=$(LIBFILES:f) ~ \
893 incpath=$(CCINCDIR:s/\/\\/) ~ \
894 libperl=$(PERLIMPLIB:f) ~ \
895 libpth=$(CCLIBDIR:s/\/\\/);$(EXTRALIBDIRS:s/\/\\/) ~ \
896 libc=$(LIBC) ~ \
897 make=dmake ~ \
898 _o=$(o) obj_ext=$(o) ~ \
899 _a=$(a) lib_ext=$(a) ~ \
900 static_ext=$(STATIC_EXT) ~ \
901 dynamic_ext=$(DYNAMIC_EXT) ~ \
902 nonxs_ext=$(NONXS_EXT) ~ \
903 use5005threads=$(USE_5005THREADS) ~ \
904 useithreads=$(USE_ITHREADS) ~ \
905 usethreads=$(USE_5005THREADS) ~ \
906 usemultiplicity=$(USE_MULTI) ~ \
aa832f42 907 useperlio=$(USE_PERLIO) ~ \
a9226780 908 LINK_FLAGS=$(LINK_FLAGS:s/\/\\/) ~ \
909 optimize=$(OPTIMIZE)
910
911#
912# set up targets varying between Win95 and WinNT builds
913#
914
915.IF "$(IS_WIN95)" == "define"
916MK2 = .\makefile.95
917RIGHTMAKE = __switch_makefiles
918NOOP = @rem
919.ELSE
920MK2 = __not_needed
24c23ab4 921RIGHTMAKE =
a9226780 922.ENDIF
923
924#
925# Top targets
926#
927
928all : .\config.h $(GLOBEXE) $(MINIPERL) $(MK2) \
929 $(RIGHTMAKE) $(MINIMOD) $(CONFIGPM) $(PERLEXE) \
930 $(X2P) $(EXTENSION_DLL) $(EXTENSION_PM)
931
932$(DYNALOADER)$(o) : $(DYNALOADER).c $(CORE_H) $(EXTDIR)\DynaLoader\dlutils.c
933
934#----------------------------------------------------------------
935
936#-------------------- BEGIN Win95 SPECIFIC ----------------------
937
938# this target is a jump-off point for Win95
939# 1. it switches to the Win95-specific makefile if it exists
940# (__do_switch_makefiles)
941# 2. it prints a message when the Win95-specific one finishes (__done)
942# 3. it then kills this makefile by trying to make __no_such_target
943
944__switch_makefiles: __do_switch_makefiles __done __no_such_target
945
946__do_switch_makefiles:
947.IF "$(NOTFIRST)" != "true"
948 if exist $(MK2) $(MAKE:s/-S//) -f $(MK2) $(MAKETARGETS) NOTFIRST=true
949.ELSE
950 $(NOOP)
951.ENDIF
952
953.IF "$(NOTFIRST)" != "true"
954__done:
955 @echo Build process complete. Ignore any errors after this message.
956 @echo Run "dmake test" to test and "dmake install" to install
957
958.ELSE
959# dummy targets for Win95-specific makefile
960
961__done:
962 $(NOOP)
963
964__no_such_target:
965 $(NOOP)
966
967.ENDIF
968
969# This target is used to generate the new makefile (.\makefile.95) for Win95
970
971.\makefile.95: .\makefile.mk
972 $(MINIPERL) genmk95.pl makefile.mk $(MK2)
973
974#--------------------- END Win95 SPECIFIC ---------------------
975
976# a blank target for when builds don't need to do certain things
24c23ab4 977# this target added for Win95 port but used to keep the WinNT port able to
a9226780 978# use this file
979__not_needed:
980 $(NOOP)
981
982$(GLOBEXE) : perlglob$(o)
983.IF "$(CCTYPE)" == "BORLAND"
984 $(CC) -c -w -v -tWM -I"$(CCINCDIR)" perlglob.c
985 $(LINK32) -Tpe -ap $(BLINK_FLAGS) c0x32$(o) perlglob$(o) \
986 "$(CCLIBDIR)\32BIT\wildargs$(o)",$@,,import32.lib cw32mt.lib,
987.ELIF "$(CCTYPE)" == "GCC"
988 $(LINK32) $(BLINK_FLAGS) -mconsole -o $@ perlglob$(o) $(LIBFILES)
989.ELSE
990 $(LINK32) $(BLINK_FLAGS) $(LIBFILES) -out:$@ -subsystem:$(SUBSYS) \
24c23ab4 991 perlglob$(o) setargv$(o)
a9226780 992.ENDIF
993
994perlglob$(o) : perlglob.c
995
996config.w32 : $(CFGSH_TMPL)
997 copy $(CFGSH_TMPL) config.w32
998
999.\config.h : $(CFGH_TMPL) $(CORE_NOCFG_H)
1000 -del /f config.h
1001 copy $(CFGH_TMPL) config.h
1002
1003..\config.sh : config.w32 $(MINIPERL) config_sh.PL
1004 $(MINIPERL) -I..\lib config_sh.PL --cfgsh-option-file \
1005 $(mktmp $(CFG_VARS)) config.w32 > ..\config.sh
1006
1007# this target is for when changes to the main config.sh happen
1008# edit config.{b,v,g}c and make this target once for each supported
1009# compiler (e.g. `dmake CCTYPE=BORLAND regen_config_h`)
1010regen_config_h:
1011 perl config_sh.PL --cfgsh-option-file $(mktmp $(CFG_VARS)) \
1012 $(CFGSH_TMPL) > ..\config.sh
1013 -cd .. && del /f perl.exe
1014 cd .. && perl configpm
1015 -del /f $(CFGH_TMPL)
1016 -mkdir $(COREDIR)
1017 -perl -I..\lib config_h.PL "INST_VER=$(INST_VER)"
1018 rename config.h $(CFGH_TMPL)
1019
1020$(CONFIGPM) : $(MINIPERL) ..\config.sh config_h.PL ..\minimod.pl
1021 cd .. && miniperl configpm
1022 if exist lib\* $(RCOPY) lib\*.* ..\lib\$(NULL)
1023 $(XCOPY) ..\*.h $(COREDIR)\*.*
1024 $(XCOPY) *.h $(COREDIR)\*.*
1025 $(XCOPY) ..\ext\re\re.pm $(LIBDIR)\*.*
1026 $(RCOPY) include $(COREDIR)\*.*
1027 $(MINIPERL) -I..\lib config_h.PL "INST_VER=$(INST_VER)" \
1028 || $(MAKE) $(MAKEMACROS) $(CONFIGPM) $(MAKEFILE)
1029
1030$(MINIPERL) : $(MINIDIR) $(MINI_OBJ) $(CRTIPMLIBS)
1031.IF "$(CCTYPE)" == "BORLAND"
1032 $(LINK32) -Tpe -ap $(BLINK_FLAGS) \
1033 @$(mktmp c0x32$(o) $(MINI_OBJ:s,\,\\),$(@:s,\,\\),,$(LIBFILES),)
1034.ELIF "$(CCTYPE)" == "GCC"
1035 $(LINK32) -v -mconsole -o $@ $(BLINK_FLAGS) \
24c23ab4 1036 $(mktmp $(LKPRE) $(MINI_OBJ:s,\,\\) $(LIBFILES) $(LKPOST))
a9226780 1037.ELSE
1038 $(LINK32) -subsystem:console -out:$@ \
1039 @$(mktmp $(BLINK_FLAGS) $(LIBFILES) $(MINI_OBJ:s,\,\\))
1040.ENDIF
1041
1042$(MINIDIR) :
1043 if not exist "$(MINIDIR)" mkdir "$(MINIDIR)"
1044
1045$(MINICORE_OBJ) : $(CORE_NOCFG_H)
1046 $(CC) -c $(CFLAGS) -DPERL_EXTERNAL_GLOB $(OBJOUT_FLAG)$@ ..\$(*B).c
1047
1048$(MINIWIN32_OBJ) : $(CORE_NOCFG_H)
1049 $(CC) -c $(CFLAGS) $(OBJOUT_FLAG)$@ $(*B).c
1050
1051# -DPERL_IMPLICIT_SYS needs C++ for perllib.c
1052# rules wrapped in .IFs break Win9X build (we end up with unbalanced []s unless
1053# unless the .IF is true), so instead we use a .ELSE with the default.
1054# This is the only file that depends on perlhost.h, vmem.h, and vdir.h
1055
1056perllib$(o) : perllib.c .\perlhost.h .\vdir.h .\vmem.h
1057.IF "$(USE_IMP_SYS)$(USE_OBJECT)" == "defineundef"
1058 $(CC) -c -I. $(CFLAGS_O) $(CXX_FLAG) $(OBJOUT_FLAG)$@ perllib.c
1059.ELSE
1060 $(CC) -c -I. $(CFLAGS_O) $(OBJOUT_FLAG)$@ perllib.c
1061.ENDIF
1062
1063# 1. we don't want to rebuild miniperl.exe when config.h changes
1064# 2. we don't want to rebuild miniperl.exe with non-default config.h
1065$(MINI_OBJ) : $(CORE_NOCFG_H)
1066
1067$(WIN32_OBJ) : $(CORE_H)
1068$(CORE_OBJ) : $(CORE_H)
1069$(DLL_OBJ) : $(CORE_H)
1070$(X2P_OBJ) : $(CORE_H)
1071
1072perldll.def : $(MINIPERL) $(CONFIGPM) ..\global.sym ..\pp.sym ..\makedef.pl
1073 $(MINIPERL) -w ..\makedef.pl PLATFORM=win32 $(OPTIMIZE) $(DEFINES) \
1074 $(BUILDOPT) CCTYPE=$(CCTYPE) > perldll.def
1075
1076$(PERLDLL): perldll.def $(PERLDLL_OBJ) $(PERLDLL_RES)
1077.IF "$(CCTYPE)" == "BORLAND"
1078 $(LINK32) -Tpd -ap $(BLINK_FLAGS) \
1079 @$(mktmp c0d32$(o) $(PERLDLL_OBJ:s,\,\\)\n \
1080 $@,\n \
1081 $(LIBFILES)\n \
1082 perldll.def\n)
1083 $(IMPLIB) $*.lib $@
1084.ELIF "$(CCTYPE)" == "GCC"
1085 $(LINK32) -mdll -o $@ -Wl,--base-file -Wl,perl.base $(BLINK_FLAGS) \
1086 $(mktmp $(LKPRE) $(PERLDLL_OBJ:s,\,\\) $(LIBFILES) $(LKPOST))
1087 dlltool --output-lib $(PERLIMPLIB) \
1088 --dllname $(PERLDLL:b).dll \
1089 --def perldll.def \
1090 --base-file perl.base \
1091 --output-exp perl.exp
1092 $(LINK32) -mdll -o $@ $(BLINK_FLAGS) \
1093 $(mktmp $(LKPRE) $(PERLDLL_OBJ:s,\,\\) $(LIBFILES) \
1094 perl.exp $(LKPOST))
1095.ELSE
1096 $(LINK32) -dll -def:perldll.def -out:$@ \
1097 @$(mktmp -base:0x28000000 $(BLINK_FLAGS) $(DELAYLOAD) $(LIBFILES) \
1098 $(PERLDLL_RES) $(PERLDLL_OBJ:s,\,\\))
1099.ENDIF
1100 $(XCOPY) $(PERLIMPLIB) $(COREDIR)
1101
1102$(MINIMOD) : $(MINIPERL) ..\minimod.pl
1103 cd .. && miniperl minimod.pl > lib\ExtUtils\Miniperl.pm
1104
1105..\x2p\a2p$(o) : ..\x2p\a2p.c
1106 $(CC) -I..\x2p $(CFLAGS) $(OBJOUT_FLAG)$@ -c ..\x2p\a2p.c
1107
1108..\x2p\hash$(o) : ..\x2p\hash.c
1109 $(CC) -I..\x2p $(CFLAGS) $(OBJOUT_FLAG)$@ -c ..\x2p\hash.c
1110
1111..\x2p\str$(o) : ..\x2p\str.c
1112 $(CC) -I..\x2p $(CFLAGS) $(OBJOUT_FLAG)$@ -c ..\x2p\str.c
1113
1114..\x2p\util$(o) : ..\x2p\util.c
1115 $(CC) -I..\x2p $(CFLAGS) $(OBJOUT_FLAG)$@ -c ..\x2p\util.c
1116
1117..\x2p\walk$(o) : ..\x2p\walk.c
1118 $(CC) -I..\x2p $(CFLAGS) $(OBJOUT_FLAG)$@ -c ..\x2p\walk.c
1119
1120$(X2P) : $(MINIPERL) $(X2P_OBJ)
1121 $(MINIPERL) ..\x2p\find2perl.PL
1122 $(MINIPERL) ..\x2p\s2p.PL
1123.IF "$(CCTYPE)" == "BORLAND"
1124 $(LINK32) -Tpe -ap $(BLINK_FLAGS) \
1125 @$(mktmp c0x32$(o) $(X2P_OBJ:s,\,\\),$(@:s,\,\\),,$(LIBFILES),)
1126.ELIF "$(CCTYPE)" == "GCC"
1127 $(LINK32) -v -o $@ $(BLINK_FLAGS) \
1128 $(mktmp $(LKPRE) $(X2P_OBJ:s,\,\\) $(LIBFILES) $(LKPOST))
1129.ELSE
1130 $(LINK32) -subsystem:console -out:$@ \
1131 @$(mktmp $(BLINK_FLAGS) $(LIBFILES) $(X2P_OBJ:s,\,\\))
1132.ENDIF
1133
24c23ab4 1134perlmain.c : runperl.c
a9226780 1135 copy runperl.c perlmain.c
1136
1137perlmain$(o) : perlmain.c
1138 $(CC) $(CFLAGS_O) -UPERLDLL $(OBJOUT_FLAG)$@ -c perlmain.c
1139
1140$(PERLEXE): $(PERLDLL) $(CONFIGPM) $(PERLEXE_OBJ) $(PERLEXE_RES)
1141.IF "$(CCTYPE)" == "BORLAND"
1142 $(LINK32) -Tpe -ap $(BLINK_FLAGS) \
1143 @$(mktmp c0x32$(o) $(PERLEXE_OBJ:s,\,\\)\n \
1144 $(@:s,\,\\),\n \
1145 $(PERLIMPLIB) $(LIBFILES)\n)
1146.ELIF "$(CCTYPE)" == "GCC"
1147 $(LINK32) -mconsole -o $@ $(BLINK_FLAGS) \
1148 $(PERLEXE_OBJ) $(PERLIMPLIB) $(LIBFILES)
1149.ELSE
1150 $(LINK32) -subsystem:console -out:$@ -stack:0x1000000 $(BLINK_FLAGS) \
1151 $(LIBFILES) $(PERLEXE_OBJ) $(SETARGV_OBJ) $(PERLIMPLIB) $(PERLEXE_RES)
1152.ENDIF
1153 copy $(PERLEXE) $(WPERLEXE)
1154 $(MINIPERL) -I..\lib bin\exetype.pl $(WPERLEXE) WINDOWS
24c23ab4 1155 copy splittree.pl ..
a9226780 1156 $(MINIPERL) -I..\lib ..\splittree.pl "../LIB" $(AUTODIR)
1157
1158$(DYNALOADER).c: $(MINIPERL) $(EXTDIR)\DynaLoader\dl_win32.xs $(CONFIGPM)
1159 if not exist $(AUTODIR) mkdir $(AUTODIR)
1160 cd $(EXTDIR)\$(*B) && ..\$(MINIPERL) -I..\..\lib $(*B)_pm.PL
1161 cd $(EXTDIR)\$(*B) && ..\$(MINIPERL) -I..\..\lib XSLoader_pm.PL
1162 $(XCOPY) $(EXTDIR)\$(*B)\$(*B).pm $(LIBDIR)\$(NULL)
1163 $(XCOPY) $(EXTDIR)\$(*B)\XSLoader.pm $(LIBDIR)\$(NULL)
1164 cd $(EXTDIR)\$(*B) && $(XSUBPP) dl_win32.xs > $(*B).c
1165 $(XCOPY) $(EXTDIR)\$(*B)\dlutils.c .
1166
1167$(EXTDIR)\DynaLoader\dl_win32.xs: dl_win32.xs
1168 copy dl_win32.xs $(EXTDIR)\DynaLoader\dl_win32.xs
1169
a77df51f 1170$(DUMPER_DLL): $(PERLDEP) $(DUMPER).xs
a9226780 1171 cd $(EXTDIR)\Data\$(*B) && \
1172 ..\..\..\miniperl -I..\..\..\lib Makefile.PL INSTALLDIRS=perl
1173 cd $(EXTDIR)\Data\$(*B) && $(MAKE)
1174
8c0134a8 1175$(SCALAR_DLL): $(PERLDEP) $(SCALAR).xs
1176 cd $(EXTDIR)\PerlIO\$(*B) && \
1177 ..\..\..\miniperl -I..\..\..\lib Makefile.PL INSTALLDIRS=perl
1178 cd $(EXTDIR)\PerlIO\$(*B) && $(MAKE)
1179
a77df51f 1180$(DPROF_DLL): $(PERLDEP) $(DPROF).xs
a9226780 1181 cd $(EXTDIR)\Devel\$(*B) && \
1182 ..\..\..\miniperl -I..\..\..\lib Makefile.PL INSTALLDIRS=perl
1183 cd $(EXTDIR)\Devel\$(*B) && $(MAKE)
1184
a77df51f 1185$(GLOB_DLL): $(PERLDEP) $(GLOB).xs
a9226780 1186 cd $(EXTDIR)\File\$(*B) && \
1187 ..\..\..\miniperl -I..\..\..\lib Makefile.PL INSTALLDIRS=perl
1188 cd $(EXTDIR)\File\$(*B) && $(MAKE)
1189
a77df51f 1190$(PEEK_DLL): $(PERLDEP) $(PEEK).xs
a9226780 1191 cd $(EXTDIR)\Devel\$(*B) && \
1192 ..\..\..\miniperl -I..\..\..\lib Makefile.PL INSTALLDIRS=perl
1193 cd $(EXTDIR)\Devel\$(*B) && $(MAKE)
1194
a77df51f 1195$(RE_DLL): $(PERLDEP) $(RE).xs
a9226780 1196 cd $(EXTDIR)\$(*B) && \
1197 ..\..\miniperl -I..\..\lib Makefile.PL INSTALLDIRS=perl
1198 cd $(EXTDIR)\$(*B) && $(MAKE)
1199
a77df51f 1200$(B_DLL): $(PERLDEP) $(B).xs
a9226780 1201 cd $(EXTDIR)\$(*B) && \
1202 ..\..\miniperl -I..\..\lib Makefile.PL INSTALLDIRS=perl
1203 cd $(EXTDIR)\$(*B) && $(MAKE)
1204
a77df51f 1205$(THREAD_DLL): $(PERLDEP) $(THREAD).xs
a9226780 1206 cd $(EXTDIR)\$(*B) && \
1207 ..\..\miniperl -I..\..\lib Makefile.PL INSTALLDIRS=perl
1208 cd $(EXTDIR)\$(*B) && $(MAKE)
1209
a77df51f 1210$(ATTRS_DLL): $(PERLDEP) $(ATTRS).xs
a9226780 1211 cd $(EXTDIR)\$(*B) && \
1212 ..\..\miniperl -I..\..\lib Makefile.PL INSTALLDIRS=perl
1213 cd $(EXTDIR)\$(*B) && $(MAKE)
1214
a77df51f 1215$(POSIX_DLL): $(PERLDEP) $(POSIX).xs
a9226780 1216 cd $(EXTDIR)\$(*B) && \
1217 ..\..\miniperl -I..\..\lib Makefile.PL INSTALLDIRS=perl
1218 cd $(EXTDIR)\$(*B) && $(MAKE)
1219
a77df51f 1220$(IO_DLL): $(PERLDEP) $(IO).xs
a9226780 1221 cd $(EXTDIR)\$(*B) && \
1222 ..\..\miniperl -I..\..\lib Makefile.PL INSTALLDIRS=perl
1223 cd $(EXTDIR)\$(*B) && $(MAKE)
1224
a77df51f 1225$(SDBM_FILE_DLL) : $(PERLDEP) $(SDBM_FILE).xs
a9226780 1226 cd $(EXTDIR)\$(*B) && \
1227 ..\..\miniperl -I..\..\lib Makefile.PL INSTALLDIRS=perl
1228 cd $(EXTDIR)\$(*B) && $(MAKE)
1229
a77df51f 1230$(FCNTL_DLL): $(PERLDEP) $(FCNTL).xs
a9226780 1231 cd $(EXTDIR)\$(*B) && \
1232 ..\..\miniperl -I..\..\lib Makefile.PL INSTALLDIRS=perl
1233 cd $(EXTDIR)\$(*B) && $(MAKE)
1234
a77df51f 1235$(OPCODE_DLL): $(PERLDEP) $(OPCODE).xs
a9226780 1236 cd $(EXTDIR)\$(*B) && \
1237 ..\..\miniperl -I..\..\lib Makefile.PL INSTALLDIRS=perl
1238 cd $(EXTDIR)\$(*B) && $(MAKE)
1239
a77df51f 1240$(SOCKET_DLL): $(PERLDEP) $(SOCKET).xs
a9226780 1241 cd $(EXTDIR)\$(*B) && \
1242 ..\..\miniperl -I..\..\lib Makefile.PL INSTALLDIRS=perl
1243 cd $(EXTDIR)\$(*B) && $(MAKE)
1244
a77df51f 1245$(HOSTNAME_DLL): $(PERLDEP) $(HOSTNAME).xs
a9226780 1246 cd $(EXTDIR)\Sys\$(*B) && \
1247 ..\..\..\miniperl -I..\..\..\lib Makefile.PL INSTALLDIRS=perl
1248 cd $(EXTDIR)\Sys\$(*B) && $(MAKE)
1249
a77df51f 1250$(BYTELOADER_DLL): $(PERLDEP) $(BYTELOADER).xs
a9226780 1251 cd $(EXTDIR)\$(*B) && \
1252 ..\..\miniperl -I..\..\lib Makefile.PL INSTALLDIRS=perl
1253 cd $(EXTDIR)\$(*B) && $(MAKE)
1254
a77df51f 1255$(ENCODE_DLL): $(PERLDEP) $(ENCODE).xs
d9b8e8ae 1256 cd $(EXTDIR)\$(*B) && \
1257 ..\..\miniperl -I..\..\lib Makefile.PL INSTALLDIRS=perl
1258 cd $(EXTDIR)\$(*B) && $(MAKE)
1259
a77df51f 1260$(STORABLE_DLL): $(PERLDEP) $(STORABLE).xs
a9226780 1261 cd $(EXTDIR)\$(*B) && \
1262 ..\..\miniperl -I..\..\lib Makefile.PL INSTALLDIRS=perl
1263 cd $(EXTDIR)\$(*B) && $(MAKE)
1264
a77df51f 1265$(FILTER_DLL): $(PERLDEP) $(FILTER).xs
5e506771 1266 cd $(EXTDIR)\Filter\Util\Call && \
0727cc21 1267 ..\..\..\..\miniperl -I..\..\..\..\lib Makefile.PL INSTALLDIRS=perl
5e506771 1268 cd $(EXTDIR)\Filter\Util\Call && $(MAKE)
a3ee43e0 1269
160d5bf4 1270$(MD5_DLL): $(PERLDEP) $(MD5).xs
f70490b9 1271 cd $(EXTDIR)\Digest\MD5 && \
1272 ..\..\..\miniperl -I..\..\..\lib Makefile.PL INSTALLDIRS=perl
1273 cd $(EXTDIR)\Digest\MD5 && $(MAKE)
1274
160d5bf4 1275$(MIMEBASE64_DLL): $(PERLDEP) $(MIMEBASE64).xs
2590d287 1276 cd $(EXTDIR)\MIME\Base64 && \
160d5bf4 1277 ..\..\..\miniperl -I..\..\..\lib Makefile.PL INSTALLDIRS=perl
2590d287 1278 cd $(EXTDIR)\MIME\Base64 && $(MAKE)
160d5bf4 1279
a77df51f 1280$(ERRNO_PM): $(PERLDEP) $(ERRNO)_pm.PL
a9226780 1281 cd $(EXTDIR)\$(*B) && \
1282 ..\..\miniperl -I..\..\lib Makefile.PL INSTALLDIRS=perl
1283 cd $(EXTDIR)\$(*B) && $(MAKE)
1284
1285doc: $(PERLEXE)
1286 $(PERLEXE) -I..\lib ..\installhtml --podroot=.. --htmldir=./html \
1287 --podpath=pod:lib:ext:utils --htmlroot="file://$(INST_HTML:s,:,|,)"\
1288 --libpod=perlfunc:perlguts:perlvar:perlrun:perlop --recurse
1289
1290utils: $(PERLEXE) $(X2P)
1291 cd ..\utils && $(MAKE) PERL=$(MINIPERL)
b5ec9dce 1292 copy ..\README.aix ..\pod\perlaix.pod
a9226780 1293 copy ..\README.amiga ..\pod\perlamiga.pod
1294 copy ..\README.cygwin ..\pod\perlcygwin.pod
1295 copy ..\README.dos ..\pod\perldos.pod
b5ec9dce 1296 copy ..\README.epoc ..\pod\perlepoc.pod
a9226780 1297 copy ..\README.hpux ..\pod\perlhpux.pod
1298 copy ..\README.machten ..\pod\perlmachten.pod
1299 copy ..\README.os2 ..\pod\perlos2.pod
b5ec9dce 1300 copy ..\README.os390 ..\pod\perlos390.pod
dc5c060f 1301 copy ..\README.vmesa ..\pod\perlvmesa.pod
1302 copy ..\README.bs2000 ..\pod\perlbs2000.pod
b5ec9dce 1303 copy ..\README.solaris ..\pod\perlsolaris.pod
a9226780 1304 copy ..\vms\perlvms.pod ..\pod\perlvms.pod
b5ec9dce 1305 copy ..\README.vos ..\pod\perlvos.pod
1306 copy ..\README.win32 ..\pod\perlwin32.pod
a9226780 1307 cd ..\pod && $(MAKE) -f ..\win32\pod.mak converters
1308 cd ..\lib && $(PERLEXE) lib_pm.PL
1309 $(PERLEXE) $(PL2BAT) $(UTILS)
1310
1311distclean: clean
1312 -del /f $(MINIPERL) $(PERLEXE) $(PERLDLL) $(GLOBEXE) \
1313 $(PERLIMPLIB) ..\miniperl$(a) $(MINIMOD)
1314 -del /f *.def *.map
1315 -del /f $(EXTENSION_DLL) $(EXTENSION_PM)
1316 -del /f $(EXTENSION_C) $(DYNALOADER).c $(ERRNO).pm
1317 -del /f $(EXTDIR)\DynaLoader\dl_win32.xs
1318 -del /f $(LIBDIR)\.exists $(LIBDIR)\attrs.pm $(LIBDIR)\DynaLoader.pm
1319 -del /f $(LIBDIR)\XSLoader.pm
1320 -del /f $(LIBDIR)\Fcntl.pm $(LIBDIR)\IO.pm $(LIBDIR)\Opcode.pm
1321 -del /f $(LIBDIR)\ops.pm $(LIBDIR)\Safe.pm $(LIBDIR)\Thread.pm
1322 -del /f $(LIBDIR)\SDBM_File.pm $(LIBDIR)\Socket.pm $(LIBDIR)\POSIX.pm
1323 -del /f $(LIBDIR)\B.pm $(LIBDIR)\O.pm $(LIBDIR)\re.pm
1324 -del /f $(LIBDIR)\Data\Dumper.pm $(LIBDIR)\ByteLoader.pm
8c0134a8 1325 -del /f $(LIBDIR)\PerlIO\Scalar.pm
a9226780 1326 -del /f $(LIBDIR)\Devel\Peek.pm $(LIBDIR)\Devel\DProf.pm
1327 -del /f $(LIBDIR)\File\Glob.pm
1328 -del /f $(LIBDIR)\Storable.pm
5e506771 1329 -del /f $(LIBDIR)\Filter\Util\Call\Call.pm
f70490b9 1330 -del /f $(LIBDIR)\Digest\MD5.pm
160d5bf4 1331 -del /f $(LIBDIR)\MIME\Base64\Base64.pm
1332 -del /f $(LIBDIR)\MIME\Base64\QuotedPrint.pm
a9226780 1333 -if exist $(LIBDIR)\IO rmdir /s /q $(LIBDIR)\IO || rmdir /s $(LIBDIR)\IO
1334 -if exist $(LIBDIR)\Thread rmdir /s /q $(LIBDIR)\Thread || rmdir /s $(LIBDIR)\Thread
1335 -if exist $(LIBDIR)\B rmdir /s /q $(LIBDIR)\B || rmdir /s $(LIBDIR)\B
1336 -if exist $(LIBDIR)\Data rmdir /s /q $(LIBDIR)\Data || rmdir /s $(LIBDIR)\Data
5e506771 1337 -if exist $(LIBDIR)\Filter\Util\Call rmdir /s /q $(LIBDIR)\Filter\Util\Call || rmdir /s $(LIBDIR)\Filter
1338 -if exist $(LIBDIR)\Filter\Util rmdir /s /q $(LIBDIR)\Filter\Util || rmdir /s $(LIBDIR)\Filter
160d5bf4 1339 -if exist $(LIBDIR)\Digest\MD5 rmdir /s /q $(LIBDIR)\Digest\MD5 || rmdir /s $(LIBDIR)\Digest\MD5
f70490b9 1340 -if exist $(LIBDIR)\Digest rmdir /s /q $(LIBDIR)\Digest || rmdir /s $(LIBDIR)\Digest
160d5bf4 1341 -if exist $(LIBDIR)\MIME\Base64 rmdir /s /q $(LIBDIR)\MIME\Base64 || rmdir /s $(LIBDIR)\MIME\Base64
1342 -if exist $(LIBDIR)\MIME rmdir /s /q $(LIBDIR)\MIME || rmdir /s $(LIBDIR)\MIME
a9226780 1343 -del /f $(PODDIR)\*.html
1344 -del /f $(PODDIR)\*.bat
1345 -cd ..\utils && del /f h2ph splain perlbug pl2pm c2ph h2xs perldoc \
1346 dprofpp *.bat
1347 -cd ..\x2p && del /f find2perl s2p *.bat
1348 -del /f ..\config.sh ..\splittree.pl perlmain.c dlutils.c config.h.new
1349 -del /f $(CONFIGPM)
1350 -del /f bin\*.bat
1351 -cd $(EXTDIR) && del /s *$(a) *.def *.map *.pdb *.bs Makefile *$(o) \
1352 pm_to_blib
1353 -if exist $(AUTODIR) rmdir /s /q $(AUTODIR) || rmdir /s $(AUTODIR)
1354 -if exist $(COREDIR) rmdir /s /q $(COREDIR) || rmdir /s $(COREDIR)
1355
1356install : all installbare installhtml
1357
1358installbare : $(RIGHTMAKE) utils
1359 $(PERLEXE) ..\installperl
1360 if exist $(WPERLEXE) $(XCOPY) $(WPERLEXE) $(INST_BIN)\*.*
1361 $(XCOPY) $(GLOBEXE) $(INST_BIN)\*.*
1362 $(XCOPY) bin\*.bat $(INST_SCRIPT)\*.*
1363
1364installhtml : doc
1365 $(RCOPY) html\*.* $(INST_HTML)\*.*
1366
1367inst_lib : $(CONFIGPM)
24c23ab4 1368 copy splittree.pl ..
a9226780 1369 $(MINIPERL) -I..\lib ..\splittree.pl "../LIB" $(AUTODIR)
1370 $(RCOPY) ..\lib $(INST_LIB)\*.*
1371
1372minitest : $(MINIPERL) $(GLOBEXE) $(CONFIGPM) utils
1373 $(XCOPY) $(MINIPERL) ..\t\perl.exe
1374.IF "$(CCTYPE)" == "BORLAND"
1375 $(XCOPY) $(GLOBBAT) ..\t\$(NULL)
1376.ELSE
1377 $(XCOPY) $(GLOBEXE) ..\t\$(NULL)
1378.ENDIF
1379 attrib -r ..\t\*.*
1380 copy test ..\t
1381 cd ..\t && \
1382 $(MINIPERL) -I..\lib test base/*.t comp/*.t cmd/*.t io/*.t op/*.t pragma/*.t
1383
1384test-prep : all utils
1385 $(XCOPY) $(PERLEXE) ..\t\$(NULL)
1386 $(XCOPY) $(PERLDLL) ..\t\$(NULL)
1387.IF "$(CCTYPE)" == "BORLAND"
1388 $(XCOPY) $(GLOBBAT) ..\t\$(NULL)
1389.ELSE
1390 $(XCOPY) $(GLOBEXE) ..\t\$(NULL)
1391.ENDIF
1392
1393test : $(RIGHTMAKE) test-prep
1394 cd ..\t && $(PERLEXE) -I..\lib harness
1395
1396test-notty : test-prep
1397 set PERL_SKIP_TTY_TEST=1 && \
1398 cd ..\t && $(PERLEXE) -I.\lib harness
1399
1400test-wide : test-prep
1401 set HARNESS_PERL_SWITCHES=-C && \
1402 cd ..\t && $(PERLEXE) -I..\lib harness
1403
1404test-wide-notty : test-prep
1405 set PERL_SKIP_TTY_TEST=1 && \
1406 set HARNESS_PERL_SWITCHES=-C && \
1407 cd ..\t && $(PERLEXE) -I..\lib harness
1408
24c23ab4 1409clean :
a9226780 1410 -@erase miniperlmain$(o)
1411 -@erase $(MINIPERL)
1412 -@erase perlglob$(o)
1413 -@erase perlmain$(o)
1414 -@erase config.w32
1415 -@erase /f config.h
1416 -@erase $(GLOBEXE)
1417 -@erase $(PERLEXE)
1418 -@erase $(WPERLEXE)
1419 -@erase $(PERLDLL)
1420 -@erase $(CORE_OBJ)
1421 -if exist $(MINIDIR) rmdir /s /q $(MINIDIR) || rmdir /s $(MINIDIR)
1422 -@erase $(WIN32_OBJ)
1423 -@erase $(DLL_OBJ)
1424 -@erase $(X2P_OBJ)
1425 -@erase ..\*$(o) ..\*$(a) ..\*.exp *$(o) *$(a) *.exp *.res
1426 -@erase ..\t\*.exe ..\t\*.dll ..\t\*.bat
1427 -@erase ..\x2p\*.exe ..\x2p\*.bat
1428 -@erase *.ilk
1429 -@erase *.pdb
1430
1431# Handy way to run perlbug -ok without having to install and run the
1432# installed perlbug. We don't re-run the tests here - we trust the user.
1433# Please *don't* use this unless all tests pass.
1434# If you want to report test failures, use "dmake nok" instead.
1435ok: utils
1436 $(PERLEXE) -I..\lib ..\utils\perlbug -ok -s "(UNINSTALLED)"
1437
1438okfile: utils
1439 $(PERLEXE) -I..\lib ..\utils\perlbug -ok -s "(UNINSTALLED)" -F perl.ok
24c23ab4 1440
a9226780 1441nok: utils
1442 $(PERLEXE) -I..\lib ..\utils\perlbug -nok -s "(UNINSTALLED)"
24c23ab4 1443
a9226780 1444nokfile: utils
1445 $(PERLEXE) -I..\lib ..\utils\perlbug -nok -s "(UNINSTALLED)" -F perl.nok