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