This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
bump perl version number to 5.15.1
[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#
507b4ec1 42#INST_VER *= \5.15.1
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 \
1e71036e
JH
737 ..\utils\perlbug \
738 ..\utils\pl2pm \
739 ..\utils\c2ph \
827a599d 740 ..\utils\pstruct \
1e71036e
JH
741 ..\utils\h2xs \
742 ..\utils\perldoc \
1e71036e
JH
743 ..\utils\perlivp \
744 ..\utils\libnetcfg \
827a599d
GS
745 ..\utils\enc2xs \
746 ..\utils\piconv \
bb4e9162 747 ..\utils\config_data \
18a1cebe 748 ..\utils\corelist \
83cd6e83 749 ..\utils\cpan \
ea0e987d 750 ..\utils\xsubpp \
4b618757 751 ..\utils\prove \
291d3373 752 ..\utils\ptar \
b8669316 753 ..\utils\ptardiff \
deabda19 754 ..\utils\ptargrep \
6aaee015
RGS
755 ..\utils\cpanp-run-perl \
756 ..\utils\cpanp \
757 ..\utils\cpan2dist \
3ddf9550 758 ..\utils\shasum \
ea0e987d 759 ..\utils\instmodsh \
84f04405 760 ..\utils\json_pp \
1e71036e 761 ..\x2p\find2perl \
827a599d 762 ..\x2p\psed \
1e71036e 763 ..\x2p\s2p \
1e71036e
JH
764 bin\exetype.pl \
765 bin\runperl.pl \
766 bin\pl2bat.pl \
767 bin\perlglob.pl \
768 bin\search.pl
769
770.IF "$(CCTYPE)" == "BORLAND"
771
772CFGSH_TMPL = config.bc
773CFGH_TMPL = config_H.bc
774
775.ELIF "$(CCTYPE)" == "GCC"
776
fa58a56f
S
777.IF "$(WIN64)" == "define"
778.IF "$(GCCCROSS)" == "define"
779CFGSH_TMPL = config.gc64
780CFGH_TMPL = config_H.gc64
781.ELSE
782CFGSH_TMPL = config.gc64nox
783CFGH_TMPL = config_H.gc64nox
784.ENDIF
785.ELSE
1e71036e
JH
786CFGSH_TMPL = config.gc
787CFGH_TMPL = config_H.gc
fa58a56f 788.ENDIF
8891dd8d
DM
789PERLIMPLIB = ..\libperl515$(a)
790PERLSTATICLIB = ..\libperl515s$(a)
1e71036e
JH
791
792.ELSE
793
c623ac67
GS
794.IF "$(WIN64)" == "define"
795CFGSH_TMPL = config.vc64
796CFGH_TMPL = config_H.vc64
797.ELSE
1e71036e
JH
798CFGSH_TMPL = config.vc
799CFGH_TMPL = config_H.vc
c623ac67 800.ENDIF
1e71036e
JH
801
802.ENDIF
803
804# makedef.pl must be updated if this changes, and this should normally
805# only change when there is an incompatible revision of the public API.
8891dd8d
DM
806PERLIMPLIB *= ..\perl515$(a)
807PERLSTATICLIB *= ..\perl515s$(a)
808PERLDLL = ..\perl515.dll
1e71036e 809
b6ed7314
YO
810XCOPY = xcopy /f /r /i /d /y
811RCOPY = xcopy /f /r /i /e /d /y
65980d94 812NOOP = @rem
1e71036e 813
1e71036e
JH
814MICROCORE_SRC = \
815 ..\av.c \
816 ..\deb.c \
817 ..\doio.c \
818 ..\doop.c \
819 ..\dump.c \
820 ..\globals.c \
821 ..\gv.c \
e1a479c5 822 ..\mro.c \
1e71036e
JH
823 ..\hv.c \
824 ..\locale.c \
26ea9e12 825 ..\keywords.c \
a0d89a74 826 ..\mathoms.c \
1e71036e
JH
827 ..\mg.c \
828 ..\numeric.c \
829 ..\op.c \
ff6de8cd 830 ..\pad.c \
1e71036e
JH
831 ..\perl.c \
832 ..\perlapi.c \
833 ..\perly.c \
834 ..\pp.c \
835 ..\pp_ctl.c \
836 ..\pp_hot.c \
837 ..\pp_pack.c \
84d4ea48 838 ..\pp_sort.c \
1e71036e 839 ..\pp_sys.c \
10bc17b6 840 ..\reentr.c \
1e71036e
JH
841 ..\regcomp.c \
842 ..\regexec.c \
843 ..\run.c \
844 ..\scope.c \
845 ..\sv.c \
846 ..\taint.c \
847 ..\toke.c \
848 ..\universal.c \
849 ..\utf8.c \
48462a74 850 ..\util.c
1e71036e
JH
851
852EXTRACORE_SRC += perllib.c
853
854.IF "$(PERL_MALLOC)" == "define"
855EXTRACORE_SRC += ..\malloc.c
856.ENDIF
857
1e71036e 858EXTRACORE_SRC += ..\perlio.c
1e71036e
JH
859
860WIN32_SRC = \
861 .\win32.c \
1e71036e 862 .\win32sck.c \
9cef8306
JD
863 .\win32thread.c \
864 .\fcrypt.c
1e71036e 865
b6d604f4
NIS
866# We need this for miniperl build unless we override canned
867# config.h #define building mini\*
868#.IF "$(USE_PERLIO)" == "define"
6ea0e807 869WIN32_SRC += .\win32io.c
b6d604f4 870#.ENDIF
6ea0e807 871
1e71036e
JH
872X2P_SRC = \
873 ..\x2p\a2p.c \
874 ..\x2p\hash.c \
875 ..\x2p\str.c \
876 ..\x2p\util.c \
877 ..\x2p\walk.c
878
879CORE_NOCFG_H = \
880 ..\av.h \
881 ..\cop.h \
882 ..\cv.h \
883 ..\dosish.h \
884 ..\embed.h \
885 ..\form.h \
886 ..\gv.h \
887 ..\handy.h \
888 ..\hv.h \
889 ..\iperlsys.h \
890 ..\mg.h \
891 ..\nostdio.h \
892 ..\op.h \
893 ..\opcode.h \
894 ..\perl.h \
895 ..\perlapi.h \
896 ..\perlsdio.h \
897 ..\perlsfio.h \
898 ..\perly.h \
899 ..\pp.h \
900 ..\proto.h \
cdb0f547 901 ..\regcomp.h \
1e71036e
JH
902 ..\regexp.h \
903 ..\scope.h \
904 ..\sv.h \
905 ..\thread.h \
906 ..\unixish.h \
907 ..\utf8.h \
908 ..\util.h \
909 ..\warnings.h \
910 ..\XSUB.h \
911 ..\EXTERN.h \
912 ..\perlvars.h \
913 ..\intrpvar.h \
1e71036e
JH
914 .\include\dirent.h \
915 .\include\netdb.h \
916 .\include\sys\socket.h \
917 .\win32.h
918
a148edb6 919CORE_H = $(CORE_NOCFG_H) .\config.h ..\git_version.h
1e71036e 920
202d1001 921UUDMAP_H = ..\uudmap.h
efa50c51 922BITCOUNT_H = ..\bitcount.h
6f83ef0e 923MG_DATA_H = ..\mg_data.h
202d1001 924
1e71036e
JH
925MICROCORE_OBJ = $(MICROCORE_SRC:db:+$(o))
926CORE_OBJ = $(MICROCORE_OBJ) $(EXTRACORE_SRC:db:+$(o))
927WIN32_OBJ = $(WIN32_SRC:db:+$(o))
928MINICORE_OBJ = $(MINIDIR)\{$(MICROCORE_OBJ:f) miniperlmain$(o) perlio$(o)}
ba14dd9a 929MINIWIN32_OBJ = $(MINIDIR)\{$(WIN32_OBJ:f)}
1e71036e 930MINI_OBJ = $(MINICORE_OBJ) $(MINIWIN32_OBJ)
281da5ea 931DLL_OBJ = $(DYNALOADER)
1e71036e 932X2P_OBJ = $(X2P_SRC:db:+$(o))
202d1001 933GENUUDMAP_OBJ = $(GENUUDMAP:db:+$(o))
1e71036e
JH
934
935PERLDLL_OBJ = $(CORE_OBJ)
936PERLEXE_OBJ = perlmain$(o)
ed2eab3f 937PERLEXEST_OBJ = perlmainst$(o)
1e71036e
JH
938
939PERLDLL_OBJ += $(WIN32_OBJ) $(DLL_OBJ)
940
941.IF "$(USE_SETARGV)" != ""
942SETARGV_OBJ = setargv$(o)
943.ENDIF
944
a1f2e719
VK
945.IF "$(ALL_STATIC)" == "define"
946# some exclusions, unfortunately, until fixed:
947# - Win32 extension contains overlapped symbols with win32.c (BUG!)
948# - MakeMaker isn't capable enough for SDBM_File (smaller bug)
949# - Encode (encoding search algorithm relies on shared library?)
9788a75a 950STATIC_EXT = * !Win32 !SDBM_File !Encode
a1f2e719
VK
951.ELSE
952# specify static extensions here, for example:
47ef3394 953#STATIC_EXT = Cwd Compress/Raw/Zlib
78ff2d7b 954STATIC_EXT = Win32CORE
a1f2e719 955.ENDIF
1e71036e 956
281da5ea 957DYNALOADER = ..\DynaLoader$(o)
1e71036e 958
1e71036e
JH
959# vars must be separated by "\t+~\t+", since we're using the tempfile
960# version of config_sh.pl (we were overflowing someone's buffer by
961# trying to fit them all on the command line)
962# -- BKS 10-17-1999
963CFG_VARS = \
964 INST_DRV=$(INST_DRV) ~ \
13631a73
SH
965 INST_TOP=$(INST_TOP) ~ \
966 INST_VER=$(INST_VER) ~ \
1e71036e
JH
967 INST_ARCH=$(INST_ARCH) ~ \
968 archname=$(ARCHNAME) ~ \
969 cc=$(CC) ~ \
970 ld=$(LINK32) ~ \
bb275e72 971 ccflags=$(EXTRACFLAGS) $(OPTIMIZE) $(DEFINES) $(BUILDOPT) ~ \
1e71036e 972 cf_email=$(EMAIL) ~ \
1e71036e
JH
973 d_mymalloc=$(PERL_MALLOC) ~ \
974 libs=$(LIBFILES:f) ~ \
13631a73 975 incpath=$(CCINCDIR) ~ \
1e71036e 976 libperl=$(PERLIMPLIB:f) ~ \
13631a73 977 libpth=$(CCLIBDIR);$(EXTRALIBDIRS) ~ \
1e71036e
JH
978 libc=$(LIBC) ~ \
979 make=dmake ~ \
84c322f7
MB
980 _o=$(o) ~ \
981 obj_ext=$(o) ~ \
982 _a=$(a) ~ \
983 lib_ext=$(a) ~ \
1e71036e 984 static_ext=$(STATIC_EXT) ~ \
7e0017d3 985 usethreads=$(USE_ITHREADS) ~ \
1e71036e 986 useithreads=$(USE_ITHREADS) ~ \
1e71036e
JH
987 usemultiplicity=$(USE_MULTI) ~ \
988 useperlio=$(USE_PERLIO) ~ \
c7dd62f6 989 uselargefiles=$(USE_LARGE_FILES) ~ \
7ada00a0 990 usesitecustomize=$(USE_SITECUST) ~ \
13631a73 991 LINK_FLAGS=$(LINK_FLAGS) ~ \
1e71036e
JH
992 optimize=$(OPTIMIZE)
993
994#
995# set up targets varying between Win95 and WinNT builds
996#
997
998.IF "$(IS_WIN95)" == "define"
999MK2 = .\makefile.95
1000RIGHTMAKE = __switch_makefiles
1e71036e
JH
1001.ELSE
1002MK2 = __not_needed
1003RIGHTMAKE =
1004.ENDIF
1005
8169a885
SH
1006.IMPORT .IGNORE : SystemRoot windir
1007
1008# Don't just .IMPORT OS from the environment because dmake sets OS itself.
1009ENV_OS=$(subst,OS=, $(shell @set OS))
1010
1011.IF "$(ENV_OS)" == "Windows_NT"
1012ODBCCP32_DLL = $(SystemRoot)\system32\odbccp32.dll
1013.ELSE
1014ODBCCP32_DLL = $(windir)\system\odbccp32.dll
1015.ENDIF
1016
2a6dc374 1017ICWD = -I..\dist\Cwd -I..\dist\Cwd\lib
403f501d 1018
1e71036e
JH
1019#
1020# Top targets
1021#
1022
a148edb6
SH
1023all : CHECKDMAKE .\config.h ..\git_version.h $(GLOBEXE) $(MINIPERL) $(MK2) \
1024 $(RIGHTMAKE) $(MINIMOD) $(CONFIGPM) $(UNIDATAFILES) MakePPPort \
a34ce875 1025 $(PERLEXE) $(X2P) Extensions Extensions_nonxs $(PERLSTATIC)
1e71036e 1026
c900f745
SH
1027regnodes : ..\regnodes.h
1028
5b04aee6 1029..\regcomp$(o) : ..\regnodes.h ..\regcharclass.h
9ce5b024
SH
1030
1031..\regexec$(o) : ..\regnodes.h ..\regcharclass.h
1032
a148edb6
SH
1033reonly : regnodes .\config.h ..\git_version.h $(GLOBEXE) $(MINIPERL) $(MK2) \
1034 $(RIGHTMAKE) $(MINIMOD) $(CONFIGPM) $(UNIDATAFILES) $(PERLEXE) \
250c5aad
SH
1035 $(X2P) Extensions_reonly
1036
ed2eab3f
SH
1037static: $(PERLEXESTATIC)
1038
1e71036e
JH
1039#----------------------------------------------------------------
1040
1041#-------------------- BEGIN Win95 SPECIFIC ----------------------
1042
1043# this target is a jump-off point for Win95
1044# 1. it switches to the Win95-specific makefile if it exists
1045# (__do_switch_makefiles)
1046# 2. it prints a message when the Win95-specific one finishes (__done)
1047# 3. it then kills this makefile by trying to make __no_such_target
1048
1049__switch_makefiles: __do_switch_makefiles __done __no_such_target
1050
1051__do_switch_makefiles:
1052.IF "$(NOTFIRST)" != "true"
1053 if exist $(MK2) $(MAKE:s/-S//) -f $(MK2) $(MAKETARGETS) NOTFIRST=true
1054.ELSE
1055 $(NOOP)
1056.ENDIF
1057
1058.IF "$(NOTFIRST)" != "true"
1059__done:
1060 @echo Build process complete. Ignore any errors after this message.
1061 @echo Run "dmake test" to test and "dmake install" to install
1062
1063.ELSE
1064# dummy targets for Win95-specific makefile
1065
1066__done:
1067 $(NOOP)
1068
1069__no_such_target:
1070 $(NOOP)
1071
1072.ENDIF
1073
1074# This target is used to generate the new makefile (.\makefile.95) for Win95
1075
1076.\makefile.95: .\makefile.mk
1077 $(MINIPERL) genmk95.pl makefile.mk $(MK2)
1078
1079#--------------------- END Win95 SPECIFIC ---------------------
1080
1081# a blank target for when builds don't need to do certain things
1082# this target added for Win95 port but used to keep the WinNT port able to
1083# use this file
1084__not_needed:
1085 $(NOOP)
1086
13631a73
SH
1087CHECKDMAKE :
1088.IF "$(NEWDMAKE)" == "define"
1089 $(NOOP)
1090.ELSE
1091 @echo Your dmake doesn't support ^|^| or ^&^& in conditional expressions.
1092 @echo Please get the latest dmake from http://search.cpan.org/dist/dmake/
1093 @exit 1
1094.ENDIF
1095
1e71036e
JH
1096$(GLOBEXE) : perlglob$(o)
1097.IF "$(CCTYPE)" == "BORLAND"
1098 $(CC) -c -w -v -tWM -I"$(CCINCDIR)" perlglob.c
1099 $(LINK32) -Tpe -ap $(BLINK_FLAGS) c0x32$(o) perlglob$(o) \
1100 "$(CCLIBDIR)\32BIT\wildargs$(o)",$@,,import32.lib cw32mt.lib,
1101.ELIF "$(CCTYPE)" == "GCC"
1102 $(LINK32) $(BLINK_FLAGS) -mconsole -o $@ perlglob$(o) $(LIBFILES)
1103.ELSE
1104 $(LINK32) $(BLINK_FLAGS) $(LIBFILES) -out:$@ -subsystem:$(SUBSYS) \
1105 perlglob$(o) setargv$(o)
c8e599d3 1106 $(EMBED_EXE_MANI)
1e71036e
JH
1107.ENDIF
1108
1109perlglob$(o) : perlglob.c
1110
1111config.w32 : $(CFGSH_TMPL)
1112 copy $(CFGSH_TMPL) config.w32
1113
1114.\config.h : $(CFGH_TMPL) $(CORE_NOCFG_H)
1115 -del /f config.h
1116 copy $(CFGH_TMPL) config.h
1117
fcd65f8d 1118..\git_version.h : $(MINIPERL) ..\make_patchnum.pl
16ad9bfa 1119 cd .. && miniperl -Ilib make_patchnum.pl
a148edb6 1120
931482b7
NC
1121# make sure that we recompile perl.c if the git version changes
1122..\perl$(o) : ..\git_version.h
a148edb6 1123
1e71036e
JH
1124..\config.sh : config.w32 $(MINIPERL) config_sh.PL FindExt.pm
1125 $(MINIPERL) -I..\lib config_sh.PL --cfgsh-option-file \
1126 $(mktmp $(CFG_VARS)) config.w32 > ..\config.sh
1127
76febb1c
SH
1128# this target is for when changes to the main config.sh happen.
1129# edit config.gc, then make perl using GCC in a minimal configuration (i.e.
1130# with MULTI, ITHREADS, IMP_SYS, LARGE_FILES, PERLIO and CRYPT off), then make
1131# this target to regenerate config_H.gc.
1132# unfortunately, some further manual editing is also then required to restore all
1133# the special _MSC_VER handling that is otherwise lost.
1134# repeat for config.bc and config_H.bc (using BORLAND), except that there is no
1135# _MSC_VER stuff in that case.
1e71036e 1136regen_config_h:
76febb1c 1137 $(MINIPERL) -I..\lib config_sh.PL --cfgsh-option-file $(mktmp $(CFG_VARS)) \
1e71036e 1138 $(CFGSH_TMPL) > ..\config.sh
4e73d6a4 1139 $(MINIPERL) -I..\lib ..\configpm --chdir=..
1e71036e 1140 -del /f $(CFGH_TMPL)
38cd195c 1141 -$(MINIPERL) -I..\lib $(ICWD) config_h.PL "INST_VER=$(INST_VER)"
1e71036e
JH
1142 rename config.h $(CFGH_TMPL)
1143
1144$(CONFIGPM) : $(MINIPERL) ..\config.sh config_h.PL ..\minimod.pl
4e73d6a4 1145 $(MINIPERL) -I..\lib ..\configpm --chdir=..
1e71036e
JH
1146 if exist lib\* $(RCOPY) lib\*.* ..\lib\$(NULL)
1147 $(XCOPY) ..\*.h $(COREDIR)\*.*
1148 $(XCOPY) *.h $(COREDIR)\*.*
1e71036e 1149 $(RCOPY) include $(COREDIR)\*.*
38cd195c 1150 $(MINIPERL) -I..\lib $(ICWD) config_h.PL "INST_VER=$(INST_VER)" \
1e71036e
JH
1151 || $(MAKE) $(MAKEMACROS) $(CONFIGPM) $(MAKEFILE)
1152
5e4c4c91
NC
1153..\lib\buildcustomize.pl: $(MINIPERL) ..\write_buildcustomize.pl
1154 $(MINIPERL) -I..\lib ..\write_buildcustomize.pl .. >..\lib\buildcustomize.pl
1155
1156
1e71036e
JH
1157$(MINIPERL) : $(MINIDIR) $(MINI_OBJ) $(CRTIPMLIBS)
1158.IF "$(CCTYPE)" == "BORLAND"
8169a885
SH
1159 if not exist $(CCLIBDIR)\PSDK\odbccp32.lib \
1160 cd $(CCLIBDIR)\PSDK && implib odbccp32.lib $(ODBCCP32_DLL)
1e71036e 1161 $(LINK32) -Tpe -ap $(BLINK_FLAGS) \
13631a73 1162 @$(mktmp c0x32$(o) $(MINI_OBJ),$@,,$(LIBFILES),)
1e71036e
JH
1163.ELIF "$(CCTYPE)" == "GCC"
1164 $(LINK32) -v -mconsole -o $@ $(BLINK_FLAGS) \
13631a73 1165 $(mktmp $(LKPRE) $(MINI_OBJ) $(LIBFILES) $(LKPOST))
1e71036e 1166.ELSE
78d58004 1167 $(LINK32) -subsystem:console -out:$@ $(BLINK_FLAGS) \
13631a73 1168 @$(mktmp $(LIBFILES) $(MINI_OBJ))
c8e599d3 1169 $(EMBED_EXE_MANI)
1e71036e
JH
1170.ENDIF
1171
1172$(MINIDIR) :
1173 if not exist "$(MINIDIR)" mkdir "$(MINIDIR)"
1174
1175$(MINICORE_OBJ) : $(CORE_NOCFG_H)
8c4561fb 1176 $(CC) -c $(CFLAGS) -DPERL_EXTERNAL_GLOB -DPERL_IS_MINIPERL $(OBJOUT_FLAG)$@ ..\$(*B).c
1e71036e
JH
1177
1178$(MINIWIN32_OBJ) : $(CORE_NOCFG_H)
1179 $(CC) -c $(CFLAGS) $(OBJOUT_FLAG)$@ $(*B).c
1180
1181# -DPERL_IMPLICIT_SYS needs C++ for perllib.c
1182# rules wrapped in .IFs break Win9X build (we end up with unbalanced []s unless
1183# unless the .IF is true), so instead we use a .ELSE with the default.
1184# This is the only file that depends on perlhost.h, vmem.h, and vdir.h
1185
1186perllib$(o) : perllib.c .\perlhost.h .\vdir.h .\vmem.h
acfe0abc 1187.IF "$(USE_IMP_SYS)" == "define"
322fd642 1188 $(CC) -c -I. $(CFLAGS_O) $(CXX_FLAG) $(OBJOUT_FLAG)$@ perllib.c
1e71036e 1189.ELSE
322fd642 1190 $(CC) -c -I. $(CFLAGS_O) $(OBJOUT_FLAG)$@ perllib.c
1e71036e
JH
1191.ENDIF
1192
1193# 1. we don't want to rebuild miniperl.exe when config.h changes
1194# 2. we don't want to rebuild miniperl.exe with non-default config.h
931482b7 1195# 3. we can't have miniperl.exe depend on git_version.h, as miniperl creates it
1e71036e
JH
1196$(MINI_OBJ) : $(CORE_NOCFG_H)
1197
1198$(WIN32_OBJ) : $(CORE_H)
9848074e 1199
1e71036e 1200$(CORE_OBJ) : $(CORE_H)
9848074e 1201
1e71036e 1202$(DLL_OBJ) : $(CORE_H)
9848074e 1203
1e71036e
JH
1204$(X2P_OBJ) : $(CORE_H)
1205
897d3989 1206perldll.def : $(MINIPERL) $(CONFIGPM) ..\global.sym ..\makedef.pl create_perllibst_h.pl
c6d234b8 1207 $(MINIPERL) -I..\lib create_perllibst_h.pl
c1effa61 1208 $(MINIPERL) -I..\lib -w ..\makedef.pl PLATFORM=win32 $(OPTIMIZE) $(DEFINES) \
1e71036e
JH
1209 $(BUILDOPT) CCTYPE=$(CCTYPE) > perldll.def
1210
d2b25974 1211$(PERLDLL): perldll.def $(PERLDLL_OBJ) $(PERLDLL_RES) Extensions_static
1e71036e
JH
1212.IF "$(CCTYPE)" == "BORLAND"
1213 $(LINK32) -Tpd -ap $(BLINK_FLAGS) \
13631a73
SH
1214 @$(mktmp c0d32$(o) $(PERLDLL_OBJ),$@,, \
1215 $(shell @type Extensions_static) $(LIBFILES),perldll.def)
1e71036e
JH
1216 $(IMPLIB) $*.lib $@
1217.ELIF "$(CCTYPE)" == "GCC"
1218 $(LINK32) -mdll -o $@ -Wl,--base-file -Wl,perl.base $(BLINK_FLAGS) \
13631a73
SH
1219 $(mktmp $(LKPRE) $(PERLDLL_OBJ) \
1220 $(shell @type Extensions_static) \
1221 $(LIBFILES) $(LKPOST))
fa58a56f 1222 $(IMPLIB) --output-lib $(PERLIMPLIB) \
1e71036e
JH
1223 --dllname $(PERLDLL:b).dll \
1224 --def perldll.def \
1225 --base-file perl.base \
1226 --output-exp perl.exp
1227 $(LINK32) -mdll -o $@ $(BLINK_FLAGS) \
13631a73
SH
1228 $(mktmp $(LKPRE) $(PERLDLL_OBJ) \
1229 $(shell @type Extensions_static) \
1230 $(LIBFILES) perl.exp $(LKPOST))
1e71036e 1231.ELSE
78d58004 1232 $(LINK32) -dll -def:perldll.def -out:$@ $(BLINK_FLAGS) \
9e7cf449 1233 @Extensions_static \
78d58004 1234 @$(mktmp -base:0x28000000 $(DELAYLOAD) $(LIBFILES) \
13631a73 1235 $(PERLDLL_RES) $(PERLDLL_OBJ))
c8e599d3 1236 $(EMBED_DLL_MANI)
1e71036e
JH
1237.ENDIF
1238 $(XCOPY) $(PERLIMPLIB) $(COREDIR)
1239
ed2eab3f
SH
1240$(PERLSTATICLIB): Extensions_static
1241.IF "$(CCTYPE)" == "BORLAND"
1242 $(LIB32) $(LIB_FLAGS) $@ \
13631a73
SH
1243 @$(mktmp $(shell @type Extensions_static) \
1244 $(PERLDLL_OBJ))
ed2eab3f 1245.ELIF "$(CCTYPE)" == "GCC"
df06d623
SH
1246# XXX: It would be nice if MinGW's ar accepted a temporary file, but this
1247# doesn't seem to work:
1248# $(LIB32) $(LIB_FLAGS) $@ \
13631a73
SH
1249# $(mktmp $(LKPRE) $(shell @type Extensions_static) \
1250# $(PERLDLL_OBJ) $(LKPOST))
df06d623 1251 $(LIB32) $(LIB_FLAGS) $@ \
13631a73
SH
1252 $(shell @type Extensions_static) \
1253 $(PERLDLL_OBJ)
ed2eab3f
SH
1254.ELSE
1255 $(LIB32) $(LIB_FLAGS) -out:$@ @Extensions_static \
13631a73 1256 @$(mktmp $(PERLDLL_OBJ))
ed2eab3f
SH
1257.ENDIF
1258 $(XCOPY) $(PERLSTATICLIB) $(COREDIR)
d2b25974 1259
4ebea3c6 1260$(PERLEXE_RES): perlexe.rc $(PERLEXE_MANIFEST) $(PERLEXE_ICO)
e84ac4e2 1261
1e71036e
JH
1262$(MINIMOD) : $(MINIPERL) ..\minimod.pl
1263 cd .. && miniperl minimod.pl > lib\ExtUtils\Miniperl.pm
1264
1265..\x2p\a2p$(o) : ..\x2p\a2p.c
1266 $(CC) -I..\x2p $(CFLAGS) $(OBJOUT_FLAG)$@ -c ..\x2p\a2p.c
1267
1268..\x2p\hash$(o) : ..\x2p\hash.c
1269 $(CC) -I..\x2p $(CFLAGS) $(OBJOUT_FLAG)$@ -c ..\x2p\hash.c
1270
1271..\x2p\str$(o) : ..\x2p\str.c
1272 $(CC) -I..\x2p $(CFLAGS) $(OBJOUT_FLAG)$@ -c ..\x2p\str.c
1273
1274..\x2p\util$(o) : ..\x2p\util.c
1275 $(CC) -I..\x2p $(CFLAGS) $(OBJOUT_FLAG)$@ -c ..\x2p\util.c
1276
1277..\x2p\walk$(o) : ..\x2p\walk.c
1278 $(CC) -I..\x2p $(CFLAGS) $(OBJOUT_FLAG)$@ -c ..\x2p\walk.c
1279
403f501d 1280$(X2P) : $(MINIPERL) $(X2P_OBJ) Extensions
c1effa61
NC
1281 $(MINIPERL) -I..\lib ..\x2p\find2perl.PL
1282 $(MINIPERL) -I..\lib ..\x2p\s2p.PL
1e71036e
JH
1283.IF "$(CCTYPE)" == "BORLAND"
1284 $(LINK32) -Tpe -ap $(BLINK_FLAGS) \
13631a73 1285 @$(mktmp c0x32$(o) $(X2P_OBJ),$@,,$(LIBFILES),)
1e71036e
JH
1286.ELIF "$(CCTYPE)" == "GCC"
1287 $(LINK32) -v -o $@ $(BLINK_FLAGS) \
13631a73 1288 $(mktmp $(LKPRE) $(X2P_OBJ) $(LIBFILES) $(LKPOST))
1e71036e 1289.ELSE
78d58004 1290 $(LINK32) -subsystem:console -out:$@ $(BLINK_FLAGS) \
13631a73 1291 @$(mktmp $(LIBFILES) $(X2P_OBJ))
c8e599d3 1292 $(EMBED_EXE_MANI)
1e71036e
JH
1293.ENDIF
1294
6f83ef0e 1295$(MINIDIR)\globals$(o) : $(UUDMAP_H) $(BITCOUNT_H) $(MG_DATA_H)
9444d213 1296
6f83ef0e 1297$(UUDMAP_H) $(MG_DATA_H) : $(BITCOUNT_H)
6999193b
NC
1298
1299$(BITCOUNT_H) : $(GENUUDMAP)
6f83ef0e
NC
1300 $(GENUUDMAP) $(UUDMAP_H) $(BITCOUNT_H) $(MG_DATA_H)
1301
1302$(GENUUDMAP_OBJ) : ..\mg_raw.h
9444d213 1303
202d1001 1304$(GENUUDMAP) : $(GENUUDMAP_OBJ)
9444d213
NC
1305.IF "$(CCTYPE)" == "BORLAND"
1306 $(LINK32) -Tpe -ap $(BLINK_FLAGS) \
13631a73 1307 @$(mktmp c0x32$(o) $(GENUUDMAP_OBJ),$@,,$(LIBFILES),)
9444d213
NC
1308.ELIF "$(CCTYPE)" == "GCC"
1309 $(LINK32) -v -o $@ $(BLINK_FLAGS) \
13631a73 1310 $(mktmp $(LKPRE) $(GENUUDMAP_OBJ) $(LIBFILES) $(LKPOST))
9444d213
NC
1311.ELSE
1312 $(LINK32) -subsystem:console -out:$@ $(BLINK_FLAGS) \
13631a73 1313 @$(mktmp $(LIBFILES) $(GENUUDMAP_OBJ))
202d1001 1314 $(EMBED_EXE_MANI)
9444d213
NC
1315.ENDIF
1316
1e71036e
JH
1317perlmain.c : runperl.c
1318 copy runperl.c perlmain.c
1319
1320perlmain$(o) : perlmain.c
88c9158a 1321 $(CC) $(CFLAGS_O:s,-DPERLDLL,-UPERLDLL,) $(OBJOUT_FLAG)$@ -c perlmain.c
1e71036e 1322
ed2eab3f
SH
1323perlmainst.c : runperl.c
1324 copy runperl.c perlmainst.c
1325
1326perlmainst$(o) : perlmainst.c
88c9158a 1327 $(CC) $(CFLAGS_O) $(OBJOUT_FLAG)$@ -c perlmainst.c
ed2eab3f 1328
931482b7 1329$(PERLEXE): $(PERLDLL) $(CONFIGPM) $(PERLEXE_OBJ) $(PERLEXE_RES)
1e71036e
JH
1330.IF "$(CCTYPE)" == "BORLAND"
1331 $(LINK32) -Tpe -ap $(BLINK_FLAGS) \
13631a73
SH
1332 @$(mktmp c0x32$(o) $(PERLEXE_OBJ),$@,, \
1333 $(PERLIMPLIB) $(LIBFILES),,$(PERLEXE_RES))
1e71036e
JH
1334.ELIF "$(CCTYPE)" == "GCC"
1335 $(LINK32) -mconsole -o $@ $(BLINK_FLAGS) \
f721bdf3 1336 $(PERLEXE_OBJ) $(PERLEXE_RES) $(PERLIMPLIB) $(LIBFILES)
1e71036e 1337.ELSE
56a86867 1338 $(LINK32) -subsystem:console -out:$@ $(BLINK_FLAGS) \
1e71036e 1339 $(LIBFILES) $(PERLEXE_OBJ) $(SETARGV_OBJ) $(PERLIMPLIB) $(PERLEXE_RES)
c8e599d3 1340 $(EMBED_EXE_MANI)
1e71036e
JH
1341.ENDIF
1342 copy $(PERLEXE) $(WPERLEXE)
1343 $(MINIPERL) -I..\lib bin\exetype.pl $(WPERLEXE) WINDOWS
1e71036e 1344
931482b7 1345$(PERLEXESTATIC): $(PERLSTATICLIB) $(CONFIGPM) $(PERLEXEST_OBJ) $(PERLEXE_RES)
ed2eab3f
SH
1346.IF "$(CCTYPE)" == "BORLAND"
1347 $(LINK32) -Tpe -ap $(BLINK_FLAGS) \
13631a73
SH
1348 @$(mktmp c0x32$(o) $(PERLEXEST_OBJ),$@,, \
1349 $(shell @type Extensions_static) $(PERLSTATICLIB) $(LIBFILES),, \
1350 $(PERLEXE_RES))
ed2eab3f
SH
1351.ELIF "$(CCTYPE)" == "GCC"
1352 $(LINK32) -mconsole -o $@ $(BLINK_FLAGS) \
13631a73
SH
1353 $(mktmp $(LKPRE) $(shell @type Extensions_static) \
1354 $(PERLSTATICLIB) $(LIBFILES) $(PERLEXEST_OBJ) \
1355 $(PERLEXE_RES) $(LKPOST))
ed2eab3f 1356.ELSE
56a86867 1357 $(LINK32) -subsystem:console -out:$@ $(BLINK_FLAGS) \
a1f2e719 1358 @Extensions_static $(PERLSTATICLIB) /PDB:NONE \
ed2eab3f
SH
1359 $(LIBFILES) $(PERLEXEST_OBJ) $(SETARGV_OBJ) $(PERLEXE_RES)
1360 $(EMBED_EXE_MANI)
1361.ENDIF
1362
d1a21686 1363MakePPPort: $(MINIPERL) $(CONFIGPM) Extensions_nonxs
403f501d 1364 $(MINIPERL) -I..\lib $(ICWD) ..\mkppport
42e07562 1365
9dcb9602 1366#-------------------------------------------------------------------------------
281da5ea 1367# There's no direct way to mark a dependency on
6afd19bc 1368# DynaLoader.pm, so this will have to do
5e4c4c91 1369Extensions : ..\make_ext.pl ..\lib\buildcustomize.pl $(PERLDEP) $(CONFIGPM) $(DYNALOADER)
250c5aad 1370 $(XCOPY) ..\*.h $(COREDIR)\*.*
a193a2db 1371 $(MINIPERL) -I..\lib ..\make_ext.pl "MAKE=$(MAKE)" --dir=$(CPANDIR) --dir=$(DISTDIR) --dir=$(EXTDIR) --dynamic
d2b25974 1372
5e4c4c91 1373Extensions_reonly : ..\make_ext.pl ..\lib\buildcustomize.pl $(PERLDEP) $(CONFIGPM) $(DYNALOADER)
250c5aad 1374 $(XCOPY) ..\*.h $(COREDIR)\*.*
a193a2db 1375 $(MINIPERL) -I..\lib ..\make_ext.pl "MAKE=$(MAKE)" --dir=$(CPANDIR) --dir=$(DISTDIR) --dir=$(EXTDIR) --dynamic +re
250c5aad 1376
5e4c4c91 1377Extensions_static : ..\make_ext.pl ..\lib\buildcustomize.pl list_static_libs.pl $(PERLDEP) $(CONFIGPM)
250c5aad 1378 $(XCOPY) ..\*.h $(COREDIR)\*.*
a193a2db 1379 $(MINIPERL) -I..\lib ..\make_ext.pl "MAKE=$(MAKE)" --dir=$(CPANDIR) --dir=$(DISTDIR) --dir=$(EXTDIR) --static
c6d234b8 1380 $(MINIPERL) -I..\lib list_static_libs.pl > Extensions_static
1e71036e 1381
5e4c4c91 1382Extensions_nonxs : ..\make_ext.pl ..\lib\buildcustomize.pl $(PERLDEP) $(CONFIGPM)
a34ce875 1383 $(XCOPY) ..\*.h $(COREDIR)\*.*
a193a2db 1384 $(MINIPERL) -I..\lib ..\make_ext.pl "MAKE=$(MAKE)" --dir=$(CPANDIR) --dir=$(DISTDIR) --dir=$(EXTDIR) --nonxs
a34ce875 1385
5e4c4c91 1386$(DYNALOADER) : ..\make_ext.pl ..\lib\buildcustomize.pl $(PERLDEP) $(CONFIGPM) Extensions_nonxs
281da5ea
NC
1387 $(XCOPY) ..\*.h $(COREDIR)\*.*
1388 $(MINIPERL) -I..\lib ..\make_ext.pl "MAKE=$(MAKE)" --dir=$(EXTDIR) --dynaloader
1389
ba14dd9a 1390Extensions_clean :
a193a2db 1391 -if exist $(MINIPERL) $(MINIPERL) -I..\lib ..\make_ext.pl "MAKE=$(MAKE)" --dir=$(CPANDIR) --dir=$(DISTDIR) --dir=$(EXTDIR) --all --target=clean
1e71036e 1392
b4dc1df6 1393Extensions_realclean :
a193a2db 1394 -if exist $(MINIPERL) $(MINIPERL) -I..\lib ..\make_ext.pl "MAKE=$(MAKE)" --dir=$(CPANDIR) --dir=$(DISTDIR) --dir=$(EXTDIR) --all --target=realclean
b4dc1df6 1395
9dcb9602 1396#-------------------------------------------------------------------------------
1e71036e
JH
1397
1398
0195b144 1399doc: $(PERLEXE) ..\pod\perltoc.pod
b4a41557 1400 $(PERLEXE) -I..\lib ..\installhtml --podroot=.. --htmldir=$(HTMLDIR) \
1e71036e
JH
1401 --podpath=pod:lib:ext:utils --htmlroot="file://$(INST_HTML:s,:,|,)"\
1402 --libpod=perlfunc:perlguts:perlvar:perlrun:perlop --recurse
1403
b0b6bf2b
AT
1404# Note that this next section is parsed (and regenerated) by pod/buildtoc
1405# so please check that script before making structural changes here
9ddff148 1406utils: $(PERLEXE) $(X2P)
1e71036e 1407 cd ..\utils && $(MAKE) PERL=$(MINIPERL)
b0b6bf2b
AT
1408 copy ..\README.aix ..\pod\perlaix.pod
1409 copy ..\README.amiga ..\pod\perlamiga.pod
b0b6bf2b
AT
1410 copy ..\README.beos ..\pod\perlbeos.pod
1411 copy ..\README.bs2000 ..\pod\perlbs2000.pod
1412 copy ..\README.ce ..\pod\perlce.pod
1413 copy ..\README.cn ..\pod\perlcn.pod
1414 copy ..\README.cygwin ..\pod\perlcygwin.pod
1415 copy ..\README.dgux ..\pod\perldgux.pod
1416 copy ..\README.dos ..\pod\perldos.pod
1417 copy ..\README.epoc ..\pod\perlepoc.pod
1418 copy ..\README.freebsd ..\pod\perlfreebsd.pod
9f968a8d 1419 copy ..\README.haiku ..\pod\perlhaiku.pod
b0b6bf2b
AT
1420 copy ..\README.hpux ..\pod\perlhpux.pod
1421 copy ..\README.hurd ..\pod\perlhurd.pod
1422 copy ..\README.irix ..\pod\perlirix.pod
1423 copy ..\README.jp ..\pod\perljp.pod
1424 copy ..\README.ko ..\pod\perlko.pod
6477b319 1425 copy ..\README.linux ..\pod\perllinux.pod
b0b6bf2b
AT
1426 copy ..\README.macos ..\pod\perlmacos.pod
1427 copy ..\README.macosx ..\pod\perlmacosx.pod
b0b6bf2b
AT
1428 copy ..\README.mpeix ..\pod\perlmpeix.pod
1429 copy ..\README.netware ..\pod\perlnetware.pod
b0846812 1430 copy ..\README.openbsd ..\pod\perlopenbsd.pod
b0b6bf2b
AT
1431 copy ..\README.os2 ..\pod\perlos2.pod
1432 copy ..\README.os390 ..\pod\perlos390.pod
1433 copy ..\README.os400 ..\pod\perlos400.pod
1434 copy ..\README.plan9 ..\pod\perlplan9.pod
1435 copy ..\README.qnx ..\pod\perlqnx.pod
2f08ed66 1436 copy ..\README.riscos ..\pod\perlriscos.pod
b0b6bf2b 1437 copy ..\README.solaris ..\pod\perlsolaris.pod
27da23d5 1438 copy ..\README.symbian ..\pod\perlsymbian.pod
b0b6bf2b
AT
1439 copy ..\README.tru64 ..\pod\perltru64.pod
1440 copy ..\README.tw ..\pod\perltw.pod
1441 copy ..\README.uts ..\pod\perluts.pod
1442 copy ..\README.vmesa ..\pod\perlvmesa.pod
b0b6bf2b
AT
1443 copy ..\README.vos ..\pod\perlvos.pod
1444 copy ..\README.win32 ..\pod\perlwin32.pod
0890f1a5 1445 copy ..\pod\perldelta.pod ..\pod\perl5151delta.pod
1e71036e 1446 $(PERLEXE) $(PL2BAT) $(UTILS)
403f501d
NC
1447 $(PERLEXE) $(ICWD) ..\autodoc.pl ..
1448 $(PERLEXE) $(ICWD) ..\pod\perlmodlib.pl -q
0195b144
NC
1449
1450..\pod\perltoc.pod: $(PERLEXE) Extensions Extensions_nonxs
87e06404 1451 $(PERLEXE) -f ..\pod\buildtoc --build-toc -q
1e71036e 1452
b0b6bf2b
AT
1453# Note that the pod cleanup in this next section is parsed (and regenerated
1454# by pod/buildtoc so please check that script before making changes here
1455
b4dc1df6 1456distclean: realclean
1e71036e 1457 -del /f $(MINIPERL) $(PERLEXE) $(PERLDLL) $(GLOBEXE) \
ed2eab3f
SH
1458 $(PERLIMPLIB) ..\miniperl$(a) $(MINIMOD) \
1459 $(PERLEXESTATIC) $(PERLSTATICLIB)
1e71036e 1460 -del /f *.def *.map
ca67812f
SH
1461 -del /f $(LIBDIR)\Encode.pm $(LIBDIR)\encoding.pm $(LIBDIR)\Errno.pm
1462 -del /f $(LIBDIR)\Config.pod $(LIBDIR)\POSIX.pod $(LIBDIR)\threads.pm
48462a74 1463 -del /f $(LIBDIR)\.exists $(LIBDIR)\attributes.pm $(LIBDIR)\DynaLoader.pm
1e71036e 1464 -del /f $(LIBDIR)\Fcntl.pm $(LIBDIR)\IO.pm $(LIBDIR)\Opcode.pm
a9bf183d 1465 -del /f $(LIBDIR)\ops.pm $(LIBDIR)\Safe.pm
1e71036e
JH
1466 -del /f $(LIBDIR)\SDBM_File.pm $(LIBDIR)\Socket.pm $(LIBDIR)\POSIX.pm
1467 -del /f $(LIBDIR)\B.pm $(LIBDIR)\O.pm $(LIBDIR)\re.pm
1e71036e
JH
1468 -del /f $(LIBDIR)\File\Glob.pm
1469 -del /f $(LIBDIR)\Storable.pm
ca67812f 1470 -del /f $(LIBDIR)\Sys\Hostname.pm
1e71036e 1471 -del /f $(LIBDIR)\Time\HiRes.pm
ac5ea531 1472 -del /f $(LIBDIR)\Unicode\Normalize.pm
4e74047c 1473 -del /f $(LIBDIR)\Math\BigInt\FastCalc.pm
b4ad57f4 1474 -del /f $(LIBDIR)\Win32.pm
37ca3c28 1475 -del /f $(LIBDIR)\Win32CORE.pm
00701878
SH
1476 -del /f $(LIBDIR)\Win32API\File.pm
1477 -del /f $(LIBDIR)\Win32API\File\cFile.pc
5e4c4c91 1478 -del /f $(LIBDIR)\buildcustomize.pl
a85e0e8c 1479 -del /f $(DISTDIR)\XSLoader\XSLoader.pm
1a6c65ed
SH
1480 -if exist $(LIBDIR)\App rmdir /s /q $(LIBDIR)\App
1481 -if exist $(LIBDIR)\Archive rmdir /s /q $(LIBDIR)\Archive
1482 -if exist $(LIBDIR)\Attribute rmdir /s /q $(LIBDIR)\Attribute
1483 -if exist $(LIBDIR)\autodie rmdir /s /q $(LIBDIR)\autodie
522078af 1484 -if exist $(LIBDIR)\B rmdir /s /q $(LIBDIR)\B
1a6c65ed
SH
1485 -if exist $(LIBDIR)\CGI rmdir /s /q $(LIBDIR)\CGI
1486 -if exist $(LIBDIR)\CPAN rmdir /s /q $(LIBDIR)\CPAN
1487 -if exist $(LIBDIR)\CPANPLUS rmdir /s /q $(LIBDIR)\CPANPLUS
46ffdcf0 1488 -if exist $(LIBDIR)\Compress rmdir /s /q $(LIBDIR)\Compress
522078af 1489 -if exist $(LIBDIR)\Data rmdir /s /q $(LIBDIR)\Data
1a6c65ed
SH
1490 -if exist $(LIBDIR)\Devel rmdir /s /q $(LIBDIR)\Devel
1491 -if exist $(LIBDIR)\Digest rmdir /s /q $(LIBDIR)\Digest
ca67812f 1492 -if exist $(LIBDIR)\Encode rmdir /s /q $(LIBDIR)\Encode
1a6c65ed
SH
1493 -if exist $(LIBDIR)\encoding rmdir /s /q $(LIBDIR)\encoding
1494 -if exist $(LIBDIR)\ExtUtils\CBuilder rmdir /s /q $(LIBDIR)\ExtUtils\CBuilder
1495 -if exist $(LIBDIR)\ExtUtils\Command rmdir /s /q $(LIBDIR)\ExtUtils\Command
1496 -if exist $(LIBDIR)\ExtUtils\Constant rmdir /s /q $(LIBDIR)\ExtUtils\Constant
1497 -if exist $(LIBDIR)\ExtUtils\Liblist rmdir /s /q $(LIBDIR)\ExtUtils\Liblist
1498 -if exist $(LIBDIR)\ExtUtils\MakeMaker rmdir /s /q $(LIBDIR)\ExtUtils\MakeMaker
1499 -if exist $(LIBDIR)\File\Spec rmdir /s /q $(LIBDIR)\File\Spec
1500 -if exist $(LIBDIR)\Filter rmdir /s /q $(LIBDIR)\Filter
96c33d98 1501 -if exist $(LIBDIR)\Hash rmdir /s /q $(LIBDIR)\Hash
1a6c65ed
SH
1502 -if exist $(LIBDIR)\I18N\LangTags rmdir /s /q $(LIBDIR)\I18N\LangTags
1503 -if exist $(LIBDIR)\inc rmdir /s /q $(LIBDIR)\inc
c146e560 1504 -if exist $(LIBDIR)\Module\Pluggable rmdir /s /q $(LIBDIR)\Module\Pluggable
1a6c65ed
SH
1505 -if exist $(LIBDIR)\IO rmdir /s /q $(LIBDIR)\IO
1506 -if exist $(LIBDIR)\IPC rmdir /s /q $(LIBDIR)\IPC
69f57184 1507 -if exist $(LIBDIR)\List rmdir /s /q $(LIBDIR)\List
1a6c65ed
SH
1508 -if exist $(LIBDIR)\Locale rmdir /s /q $(LIBDIR)\Locale
1509 -if exist $(LIBDIR)\Log rmdir /s /q $(LIBDIR)\Log
1510 -if exist $(LIBDIR)\Math rmdir /s /q $(LIBDIR)\Math
1511 -if exist $(LIBDIR)\Memoize rmdir /s /q $(LIBDIR)\Memoize
69f57184 1512 -if exist $(LIBDIR)\MIME rmdir /s /q $(LIBDIR)\MIME
1a6c65ed
SH
1513 -if exist $(LIBDIR)\Module rmdir /s /q $(LIBDIR)\Module
1514 -if exist $(LIBDIR)\mro rmdir /s /q $(LIBDIR)\mro
1515 -if exist $(LIBDIR)\Net\FTP rmdir /s /q $(LIBDIR)\Net\FTP
1516 -if exist $(LIBDIR)\Object rmdir /s /q $(LIBDIR)\Object
1517 -if exist $(LIBDIR)\Package rmdir /s /q $(LIBDIR)\Package
1518 -if exist $(LIBDIR)\Params rmdir /s /q $(LIBDIR)\Params
1519 -if exist $(LIBDIR)\Parse rmdir /s /q $(LIBDIR)\Parse
1520 -if exist $(LIBDIR)\PerlIO rmdir /s /q $(LIBDIR)\PerlIO
1521 -if exist $(LIBDIR)\Pod\Perldoc rmdir /s /q $(LIBDIR)\Pod\Perldoc
1522 -if exist $(LIBDIR)\Pod\Simple rmdir /s /q $(LIBDIR)\Pod\Simple
1523 -if exist $(LIBDIR)\Pod\Text rmdir /s /q $(LIBDIR)\Pod\Text
849a608a 1524 -if exist $(LIBDIR)\re rmdir /s /q $(LIBDIR)\re
522078af 1525 -if exist $(LIBDIR)\Scalar rmdir /s /q $(LIBDIR)\Scalar
6c4b87ea 1526 -if exist $(LIBDIR)\Sys rmdir /s /q $(LIBDIR)\Sys
1a6c65ed
SH
1527 -if exist $(LIBDIR)\TAP rmdir /s /q $(LIBDIR)\TAP
1528 -if exist $(LIBDIR)\Term\UI rmdir /s /q $(LIBDIR)\Term\UI
1529 -if exist $(LIBDIR)\Test rmdir /s /q $(LIBDIR)\Test
1530 -if exist $(LIBDIR)\Thread rmdir /s /q $(LIBDIR)\Thread
6c4b87ea 1531 -if exist $(LIBDIR)\threads rmdir /s /q $(LIBDIR)\threads
8cf6f931 1532 -if exist $(LIBDIR)\Tie\Hash rmdir /s /q $(LIBDIR)\Tie\Hash
1a6c65ed 1533 -if exist $(LIBDIR)\Unicode\Collate rmdir /s /q $(LIBDIR)\Unicode\Collate
522078af 1534 -if exist $(LIBDIR)\XS rmdir /s /q $(LIBDIR)\XS
00701878 1535 -if exist $(LIBDIR)\Win32API rmdir /s /q $(LIBDIR)\Win32API
1a6c65ed 1536 -cd $(PODDIR) && del /f *.html *.bat \
0890f1a5 1537 perl5151delta.pod perlaix.pod perlamiga.pod perlapi.pod \
1178b7e3
NC
1538 perlbeos.pod perlbs2000.pod perlce.pod perlcn.pod \
1539 perlcygwin.pod perldgux.pod perldos.pod perlepoc.pod \
b14c7f9a
SH
1540 perlfreebsd.pod perlhaiku.pod perlhpux.pod perlhurd.pod \
1541 perlintern.pod perlirix.pod perljp.pod perlko.pod perllinux.pod \
1542 perlmacos.pod perlmacosx.pod perlmodlib.pod perlmpeix.pod \
1543 perlnetware.pod perlopenbsd.pod perlos2.pod perlos390.pod \
1544 perlos400.pod perlplan9.pod perlqnx.pod perlriscos.pod \
1545 perlsolaris.pod perlsymbian.pod perltoc.pod perltru64.pod \
1546 perltw.pod perluniprops.pod perluts.pod perlvmesa.pod \
1547 perlvos.pod perlwin32.pod
827a599d 1548 -cd ..\utils && del /f h2ph splain perlbug pl2pm c2ph pstruct h2xs \
c9dab4e9 1549 perldoc perlivp libnetcfg enc2xs piconv cpan *.bat \
84f04405 1550 xsubpp instmodsh json_pp prove ptar ptardiff ptargrep cpanp-run-perl cpanp cpan2dist shasum corelist config_data
827a599d 1551 -cd ..\x2p && del /f find2perl s2p psed *.bat
19ec6f53 1552 -del /f ..\config.sh perlmain.c dlutils.c config.h.new \
ed2eab3f 1553 perlmainst.c
1e71036e 1554 -del /f $(CONFIGPM)
a148edb6 1555 -del /f ..\lib\Config_git.pl
1e71036e 1556 -del /f bin\*.bat
d2b25974 1557 -del /f perllibst.h
4ebea3c6 1558 -del /f $(PERLEXE_RES) perl.base
85741d00 1559 -cd .. && del /s *$(a) *.map *.pdb *.ilk *.tds *.bs *$(o) .exists pm_to_blib ppport.h
827a599d 1560 -cd $(EXTDIR) && del /s *.def Makefile Makefile.old
a193a2db 1561 -cd $(DISTDIR) && del /s *.def Makefile Makefile.old
83d5895a 1562 -cd $(CPANDIR) && del /s *.def Makefile Makefile.old
522078af 1563 -if exist $(AUTODIR) rmdir /s /q $(AUTODIR)
522078af 1564 -if exist $(COREDIR) rmdir /s /q $(COREDIR)
b4a41557
SH
1565 -if exist pod2htmd.tmp del pod2htmd.tmp
1566 -if exist pod2htmi.tmp del pod2htmi.tmp
1567 -if exist $(HTMLDIR) rmdir /s /q $(HTMLDIR)
0279961e 1568 -del /f ..\t\test_state
1e71036e
JH
1569
1570install : all installbare installhtml
1571
0195b144 1572installbare : $(RIGHTMAKE) utils ..\pod\perltoc.pod
1e71036e
JH
1573 $(PERLEXE) ..\installperl
1574 if exist $(WPERLEXE) $(XCOPY) $(WPERLEXE) $(INST_BIN)\*.*
5548433c 1575 if exist $(PERLEXESTATIC) $(XCOPY) $(PERLEXESTATIC) $(INST_BIN)\*.*
1e71036e 1576 $(XCOPY) $(GLOBEXE) $(INST_BIN)\*.*
ec25c072
SH
1577 if exist ..\perl*.pdb $(XCOPY) ..\perl*.pdb $(INST_BIN)\*.*
1578 if exist ..\x2p\a2p.pdb $(XCOPY) ..\x2p\a2p.pdb $(INST_BIN)\*.*
1e71036e
JH
1579 $(XCOPY) bin\*.bat $(INST_SCRIPT)\*.*
1580
1581installhtml : doc
b4a41557 1582 $(RCOPY) $(HTMLDIR)\*.* $(INST_HTML)\*.*
1e71036e
JH
1583
1584inst_lib : $(CONFIGPM)
1e71036e
JH
1585 $(RCOPY) ..\lib $(INST_LIB)\*.*
1586
58fa074c 1587$(UNIDATAFILES) ..\pod\perluniprops.pod .UPDATEALL : $(MINIPERL) $(CONFIGPM) ..\lib\unicore\mktables Extensions_nonxs
27a8011f 1588 cd ..\lib\unicore && \
2a6dc374 1589 ..\$(MINIPERL) -I.. -I..\..\dist\Cwd\lib -I..\..\dist\Cwd mktables -P ..\..\pod -maketest -makelist -p
ca12659b
NC
1590
1591minitest : $(MINIPERL) $(GLOBEXE) $(CONFIGPM) $(UNIDATAFILES) utils
6c85d12e
SH
1592 $(XCOPY) $(MINIPERL) ..\t\$(NULL)
1593 if exist ..\t\perl.exe del /f ..\t\perl.exe
1594 rename ..\t\miniperl.exe perl.exe
1e71036e
JH
1595.IF "$(CCTYPE)" == "BORLAND"
1596 $(XCOPY) $(GLOBBAT) ..\t\$(NULL)
1597.ELSE
1598 $(XCOPY) $(GLOBEXE) ..\t\$(NULL)
1599.ENDIF
1600 attrib -r ..\t\*.*
1e71036e 1601 cd ..\t && \
6c85d12e 1602 $(MINIPERL) -I..\lib harness base/*.t comp/*.t cmd/*.t io/*.t op/*.t pragma/*.t
1e71036e 1603
3bef022b 1604test-prep : all utils ..\pod\perltoc.pod
1e71036e
JH
1605 $(XCOPY) $(PERLEXE) ..\t\$(NULL)
1606 $(XCOPY) $(PERLDLL) ..\t\$(NULL)
1607.IF "$(CCTYPE)" == "BORLAND"
1608 $(XCOPY) $(GLOBBAT) ..\t\$(NULL)
1609.ELSE
1610 $(XCOPY) $(GLOBEXE) ..\t\$(NULL)
1611.ENDIF
4cef65c2 1612
fa58a56f 1613.IF "$(CCTYPE)" == "GCC"
4cef65c2
S
1614# If building with gcc versions 4.x.x or greater, then
1615# the GCC helper DLL will also need copied to the test directory.
1616# The name of the dll can change, depending upon which vendor has supplied
1617# your compiler, and upon the values of "x".
1618# libstdc++-6.dll is copied if it exists as it, too, may then be needed.
1619# Without this copying, the op/taint.t test script will fail.
1620 if exist $(CCHOME)\bin\libgcc_s_sjlj-1.dll $(XCOPY) $(CCHOME)\bin\libgcc_s_sjlj-1.dll ..\t\$(NULL)
1621 if exist $(CCHOME)\bin\libgcc_s_dw2-1.dll $(XCOPY) $(CCHOME)\bin\libgcc_s_dw2-1.dll ..\t\$(NULL)
1622 if exist $(CCHOME)\bin\libgcc_s_1.dll $(XCOPY) $(CCHOME)\bin\libgcc_s_1.dll ..\t\$(NULL)
1623 if exist $(CCHOME)\bin\w64gcc_s_sjlj-1.dll $(XCOPY) $(CCHOME)\bin\w64gcc_s_sjlj-1.dll ..\t\$(NULL)
1624 if exist $(CCHOME)\bin\libstdc++-6.dll $(XCOPY) $(CCHOME)\bin\libstdc++-6.dll ..\t\$(NULL)
fa58a56f 1625.ENDIF
1e71036e
JH
1626
1627test : $(RIGHTMAKE) test-prep
0b4dcbc1
JD
1628 set PERL_STATIC_EXT=$(STATIC_EXT) && \
1629 cd ..\t && $(PERLEXE) -I..\lib harness $(TEST_SWITCHES) $(TEST_FILES)
1e71036e 1630
250c5aad
SH
1631test-reonly : reonly utils
1632 $(XCOPY) $(PERLEXE) ..\t\$(NULL)
1633 $(XCOPY) $(PERLDLL) ..\t\$(NULL)
1634 $(XCOPY) $(GLOBEXE) ..\t\$(NULL)
1635 cd ..\t && \
a4499558 1636 $(PERLEXE) -I..\lib harness $(OPT) -re \bpat\\/ $(EXTRA) && \
250c5aad
SH
1637 cd ..\win32
1638
1639regen :
1640 cd .. && regen.pl && cd win32
1641
1e71036e 1642test-notty : test-prep
0b4dcbc1
JD
1643 set PERL_STATIC_EXT=$(STATIC_EXT) && \
1644 set PERL_SKIP_TTY_TEST=1 && \
89087c85 1645 cd ..\t && $(PERLEXE) -I.\lib harness $(TEST_SWITCHES) $(TEST_FILES)
1e71036e 1646
b4a93add 1647_test : $(RIGHTMAKE)
a01cf021
JH
1648 $(XCOPY) $(PERLEXE) ..\t\$(NULL)
1649 $(XCOPY) $(PERLDLL) ..\t\$(NULL)
b4a93add 1650.IF "$(CCTYPE)" == "BORLAND"
a01cf021 1651 $(XCOPY) $(GLOBBAT) ..\t\$(NULL)
b4a93add 1652.ELSE
a01cf021 1653 $(XCOPY) $(GLOBEXE) ..\t\$(NULL)
b4a93add 1654.ENDIF
0b4dcbc1
JD
1655 set PERL_STATIC_EXT=$(STATIC_EXT) && \
1656 cd ..\t && $(PERLEXE) -I..\lib harness $(TEST_SWITCHES) $(TEST_FILES)
b4a93add 1657
b4dc1df6 1658_clean :
1e71036e
JH
1659 -@erase miniperlmain$(o)
1660 -@erase $(MINIPERL)
1661 -@erase perlglob$(o)
1662 -@erase perlmain$(o)
ed2eab3f 1663 -@erase perlmainst$(o)
1e71036e
JH
1664 -@erase config.w32
1665 -@erase /f config.h
a148edb6 1666 -@erase /f ..\git_version.h
1e71036e
JH
1667 -@erase $(GLOBEXE)
1668 -@erase $(PERLEXE)
1669 -@erase $(WPERLEXE)
ed2eab3f
SH
1670 -@erase $(PERLEXESTATIC)
1671 -@erase $(PERLSTATICLIB)
1e71036e
JH
1672 -@erase $(PERLDLL)
1673 -@erase $(CORE_OBJ)
6f83ef0e 1674 -@erase $(GENUUDMAP) $(GENUUDMAP_OBJ) $(UUDMAP_H) $(BITCOUNT_H) $(MG_DATA_H)
522078af 1675 -if exist $(MINIDIR) rmdir /s /q $(MINIDIR)
27a8011f 1676 -if exist $(UNIDATADIR1) rmdir /s /q $(UNIDATADIR1)
27a8011f 1677 -if exist $(UNIDATADIR2) rmdir /s /q $(UNIDATADIR2)
ca12659b 1678 -@erase $(UNIDATAFILES)
1e71036e
JH
1679 -@erase $(WIN32_OBJ)
1680 -@erase $(DLL_OBJ)
1681 -@erase $(X2P_OBJ)
1682 -@erase ..\*$(o) ..\*$(a) ..\*.exp *$(o) *$(a) *.exp *.res
1683 -@erase ..\t\*.exe ..\t\*.dll ..\t\*.bat
1684 -@erase ..\x2p\*.exe ..\x2p\*.bat
1685 -@erase *.ilk
1686 -@erase *.pdb
44ba898b 1687 -@erase *.tds
9e7cf449 1688 -@erase Extensions_static
1e71036e 1689
b4dc1df6 1690
1266ad8f 1691
6e2cec71 1692clean : Extensions_clean _clean
1266ad8f 1693
85741d00 1694realclean : Extensions_realclean _clean
b4dc1df6 1695
1e71036e
JH
1696# Handy way to run perlbug -ok without having to install and run the
1697# installed perlbug. We don't re-run the tests here - we trust the user.
1698# Please *don't* use this unless all tests pass.
1699# If you want to report test failures, use "dmake nok" instead.
1700ok: utils
1701 $(PERLEXE) -I..\lib ..\utils\perlbug -ok -s "(UNINSTALLED)"
1702
1703okfile: utils
1704 $(PERLEXE) -I..\lib ..\utils\perlbug -ok -s "(UNINSTALLED)" -F perl.ok
1705
1706nok: utils
1707 $(PERLEXE) -I..\lib ..\utils\perlbug -nok -s "(UNINSTALLED)"
1708
1709nokfile: utils
1710 $(PERLEXE) -I..\lib ..\utils\perlbug -nok -s "(UNINSTALLED)" -F perl.nok