This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
update TOC and perldelta references
[perl5.git] / win32 / makefile.mk
CommitLineData
1e71036e
JH
1#
2# Makefile to build perl on Windows NT using DMAKE.
3# Supported compilers:
a7d225ec
SH
4# Visual C++ 2.0 or later
5# Borland C++ 5.02 or later
6# MinGW with gcc-2.95.2 or later
c623ac67 7# MS Platform SDK 64-bit compiler and tools **experimental**
1e71036e
JH
8#
9# This is set up to build a perl.exe that runs off a shared library
cb47d8a5 10# (perl513.dll). Also makes individual DLLs for the XS extensions.
1e71036e
JH
11#
12
13##
14## Make sure you read README.win32 *before* you mess with anything here!
15##
16
17##
18## Build configuration. Edit the values below to suit your needs.
19##
20
21#
22# Set these to wherever you want "dmake install" to put your
23# newly built perl.
24#
25INST_DRV *= c:
26INST_TOP *= $(INST_DRV)\perl
27
28#
b86e806e
JD
29# Uncomment if you want to build a 32-bit Perl using a 32-bit compiler
30# on a 64-bit version of Windows.
31#WIN64 *= undef
32
33#
1e71036e
JH
34# Comment this out if you DON'T want your perl installation to be versioned.
35# This means that the new installation will overwrite any files from the
36# old installation at the same INST_TOP location. Leaving it enabled is
37# the safest route, as perl adds the extra version directory to all the
38# locations it installs files to. If you disable it, an alternative
39# versioned installation can be obtained by setting INST_TOP above to a
40# path that includes an arbitrary version string.
41#
75584f80 42#INST_VER *= \5.13.3
1e71036e
JH
43
44#
45# Comment this out if you DON'T want your perl installation to have
46# architecture specific components. This means that architecture-
47# specific files will be installed along with the architecture-neutral
48# files. Leaving it enabled is safer and more flexible, in case you
49# want to build multiple flavors of perl and install them together in
50# the same location. Commenting it out gives you a simpler
51# installation that is easier to understand for beginners.
52#
ec25c072 53#INST_ARCH *= \$(ARCHNAME)
1e71036e
JH
54
55#
7ada00a0
SH
56# Uncomment this if you want perl to run
57# $Config{sitelibexp}\sitecustomize.pl
58# before anything else. This script can then be set up, for example,
59# to add additional entries to @INC.
60#
61#USE_SITECUST *= define
62
63#
1e71036e 64# uncomment to enable multiple interpreters. This is need for fork()
2cbbe5a1 65# emulation and for thread support.
1e71036e
JH
66#
67USE_MULTI *= define
68
69#
2cbbe5a1
NIS
70# Interpreter cloning/threads; now reasonably complete.
71# This should be enabled to get the fork() emulation.
72# This needs USE_MULTI above.
1e71036e
JH
73#
74USE_ITHREADS *= define
75
76#
77# uncomment to enable the implicit "host" layer for all system calls
2cbbe5a1
NIS
78# made by perl. This needs USE_MULTI above.
79# This is also needed to get fork().
1e71036e
JH
80#
81USE_IMP_SYS *= define
82
83#
2cbbe5a1
NIS
84# Comment out next assign to disable perl's I/O subsystem and use compiler's
85# stdio for IO - depending on your compiler vendor and run time library you may
86# then get a number of fails from make test i.e. bugs - complain to them not us ;-).
87# You will also be unable to take full advantage of perl5.8's support for multiple
88# encodings and may see lower IO performance. You have been warned.
4a9d6100
GS
89USE_PERLIO *= define
90
91#
92# Comment this out if you don't want to enable large file support for
93# some reason. Should normally only be changed to maintain compatibility
94# with an older release of perl.
bdb4cb88 95USE_LARGE_FILES *= define
1e71036e
JH
96
97#
1e71036e
JH
98# uncomment exactly one of the following
99#
100# Visual C++ 2.x
101#CCTYPE *= MSVC20
102# Visual C++ > 2.x and < 6.x
103#CCTYPE *= MSVC
1c847d4b 104# Visual C++ 6.x (aka Visual C++ 98)
e2736246 105#CCTYPE *= MSVC60
1c847d4b 106# Visual C++ Toolkit 2003 (aka Visual C++ 7.x) (free command-line tools)
da2c7419 107#CCTYPE *= MSVC70FREE
1c847d4b 108# Visual C++ .NET 2003 (aka Visual C++ 7.x) (full version)
da2c7419 109#CCTYPE *= MSVC70
1c847d4b
SH
110# Visual C++ 2005 Express Edition (aka Visual C++ 8.x) (free version)
111#CCTYPE *= MSVC80FREE
112# Visual C++ 2005 (aka Visual C++ 8.x) (full version)
113#CCTYPE *= MSVC80
4a3cf07b
SH
114# Visual C++ 2008 Express Edition (aka Visual C++ 9.x) (free version)
115#CCTYPE *= MSVC90FREE
116# Visual C++ 2008 (aka Visual C++ 9.x) (full version)
117#CCTYPE *= MSVC90
1e71036e
JH
118# Borland 5.02 or later
119#CCTYPE *= BORLAND
fa58a56f 120# MinGW or mingw-w64 with gcc-2.95.2 or later
e2736246 121CCTYPE *= GCC
1e71036e
JH
122
123#
124# uncomment this if your Borland compiler is older than v5.4.
bdb4cb88 125#BCCOLD *= define
1e71036e
JH
126#
127# uncomment this if you want to use Borland's VCL as your CRT
bdb4cb88 128#BCCVCL *= define
1e71036e
JH
129
130#
131# uncomment this if you are compiling under Windows 95/98 and command.com
132# (not needed if you're running under 4DOS/NT 6.01 or later)
133#IS_WIN95 *= define
134
135#
136# uncomment next line if you want debug version of perl (big,slow)
137# If not enabled, we automatically try to use maximum optimization
138# with all compilers that are known to have a working optimizer.
139#
2cbbe5a1 140#CFG *= Debug
1e71036e
JH
141
142#
143# uncomment to enable use of PerlCRT.DLL when using the Visual C compiler.
144# It has patches that fix known bugs in older versions of MSVCRT.DLL.
145# This currently requires VC 5.0 with Service Pack 3 or later.
468f45d5 146# Get it from CPAN at http://www.cpan.org/authors/id/D/DO/DOUGL/
1e71036e
JH
147# and follow the directions in the package to install.
148#
149# Not recommended if you have VC 6.x and you're not running Windows 9x.
150#
151#USE_PERLCRT *= define
152
153#
154# uncomment to enable linking with setargv.obj under the Visual C
155# compiler. Setting this options enables perl to expand wildcards in
156# arguments, but it may be harder to use alternate methods like
157# File::DosGlob that are more powerful. This option is supported only with
158# Visual C.
159#
160#USE_SETARGV *= define
161
162#
4ace4afb
SH
163# if you want to have the crypt() builtin function implemented, leave this or
164# CRYPT_LIB uncommented. The fcrypt.c file named here contains a suitable
165# version of des_fcrypt().
1e71036e 166#
4ace4afb 167CRYPT_SRC *= fcrypt.c
1e71036e
JH
168
169#
170# if you didn't set CRYPT_SRC and if you have des_fcrypt() available in a
171# library, uncomment this, and make sure the library exists (see README.win32)
172# Specify the full pathname of the library.
173#
174#CRYPT_LIB *= fcrypt.lib
175
176#
177# set this if you wish to use perl's malloc
178# WARNING: Turning this on/off WILL break binary compatibility with extensions
179# you may have compiled with/without it. Be prepared to recompile all
180# extensions if you change the default. Currently, this cannot be enabled
181# if you ask for USE_IMP_SYS above.
182#
c800dd8b 183#PERL_MALLOC *= define
8bcd5811
VK
184
185#
186# set this to enable debugging mstats
187# This must be enabled to use the Devel::Peek::mstat() function. This cannot
188# be enabled without PERL_MALLOC as well.
189#
646e33b6 190#DEBUG_MSTATS *= define
1e71036e
JH
191
192#
ed2eab3f
SH
193# set this to additionally provide a statically linked perl-static.exe.
194# Note that dynamic loading will not work with this perl, so you must
a1f2e719 195# include required modules statically using the STATIC_EXT or ALL_STATIC
cb47d8a5 196# variables below. A static library perl513s.lib will also be created.
ed2eab3f
SH
197# Ordinary perl.exe is not affected by this option.
198#
199#BUILD_STATIC *= define
200
201#
a1f2e719
VK
202# in addition to BUILD_STATIC the option ALL_STATIC makes *every*
203# extension get statically built
204# This will result in a very large perl executable, but the main purpose
205# is to have proper linking set so as to be able to create miscellaneous
206# executables with different built-in extensions
207#
208#ALL_STATIC *= define
209
210#
1e71036e
JH
211# set the install locations of the compiler include/libraries
212# Running VCVARS32.BAT is *required* when using Visual C.
213# Some versions of Visual C don't define MSVCDIR in the environment,
214# so you may have to set CCHOME explicitly (spaces in the path name should
215# not be quoted)
216#
c572eed0 217.IF "$(CCTYPE)" == "BORLAND"
8169a885 218CCHOME *= C:\Borland\BCC55
c572eed0
NIS
219.ELIF "$(CCTYPE)" == "GCC"
220CCHOME *= C:\MinGW
221.ELSE
1e71036e 222CCHOME *= $(MSVCDIR)
c572eed0 223.ENDIF
1e71036e
JH
224
225#
fa58a56f
S
226# If building with gcc-4.x.x (or x86_64-w64-mingw32-gcc-4.x.x), then
227# uncomment the following assignment to GCC_4XX, make sure that CCHOME
228# has been set correctly above, and uncomment the appropriate
229# GCCHELPERDLL line.
230# The name of the dll can change, depending upon which vendor has supplied
231# your 4.x.x compiler, and upon the values of "x".
232# (The dll will be in your mingw/bin folder, so check there if you're
233# unsure about the correct name.)
234# Without these corrections, the op/taint.t test script will fail.
235#
236#GCC_4XX *= define
237#GCCHELPERDLL *= $(CCHOME)\bin\libgcc_s_sjlj-1.dll
238#GCCHELPERDLL *= $(CCHOME)\bin\libgcc_s_dw2-1.dll
239#GCCHELPERDLL *= $(CCHOME)\bin\libgcc_s_1.dll
240
241#
242# uncomment this if you are using x86_64-w64-mingw32 cross-compiler
243# ie if your gcc executable is called 'x86_64-w64-mingw32-gcc'
244# instead of the usual 'gcc'.
245#
246#GCCCROSS *= define
247
248#
23ae7f17
S
249# Following sets $Config{incpath} and $Config{libpth}
250#
251
252.IF "$(GCCCROSS)" == "define"
253CCINCDIR *= $(CCHOME)\mingw\include
254CCLIBDIR *= $(CCHOME)\mingw\lib
255.ELSE
256CCINCDIR *= $(CCHOME)\include
257CCLIBDIR *= $(CCHOME)\lib
258.ENDIF
259
260#
1e71036e
JH
261# Additional compiler flags can be specified here.
262#
2e30e1e1 263BUILDOPT *= $(BUILDOPTEXTRA)
1e71036e
JH
264
265#
2eb87578
SH
266# Adding -DPERL_HASH_SEED_EXPLICIT will disable randomization of Perl's
267# internal hash function unless the PERL_HASH_SEED environment variable is set.
268# Alternatively, adding -DNO_HASH_SEED will completely disable the
269# randomization feature.
270# The latter is required to maintain binary compatibility with Perl 5.8.0.
271#
272#BUILDOPT += -DPERL_HASH_SEED_EXPLICIT
273#BUILDOPT += -DNO_HASH_SEED
274
275#
1e71036e
JH
276# This should normally be disabled. Adding -DPERL_POLLUTE enables support
277# for old symbols by default, at the expense of extreme pollution. You most
278# probably just want to build modules that won't compile with
279# perl Makefile.PL POLLUTE=1
280# instead of enabling this. Please report such modules to the respective
281# authors.
282#
283#BUILDOPT += -DPERL_POLLUTE
284
285#
286# This should normally be disabled. Enabling it will disable the File::Glob
287# implementation of CORE::glob.
288#
289#BUILDOPT += -DPERL_EXTERNAL_GLOB
290
291#
292# This should normally be disabled. Enabling it causes perl to read scripts
293# in text mode (which is the 5.005 behavior) and will break ByteLoader.
bdb4cb88 294#
1e71036e
JH
295#BUILDOPT += -DPERL_TEXTMODE_SCRIPTS
296
297#
298# specify semicolon-separated list of extra directories that modules will
299# look for libraries (spaces in path names need not be quoted)
300#
301EXTRALIBDIRS *=
302
303#
304# set this to point to cmd.exe (only needed if you use some
305# alternate shell that doesn't grok cmd.exe style commands)
306#
307#SHELL *= g:\winnt\system32\cmd.exe
308
309#
310# set this to your email address (perl will guess a value from
311# from your loginname and your hostname, which may not be right)
312#
313#EMAIL *=
314
315##
316## Build configuration ends.
317##
318
319##################### CHANGE THESE ONLY IF YOU MUST #####################
320
321.IF "$(CRYPT_SRC)$(CRYPT_LIB)" == ""
322D_CRYPT = undef
323.ELSE
324D_CRYPT = define
325CRYPT_FLAG = -DHAVE_DES_FCRYPT
326.ENDIF
327
1e71036e 328PERL_MALLOC *= undef
646e33b6 329DEBUG_MSTATS *= undef
1e71036e 330
7ada00a0 331USE_SITECUST *= undef
1e71036e 332USE_MULTI *= undef
1e71036e
JH
333USE_ITHREADS *= undef
334USE_IMP_SYS *= undef
335USE_PERLIO *= undef
4a9d6100 336USE_LARGE_FILES *= undef
1e71036e
JH
337USE_PERLCRT *= undef
338
646e33b6 339.IF "$(USE_IMP_SYS)" == "define"
8bcd5811 340PERL_MALLOC = undef
8bcd5811
VK
341.ENDIF
342
646e33b6
SH
343.IF "$(PERL_MALLOC)" == "undef"
344DEBUG_MSTATS = undef
8bcd5811
VK
345.ENDIF
346
347.IF "$(DEBUG_MSTATS)" == "define"
646e33b6 348BUILDOPT += -DPERL_DEBUGGING_MSTATS
c800dd8b
SH
349.ENDIF
350
66e09d83 351.IF "$(USE_IMP_SYS) $(USE_MULTI)" == "define undef"
1e71036e
JH
352USE_MULTI != define
353.ENDIF
354
66e09d83 355.IF "$(USE_ITHREADS) $(USE_MULTI)" == "define undef"
1e71036e 356USE_MULTI != define
1e71036e
JH
357.ENDIF
358
7ada00a0
SH
359.IF "$(USE_SITECUST)" == "define"
360BUILDOPT += -DUSE_SITECUSTOMIZE
361.ENDIF
362
3db8f154 363.IF "$(USE_MULTI)" != "undef"
1e71036e
JH
364BUILDOPT += -DPERL_IMPLICIT_CONTEXT
365.ENDIF
366
367.IF "$(USE_IMP_SYS)" != "undef"
368BUILDOPT += -DPERL_IMPLICIT_SYS
369.ENDIF
370
9b1007c4 371.IMPORT .IGNORE : PROCESSOR_ARCHITECTURE PROCESSOR_ARCHITEW6432 WIN64
1e71036e
JH
372
373PROCESSOR_ARCHITECTURE *= x86
374
c623ac67 375.IF "$(WIN64)" == ""
bf2a35e5
JD
376# When we are running from a 32bit cmd.exe on AMD64 then
377# PROCESSOR_ARCHITECTURE is set to x86 and PROCESSOR_ARCHITEW6432
378# is set to AMD64
c623ac67 379.IF "$(PROCESSOR_ARCHITEW6432)" != ""
e9948054 380PROCESSOR_ARCHITECTURE != $(PROCESSOR_ARCHITEW6432)
c623ac67 381WIN64 = define
bf2a35e5 382.ELIF "$(PROCESSOR_ARCHITECTURE)" == "AMD64" || "$(PROCESSOR_ARCHITECTURE)" == "IA64"
c623ac67
GS
383WIN64 = define
384.ELSE
385WIN64 = undef
386.ENDIF
387.ENDIF
388
bf2a35e5
JD
389ARCHITECTURE = $(PROCESSOR_ARCHITECTURE)
390.IF "$(ARCHITECTURE)" == "AMD64"
391ARCHITECTURE = x64
9453ddcd 392.ENDIF
bf2a35e5
JD
393.IF "$(ARCHITECTURE)" == "IA64"
394ARCHITECTURE = ia64
9453ddcd
SH
395.ENDIF
396
3db8f154 397.IF "$(USE_MULTI)" == "define"
bf2a35e5 398ARCHNAME = MSWin32-$(ARCHITECTURE)-multi
1e71036e
JH
399.ELSE
400.IF "$(USE_PERLIO)" == "define"
bf2a35e5 401ARCHNAME = MSWin32-$(ARCHITECTURE)-perlio
1e71036e 402.ELSE
bf2a35e5 403ARCHNAME = MSWin32-$(ARCHITECTURE)
1e71036e 404.ENDIF
1e71036e
JH
405.ENDIF
406
407.IF "$(USE_ITHREADS)" == "define"
408ARCHNAME !:= $(ARCHNAME)-thread
409.ENDIF
410
4a3cf07b
SH
411# Visual C++ 98, .NET 2003, 2005 and 2008 specific.
412# VC++ 6.x, 7.x, 8.x and 9.x can load DLL's on demand. Makes the test suite run
413# in about 10% less time. (The free version of 7.x can't do this, but the free
414# versions of 8.x and 9.x can.)
415.IF "$(CCTYPE)" == "MSVC60" || "$(CCTYPE)" == "MSVC70" || \
416 "$(CCTYPE)" == "MSVC80" || "$(CCTYPE)" == "MSVC80FREE" ||
417 "$(CCTYPE)" == "MSVC90" || "$(CCTYPE)" == "MSVC90FREE"
d1a8253e 418DELAYLOAD *= -DELAYLOAD:ws2_32.dll delayimp.lib
1e71036e
JH
419.ENDIF
420
4a3cf07b
SH
421# Visual C++ 2005 and 2008 (VC++ 8.x and 9.x) create manifest files for EXEs and
422# DLLs. These either need copying everywhere with the binaries, or else need
3ddd48aa
SH
423# embedding in them otherwise MSVCR80.dll or MSVCR90.dll won't be found. For
424# simplicity, embed them if they exist (and delete them afterwards so that they
425# don't get installed too).
4adc95e6
SH
426EMBED_EXE_MANI = if exist $@.manifest mt -nologo -manifest $@.manifest -outputresource:$@;1 && \
427 if exist $@.manifest del $@.manifest
428EMBED_DLL_MANI = if exist $@.manifest mt -nologo -manifest $@.manifest -outputresource:$@;2 && \
429 if exist $@.manifest del $@.manifest
c8e599d3 430
1e71036e
JH
431ARCHDIR = ..\lib\$(ARCHNAME)
432COREDIR = ..\lib\CORE
433AUTODIR = ..\lib\auto
434LIBDIR = ..\lib
435EXTDIR = ..\ext
a193a2db 436DISTDIR = ..\dist
83d5895a 437CPANDIR = ..\cpan
1e71036e
JH
438PODDIR = ..\pod
439EXTUTILSDIR = $(LIBDIR)\ExtUtils
b4a41557 440HTMLDIR = .\html
1e71036e
JH
441
442#
443INST_SCRIPT = $(INST_TOP)$(INST_VER)\bin
444INST_BIN = $(INST_SCRIPT)$(INST_ARCH)
445INST_LIB = $(INST_TOP)$(INST_VER)\lib
446INST_ARCHLIB = $(INST_LIB)$(INST_ARCH)
447INST_COREDIR = $(INST_ARCHLIB)\CORE
1e71036e
JH
448INST_HTML = $(INST_TOP)$(INST_VER)\html
449
450#
451# Programs to compile, build .lib files and link
452#
453
454.USESHELL :
455
456.IF "$(CCTYPE)" == "BORLAND"
457
458CC = bcc32
459.IF "$(BCCOLD)" != "define"
460LINK32 = ilink32
461.ELSE
462LINK32 = tlink32
463.ENDIF
ed2eab3f 464LIB32 = tlib /a /P128
1e71036e 465IMPLIB = implib -c
e54e7e92 466RSC = brcc32
1e71036e
JH
467
468#
469# Options
470#
471INCLUDES = -I$(COREDIR) -I.\include -I. -I.. -I"$(CCINCDIR)"
ba14dd9a 472#PCHFLAGS = -H -Hc -H=c:\temp\bcmoduls.pch
1e71036e
JH
473DEFINES = -DWIN32 $(CRYPT_FLAG)
474LOCDEFS = -DPERLDLL -DPERL_CORE
475SUBSYS = console
476CXX_FLAG = -P
477
478LIBC = cw32mti.lib
8169a885
SH
479
480# same libs as MSVC, except Borland doesn't have oldnames.lib
481LIBFILES = $(CRYPT_LIB) \
482 kernel32.lib user32.lib gdi32.lib winspool.lib \
483 comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib \
484 netapi32.lib uuid.lib ws2_32.lib mpr.lib winmm.lib \
4ebea3c6 485 version.lib odbc32.lib odbccp32.lib comctl32.lib \
8169a885 486 import32.lib $(LIBC)
1e71036e
JH
487
488.IF "$(CFG)" == "Debug"
489OPTIMIZE = -v -D_RTLDLL -DDEBUGGING
490LINK_DBG = -v
491.ELSE
492OPTIMIZE = -O2 -D_RTLDLL
493LINK_DBG =
494.ENDIF
495
bb275e72 496EXTRACFLAGS =
1e71036e
JH
497CFLAGS = -w -g0 -tWM -tWD $(INCLUDES) $(DEFINES) $(LOCDEFS) \
498 $(PCHFLAGS) $(OPTIMIZE)
457f4f73 499LINK_FLAGS = $(LINK_DBG) -x -L"$(INST_COREDIR)" -L"$(CCLIBDIR)" \
8169a885 500 -L"$(CCLIBDIR)\PSDK"
1e71036e
JH
501OBJOUT_FLAG = -o
502EXEOUT_FLAG = -e
503LIBOUT_FLAG =
504.IF "$(BCCOLD)" != "define"
505LINK_FLAGS += -Gn
506DEFINES += -D_MT -D__USELOCALES__ -D_WIN32_WINNT=0x0410
507.END
508.IF "$(BCCVCL)" == "define"
509LIBC = cp32mti.lib vcl.lib vcl50.lib vclx50.lib vcle50.lib
510LINK_FLAGS += -L"$(CCLIBDIR)\Release"
511.END
512
513
514.ELIF "$(CCTYPE)" == "GCC"
515
fa58a56f
S
516.IF "$(GCCCROSS)" == "define"
517ARCHPREFIX = x86_64-w64-mingw32-
518.ENDIF
519
520CC = $(ARCHPREFIX)gcc
521LINK32 = $(ARCHPREFIX)g++
522LIB32 = $(ARCHPREFIX)ar rc
523IMPLIB = $(ARCHPREFIX)dlltool
524RSC = $(ARCHPREFIX)windres
1e71036e
JH
525
526i = .i
527o = .o
528a = .a
529
530#
531# Options
532#
533
534INCLUDES = -I.\include -I. -I.. -I$(COREDIR)
535DEFINES = -DWIN32 $(CRYPT_FLAG)
fa58a56f
S
536.IF "$(WIN64)" == "define"
537DEFINES += -DWIN64 -DCONSERVATIVE
538.ENDIF
1e71036e
JH
539LOCDEFS = -DPERLDLL -DPERL_CORE
540SUBSYS = console
541CXX_FLAG = -xc++
542
679b67fe
JD
543# Current releases of MinGW 5.1.4 (as of 11-Aug-2009) will fail to link
544# correctly if -lmsvcrt is specified explicitly.
545LIBC =
546#LIBC = -lmsvcrt
1e71036e
JH
547
548# same libs as MSVC
549LIBFILES = $(CRYPT_LIB) $(LIBC) \
550 -lmoldname -lkernel32 -luser32 -lgdi32 \
551 -lwinspool -lcomdlg32 -ladvapi32 -lshell32 -lole32 \
036c1c1e 552 -loleaut32 -lnetapi32 -luuid -lws2_32 -lmpr \
4ebea3c6 553 -lwinmm -lversion -lodbc32 -lodbccp32 -lcomctl32
1e71036e
JH
554
555.IF "$(CFG)" == "Debug"
556OPTIMIZE = -g -O2 -DDEBUGGING
557LINK_DBG = -g
558.ELSE
ec25c072
SH
559OPTIMIZE = -s -O2
560LINK_DBG = -s
1e71036e
JH
561.ENDIF
562
bb275e72 563EXTRACFLAGS =
1e71036e
JH
564CFLAGS = $(INCLUDES) $(DEFINES) $(LOCDEFS) $(OPTIMIZE)
565LINK_FLAGS = $(LINK_DBG) -L"$(INST_COREDIR)" -L"$(CCLIBDIR)"
566OBJOUT_FLAG = -o
567EXEOUT_FLAG = -o
568LIBOUT_FLAG =
569
570# NOTE: we assume that GCC uses MSVCRT.DLL
46e77f11 571# See comments about PERL_MSVCRT_READFIX in the "cl" compiler section below.
654eccd5 572BUILDOPT += -fno-strict-aliasing -mms-bitfields -DPERL_MSVCRT_READFIX
1e71036e
JH
573
574.ELSE
575
576CC = cl
577LINK32 = link
578LIB32 = $(LINK32) -lib
579RSC = rc
580
581#
582# Options
583#
584
585INCLUDES = -I$(COREDIR) -I.\include -I. -I..
586#PCHFLAGS = -Fpc:\temp\vcmoduls.pch -YX
587DEFINES = -DWIN32 -D_CONSOLE -DNO_STRICT $(CRYPT_FLAG)
588LOCDEFS = -DPERLDLL -DPERL_CORE
589SUBSYS = console
a7d225ec 590CXX_FLAG = -TP -EHsc
1e71036e
JH
591
592.IF "$(USE_PERLCRT)" != "define"
593LIBC = msvcrt.lib
594.ELSE
595LIBC = PerlCRT.lib
596.ENDIF
597
1e71036e
JH
598.IF "$(CFG)" == "Debug"
599.IF "$(CCTYPE)" == "MSVC20"
600OPTIMIZE = -Od -MD -Z7 -DDEBUGGING
1e71036e 601.ELSE
c623ac67 602OPTIMIZE = -O1 -MD -Zi -DDEBUGGING
1e71036e 603.ENDIF
c623ac67 604LINK_DBG = -debug
1e71036e 605.ELSE
ec25c072
SH
606OPTIMIZE = -MD -Zi -DNDEBUG
607# we enable debug symbols in release builds also
608LINK_DBG = -debug -opt:ref,icf
609# you may want to enable this if you want COFF symbols in the executables
610# in addition to the PDB symbols. The default Dr. Watson that ships with
611# Windows can use the the former but not latter. The free WinDbg can be
612# installed to get better stack traces from just the PDB symbols, so we
613# avoid the bloat of COFF symbols by default.
614#LINK_DBG = $(LINK_DBG) -debugtype:both
d921a5fb
GS
615.IF "$(WIN64)" == "define"
616# enable Whole Program Optimizations (WPO) and Link Time Code Generation (LTCG)
617OPTIMIZE += -Ox -GL
618LINK_DBG += -ltcg
1e71036e 619.ELSE
d921a5fb
GS
620# -O1 yields smaller code, which turns out to be faster than -O2 on x86
621OPTIMIZE += -O1
622#OPTIMIZE += -O2
1e71036e 623.ENDIF
1e71036e
JH
624.ENDIF
625
c623ac67
GS
626.IF "$(WIN64)" == "define"
627DEFINES += -DWIN64 -DCONSERVATIVE
9453ddcd 628OPTIMIZE += -Wp64 -fp:precise
da2c7419 629.ENDIF
c5b31784 630
4a3cf07b
SH
631# For now, silence VC++ 8.x's and 9.x's warnings about "unsafe" CRT functions
632# and POSIX CRT function names being deprecated.
633.IF "$(CCTYPE)" == "MSVC80" || "$(CCTYPE)" == "MSVC80FREE" || \
634 "$(CCTYPE)" == "MSVC90" || "$(CCTYPE)" == "MSVC90FREE"
26a6faa8 635DEFINES += -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE
c5b31784 636.ENDIF
da2c7419 637
46e77f11
SH
638# Use the MSVCRT read() fix if the PerlCRT was not chosen, but only when using
639# VC++ 6.x or earlier. Later versions use MSVCR70.dll, MSVCR71.dll, etc, which
640# do not require the fix.
641.IF "$(CCTYPE)" == "MSVC20" || "$(CCTYPE)" == "MSVC" || "$(CCTYPE)" == "MSVC60"
c623ac67
GS
642.IF "$(USE_PERLCRT)" != "define"
643BUILDOPT += -DPERL_MSVCRT_READFIX
644.ENDIF
46e77f11 645.ENDIF
c623ac67 646
1e71036e
JH
647LIBBASEFILES = $(CRYPT_LIB) \
648 oldnames.lib kernel32.lib user32.lib gdi32.lib winspool.lib \
649 comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib \
036c1c1e 650 netapi32.lib uuid.lib ws2_32.lib mpr.lib winmm.lib \
6b1226db 651 version.lib odbc32.lib odbccp32.lib comctl32.lib
c623ac67 652
9453ddcd
SH
653# The 64 bit Platform SDK compilers contain a runtime library that doesn't
654# include the buffer overrun verification code used by the /GS switch.
655# Since the code links against libraries that are compiled with /GS, this
656# "security cookie verification" must be included via bufferoverlow.lib.
657.IF "$(WIN64)" == "define"
d5415745 658LIBBASEFILES += bufferoverflowU.lib
c623ac67 659.ENDIF
1e71036e
JH
660
661# we add LIBC here, since we may be using PerlCRT.dll
662LIBFILES = $(LIBBASEFILES) $(LIBC)
663
9453ddcd 664EXTRACFLAGS = -nologo -GF -W3
bb275e72 665CFLAGS = $(EXTRACFLAGS) $(INCLUDES) $(DEFINES) $(LOCDEFS) \
1e71036e
JH
666 $(PCHFLAGS) $(OPTIMIZE)
667LINK_FLAGS = -nologo -nodefaultlib $(LINK_DBG) \
668 -libpath:"$(INST_COREDIR)" \
669 -machine:$(PROCESSOR_ARCHITECTURE)
ed2eab3f 670LIB_FLAGS = -nologo
1e71036e
JH
671OBJOUT_FLAG = -Fo
672EXEOUT_FLAG = -Fe
673LIBOUT_FLAG = /out:
674
1e71036e
JH
675.ENDIF
676
1e71036e
JH
677CFLAGS_O = $(CFLAGS) $(BUILDOPT)
678
4ebea3c6
JD
679.IF "$(CCTYPE)" == "MSVC80" || "$(CCTYPE)" == "MSVC80FREE" || \
680 "$(CCTYPE)" == "MSVC90" || "$(CCTYPE)" == "MSVC90FREE"
5e863249 681LINK_FLAGS += "/manifestdependency:type='Win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'"
4ebea3c6
JD
682.ELSE
683RSC_FLAGS = -DINCLUDE_MANIFEST
684.ENDIF
685
686
1e71036e
JH
687# used to allow local linking flags that are not propogated into Config.pm,
688# currently unused
689# -- BKS, 12-12-1999
690PRIV_LINK_FLAGS *=
691BLINK_FLAGS = $(PRIV_LINK_FLAGS) $(LINK_FLAGS)
692
693#################### do not edit below this line #######################
694############# NO USER-SERVICEABLE PARTS BEYOND THIS POINT ##############
695
13631a73
SH
696# Some old dmakes (including Sarathy's one at
697# http://search.cpan.org/CPAN/authors/id/G/GS/GSAR/dmake-4.1pl1-win32.zip)
698# don't support logical OR (||) or logical AND (&&) in conditional
699# expressions and hence don't process this makefile correctly. Determine
700# whether this is the case so that we can give the user an error message.
701.IF 1 == 1 || 1 == 1
702NEWDMAKE = define
66e09d83 703.ELSE
13631a73 704NEWDMAKE = undef
e54e7e92
SH
705.ENDIF
706
1e71036e
JH
707o *= .obj
708a *= .lib
709
710LKPRE = INPUT (
711LKPOST = )
712
713#
714# Rules
715#
716
717.SUFFIXES : .c .i $(o) .dll $(a) .exe .rc .res
718
719.c$(o):
720 $(CC) -c $(null,$(<:d) $(NULL) -I$(<:d)) $(CFLAGS_O) $(OBJOUT_FLAG)$@ $<
721
722.c.i:
723 $(CC) -c $(null,$(<:d) $(NULL) -I$(<:d)) $(CFLAGS_O) -E $< >$@
724
725.y.c:
726 $(NOOP)
727
728$(o).dll:
729.IF "$(CCTYPE)" == "BORLAND"
730 $(LINK32) -Tpd -ap $(BLINK_FLAGS) c0d32$(o) $<,$@,,$(LIBFILES),$(*B).def
731 $(IMPLIB) $(*B).lib $@
732.ELIF "$(CCTYPE)" == "GCC"
733 $(LINK32) -o $@ $(BLINK_FLAGS) $< $(LIBFILES)
734 $(IMPLIB) --input-def $(*B).def --output-lib $(*B).a $@
735.ELSE
736 $(LINK32) -dll -subsystem:windows -implib:$(*B).lib -def:$(*B).def \
737 -out:$@ $(BLINK_FLAGS) $(LIBFILES) $< $(LIBPERL)
c8e599d3 738 $(EMBED_DLL_MANI)
1e71036e
JH
739.ENDIF
740
741.rc.res:
770c139a 742.IF "$(CCTYPE)" == "GCC"
4ebea3c6 743 $(RSC) --use-temp-file --include-dir=. --include-dir=.. -O COFF -D INCLUDE_MANIFEST -i $< -o $@
770c139a 744.ELSE
4ebea3c6 745 $(RSC) -i.. -DINCLUDE_MANIFEST $<
770c139a 746.ENDIF
1e71036e
JH
747
748#
749# various targets
750MINIPERL = ..\miniperl.exe
751MINIDIR = .\mini
752PERLEXE = ..\perl.exe
753WPERLEXE = ..\wperl.exe
ed2eab3f 754PERLEXESTATIC = ..\perl-static.exe
1e71036e 755GLOBEXE = ..\perlglob.exe
2d9d8159 756CONFIGPM = ..\lib\Config.pm ..\lib\Config_heavy.pl
1e71036e
JH
757MINIMOD = ..\lib\ExtUtils\Miniperl.pm
758X2P = ..\x2p\a2p.exe
202d1001 759GENUUDMAP = ..\generate_uudmap.exe
ed2eab3f
SH
760.IF "$(BUILD_STATIC)" == "define"
761PERLSTATIC = static
762.ELSE
763PERLSTATIC =
764.ENDIF
1e71036e 765
ca12659b 766# Unicode data files generated by mktables
3df51b85 767UNIDATAFILES = ..\lib\unicore\Decomposition.pl ..\lib\unicore\TestProp.pl \
7ebf06b3 768 ..\lib\unicore\CombiningClass.pl ..\lib\unicore\Name.pl \
3e344d15 769 ..\lib\unicore\Heavy.pl ..\lib\unicore\mktables.lst
ca12659b
NC
770
771# Directories of Unicode data files generated by mktables
27a8011f
SH
772UNIDATADIR1 = ..\lib\unicore\To
773UNIDATADIR2 = ..\lib\unicore\lib
ca12659b 774
4ebea3c6 775PERLEXE_MANIFEST= .\perlexe.manifest
3890b58f
RGS
776PERLEXE_ICO = .\perlexe.ico
777PERLEXE_RES = .\perlexe.res
778PERLDLL_RES =
779
1e71036e
JH
780# Nominate a target which causes extensions to be re-built
781# This used to be $(PERLEXE), but at worst it is the .dll that they depend
782# on and really only the interface - i.e. the .def file used to export symbols
783# from the .dll
784PERLDEP = perldll.def
785
786
787PL2BAT = bin\pl2bat.pl
788GLOBBAT = bin\perlglob.bat
789
790UTILS = \
791 ..\utils\h2ph \
792 ..\utils\splain \
793 ..\utils\dprofpp \
794 ..\utils\perlbug \
795 ..\utils\pl2pm \
796 ..\utils\c2ph \
827a599d 797 ..\utils\pstruct \
1e71036e
JH
798 ..\utils\h2xs \
799 ..\utils\perldoc \
1e71036e
JH
800 ..\utils\perlivp \
801 ..\utils\libnetcfg \
827a599d
GS
802 ..\utils\enc2xs \
803 ..\utils\piconv \
bb4e9162 804 ..\utils\config_data \
18a1cebe 805 ..\utils\corelist \
83cd6e83 806 ..\utils\cpan \
ea0e987d 807 ..\utils\xsubpp \
4b618757 808 ..\utils\prove \
291d3373 809 ..\utils\ptar \
b8669316 810 ..\utils\ptardiff \
6aaee015
RGS
811 ..\utils\cpanp-run-perl \
812 ..\utils\cpanp \
813 ..\utils\cpan2dist \
3ddf9550 814 ..\utils\shasum \
ea0e987d 815 ..\utils\instmodsh \
1e71036e
JH
816 ..\pod\pod2html \
817 ..\pod\pod2latex \
818 ..\pod\pod2man \
819 ..\pod\pod2text \
820 ..\pod\pod2usage \
821 ..\pod\podchecker \
822 ..\pod\podselect \
823 ..\x2p\find2perl \
827a599d 824 ..\x2p\psed \
1e71036e 825 ..\x2p\s2p \
1e71036e
JH
826 bin\exetype.pl \
827 bin\runperl.pl \
828 bin\pl2bat.pl \
829 bin\perlglob.pl \
830 bin\search.pl
831
832.IF "$(CCTYPE)" == "BORLAND"
833
834CFGSH_TMPL = config.bc
835CFGH_TMPL = config_H.bc
836
837.ELIF "$(CCTYPE)" == "GCC"
838
fa58a56f
S
839.IF "$(WIN64)" == "define"
840.IF "$(GCCCROSS)" == "define"
841CFGSH_TMPL = config.gc64
842CFGH_TMPL = config_H.gc64
843.ELSE
844CFGSH_TMPL = config.gc64nox
845CFGH_TMPL = config_H.gc64nox
846.ENDIF
847.ELSE
1e71036e
JH
848CFGSH_TMPL = config.gc
849CFGH_TMPL = config_H.gc
fa58a56f 850.ENDIF
b70b2c2a
VP
851PERLIMPLIB = ..\libperl513$(a)
852PERLSTATICLIB = ..\libperl513s$(a)
1e71036e
JH
853
854.ELSE
855
c623ac67
GS
856.IF "$(WIN64)" == "define"
857CFGSH_TMPL = config.vc64
858CFGH_TMPL = config_H.vc64
859.ELSE
1e71036e
JH
860CFGSH_TMPL = config.vc
861CFGH_TMPL = config_H.vc
c623ac67 862.ENDIF
1e71036e
JH
863
864.ENDIF
865
866# makedef.pl must be updated if this changes, and this should normally
867# only change when there is an incompatible revision of the public API.
cb47d8a5
JV
868PERLIMPLIB *= ..\perl513$(a)
869PERLSTATICLIB *= ..\perl513s$(a)
870PERLDLL = ..\perl513.dll
1e71036e 871
b6ed7314
YO
872XCOPY = xcopy /f /r /i /d /y
873RCOPY = xcopy /f /r /i /e /d /y
65980d94 874NOOP = @rem
1e71036e 875
1e71036e
JH
876MICROCORE_SRC = \
877 ..\av.c \
878 ..\deb.c \
879 ..\doio.c \
880 ..\doop.c \
881 ..\dump.c \
882 ..\globals.c \
883 ..\gv.c \
e1a479c5 884 ..\mro.c \
1e71036e
JH
885 ..\hv.c \
886 ..\locale.c \
a0d89a74 887 ..\mathoms.c \
1e71036e
JH
888 ..\mg.c \
889 ..\numeric.c \
890 ..\op.c \
ff6de8cd 891 ..\pad.c \
1e71036e
JH
892 ..\perl.c \
893 ..\perlapi.c \
894 ..\perly.c \
895 ..\pp.c \
896 ..\pp_ctl.c \
897 ..\pp_hot.c \
898 ..\pp_pack.c \
84d4ea48 899 ..\pp_sort.c \
1e71036e 900 ..\pp_sys.c \
10bc17b6 901 ..\reentr.c \
1e71036e
JH
902 ..\regcomp.c \
903 ..\regexec.c \
904 ..\run.c \
905 ..\scope.c \
906 ..\sv.c \
907 ..\taint.c \
908 ..\toke.c \
909 ..\universal.c \
910 ..\utf8.c \
48462a74 911 ..\util.c
1e71036e
JH
912
913EXTRACORE_SRC += perllib.c
914
915.IF "$(PERL_MALLOC)" == "define"
916EXTRACORE_SRC += ..\malloc.c
917.ENDIF
918
1e71036e 919EXTRACORE_SRC += ..\perlio.c
1e71036e
JH
920
921WIN32_SRC = \
922 .\win32.c \
1e71036e
JH
923 .\win32sck.c \
924 .\win32thread.c
925
b6d604f4
NIS
926# We need this for miniperl build unless we override canned
927# config.h #define building mini\*
928#.IF "$(USE_PERLIO)" == "define"
6ea0e807 929WIN32_SRC += .\win32io.c
b6d604f4 930#.ENDIF
6ea0e807 931
1e71036e
JH
932.IF "$(CRYPT_SRC)" != ""
933WIN32_SRC += .\$(CRYPT_SRC)
934.ENDIF
935
1e71036e
JH
936X2P_SRC = \
937 ..\x2p\a2p.c \
938 ..\x2p\hash.c \
939 ..\x2p\str.c \
940 ..\x2p\util.c \
941 ..\x2p\walk.c
942
943CORE_NOCFG_H = \
944 ..\av.h \
945 ..\cop.h \
946 ..\cv.h \
947 ..\dosish.h \
948 ..\embed.h \
949 ..\form.h \
950 ..\gv.h \
951 ..\handy.h \
952 ..\hv.h \
953 ..\iperlsys.h \
954 ..\mg.h \
955 ..\nostdio.h \
956 ..\op.h \
957 ..\opcode.h \
958 ..\perl.h \
959 ..\perlapi.h \
960 ..\perlsdio.h \
961 ..\perlsfio.h \
962 ..\perly.h \
963 ..\pp.h \
964 ..\proto.h \
cdb0f547 965 ..\regcomp.h \
1e71036e
JH
966 ..\regexp.h \
967 ..\scope.h \
968 ..\sv.h \
969 ..\thread.h \
970 ..\unixish.h \
971 ..\utf8.h \
972 ..\util.h \
973 ..\warnings.h \
974 ..\XSUB.h \
975 ..\EXTERN.h \
976 ..\perlvars.h \
977 ..\intrpvar.h \
1e71036e
JH
978 .\include\dirent.h \
979 .\include\netdb.h \
980 .\include\sys\socket.h \
981 .\win32.h
982
a148edb6 983CORE_H = $(CORE_NOCFG_H) .\config.h ..\git_version.h
1e71036e 984
202d1001 985UUDMAP_H = ..\uudmap.h
efa50c51 986BITCOUNT_H = ..\bitcount.h
202d1001 987
1e71036e
JH
988MICROCORE_OBJ = $(MICROCORE_SRC:db:+$(o))
989CORE_OBJ = $(MICROCORE_OBJ) $(EXTRACORE_SRC:db:+$(o))
990WIN32_OBJ = $(WIN32_SRC:db:+$(o))
991MINICORE_OBJ = $(MINIDIR)\{$(MICROCORE_OBJ:f) miniperlmain$(o) perlio$(o)}
ba14dd9a 992MINIWIN32_OBJ = $(MINIDIR)\{$(WIN32_OBJ:f)}
1e71036e 993MINI_OBJ = $(MINICORE_OBJ) $(MINIWIN32_OBJ)
281da5ea 994DLL_OBJ = $(DYNALOADER)
1e71036e 995X2P_OBJ = $(X2P_SRC:db:+$(o))
202d1001 996GENUUDMAP_OBJ = $(GENUUDMAP:db:+$(o))
1e71036e
JH
997
998PERLDLL_OBJ = $(CORE_OBJ)
999PERLEXE_OBJ = perlmain$(o)
ed2eab3f 1000PERLEXEST_OBJ = perlmainst$(o)
1e71036e
JH
1001
1002PERLDLL_OBJ += $(WIN32_OBJ) $(DLL_OBJ)
1003
1004.IF "$(USE_SETARGV)" != ""
1005SETARGV_OBJ = setargv$(o)
1006.ENDIF
1007
a1f2e719
VK
1008.IF "$(ALL_STATIC)" == "define"
1009# some exclusions, unfortunately, until fixed:
1010# - Win32 extension contains overlapped symbols with win32.c (BUG!)
1011# - MakeMaker isn't capable enough for SDBM_File (smaller bug)
1012# - Encode (encoding search algorithm relies on shared library?)
9788a75a 1013STATIC_EXT = * !Win32 !SDBM_File !Encode
a1f2e719
VK
1014.ELSE
1015# specify static extensions here, for example:
47ef3394 1016#STATIC_EXT = Cwd Compress/Raw/Zlib
78ff2d7b 1017STATIC_EXT = Win32CORE
a1f2e719 1018.ENDIF
1e71036e 1019
281da5ea 1020DYNALOADER = ..\DynaLoader$(o)
1e71036e 1021
1e71036e
JH
1022# vars must be separated by "\t+~\t+", since we're using the tempfile
1023# version of config_sh.pl (we were overflowing someone's buffer by
1024# trying to fit them all on the command line)
1025# -- BKS 10-17-1999
1026CFG_VARS = \
1027 INST_DRV=$(INST_DRV) ~ \
13631a73
SH
1028 INST_TOP=$(INST_TOP) ~ \
1029 INST_VER=$(INST_VER) ~ \
1e71036e
JH
1030 INST_ARCH=$(INST_ARCH) ~ \
1031 archname=$(ARCHNAME) ~ \
1032 cc=$(CC) ~ \
1033 ld=$(LINK32) ~ \
bb275e72 1034 ccflags=$(EXTRACFLAGS) $(OPTIMIZE) $(DEFINES) $(BUILDOPT) ~ \
1e71036e
JH
1035 cf_email=$(EMAIL) ~ \
1036 d_crypt=$(D_CRYPT) ~ \
1037 d_mymalloc=$(PERL_MALLOC) ~ \
1038 libs=$(LIBFILES:f) ~ \
13631a73 1039 incpath=$(CCINCDIR) ~ \
1e71036e 1040 libperl=$(PERLIMPLIB:f) ~ \
13631a73 1041 libpth=$(CCLIBDIR);$(EXTRALIBDIRS) ~ \
1e71036e
JH
1042 libc=$(LIBC) ~ \
1043 make=dmake ~ \
84c322f7
MB
1044 _o=$(o) ~ \
1045 obj_ext=$(o) ~ \
1046 _a=$(a) ~ \
1047 lib_ext=$(a) ~ \
1e71036e 1048 static_ext=$(STATIC_EXT) ~ \
7e0017d3 1049 usethreads=$(USE_ITHREADS) ~ \
1e71036e 1050 useithreads=$(USE_ITHREADS) ~ \
1e71036e
JH
1051 usemultiplicity=$(USE_MULTI) ~ \
1052 useperlio=$(USE_PERLIO) ~ \
c7dd62f6 1053 uselargefiles=$(USE_LARGE_FILES) ~ \
7ada00a0 1054 usesitecustomize=$(USE_SITECUST) ~ \
13631a73 1055 LINK_FLAGS=$(LINK_FLAGS) ~ \
1e71036e
JH
1056 optimize=$(OPTIMIZE)
1057
1058#
1059# set up targets varying between Win95 and WinNT builds
1060#
1061
1062.IF "$(IS_WIN95)" == "define"
1063MK2 = .\makefile.95
1064RIGHTMAKE = __switch_makefiles
1e71036e
JH
1065.ELSE
1066MK2 = __not_needed
1067RIGHTMAKE =
1068.ENDIF
1069
8169a885
SH
1070.IMPORT .IGNORE : SystemRoot windir
1071
1072# Don't just .IMPORT OS from the environment because dmake sets OS itself.
1073ENV_OS=$(subst,OS=, $(shell @set OS))
1074
1075.IF "$(ENV_OS)" == "Windows_NT"
1076ODBCCP32_DLL = $(SystemRoot)\system32\odbccp32.dll
1077.ELSE
1078ODBCCP32_DLL = $(windir)\system\odbccp32.dll
1079.ENDIF
1080
1487a039 1081ICWD = -I..\cpan\Cwd -I..\cpan\Cwd\lib
403f501d 1082
1e71036e
JH
1083#
1084# Top targets
1085#
1086
a148edb6
SH
1087all : CHECKDMAKE .\config.h ..\git_version.h $(GLOBEXE) $(MINIPERL) $(MK2) \
1088 $(RIGHTMAKE) $(MINIMOD) $(CONFIGPM) $(UNIDATAFILES) MakePPPort \
a34ce875 1089 $(PERLEXE) $(X2P) Extensions Extensions_nonxs $(PERLSTATIC)
1e71036e 1090
9ce5b024 1091..\regcharclass.h : ..\Porting\regcharclass.pl
e094b17e 1092 cd .. && miniperl Porting\regcharclass.pl && cd win32
9ce5b024 1093
c900f745
SH
1094regnodes : ..\regnodes.h
1095
9ce5b024
SH
1096..\regcomp$(o) : ..\regnodes.h ..\regcharclass.h
1097
1098..\regexec$(o) : ..\regnodes.h ..\regcharclass.h
1099
a148edb6
SH
1100reonly : regnodes .\config.h ..\git_version.h $(GLOBEXE) $(MINIPERL) $(MK2) \
1101 $(RIGHTMAKE) $(MINIMOD) $(CONFIGPM) $(UNIDATAFILES) $(PERLEXE) \
250c5aad
SH
1102 $(X2P) Extensions_reonly
1103
ed2eab3f
SH
1104static: $(PERLEXESTATIC)
1105
1e71036e
JH
1106#----------------------------------------------------------------
1107
1108#-------------------- BEGIN Win95 SPECIFIC ----------------------
1109
1110# this target is a jump-off point for Win95
1111# 1. it switches to the Win95-specific makefile if it exists
1112# (__do_switch_makefiles)
1113# 2. it prints a message when the Win95-specific one finishes (__done)
1114# 3. it then kills this makefile by trying to make __no_such_target
1115
1116__switch_makefiles: __do_switch_makefiles __done __no_such_target
1117
1118__do_switch_makefiles:
1119.IF "$(NOTFIRST)" != "true"
1120 if exist $(MK2) $(MAKE:s/-S//) -f $(MK2) $(MAKETARGETS) NOTFIRST=true
1121.ELSE
1122 $(NOOP)
1123.ENDIF
1124
1125.IF "$(NOTFIRST)" != "true"
1126__done:
1127 @echo Build process complete. Ignore any errors after this message.
1128 @echo Run "dmake test" to test and "dmake install" to install
1129
1130.ELSE
1131# dummy targets for Win95-specific makefile
1132
1133__done:
1134 $(NOOP)
1135
1136__no_such_target:
1137 $(NOOP)
1138
1139.ENDIF
1140
1141# This target is used to generate the new makefile (.\makefile.95) for Win95
1142
1143.\makefile.95: .\makefile.mk
1144 $(MINIPERL) genmk95.pl makefile.mk $(MK2)
1145
1146#--------------------- END Win95 SPECIFIC ---------------------
1147
1148# a blank target for when builds don't need to do certain things
1149# this target added for Win95 port but used to keep the WinNT port able to
1150# use this file
1151__not_needed:
1152 $(NOOP)
1153
13631a73
SH
1154CHECKDMAKE :
1155.IF "$(NEWDMAKE)" == "define"
1156 $(NOOP)
1157.ELSE
1158 @echo Your dmake doesn't support ^|^| or ^&^& in conditional expressions.
1159 @echo Please get the latest dmake from http://search.cpan.org/dist/dmake/
1160 @exit 1
1161.ENDIF
1162
1e71036e
JH
1163$(GLOBEXE) : perlglob$(o)
1164.IF "$(CCTYPE)" == "BORLAND"
1165 $(CC) -c -w -v -tWM -I"$(CCINCDIR)" perlglob.c
1166 $(LINK32) -Tpe -ap $(BLINK_FLAGS) c0x32$(o) perlglob$(o) \
1167 "$(CCLIBDIR)\32BIT\wildargs$(o)",$@,,import32.lib cw32mt.lib,
1168.ELIF "$(CCTYPE)" == "GCC"
1169 $(LINK32) $(BLINK_FLAGS) -mconsole -o $@ perlglob$(o) $(LIBFILES)
1170.ELSE
1171 $(LINK32) $(BLINK_FLAGS) $(LIBFILES) -out:$@ -subsystem:$(SUBSYS) \
1172 perlglob$(o) setargv$(o)
c8e599d3 1173 $(EMBED_EXE_MANI)
1e71036e
JH
1174.ENDIF
1175
1176perlglob$(o) : perlglob.c
1177
1178config.w32 : $(CFGSH_TMPL)
1179 copy $(CFGSH_TMPL) config.w32
1180
1181.\config.h : $(CFGH_TMPL) $(CORE_NOCFG_H)
1182 -del /f config.h
1183 copy $(CFGH_TMPL) config.h
1184
fcd65f8d 1185..\git_version.h : $(MINIPERL) ..\make_patchnum.pl
16ad9bfa 1186 cd .. && miniperl -Ilib make_patchnum.pl
a148edb6 1187
931482b7
NC
1188# make sure that we recompile perl.c if the git version changes
1189..\perl$(o) : ..\git_version.h
a148edb6 1190
1e71036e
JH
1191..\config.sh : config.w32 $(MINIPERL) config_sh.PL FindExt.pm
1192 $(MINIPERL) -I..\lib config_sh.PL --cfgsh-option-file \
1193 $(mktmp $(CFG_VARS)) config.w32 > ..\config.sh
1194
76febb1c
SH
1195# this target is for when changes to the main config.sh happen.
1196# edit config.gc, then make perl using GCC in a minimal configuration (i.e.
1197# with MULTI, ITHREADS, IMP_SYS, LARGE_FILES, PERLIO and CRYPT off), then make
1198# this target to regenerate config_H.gc.
1199# unfortunately, some further manual editing is also then required to restore all
1200# the special _MSC_VER handling that is otherwise lost.
1201# repeat for config.bc and config_H.bc (using BORLAND), except that there is no
1202# _MSC_VER stuff in that case.
1e71036e 1203regen_config_h:
76febb1c 1204 $(MINIPERL) -I..\lib config_sh.PL --cfgsh-option-file $(mktmp $(CFG_VARS)) \
1e71036e 1205 $(CFGSH_TMPL) > ..\config.sh
4e73d6a4 1206 $(MINIPERL) -I..\lib ..\configpm --chdir=..
1e71036e 1207 -del /f $(CFGH_TMPL)
38cd195c 1208 -$(MINIPERL) -I..\lib $(ICWD) config_h.PL "INST_VER=$(INST_VER)"
1e71036e
JH
1209 rename config.h $(CFGH_TMPL)
1210
1211$(CONFIGPM) : $(MINIPERL) ..\config.sh config_h.PL ..\minimod.pl
4e73d6a4 1212 $(MINIPERL) -I..\lib ..\configpm --chdir=..
1e71036e
JH
1213 if exist lib\* $(RCOPY) lib\*.* ..\lib\$(NULL)
1214 $(XCOPY) ..\*.h $(COREDIR)\*.*
1215 $(XCOPY) *.h $(COREDIR)\*.*
1216 $(XCOPY) ..\ext\re\re.pm $(LIBDIR)\*.*
1217 $(RCOPY) include $(COREDIR)\*.*
38cd195c 1218 $(MINIPERL) -I..\lib $(ICWD) config_h.PL "INST_VER=$(INST_VER)" \
1e71036e
JH
1219 || $(MAKE) $(MAKEMACROS) $(CONFIGPM) $(MAKEFILE)
1220
1221$(MINIPERL) : $(MINIDIR) $(MINI_OBJ) $(CRTIPMLIBS)
1222.IF "$(CCTYPE)" == "BORLAND"
8169a885
SH
1223 if not exist $(CCLIBDIR)\PSDK\odbccp32.lib \
1224 cd $(CCLIBDIR)\PSDK && implib odbccp32.lib $(ODBCCP32_DLL)
1e71036e 1225 $(LINK32) -Tpe -ap $(BLINK_FLAGS) \
13631a73 1226 @$(mktmp c0x32$(o) $(MINI_OBJ),$@,,$(LIBFILES),)
1e71036e
JH
1227.ELIF "$(CCTYPE)" == "GCC"
1228 $(LINK32) -v -mconsole -o $@ $(BLINK_FLAGS) \
13631a73 1229 $(mktmp $(LKPRE) $(MINI_OBJ) $(LIBFILES) $(LKPOST))
1e71036e 1230.ELSE
78d58004 1231 $(LINK32) -subsystem:console -out:$@ $(BLINK_FLAGS) \
13631a73 1232 @$(mktmp $(LIBFILES) $(MINI_OBJ))
c8e599d3 1233 $(EMBED_EXE_MANI)
1e71036e
JH
1234.ENDIF
1235
1236$(MINIDIR) :
1237 if not exist "$(MINIDIR)" mkdir "$(MINIDIR)"
1238
1239$(MINICORE_OBJ) : $(CORE_NOCFG_H)
8c4561fb 1240 $(CC) -c $(CFLAGS) -DPERL_EXTERNAL_GLOB -DPERL_IS_MINIPERL $(OBJOUT_FLAG)$@ ..\$(*B).c
1e71036e
JH
1241
1242$(MINIWIN32_OBJ) : $(CORE_NOCFG_H)
1243 $(CC) -c $(CFLAGS) $(OBJOUT_FLAG)$@ $(*B).c
1244
1245# -DPERL_IMPLICIT_SYS needs C++ for perllib.c
1246# rules wrapped in .IFs break Win9X build (we end up with unbalanced []s unless
1247# unless the .IF is true), so instead we use a .ELSE with the default.
1248# This is the only file that depends on perlhost.h, vmem.h, and vdir.h
1249
1250perllib$(o) : perllib.c .\perlhost.h .\vdir.h .\vmem.h
acfe0abc 1251.IF "$(USE_IMP_SYS)" == "define"
322fd642 1252 $(CC) -c -I. $(CFLAGS_O) $(CXX_FLAG) $(OBJOUT_FLAG)$@ perllib.c
1e71036e 1253.ELSE
322fd642 1254 $(CC) -c -I. $(CFLAGS_O) $(OBJOUT_FLAG)$@ perllib.c
1e71036e
JH
1255.ENDIF
1256
1257# 1. we don't want to rebuild miniperl.exe when config.h changes
1258# 2. we don't want to rebuild miniperl.exe with non-default config.h
931482b7 1259# 3. we can't have miniperl.exe depend on git_version.h, as miniperl creates it
1e71036e
JH
1260$(MINI_OBJ) : $(CORE_NOCFG_H)
1261
1262$(WIN32_OBJ) : $(CORE_H)
9848074e 1263
1e71036e 1264$(CORE_OBJ) : $(CORE_H)
9848074e 1265
1e71036e 1266$(DLL_OBJ) : $(CORE_H)
9848074e 1267
1e71036e
JH
1268$(X2P_OBJ) : $(CORE_H)
1269
c6d234b8
NC
1270perldll.def : $(MINIPERL) $(CONFIGPM) ..\global.sym ..\pp.sym ..\makedef.pl create_perllibst_h.pl
1271 $(MINIPERL) -I..\lib create_perllibst_h.pl
c1effa61 1272 $(MINIPERL) -I..\lib -w ..\makedef.pl PLATFORM=win32 $(OPTIMIZE) $(DEFINES) \
1e71036e
JH
1273 $(BUILDOPT) CCTYPE=$(CCTYPE) > perldll.def
1274
d2b25974 1275$(PERLDLL): perldll.def $(PERLDLL_OBJ) $(PERLDLL_RES) Extensions_static
1e71036e
JH
1276.IF "$(CCTYPE)" == "BORLAND"
1277 $(LINK32) -Tpd -ap $(BLINK_FLAGS) \
13631a73
SH
1278 @$(mktmp c0d32$(o) $(PERLDLL_OBJ),$@,, \
1279 $(shell @type Extensions_static) $(LIBFILES),perldll.def)
1e71036e
JH
1280 $(IMPLIB) $*.lib $@
1281.ELIF "$(CCTYPE)" == "GCC"
1282 $(LINK32) -mdll -o $@ -Wl,--base-file -Wl,perl.base $(BLINK_FLAGS) \
13631a73
SH
1283 $(mktmp $(LKPRE) $(PERLDLL_OBJ) \
1284 $(shell @type Extensions_static) \
1285 $(LIBFILES) $(LKPOST))
fa58a56f 1286 $(IMPLIB) --output-lib $(PERLIMPLIB) \
1e71036e
JH
1287 --dllname $(PERLDLL:b).dll \
1288 --def perldll.def \
1289 --base-file perl.base \
1290 --output-exp perl.exp
1291 $(LINK32) -mdll -o $@ $(BLINK_FLAGS) \
13631a73
SH
1292 $(mktmp $(LKPRE) $(PERLDLL_OBJ) \
1293 $(shell @type Extensions_static) \
1294 $(LIBFILES) perl.exp $(LKPOST))
1e71036e 1295.ELSE
78d58004 1296 $(LINK32) -dll -def:perldll.def -out:$@ $(BLINK_FLAGS) \
9e7cf449 1297 @Extensions_static \
78d58004 1298 @$(mktmp -base:0x28000000 $(DELAYLOAD) $(LIBFILES) \
13631a73 1299 $(PERLDLL_RES) $(PERLDLL_OBJ))
c8e599d3 1300 $(EMBED_DLL_MANI)
1e71036e
JH
1301.ENDIF
1302 $(XCOPY) $(PERLIMPLIB) $(COREDIR)
1303
ed2eab3f
SH
1304$(PERLSTATICLIB): Extensions_static
1305.IF "$(CCTYPE)" == "BORLAND"
1306 $(LIB32) $(LIB_FLAGS) $@ \
13631a73
SH
1307 @$(mktmp $(shell @type Extensions_static) \
1308 $(PERLDLL_OBJ))
ed2eab3f 1309.ELIF "$(CCTYPE)" == "GCC"
df06d623
SH
1310# XXX: It would be nice if MinGW's ar accepted a temporary file, but this
1311# doesn't seem to work:
1312# $(LIB32) $(LIB_FLAGS) $@ \
13631a73
SH
1313# $(mktmp $(LKPRE) $(shell @type Extensions_static) \
1314# $(PERLDLL_OBJ) $(LKPOST))
df06d623 1315 $(LIB32) $(LIB_FLAGS) $@ \
13631a73
SH
1316 $(shell @type Extensions_static) \
1317 $(PERLDLL_OBJ)
ed2eab3f
SH
1318.ELSE
1319 $(LIB32) $(LIB_FLAGS) -out:$@ @Extensions_static \
13631a73 1320 @$(mktmp $(PERLDLL_OBJ))
ed2eab3f
SH
1321.ENDIF
1322 $(XCOPY) $(PERLSTATICLIB) $(COREDIR)
d2b25974 1323
4ebea3c6 1324$(PERLEXE_RES): perlexe.rc $(PERLEXE_MANIFEST) $(PERLEXE_ICO)
e84ac4e2 1325
1e71036e
JH
1326$(MINIMOD) : $(MINIPERL) ..\minimod.pl
1327 cd .. && miniperl minimod.pl > lib\ExtUtils\Miniperl.pm
1328
1329..\x2p\a2p$(o) : ..\x2p\a2p.c
1330 $(CC) -I..\x2p $(CFLAGS) $(OBJOUT_FLAG)$@ -c ..\x2p\a2p.c
1331
1332..\x2p\hash$(o) : ..\x2p\hash.c
1333 $(CC) -I..\x2p $(CFLAGS) $(OBJOUT_FLAG)$@ -c ..\x2p\hash.c
1334
1335..\x2p\str$(o) : ..\x2p\str.c
1336 $(CC) -I..\x2p $(CFLAGS) $(OBJOUT_FLAG)$@ -c ..\x2p\str.c
1337
1338..\x2p\util$(o) : ..\x2p\util.c
1339 $(CC) -I..\x2p $(CFLAGS) $(OBJOUT_FLAG)$@ -c ..\x2p\util.c
1340
1341..\x2p\walk$(o) : ..\x2p\walk.c
1342 $(CC) -I..\x2p $(CFLAGS) $(OBJOUT_FLAG)$@ -c ..\x2p\walk.c
1343
403f501d 1344$(X2P) : $(MINIPERL) $(X2P_OBJ) Extensions
c1effa61
NC
1345 $(MINIPERL) -I..\lib ..\x2p\find2perl.PL
1346 $(MINIPERL) -I..\lib ..\x2p\s2p.PL
1e71036e
JH
1347.IF "$(CCTYPE)" == "BORLAND"
1348 $(LINK32) -Tpe -ap $(BLINK_FLAGS) \
13631a73 1349 @$(mktmp c0x32$(o) $(X2P_OBJ),$@,,$(LIBFILES),)
1e71036e
JH
1350.ELIF "$(CCTYPE)" == "GCC"
1351 $(LINK32) -v -o $@ $(BLINK_FLAGS) \
13631a73 1352 $(mktmp $(LKPRE) $(X2P_OBJ) $(LIBFILES) $(LKPOST))
1e71036e 1353.ELSE
78d58004 1354 $(LINK32) -subsystem:console -out:$@ $(BLINK_FLAGS) \
13631a73 1355 @$(mktmp $(LIBFILES) $(X2P_OBJ))
c8e599d3 1356 $(EMBED_EXE_MANI)
1e71036e
JH
1357.ENDIF
1358
efa50c51 1359$(MINIDIR)\globals$(o) : $(UUDMAP_H) $(BITCOUNT_H)
9444d213 1360
efa50c51
NC
1361$(UUDMAP_H) $(BITCOUNT_H) : $(GENUUDMAP)
1362 $(GENUUDMAP) $(UUDMAP_H) $(BITCOUNT_H)
9444d213 1363
202d1001 1364$(GENUUDMAP) : $(GENUUDMAP_OBJ)
9444d213
NC
1365.IF "$(CCTYPE)" == "BORLAND"
1366 $(LINK32) -Tpe -ap $(BLINK_FLAGS) \
13631a73 1367 @$(mktmp c0x32$(o) $(GENUUDMAP_OBJ),$@,,$(LIBFILES),)
9444d213
NC
1368.ELIF "$(CCTYPE)" == "GCC"
1369 $(LINK32) -v -o $@ $(BLINK_FLAGS) \
13631a73 1370 $(mktmp $(LKPRE) $(GENUUDMAP_OBJ) $(LIBFILES) $(LKPOST))
9444d213
NC
1371.ELSE
1372 $(LINK32) -subsystem:console -out:$@ $(BLINK_FLAGS) \
13631a73 1373 @$(mktmp $(LIBFILES) $(GENUUDMAP_OBJ))
202d1001 1374 $(EMBED_EXE_MANI)
9444d213
NC
1375.ENDIF
1376
1e71036e
JH
1377perlmain.c : runperl.c
1378 copy runperl.c perlmain.c
1379
1380perlmain$(o) : perlmain.c
88c9158a 1381 $(CC) $(CFLAGS_O:s,-DPERLDLL,-UPERLDLL,) $(OBJOUT_FLAG)$@ -c perlmain.c
1e71036e 1382
ed2eab3f
SH
1383perlmainst.c : runperl.c
1384 copy runperl.c perlmainst.c
1385
1386perlmainst$(o) : perlmainst.c
88c9158a 1387 $(CC) $(CFLAGS_O) $(OBJOUT_FLAG)$@ -c perlmainst.c
ed2eab3f 1388
931482b7 1389$(PERLEXE): $(PERLDLL) $(CONFIGPM) $(PERLEXE_OBJ) $(PERLEXE_RES)
1e71036e
JH
1390.IF "$(CCTYPE)" == "BORLAND"
1391 $(LINK32) -Tpe -ap $(BLINK_FLAGS) \
13631a73
SH
1392 @$(mktmp c0x32$(o) $(PERLEXE_OBJ),$@,, \
1393 $(PERLIMPLIB) $(LIBFILES),,$(PERLEXE_RES))
1e71036e
JH
1394.ELIF "$(CCTYPE)" == "GCC"
1395 $(LINK32) -mconsole -o $@ $(BLINK_FLAGS) \
f721bdf3 1396 $(PERLEXE_OBJ) $(PERLEXE_RES) $(PERLIMPLIB) $(LIBFILES)
1e71036e
JH
1397.ELSE
1398 $(LINK32) -subsystem:console -out:$@ -stack:0x1000000 $(BLINK_FLAGS) \
1399 $(LIBFILES) $(PERLEXE_OBJ) $(SETARGV_OBJ) $(PERLIMPLIB) $(PERLEXE_RES)
c8e599d3 1400 $(EMBED_EXE_MANI)
1e71036e
JH
1401.ENDIF
1402 copy $(PERLEXE) $(WPERLEXE)
1403 $(MINIPERL) -I..\lib bin\exetype.pl $(WPERLEXE) WINDOWS
1e71036e 1404
931482b7 1405$(PERLEXESTATIC): $(PERLSTATICLIB) $(CONFIGPM) $(PERLEXEST_OBJ) $(PERLEXE_RES)
ed2eab3f
SH
1406.IF "$(CCTYPE)" == "BORLAND"
1407 $(LINK32) -Tpe -ap $(BLINK_FLAGS) \
13631a73
SH
1408 @$(mktmp c0x32$(o) $(PERLEXEST_OBJ),$@,, \
1409 $(shell @type Extensions_static) $(PERLSTATICLIB) $(LIBFILES),, \
1410 $(PERLEXE_RES))
ed2eab3f
SH
1411.ELIF "$(CCTYPE)" == "GCC"
1412 $(LINK32) -mconsole -o $@ $(BLINK_FLAGS) \
13631a73
SH
1413 $(mktmp $(LKPRE) $(shell @type Extensions_static) \
1414 $(PERLSTATICLIB) $(LIBFILES) $(PERLEXEST_OBJ) \
1415 $(PERLEXE_RES) $(LKPOST))
ed2eab3f
SH
1416.ELSE
1417 $(LINK32) -subsystem:console -out:$@ -stack:0x1000000 $(BLINK_FLAGS) \
a1f2e719 1418 @Extensions_static $(PERLSTATICLIB) /PDB:NONE \
ed2eab3f
SH
1419 $(LIBFILES) $(PERLEXEST_OBJ) $(SETARGV_OBJ) $(PERLEXE_RES)
1420 $(EMBED_EXE_MANI)
1421.ENDIF
1422
d1a21686 1423MakePPPort: $(MINIPERL) $(CONFIGPM) Extensions_nonxs
403f501d 1424 $(MINIPERL) -I..\lib $(ICWD) ..\mkppport
42e07562 1425
9dcb9602 1426#-------------------------------------------------------------------------------
281da5ea 1427# There's no direct way to mark a dependency on
6afd19bc 1428# DynaLoader.pm, so this will have to do
281da5ea 1429Extensions : ..\make_ext.pl $(PERLDEP) $(CONFIGPM) $(DYNALOADER)
250c5aad 1430 $(XCOPY) ..\*.h $(COREDIR)\*.*
a193a2db 1431 $(MINIPERL) -I..\lib ..\make_ext.pl "MAKE=$(MAKE)" --dir=$(CPANDIR) --dir=$(DISTDIR) --dir=$(EXTDIR) --dynamic
d2b25974 1432
281da5ea 1433Extensions_reonly : ..\make_ext.pl $(PERLDEP) $(CONFIGPM) $(DYNALOADER)
250c5aad 1434 $(XCOPY) ..\*.h $(COREDIR)\*.*
a193a2db 1435 $(MINIPERL) -I..\lib ..\make_ext.pl "MAKE=$(MAKE)" --dir=$(CPANDIR) --dir=$(DISTDIR) --dir=$(EXTDIR) --dynamic +re
250c5aad 1436
286d62c2 1437Extensions_static : ..\make_ext.pl list_static_libs.pl $(PERLDEP) $(CONFIGPM)
250c5aad 1438 $(XCOPY) ..\*.h $(COREDIR)\*.*
a193a2db 1439 $(MINIPERL) -I..\lib ..\make_ext.pl "MAKE=$(MAKE)" --dir=$(CPANDIR) --dir=$(DISTDIR) --dir=$(EXTDIR) --static
c6d234b8 1440 $(MINIPERL) -I..\lib list_static_libs.pl > Extensions_static
1e71036e 1441
9ddff148 1442Extensions_nonxs : ..\make_ext.pl $(PERLDEP) $(CONFIGPM)
a34ce875 1443 $(XCOPY) ..\*.h $(COREDIR)\*.*
a193a2db 1444 $(MINIPERL) -I..\lib ..\make_ext.pl "MAKE=$(MAKE)" --dir=$(CPANDIR) --dir=$(DISTDIR) --dir=$(EXTDIR) --nonxs
a34ce875 1445
281da5ea
NC
1446$(DYNALOADER) : ..\make_ext.pl $(PERLDEP) $(CONFIGPM) Extensions_nonxs
1447 $(XCOPY) ..\*.h $(COREDIR)\*.*
1448 $(MINIPERL) -I..\lib ..\make_ext.pl "MAKE=$(MAKE)" --dir=$(EXTDIR) --dynaloader
1449
ba14dd9a 1450Extensions_clean :
a193a2db 1451 -if exist $(MINIPERL) $(MINIPERL) -I..\lib ..\make_ext.pl "MAKE=$(MAKE)" --dir=$(CPANDIR) --dir=$(DISTDIR) --dir=$(EXTDIR) --all --target=clean
1e71036e 1452
b4dc1df6 1453Extensions_realclean :
a193a2db 1454 -if exist $(MINIPERL) $(MINIPERL) -I..\lib ..\make_ext.pl "MAKE=$(MAKE)" --dir=$(CPANDIR) --dir=$(DISTDIR) --dir=$(EXTDIR) --all --target=realclean
b4dc1df6 1455
9dcb9602 1456#-------------------------------------------------------------------------------
1e71036e
JH
1457
1458
0195b144 1459doc: $(PERLEXE) ..\pod\perltoc.pod
b4a41557 1460 $(PERLEXE) -I..\lib ..\installhtml --podroot=.. --htmldir=$(HTMLDIR) \
1e71036e
JH
1461 --podpath=pod:lib:ext:utils --htmlroot="file://$(INST_HTML:s,:,|,)"\
1462 --libpod=perlfunc:perlguts:perlvar:perlrun:perlop --recurse
1463
b0b6bf2b
AT
1464# Note that this next section is parsed (and regenerated) by pod/buildtoc
1465# so please check that script before making structural changes here
9ddff148 1466utils: $(PERLEXE) $(X2P)
1e71036e 1467 cd ..\utils && $(MAKE) PERL=$(MINIPERL)
b0b6bf2b
AT
1468 copy ..\README.aix ..\pod\perlaix.pod
1469 copy ..\README.amiga ..\pod\perlamiga.pod
1470 copy ..\README.apollo ..\pod\perlapollo.pod
1471 copy ..\README.beos ..\pod\perlbeos.pod
1472 copy ..\README.bs2000 ..\pod\perlbs2000.pod
1473 copy ..\README.ce ..\pod\perlce.pod
1474 copy ..\README.cn ..\pod\perlcn.pod
1475 copy ..\README.cygwin ..\pod\perlcygwin.pod
1476 copy ..\README.dgux ..\pod\perldgux.pod
1477 copy ..\README.dos ..\pod\perldos.pod
1478 copy ..\README.epoc ..\pod\perlepoc.pod
1479 copy ..\README.freebsd ..\pod\perlfreebsd.pod
9f968a8d 1480 copy ..\README.haiku ..\pod\perlhaiku.pod
b0b6bf2b
AT
1481 copy ..\README.hpux ..\pod\perlhpux.pod
1482 copy ..\README.hurd ..\pod\perlhurd.pod
1483 copy ..\README.irix ..\pod\perlirix.pod
1484 copy ..\README.jp ..\pod\perljp.pod
1485 copy ..\README.ko ..\pod\perlko.pod
6477b319 1486 copy ..\README.linux ..\pod\perllinux.pod
b0b6bf2b
AT
1487 copy ..\README.macos ..\pod\perlmacos.pod
1488 copy ..\README.macosx ..\pod\perlmacosx.pod
b0b6bf2b
AT
1489 copy ..\README.mpeix ..\pod\perlmpeix.pod
1490 copy ..\README.netware ..\pod\perlnetware.pod
b0846812 1491 copy ..\README.openbsd ..\pod\perlopenbsd.pod
b0b6bf2b
AT
1492 copy ..\README.os2 ..\pod\perlos2.pod
1493 copy ..\README.os390 ..\pod\perlos390.pod
1494 copy ..\README.os400 ..\pod\perlos400.pod
1495 copy ..\README.plan9 ..\pod\perlplan9.pod
1496 copy ..\README.qnx ..\pod\perlqnx.pod
2f08ed66 1497 copy ..\README.riscos ..\pod\perlriscos.pod
b0b6bf2b 1498 copy ..\README.solaris ..\pod\perlsolaris.pod
27da23d5 1499 copy ..\README.symbian ..\pod\perlsymbian.pod
b0b6bf2b
AT
1500 copy ..\README.tru64 ..\pod\perltru64.pod
1501 copy ..\README.tw ..\pod\perltw.pod
1502 copy ..\README.uts ..\pod\perluts.pod
1503 copy ..\README.vmesa ..\pod\perlvmesa.pod
b0b6bf2b
AT
1504 copy ..\README.vos ..\pod\perlvos.pod
1505 copy ..\README.win32 ..\pod\perlwin32.pod
cea2f1cb 1506 copy ..\pod\perl5134delta.pod ..\pod\perldelta.pod
b0b6bf2b 1507 cd ..\pod && $(MAKE) -f ..\win32\pod.mak converters
1e71036e 1508 $(PERLEXE) $(PL2BAT) $(UTILS)
403f501d
NC
1509 $(PERLEXE) $(ICWD) ..\autodoc.pl ..
1510 $(PERLEXE) $(ICWD) ..\pod\perlmodlib.pl -q
0195b144
NC
1511
1512..\pod\perltoc.pod: $(PERLEXE) Extensions Extensions_nonxs
87e06404 1513 $(PERLEXE) -f ..\pod\buildtoc --build-toc -q
1e71036e 1514
b0b6bf2b
AT
1515# Note that the pod cleanup in this next section is parsed (and regenerated
1516# by pod/buildtoc so please check that script before making changes here
1517
b4dc1df6 1518distclean: realclean
1e71036e 1519 -del /f $(MINIPERL) $(PERLEXE) $(PERLDLL) $(GLOBEXE) \
ed2eab3f
SH
1520 $(PERLIMPLIB) ..\miniperl$(a) $(MINIMOD) \
1521 $(PERLEXESTATIC) $(PERLSTATICLIB)
1e71036e 1522 -del /f *.def *.map
ca67812f
SH
1523 -del /f $(LIBDIR)\Encode.pm $(LIBDIR)\encoding.pm $(LIBDIR)\Errno.pm
1524 -del /f $(LIBDIR)\Config.pod $(LIBDIR)\POSIX.pod $(LIBDIR)\threads.pm
48462a74 1525 -del /f $(LIBDIR)\.exists $(LIBDIR)\attributes.pm $(LIBDIR)\DynaLoader.pm
1e71036e 1526 -del /f $(LIBDIR)\Fcntl.pm $(LIBDIR)\IO.pm $(LIBDIR)\Opcode.pm
a9bf183d 1527 -del /f $(LIBDIR)\ops.pm $(LIBDIR)\Safe.pm
1e71036e
JH
1528 -del /f $(LIBDIR)\SDBM_File.pm $(LIBDIR)\Socket.pm $(LIBDIR)\POSIX.pm
1529 -del /f $(LIBDIR)\B.pm $(LIBDIR)\O.pm $(LIBDIR)\re.pm
1e71036e
JH
1530 -del /f $(LIBDIR)\File\Glob.pm
1531 -del /f $(LIBDIR)\Storable.pm
ca67812f 1532 -del /f $(LIBDIR)\Sys\Hostname.pm
1e71036e 1533 -del /f $(LIBDIR)\Time\HiRes.pm
ac5ea531 1534 -del /f $(LIBDIR)\Unicode\Normalize.pm
4e74047c 1535 -del /f $(LIBDIR)\Math\BigInt\FastCalc.pm
b4ad57f4 1536 -del /f $(LIBDIR)\Win32.pm
37ca3c28 1537 -del /f $(LIBDIR)\Win32CORE.pm
00701878
SH
1538 -del /f $(LIBDIR)\Win32API\File.pm
1539 -del /f $(LIBDIR)\Win32API\File\cFile.pc
a85e0e8c 1540 -del /f $(DISTDIR)\XSLoader\XSLoader.pm
1a6c65ed
SH
1541 -if exist $(LIBDIR)\App rmdir /s /q $(LIBDIR)\App
1542 -if exist $(LIBDIR)\Archive rmdir /s /q $(LIBDIR)\Archive
1543 -if exist $(LIBDIR)\Attribute rmdir /s /q $(LIBDIR)\Attribute
1544 -if exist $(LIBDIR)\autodie rmdir /s /q $(LIBDIR)\autodie
522078af 1545 -if exist $(LIBDIR)\B rmdir /s /q $(LIBDIR)\B
1a6c65ed
SH
1546 -if exist $(LIBDIR)\CGI rmdir /s /q $(LIBDIR)\CGI
1547 -if exist $(LIBDIR)\CPAN rmdir /s /q $(LIBDIR)\CPAN
1548 -if exist $(LIBDIR)\CPANPLUS rmdir /s /q $(LIBDIR)\CPANPLUS
46ffdcf0 1549 -if exist $(LIBDIR)\Compress rmdir /s /q $(LIBDIR)\Compress
522078af 1550 -if exist $(LIBDIR)\Data rmdir /s /q $(LIBDIR)\Data
1a6c65ed
SH
1551 -if exist $(LIBDIR)\Devel rmdir /s /q $(LIBDIR)\Devel
1552 -if exist $(LIBDIR)\Digest rmdir /s /q $(LIBDIR)\Digest
ca67812f 1553 -if exist $(LIBDIR)\Encode rmdir /s /q $(LIBDIR)\Encode
1a6c65ed
SH
1554 -if exist $(LIBDIR)\encoding rmdir /s /q $(LIBDIR)\encoding
1555 -if exist $(LIBDIR)\ExtUtils\CBuilder rmdir /s /q $(LIBDIR)\ExtUtils\CBuilder
1556 -if exist $(LIBDIR)\ExtUtils\Command rmdir /s /q $(LIBDIR)\ExtUtils\Command
1557 -if exist $(LIBDIR)\ExtUtils\Constant rmdir /s /q $(LIBDIR)\ExtUtils\Constant
1558 -if exist $(LIBDIR)\ExtUtils\Liblist rmdir /s /q $(LIBDIR)\ExtUtils\Liblist
1559 -if exist $(LIBDIR)\ExtUtils\MakeMaker rmdir /s /q $(LIBDIR)\ExtUtils\MakeMaker
1560 -if exist $(LIBDIR)\File\Spec rmdir /s /q $(LIBDIR)\File\Spec
1561 -if exist $(LIBDIR)\Filter rmdir /s /q $(LIBDIR)\Filter
96c33d98 1562 -if exist $(LIBDIR)\Hash rmdir /s /q $(LIBDIR)\Hash
1a6c65ed
SH
1563 -if exist $(LIBDIR)\I18N\LangTags rmdir /s /q $(LIBDIR)\I18N\LangTags
1564 -if exist $(LIBDIR)\inc rmdir /s /q $(LIBDIR)\inc
c146e560 1565 -if exist $(LIBDIR)\Module\Pluggable rmdir /s /q $(LIBDIR)\Module\Pluggable
1a6c65ed
SH
1566 -if exist $(LIBDIR)\IO rmdir /s /q $(LIBDIR)\IO
1567 -if exist $(LIBDIR)\IPC rmdir /s /q $(LIBDIR)\IPC
69f57184 1568 -if exist $(LIBDIR)\List rmdir /s /q $(LIBDIR)\List
1a6c65ed
SH
1569 -if exist $(LIBDIR)\Locale rmdir /s /q $(LIBDIR)\Locale
1570 -if exist $(LIBDIR)\Log rmdir /s /q $(LIBDIR)\Log
1571 -if exist $(LIBDIR)\Math rmdir /s /q $(LIBDIR)\Math
1572 -if exist $(LIBDIR)\Memoize rmdir /s /q $(LIBDIR)\Memoize
69f57184 1573 -if exist $(LIBDIR)\MIME rmdir /s /q $(LIBDIR)\MIME
1a6c65ed
SH
1574 -if exist $(LIBDIR)\Module rmdir /s /q $(LIBDIR)\Module
1575 -if exist $(LIBDIR)\mro rmdir /s /q $(LIBDIR)\mro
1576 -if exist $(LIBDIR)\Net\FTP rmdir /s /q $(LIBDIR)\Net\FTP
1577 -if exist $(LIBDIR)\Object rmdir /s /q $(LIBDIR)\Object
1578 -if exist $(LIBDIR)\Package rmdir /s /q $(LIBDIR)\Package
1579 -if exist $(LIBDIR)\Params rmdir /s /q $(LIBDIR)\Params
1580 -if exist $(LIBDIR)\Parse rmdir /s /q $(LIBDIR)\Parse
1581 -if exist $(LIBDIR)\PerlIO rmdir /s /q $(LIBDIR)\PerlIO
1582 -if exist $(LIBDIR)\Pod\Perldoc rmdir /s /q $(LIBDIR)\Pod\Perldoc
1583 -if exist $(LIBDIR)\Pod\Simple rmdir /s /q $(LIBDIR)\Pod\Simple
1584 -if exist $(LIBDIR)\Pod\Text rmdir /s /q $(LIBDIR)\Pod\Text
849a608a 1585 -if exist $(LIBDIR)\re rmdir /s /q $(LIBDIR)\re
522078af 1586 -if exist $(LIBDIR)\Scalar rmdir /s /q $(LIBDIR)\Scalar
6c4b87ea 1587 -if exist $(LIBDIR)\Sys rmdir /s /q $(LIBDIR)\Sys
1a6c65ed
SH
1588 -if exist $(LIBDIR)\TAP rmdir /s /q $(LIBDIR)\TAP
1589 -if exist $(LIBDIR)\Term\UI rmdir /s /q $(LIBDIR)\Term\UI
1590 -if exist $(LIBDIR)\Test rmdir /s /q $(LIBDIR)\Test
1591 -if exist $(LIBDIR)\Thread rmdir /s /q $(LIBDIR)\Thread
6c4b87ea 1592 -if exist $(LIBDIR)\threads rmdir /s /q $(LIBDIR)\threads
1a6c65ed 1593 -if exist $(LIBDIR)\Unicode\Collate rmdir /s /q $(LIBDIR)\Unicode\Collate
522078af 1594 -if exist $(LIBDIR)\XS rmdir /s /q $(LIBDIR)\XS
00701878 1595 -if exist $(LIBDIR)\Win32API rmdir /s /q $(LIBDIR)\Win32API
1a6c65ed 1596 -cd $(PODDIR) && del /f *.html *.bat \
9e64a656
NC
1597 perlaix.pod perlamiga.pod perlapi.pod perlapollo.pod \
1598 perlbeos.pod perlbs2000.pod perlce.pod perlcn.pod \
1599 perlcygwin.pod perldelta.pod perldgux.pod perldos.pod \
1600 perlepoc.pod perlfreebsd.pod perlhaiku.pod perlhpux.pod \
1601 perlhurd.pod perlintern.pod perlirix.pod perljp.pod perlko.pod \
7cdf958d
DM
1602 perllinux.pod perlmacos.pod perlmacosx.pod perlmodlib.pod \
1603 perlmpeix.pod perlnetware.pod perlopenbsd.pod perlos2.pod \
1604 perlos390.pod perlos400.pod perlplan9.pod perlqnx.pod \
1605 perlriscos.pod perlsolaris.pod perlsymbian.pod perltoc.pod \
524ce141
RGS
1606 perltru64.pod perltw.pod perluniprops.pod perluts.pod \
1607 perlvmesa.pod perlvos.pod perlwin32.pod \
4cb44f92 1608 pod2html pod2latex pod2man pod2text pod2usage \
1a6c65ed 1609 podchecker podselect
827a599d 1610 -cd ..\utils && del /f h2ph splain perlbug pl2pm c2ph pstruct h2xs \
de125441 1611 perldoc perlivp dprofpp libnetcfg enc2xs piconv cpan *.bat \
6aaee015 1612 xsubpp instmodsh prove ptar ptardiff cpanp-run-perl cpanp cpan2dist shasum corelist config_data
827a599d 1613 -cd ..\x2p && del /f find2perl s2p psed *.bat
19ec6f53 1614 -del /f ..\config.sh perlmain.c dlutils.c config.h.new \
ed2eab3f 1615 perlmainst.c
1e71036e 1616 -del /f $(CONFIGPM)
a148edb6 1617 -del /f ..\lib\Config_git.pl
1e71036e 1618 -del /f bin\*.bat
d2b25974 1619 -del /f perllibst.h
4ebea3c6 1620 -del /f $(PERLEXE_RES) perl.base
85741d00 1621 -cd .. && del /s *$(a) *.map *.pdb *.ilk *.tds *.bs *$(o) .exists pm_to_blib ppport.h
827a599d 1622 -cd $(EXTDIR) && del /s *.def Makefile Makefile.old
a193a2db 1623 -cd $(DISTDIR) && del /s *.def Makefile Makefile.old
83d5895a 1624 -cd $(CPANDIR) && del /s *.def Makefile Makefile.old
522078af 1625 -if exist $(AUTODIR) rmdir /s /q $(AUTODIR)
522078af 1626 -if exist $(COREDIR) rmdir /s /q $(COREDIR)
b4a41557
SH
1627 -if exist pod2htmd.tmp del pod2htmd.tmp
1628 -if exist pod2htmi.tmp del pod2htmi.tmp
1629 -if exist $(HTMLDIR) rmdir /s /q $(HTMLDIR)
0279961e 1630 -del /f ..\t\test_state
1e71036e
JH
1631
1632install : all installbare installhtml
1633
0195b144 1634installbare : $(RIGHTMAKE) utils ..\pod\perltoc.pod
1e71036e
JH
1635 $(PERLEXE) ..\installperl
1636 if exist $(WPERLEXE) $(XCOPY) $(WPERLEXE) $(INST_BIN)\*.*
5548433c 1637 if exist $(PERLEXESTATIC) $(XCOPY) $(PERLEXESTATIC) $(INST_BIN)\*.*
1e71036e 1638 $(XCOPY) $(GLOBEXE) $(INST_BIN)\*.*
ec25c072
SH
1639 if exist ..\perl*.pdb $(XCOPY) ..\perl*.pdb $(INST_BIN)\*.*
1640 if exist ..\x2p\a2p.pdb $(XCOPY) ..\x2p\a2p.pdb $(INST_BIN)\*.*
1e71036e
JH
1641 $(XCOPY) bin\*.bat $(INST_SCRIPT)\*.*
1642
1643installhtml : doc
b4a41557 1644 $(RCOPY) $(HTMLDIR)\*.* $(INST_HTML)\*.*
1e71036e
JH
1645
1646inst_lib : $(CONFIGPM)
1e71036e
JH
1647 $(RCOPY) ..\lib $(INST_LIB)\*.*
1648
58fa074c 1649$(UNIDATAFILES) ..\pod\perluniprops.pod .UPDATEALL : $(MINIPERL) $(CONFIGPM) ..\lib\unicore\mktables Extensions_nonxs
27a8011f 1650 cd ..\lib\unicore && \
860054a8 1651 ..\$(MINIPERL) -I.. -I..\..\cpan\Cwd\lib -I..\..\cpan\Cwd mktables -P ..\..\pod -maketest -makelist -p
ca12659b
NC
1652
1653minitest : $(MINIPERL) $(GLOBEXE) $(CONFIGPM) $(UNIDATAFILES) utils
6c85d12e
SH
1654 $(XCOPY) $(MINIPERL) ..\t\$(NULL)
1655 if exist ..\t\perl.exe del /f ..\t\perl.exe
1656 rename ..\t\miniperl.exe perl.exe
1e71036e
JH
1657.IF "$(CCTYPE)" == "BORLAND"
1658 $(XCOPY) $(GLOBBAT) ..\t\$(NULL)
1659.ELSE
1660 $(XCOPY) $(GLOBEXE) ..\t\$(NULL)
1661.ENDIF
1662 attrib -r ..\t\*.*
1e71036e 1663 cd ..\t && \
6c85d12e 1664 $(MINIPERL) -I..\lib harness base/*.t comp/*.t cmd/*.t io/*.t op/*.t pragma/*.t
1e71036e 1665
6e2cec71 1666test-prep : all utils
1e71036e
JH
1667 $(XCOPY) $(PERLEXE) ..\t\$(NULL)
1668 $(XCOPY) $(PERLDLL) ..\t\$(NULL)
1669.IF "$(CCTYPE)" == "BORLAND"
1670 $(XCOPY) $(GLOBBAT) ..\t\$(NULL)
1671.ELSE
1672 $(XCOPY) $(GLOBEXE) ..\t\$(NULL)
1673.ENDIF
fa58a56f
S
1674.IF "$(CCTYPE)" == "GCC"
1675.IF "$(GCC_4XX)" == "define"
1676 $(XCOPY) $(GCCHELPERDLL) ..\t\$(NULL)
1677.ENDIF
1678.ENDIF
1e71036e
JH
1679
1680test : $(RIGHTMAKE) test-prep
89087c85 1681 cd ..\t && $(PERLEXE) -I..\lib harness $(TEST_SWITCHES) $(TEST_FILES)
1e71036e 1682
250c5aad
SH
1683test-reonly : reonly utils
1684 $(XCOPY) $(PERLEXE) ..\t\$(NULL)
1685 $(XCOPY) $(PERLDLL) ..\t\$(NULL)
1686 $(XCOPY) $(GLOBEXE) ..\t\$(NULL)
1687 cd ..\t && \
a4499558 1688 $(PERLEXE) -I..\lib harness $(OPT) -re \bpat\\/ $(EXTRA) && \
250c5aad
SH
1689 cd ..\win32
1690
1691regen :
1692 cd .. && regen.pl && cd win32
1693
1e71036e
JH
1694test-notty : test-prep
1695 set PERL_SKIP_TTY_TEST=1 && \
89087c85 1696 cd ..\t && $(PERLEXE) -I.\lib harness $(TEST_SWITCHES) $(TEST_FILES)
1e71036e 1697
b4a93add 1698_test : $(RIGHTMAKE)
a01cf021
JH
1699 $(XCOPY) $(PERLEXE) ..\t\$(NULL)
1700 $(XCOPY) $(PERLDLL) ..\t\$(NULL)
b4a93add 1701.IF "$(CCTYPE)" == "BORLAND"
a01cf021 1702 $(XCOPY) $(GLOBBAT) ..\t\$(NULL)
b4a93add 1703.ELSE
a01cf021 1704 $(XCOPY) $(GLOBEXE) ..\t\$(NULL)
b4a93add 1705.ENDIF
89087c85 1706 cd ..\t && $(PERLEXE) -I..\lib harness $(TEST_SWITCHES) $(TEST_FILES)
b4a93add 1707
b4dc1df6 1708_clean :
1e71036e
JH
1709 -@erase miniperlmain$(o)
1710 -@erase $(MINIPERL)
1711 -@erase perlglob$(o)
1712 -@erase perlmain$(o)
ed2eab3f 1713 -@erase perlmainst$(o)
1e71036e
JH
1714 -@erase config.w32
1715 -@erase /f config.h
a148edb6 1716 -@erase /f ..\git_version.h
1e71036e
JH
1717 -@erase $(GLOBEXE)
1718 -@erase $(PERLEXE)
1719 -@erase $(WPERLEXE)
ed2eab3f
SH
1720 -@erase $(PERLEXESTATIC)
1721 -@erase $(PERLSTATICLIB)
1e71036e
JH
1722 -@erase $(PERLDLL)
1723 -@erase $(CORE_OBJ)
efa50c51 1724 -@erase $(GENUUDMAP) $(GENUUDMAP_OBJ) $(UUDMAP_H) $(BITCOUNT_H)
522078af 1725 -if exist $(MINIDIR) rmdir /s /q $(MINIDIR)
27a8011f 1726 -if exist $(UNIDATADIR1) rmdir /s /q $(UNIDATADIR1)
27a8011f 1727 -if exist $(UNIDATADIR2) rmdir /s /q $(UNIDATADIR2)
ca12659b 1728 -@erase $(UNIDATAFILES)
1e71036e
JH
1729 -@erase $(WIN32_OBJ)
1730 -@erase $(DLL_OBJ)
1731 -@erase $(X2P_OBJ)
1732 -@erase ..\*$(o) ..\*$(a) ..\*.exp *$(o) *$(a) *.exp *.res
1733 -@erase ..\t\*.exe ..\t\*.dll ..\t\*.bat
1734 -@erase ..\x2p\*.exe ..\x2p\*.bat
1735 -@erase *.ilk
1736 -@erase *.pdb
44ba898b 1737 -@erase *.tds
9e7cf449 1738 -@erase Extensions_static
1e71036e 1739
b4dc1df6 1740
1266ad8f 1741
6e2cec71 1742clean : Extensions_clean _clean
1266ad8f 1743
85741d00 1744realclean : Extensions_realclean _clean
b4dc1df6 1745
1e71036e
JH
1746# Handy way to run perlbug -ok without having to install and run the
1747# installed perlbug. We don't re-run the tests here - we trust the user.
1748# Please *don't* use this unless all tests pass.
1749# If you want to report test failures, use "dmake nok" instead.
1750ok: utils
1751 $(PERLEXE) -I..\lib ..\utils\perlbug -ok -s "(UNINSTALLED)"
1752
1753okfile: utils
1754 $(PERLEXE) -I..\lib ..\utils\perlbug -ok -s "(UNINSTALLED)" -F perl.ok
1755
1756nok: utils
1757 $(PERLEXE) -I..\lib ..\utils\perlbug -nok -s "(UNINSTALLED)"
1758
1759nokfile: utils
1760 $(PERLEXE) -I..\lib ..\utils\perlbug -nok -s "(UNINSTALLED)" -F perl.nok