This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Purge references to --libpod, an abbreviation for --libpods
[perl5.git] / win32 / Makefile
CommitLineData
9e42cd94 1#
b6c85593 2# Makefile to build perl on Windows using Microsoft NMAKE.
9e42cd94 3# Supported compilers:
b6c85593 4# Microsoft Visual C++ 6.0 or later
02e200fc 5# Windows SDK 64-bit compiler and tools
9e42cd94
GS
6#
7# This is set up to build a perl.exe that runs off a shared library
8891dd8d 8# (perl515.dll). Also makes individual DLLs for the XS extensions.
9e42cd94
GS
9#
10
11##
12## Make sure you read README.win32 *before* you mess with anything here!
13##
14
15##
16## Build configuration. Edit the values below to suit your needs.
17##
18
19#
20# Set these to wherever you want "nmake install" to put your
21# newly built perl.
22#
23INST_DRV = c:
24INST_TOP = $(INST_DRV)\perl
25
26#
b86e806e
JD
27# Uncomment if you want to build a 32-bit Perl using a 32-bit compiler
28# on a 64-bit version of Windows.
29#WIN64 = undef
30
31#
9e42cd94
GS
32# Comment this out if you DON'T want your perl installation to be versioned.
33# This means that the new installation will overwrite any files from the
34# old installation at the same INST_TOP location. Leaving it enabled is
35# the safest route, as perl adds the extra version directory to all the
36# locations it installs files to. If you disable it, an alternative
37# versioned installation can be obtained by setting INST_TOP above to a
38# path that includes an arbitrary version string.
39#
fbea3025 40#INST_VER = \5.15.7
9e42cd94
GS
41
42#
43# Comment this out if you DON'T want your perl installation to have
44# architecture specific components. This means that architecture-
45# specific files will be installed along with the architecture-neutral
46# files. Leaving it enabled is safer and more flexible, in case you
47# want to build multiple flavors of perl and install them together in
48# the same location. Commenting it out gives you a simpler
49# installation that is easier to understand for beginners.
50#
bdb4cb88 51#INST_ARCH = \$(ARCHNAME)
9e42cd94
GS
52
53#
7ada00a0
SH
54# Uncomment this if you want perl to run
55# $Config{sitelibexp}\sitecustomize.pl
56# before anything else. This script can then be set up, for example,
57# to add additional entries to @INC.
58#
59#USE_SITECUST = define
60
61#
9e42cd94 62# uncomment to enable multiple interpreters. This is need for fork()
f7d585d3 63# emulation and for thread support.
9e42cd94 64#
bdb4cb88 65USE_MULTI = define
9e42cd94
GS
66
67#
f7d585d3 68# Beginnings of interpreter cloning/threads; now reasonably complete.
9e42cd94
GS
69# This should be enabled to get the fork() emulation. This needs
70# USE_MULTI as well.
71#
bdb4cb88 72USE_ITHREADS = define
9e42cd94
GS
73
74#
75# uncomment to enable the implicit "host" layer for all system calls
76# made by perl. This needs USE_MULTI above. This is also needed to
77# get fork().
78#
bdb4cb88 79USE_IMP_SYS = define
9e42cd94
GS
80
81#
f7d585d3
GS
82# Comment out next assign to disable perl's I/O subsystem and use compiler's
83# stdio for IO - depending on your compiler vendor and run time library you may
84# then get a number of fails from make test i.e. bugs - complain to them not us ;-).
85# You will also be unable to take full advantage of perl5.8's support for multiple
86# encodings and may see lower IO performance. You have been warned.
9e42cd94
GS
87USE_PERLIO = define
88
89#
4a9d6100
GS
90# Comment this out if you don't want to enable large file support for
91# some reason. Should normally only be changed to maintain compatibility
92# with an older release of perl.
bdb4cb88 93USE_LARGE_FILES = define
4a9d6100
GS
94
95#
da2c7419 96# uncomment exactly one of the following
9e42cd94 97#
1c847d4b 98# Visual C++ 6.x (aka Visual C++ 98)
4a9d6100 99CCTYPE = MSVC60
1c847d4b 100# Visual C++ Toolkit 2003 (aka Visual C++ 7.x) (free command-line tools)
da2c7419 101#CCTYPE = MSVC70FREE
1c847d4b 102# Visual C++ .NET 2003 (aka Visual C++ 7.x) (full version)
da2c7419 103#CCTYPE = MSVC70
02e200fc
JD
104# Windows Server 2003 SP1 Platform SDK (April 2005)
105#CCTYPE = SDK2003SP1
1c847d4b 106# Visual C++ 2005 Express Edition (aka Visual C++ 8.x) (free version)
73c9ebc7 107#CCTYPE = MSVC80FREE
1c847d4b 108# Visual C++ 2005 (aka Visual C++ 8.x) (full version)
73c9ebc7 109#CCTYPE = MSVC80
4a3cf07b
SH
110# Visual C++ 2008 Express Edition (aka Visual C++ 9.x) (free version)
111#CCTYPE = MSVC90FREE
112# Visual C++ 2008 (aka Visual C++ 9.x) (full version)
113#CCTYPE = MSVC90
2a46176f
SH
114# Visual C++ 2010 Express Edition (aka Visual C++ 10.x) (free version)
115#CCTYPE = MSVC100FREE
116# Visual C++ 2010 (aka Visual C++ 10.x) (full version)
117#CCTYPE = MSVC100
9e42cd94
GS
118
119#
120# uncomment next line if you want debug version of perl (big,slow)
f7d585d3
GS
121# If not enabled, we automatically try to use maximum optimization
122# with all compilers that are known to have a working optimizer.
9e42cd94
GS
123#
124#CFG = Debug
125
126#
9e42cd94
GS
127# uncomment to enable linking with setargv.obj under the Visual C
128# compiler. Setting this options enables perl to expand wildcards in
129# arguments, but it may be harder to use alternate methods like
130# File::DosGlob that are more powerful. This option is supported only with
131# Visual C.
132#
133#USE_SETARGV = define
134
135#
9e42cd94
GS
136# set this if you wish to use perl's malloc
137# WARNING: Turning this on/off WILL break binary compatibility with extensions
138# you may have compiled with/without it. Be prepared to recompile all
139# extensions if you change the default. Currently, this cannot be enabled
140# if you ask for USE_IMP_SYS above.
141#
142#PERL_MALLOC = define
143
144#
06c896bb
SH
145# set this to enable debugging mstats
146# This must be enabled to use the Devel::Peek::mstat() function. This cannot
147# be enabled without PERL_MALLOC as well.
148#
bdb4cb88 149#DEBUG_MSTATS = define
06c896bb
SH
150
151#
4e036e4b
VK
152# set this to additionally provide a statically linked perl-static.exe.
153# Note that dynamic loading will not work with this perl, so you must
a1f2e719 154# include required modules statically using the STATIC_EXT or ALL_STATIC
8891dd8d 155# variables below. A static library perl515s.lib will also be created.
4e036e4b
VK
156# Ordinary perl.exe is not affected by this option.
157#
158#BUILD_STATIC = define
159
160#
a1f2e719
VK
161# in addition to BUILD_STATIC the option ALL_STATIC makes *every*
162# extension get statically built
163# This will result in a very large perl executable, but the main purpose
164# is to have proper linking set so as to be able to create miscellaneous
165# executables with different built-in extensions
166#
167#ALL_STATIC = define
168
169#
06c896bb 170#
9e42cd94
GS
171# set the install locations of the compiler include/libraries
172# Running VCVARS32.BAT is *required* when using Visual C.
173# Some versions of Visual C don't define MSVCDIR in the environment,
174# so you may have to set CCHOME explicitly (spaces in the path name should
175# not be quoted)
176#
9e42cd94
GS
177CCHOME = $(MSVCDIR)
178CCINCDIR = $(CCHOME)\include
179CCLIBDIR = $(CCHOME)\lib
180
181#
182# Additional compiler flags can be specified here.
183#
2e30e1e1 184BUILDOPT = $(BUILDOPTEXTRA)
9e42cd94 185
7ada00a0 186#
9e42cd94
GS
187# This should normally be disabled. Enabling it will disable the File::Glob
188# implementation of CORE::glob.
189#
190#BUILDOPT = $(BUILDOPT) -DPERL_EXTERNAL_GLOB
191
192#
270ca148
JD
193# Perl needs to read scripts in text mode so that the DATA filehandle
194# works correctly with seek() and tell(), or around auto-flushes of
195# all filehandles (e.g. by system(), backticks, fork(), etc).
bdb4cb88 196#
270ca148
JD
197# The current version on the ByteLoader module on CPAN however only
198# works if scripts are read in binary mode. But before you disable text
199# mode script reading (and break some DATA filehandle functionality)
200# please check first if an updated ByteLoader isn't available on CPAN.
201#
202BUILDOPT = $(BUILDOPT) -DPERL_TEXTMODE_SCRIPTS
9e42cd94
GS
203
204#
205# specify semicolon-separated list of extra directories that modules will
206# look for libraries (spaces in path names need not be quoted)
207#
208EXTRALIBDIRS =
209
210#
211# set this to your email address (perl will guess a value from
212# from your loginname and your hostname, which may not be right)
213#
214#EMAIL =
215
216##
217## Build configuration ends.
218##
219
220##################### CHANGE THESE ONLY IF YOU MUST #####################
221
646e33b6
SH
222!IF "$(USE_IMP_SYS)" == "define"
223PERL_MALLOC = undef
224DEBUG_MSTATS = undef
225!ENDIF
226
9e42cd94
GS
227!IF "$(PERL_MALLOC)" == ""
228PERL_MALLOC = undef
646e33b6 229DEBUG_MSTATS = undef
06c896bb
SH
230!ENDIF
231
232!IF "$(DEBUG_MSTATS)" == ""
646e33b6 233DEBUG_MSTATS = undef
06c896bb
SH
234!ENDIF
235
236!IF "$(DEBUG_MSTATS)" == "define"
646e33b6 237BUILDOPT = $(BUILDOPT) -DPERL_DEBUGGING_MSTATS
9e42cd94
GS
238!ENDIF
239
7ada00a0
SH
240!IF "$(USE_SITECUST)" == ""
241USE_SITECUST = undef
242!ENDIF
243
9e42cd94
GS
244!IF "$(USE_MULTI)" == ""
245USE_MULTI = undef
246!ENDIF
247
248!IF "$(USE_ITHREADS)" == ""
249USE_ITHREADS = undef
250!ENDIF
251
252!IF "$(USE_IMP_SYS)" == ""
253USE_IMP_SYS = undef
254!ENDIF
255
256!IF "$(USE_PERLIO)" == ""
257USE_PERLIO = undef
258!ENDIF
259
4a9d6100
GS
260!IF "$(USE_LARGE_FILES)" == ""
261USE_LARGE_FILES = undef
262!ENDIF
263
3db8f154 264!IF "$(USE_IMP_SYS)$(USE_MULTI)" == "defineundef"
9e42cd94
GS
265USE_MULTI = define
266!ENDIF
267
268!IF "$(USE_ITHREADS)$(USE_MULTI)" == "defineundef"
269USE_MULTI = define
9e42cd94
GS
270!ENDIF
271
7ada00a0
SH
272!IF "$(USE_SITECUST)" == "define"
273BUILDOPT = $(BUILDOPT) -DUSE_SITECUSTOMIZE
274!ENDIF
275
3db8f154 276!IF "$(USE_MULTI)" != "undef"
9e42cd94
GS
277BUILDOPT = $(BUILDOPT) -DPERL_IMPLICIT_CONTEXT
278!ENDIF
279
280!IF "$(USE_IMP_SYS)" != "undef"
281BUILDOPT = $(BUILDOPT) -DPERL_IMPLICIT_SYS
282!ENDIF
283
284!IF "$(PROCESSOR_ARCHITECTURE)" == ""
285PROCESSOR_ARCHITECTURE = x86
286!ENDIF
287
c623ac67 288!IF "$(WIN64)" == ""
bf2a35e5
JD
289# When we are running from a 32bit cmd.exe on AMD64 then
290# PROCESSOR_ARCHITECTURE is set to x86 and PROCESSOR_ARCHITEW6432
291# is set to AMD64
c623ac67
GS
292!IF "$(PROCESSOR_ARCHITEW6432)" != ""
293PROCESSOR_ARCHITECTURE = $(PROCESSOR_ARCHITEW6432)
294WIN64 = define
295!ELSE
bf2a35e5 296!IF "$(PROCESSOR_ARCHITECTURE)" == "AMD64" || "$(PROCESSOR_ARCHITECTURE)" == "IA64"
c623ac67
GS
297WIN64 = define
298!ELSE
299WIN64 = undef
300!ENDIF
301!ENDIF
302!ENDIF
303
02e200fc
JD
304# Treat 64-bit MSVC60 (doesn't really exist) as SDK2003SP1 because
305# both link against MSVCRT.dll (which is part of Windows itself) and
306# not against a compiler specific versioned runtime.
307!IF "$(WIN64)" == "define" && "$(CCTYPE)" == "MSVC60"
308CCTYPE = SDK2003SP1
309!ENDIF
310
bf2a35e5
JD
311ARCHITECTURE = $(PROCESSOR_ARCHITECTURE)
312!IF "$(ARCHITECTURE)" == "AMD64"
313ARCHITECTURE = x64
9453ddcd 314!ENDIF
bf2a35e5
JD
315!IF "$(ARCHITECTURE)" == "IA64"
316ARCHITECTURE = ia64
9453ddcd
SH
317!ENDIF
318
9e42cd94 319!IF "$(USE_MULTI)" == "define"
bf2a35e5 320ARCHNAME = MSWin32-$(ARCHITECTURE)-multi
9e42cd94
GS
321!ELSE
322!IF "$(USE_PERLIO)" == "define"
bf2a35e5 323ARCHNAME = MSWin32-$(ARCHITECTURE)-perlio
9e42cd94 324!ELSE
bf2a35e5 325ARCHNAME = MSWin32-$(ARCHITECTURE)
9e42cd94
GS
326!ENDIF
327!ENDIF
9e42cd94
GS
328
329!IF "$(USE_PERLIO)" == "define"
330BUILDOPT = $(BUILDOPT) -DUSE_PERLIO
331!ENDIF
332
333!IF "$(USE_ITHREADS)" == "define"
334ARCHNAME = $(ARCHNAME)-thread
335!ENDIF
336
2a46176f
SH
337# Visual C++ 98, .NET 2003, 2005/2008/2010 specific.
338# VC++ 6/7/8/9/10.x can load DLLs on demand. Makes the test suite run
4a3cf07b 339# in about 10% less time. (The free version of 7.x can't do this, but the free
2a46176f 340# versions of 8/9/10.x can.)
4a3cf07b
SH
341!IF "$(CCTYPE)" == "MSVC60" || "$(CCTYPE)" == "MSVC70" || \
342 "$(CCTYPE)" == "MSVC80" || "$(CCTYPE)" == "MSVC80FREE" || \
2a46176f
SH
343 "$(CCTYPE)" == "MSVC90" || "$(CCTYPE)" == "MSVC90FREE" || \
344 "$(CCTYPE)" == "MSVC100" || "$(CCTYPE)" == "MSVC100FREE"
d1a8253e 345DELAYLOAD = -DELAYLOAD:ws2_32.dll delayimp.lib
9e42cd94
GS
346!ENDIF
347
4a3cf07b
SH
348# Visual C++ 2005 and 2008 (VC++ 8.x and 9.x) create manifest files for EXEs and
349# DLLs. These either need copying everywhere with the binaries, or else need
3ddd48aa
SH
350# embedding in them otherwise MSVCR80.dll or MSVCR90.dll won't be found. For
351# simplicity, embed them if they exist (and delete them afterwards so that they
352# don't get installed too).
4adc95e6
SH
353EMBED_EXE_MANI = if exist $@.manifest mt -nologo -manifest $@.manifest -outputresource:$@;1 && \
354 if exist $@.manifest del $@.manifest
355EMBED_DLL_MANI = if exist $@.manifest mt -nologo -manifest $@.manifest -outputresource:$@;2 && \
356 if exist $@.manifest del $@.manifest
c8e599d3 357
9e42cd94
GS
358ARCHDIR = ..\lib\$(ARCHNAME)
359COREDIR = ..\lib\CORE
360AUTODIR = ..\lib\auto
361LIBDIR = ..\lib
362EXTDIR = ..\ext
a193a2db 363DISTDIR = ..\dist
b212a3c6 364CPANDIR = ..\cpan
9e42cd94
GS
365PODDIR = ..\pod
366EXTUTILSDIR = $(LIBDIR)\ExtUtils
b4a41557 367HTMLDIR = .\html
9e42cd94
GS
368
369#
370INST_SCRIPT = $(INST_TOP)$(INST_VER)\bin
371INST_BIN = $(INST_SCRIPT)$(INST_ARCH)
372INST_LIB = $(INST_TOP)$(INST_VER)\lib
373INST_ARCHLIB = $(INST_LIB)$(INST_ARCH)
374INST_COREDIR = $(INST_ARCHLIB)\CORE
9e42cd94
GS
375INST_HTML = $(INST_TOP)$(INST_VER)\html
376
377#
378# Programs to compile, build .lib files and link
379#
380
381CC = cl
382LINK32 = link
383LIB32 = $(LINK32) -lib
384RSC = rc
385
386#
387# Options
388#
389
390INCLUDES = -I$(COREDIR) -I.\include -I. -I..
391#PCHFLAGS = -Fpc:\temp\vcmoduls.pch -YX
9cef8306 392DEFINES = -DWIN32 -D_CONSOLE -DNO_STRICT
9e42cd94
GS
393LOCDEFS = -DPERLDLL -DPERL_CORE
394SUBSYS = console
a7d225ec 395CXX_FLAG = -TP -EHsc
9e42cd94 396
9e42cd94 397LIBC = msvcrt.lib
9e42cd94 398
9e42cd94 399!IF "$(CFG)" == "Debug"
9e42cd94 400OPTIMIZE = -Od -MD -Zi -DDEBUGGING
c623ac67 401LINK_DBG = -debug
9e42cd94 402!ELSE
ec25c072
SH
403OPTIMIZE = -MD -Zi -DNDEBUG
404# we enable debug symbols in release builds also
405LINK_DBG = -debug -opt:ref,icf
406# you may want to enable this if you want COFF symbols in the executables
407# in addition to the PDB symbols. The default Dr. Watson that ships with
408# Windows can use the the former but not latter. The free WinDbg can be
409# installed to get better stack traces from just the PDB symbols, so we
410# avoid the bloat of COFF symbols by default.
411#LINK_DBG = $(LINK_DBG) -debugtype:both
d921a5fb
GS
412! IF "$(WIN64)" == "define"
413# enable Whole Program Optimizations (WPO) and Link Time Code Generation (LTCG)
414OPTIMIZE = $(OPTIMIZE) -Ox -GL
415LINK_DBG = $(LINK_DBG) -ltcg
416! ELSE
417# -O1 yields smaller code, which turns out to be faster than -O2 on x86
418OPTIMIZE = $(OPTIMIZE) -O1
419#OPTIMIZE = $(OPTIMIZE) -O2
420! ENDIF
9e42cd94
GS
421!ENDIF
422
c623ac67
GS
423!IF "$(WIN64)" == "define"
424DEFINES = $(DEFINES) -DWIN64 -DCONSERVATIVE
f33a21d8 425OPTIMIZE = $(OPTIMIZE) -fp:precise
da2c7419
SH
426!ENDIF
427
2a46176f 428# For now, silence VC++ 8/9/10.x's warnings about "unsafe" CRT functions
4a3cf07b
SH
429# and POSIX CRT function names being deprecated.
430!IF "$(CCTYPE)" == "MSVC80" || "$(CCTYPE)" == "MSVC80FREE" || \
2a46176f
SH
431 "$(CCTYPE)" == "MSVC90" || "$(CCTYPE)" == "MSVC90FREE" || \
432 "$(CCTYPE)" == "MSVC100" || "$(CCTYPE)" == "MSVC100FREE"
26a6faa8 433DEFINES = $(DEFINES) -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE
c5b31784
SH
434!ENDIF
435
45f6403b
JD
436# In VS 2005 (VC++ 8.0) Microsoft changes time_t from 32-bit to
437# 64-bit, even in 32-bit mode. It also provides the _USE_32BIT_TIME_T
438# preprocessor option to revert back to the old functionality for
439# backward compatibility. We define this symbol here for older 32-bit
440# compilers only (which aren't using it at all) for the sole purpose
441# of getting it into $Config{ccflags}. That way if someone builds
442# Perl itself with e.g. VC6 but later installs an XS module using VC8
443# the time_t types will still be compatible.
444!IF "$(WIN64)" == "undef"
445! IF "$(CCTYPE)" == "MSVC60" || \
446 "$(CCTYPE)" == "MSVC70" || "$(CCTYPE)" == "MSVC70FREE"
447BUILDOPT = $(BUILDOPT) -D_USE_32BIT_TIME_T
448! ENDIF
449!ENDIF
450
9cef8306 451LIBBASEFILES = \
9e42cd94
GS
452 oldnames.lib kernel32.lib user32.lib gdi32.lib winspool.lib \
453 comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib \
036c1c1e 454 netapi32.lib uuid.lib ws2_32.lib mpr.lib winmm.lib \
4ebea3c6 455 version.lib odbc32.lib odbccp32.lib comctl32.lib
c623ac67 456
02e200fc
JD
457# The 64 bit Windows Server 2003 SP1 SDK compilers link against MSVCRT.dll, which
458# doesn't include the buffer overrun verification code used by the /GS switch.
9453ddcd 459# Since the code links against libraries that are compiled with /GS, this
02e200fc
JD
460# "security cookie verification" code must be included via bufferoverflow.lib.
461!IF "$(WIN64)" == "define" && "$(CCTYPE)" == "SDK2003SP1"
9453ddcd 462LIBBASEFILES = $(LIBBASEFILES) bufferoverflowU.lib
c623ac67 463!ENDIF
9e42cd94 464
9e42cd94
GS
465LIBFILES = $(LIBBASEFILES) $(LIBC)
466
a5ca303d 467#EXTRACFLAGS = -nologo -GF -W4 -wd4127 -wd4706
9453ddcd 468EXTRACFLAGS = -nologo -GF -W3
bb275e72 469CFLAGS = $(EXTRACFLAGS) $(INCLUDES) $(DEFINES) $(LOCDEFS) \
9e42cd94
GS
470 $(PCHFLAGS) $(OPTIMIZE)
471LINK_FLAGS = -nologo -nodefaultlib $(LINK_DBG) \
472 -libpath:"$(INST_COREDIR)" \
473 -machine:$(PROCESSOR_ARCHITECTURE)
4e036e4b 474LIB_FLAGS = -nologo
9e42cd94
GS
475OBJOUT_FLAG = -Fo
476EXEOUT_FLAG = -Fe
477
478CFLAGS_O = $(CFLAGS) $(BUILDOPT)
479
4ebea3c6 480!IF "$(CCTYPE)" == "MSVC80" || "$(CCTYPE)" == "MSVC80FREE" || \
2a46176f
SH
481 "$(CCTYPE)" == "MSVC90" || "$(CCTYPE)" == "MSVC90FREE" || \
482 "$(CCTYPE)" == "MSVC100" || "$(CCTYPE)" == "MSVC100FREE"
4ebea3c6
JD
483LINK_FLAGS = $(LINK_FLAGS) "/manifestdependency:type='Win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'"
484!ELSE
485RSC_FLAGS = -DINCLUDE_MANIFEST
486!ENDIF
487
488
9e42cd94
GS
489#################### do not edit below this line #######################
490############# NO USER-SERVICEABLE PARTS BEYOND THIS POINT ##############
491
492o = .obj
493
494#
495# Rules
496#
497
498.SUFFIXES : .c $(o) .dll .lib .exe .rc .res
499
500.c$(o):
501 $(CC) -c -I$(<D) $(CFLAGS_O) $(OBJOUT_FLAG)$@ $<
502
503.y.c:
504 $(NOOP)
505
506$(o).dll:
507 $(LINK32) -dll -subsystem:windows -implib:$(*B).lib -def:$(*B).def \
508 -out:$@ $(LINK_FLAGS) $(LIBFILES) $< $(LIBPERL)
c8e599d3 509 $(EMBED_DLL_MANI)
9e42cd94
GS
510
511.rc.res:
4ebea3c6 512 $(RSC) -i.. $(RSC_FLAGS) $<
9e42cd94
GS
513
514#
515# various targets
516
517# makedef.pl must be updated if this changes, and this should normally
518# only change when there is an incompatible revision of the public API.
8891dd8d
DM
519PERLIMPLIB = ..\perl515.lib
520PERLSTATICLIB = ..\perl515s.lib
521PERLDLL = ..\perl515.dll
9e42cd94
GS
522
523MINIPERL = ..\miniperl.exe
524MINIDIR = .\mini
525PERLEXE = ..\perl.exe
526WPERLEXE = ..\wperl.exe
4e036e4b 527PERLEXESTATIC = ..\perl-static.exe
9e42cd94 528GLOBEXE = ..\perlglob.exe
04bae4fb 529CONFIGPM = ..\lib\Config.pm ..\lib\Config_heavy.pl
9e42cd94
GS
530MINIMOD = ..\lib\ExtUtils\Miniperl.pm
531X2P = ..\x2p\a2p.exe
202d1001 532GENUUDMAP = ..\generate_uudmap.exe
4e036e4b
VK
533!IF "$(BUILD_STATIC)" == "define"
534PERLSTATIC = static
535!ELSE
536PERLSTATIC =
537!ENDIF
5b04aee6 538
ca12659b 539# Unicode data files generated by mktables
36ff7f95
SH
540FIRSTUNIFILE = ..\lib\unicore\Decomposition.pl
541UNIDATAFILES = ..\lib\unicore\Decomposition.pl \
7ebf06b3 542 ..\lib\unicore\CombiningClass.pl ..\lib\unicore\Name.pl \
1a234f2b
KW
543 ..\lib\unicore\Heavy.pl ..\lib\unicore\mktables.lst \
544 ..\lib\unicore\UCD.pl ..\lib\unicore\Name.pm \
3e344d15 545 ..\lib\unicore\TestProp.pl
ca12659b
NC
546
547# Directories of Unicode data files generated by mktables
27a8011f
SH
548UNIDATADIR1 = ..\lib\unicore\To
549UNIDATADIR2 = ..\lib\unicore\lib
ca12659b 550
4ebea3c6 551PERLEXE_MANIFEST= .\perlexe.manifest
3890b58f
RGS
552PERLEXE_ICO = .\perlexe.ico
553PERLEXE_RES = .\perlexe.res
554PERLDLL_RES =
555
9e42cd94
GS
556# Nominate a target which causes extensions to be re-built
557# This used to be $(PERLEXE), but at worst it is the .dll that they depend
558# on and really only the interface - i.e. the .def file used to export symbols
559# from the .dll
560PERLDEP = perldll.def
561
562PL2BAT = bin\pl2bat.pl
563GLOBBAT = bin\perlglob.bat
564
565UTILS = \
566 ..\utils\h2ph \
567 ..\utils\splain \
9e42cd94
GS
568 ..\utils\perlbug \
569 ..\utils\pl2pm \
570 ..\utils\c2ph \
827a599d 571 ..\utils\pstruct \
9e42cd94
GS
572 ..\utils\h2xs \
573 ..\utils\perldoc \
9e42cd94
GS
574 ..\utils\perlivp \
575 ..\utils\libnetcfg \
827a599d
GS
576 ..\utils\enc2xs \
577 ..\utils\piconv \
bb4e9162 578 ..\utils\config_data \
18a1cebe 579 ..\utils\corelist \
83cd6e83 580 ..\utils\cpan \
ea0e987d 581 ..\utils\xsubpp \
4b618757 582 ..\utils\prove \
291d3373 583 ..\utils\ptar \
b8669316 584 ..\utils\ptardiff \
deabda19 585 ..\utils\ptargrep \
08ad9465 586 ..\utils\zipdetails \
6aaee015
RGS
587 ..\utils\cpanp-run-perl \
588 ..\utils\cpanp \
589 ..\utils\cpan2dist \
3ddf9550 590 ..\utils\shasum \
ea0e987d 591 ..\utils\instmodsh \
84f04405 592 ..\utils\json_pp \
d658129c 593 ..\utils\pod2html \
9e42cd94 594 ..\x2p\find2perl \
827a599d 595 ..\x2p\psed \
9e42cd94 596 ..\x2p\s2p \
9e42cd94
GS
597 bin\exetype.pl \
598 bin\runperl.pl \
599 bin\pl2bat.pl \
600 bin\perlglob.pl \
601 bin\search.pl
602
603MAKE = nmake -nologo
604MAKE_BARE = nmake
605
c623ac67
GS
606!IF "$(WIN64)" == "define"
607CFGSH_TMPL = config.vc64
608CFGH_TMPL = config_H.vc64
609!ELSE
9e42cd94
GS
610CFGSH_TMPL = config.vc
611CFGH_TMPL = config_H.vc
c623ac67 612!ENDIF
9e42cd94 613
b6ed7314
YO
614XCOPY = xcopy /f /r /i /d /y
615RCOPY = xcopy /f /r /i /e /d /y
65980d94 616NOOP = @rem
9e42cd94
GS
617NULL =
618
619DEL = del
620
9e42cd94
GS
621MICROCORE_SRC = \
622 ..\av.c \
623 ..\deb.c \
624 ..\doio.c \
625 ..\doop.c \
626 ..\dump.c \
627 ..\globals.c \
628 ..\gv.c \
e1a479c5 629 ..\mro.c \
9e42cd94
GS
630 ..\hv.c \
631 ..\locale.c \
26ea9e12 632 ..\keywords.c \
a0d89a74 633 ..\mathoms.c \
9e42cd94
GS
634 ..\mg.c \
635 ..\numeric.c \
636 ..\op.c \
295f0f84 637 ..\pad.c \
9e42cd94
GS
638 ..\perl.c \
639 ..\perlapi.c \
640 ..\perly.c \
641 ..\pp.c \
642 ..\pp_ctl.c \
643 ..\pp_hot.c \
644 ..\pp_pack.c \
645 ..\pp_sort.c \
646 ..\pp_sys.c \
10bc17b6 647 ..\reentr.c \
9e42cd94
GS
648 ..\regcomp.c \
649 ..\regexec.c \
650 ..\run.c \
651 ..\scope.c \
652 ..\sv.c \
653 ..\taint.c \
654 ..\toke.c \
655 ..\universal.c \
656 ..\utf8.c \
48462a74 657 ..\util.c
9e42cd94
GS
658
659EXTRACORE_SRC = $(EXTRACORE_SRC) perllib.c
660
661!IF "$(PERL_MALLOC)" == "define"
662EXTRACORE_SRC = $(EXTRACORE_SRC) ..\malloc.c
663!ENDIF
664
665EXTRACORE_SRC = $(EXTRACORE_SRC) ..\perlio.c
666
667WIN32_SRC = \
668 .\win32.c \
669 .\win32sck.c \
9cef8306
JD
670 .\win32thread.c \
671 .\fcrypt.c
9e42cd94 672
f7d585d3
GS
673# We need this for miniperl build unless we override canned
674# config.h #define building mini\*
675#!IF "$(USE_PERLIO)" == "define"
9e42cd94 676WIN32_SRC = $(WIN32_SRC) .\win32io.c
f7d585d3 677#!ENDIF
9e42cd94 678
9e42cd94 679
9e42cd94
GS
680X2P_SRC = \
681 ..\x2p\a2p.c \
682 ..\x2p\hash.c \
683 ..\x2p\str.c \
684 ..\x2p\util.c \
685 ..\x2p\walk.c
686
687CORE_NOCFG_H = \
688 ..\av.h \
689 ..\cop.h \
690 ..\cv.h \
691 ..\dosish.h \
692 ..\embed.h \
693 ..\form.h \
694 ..\gv.h \
695 ..\handy.h \
696 ..\hv.h \
697 ..\iperlsys.h \
698 ..\mg.h \
699 ..\nostdio.h \
700 ..\op.h \
701 ..\opcode.h \
702 ..\perl.h \
703 ..\perlapi.h \
704 ..\perlsdio.h \
705 ..\perlsfio.h \
706 ..\perly.h \
707 ..\pp.h \
708 ..\proto.h \
cdb0f547 709 ..\regcomp.h \
9e42cd94
GS
710 ..\regexp.h \
711 ..\scope.h \
712 ..\sv.h \
713 ..\thread.h \
714 ..\unixish.h \
715 ..\utf8.h \
716 ..\util.h \
717 ..\warnings.h \
718 ..\XSUB.h \
719 ..\EXTERN.h \
720 ..\perlvars.h \
721 ..\intrpvar.h \
9e42cd94
GS
722 .\include\dirent.h \
723 .\include\netdb.h \
724 .\include\sys\socket.h \
725 .\win32.h
726
a148edb6 727CORE_H = $(CORE_NOCFG_H) .\config.h ..\git_version.h
9e42cd94 728
202d1001 729UUDMAP_H = ..\uudmap.h
efa50c51 730BITCOUNT_H = ..\bitcount.h
6f83ef0e 731MG_DATA_H = ..\mg_data.h
9387abf8 732GENERATED_HEADERS = $(UUDMAP_H) $(BITCOUNT_H) $(MG_DATA_H)
202d1001 733
9e42cd94
GS
734MICROCORE_OBJ = $(MICROCORE_SRC:.c=.obj)
735CORE_OBJ = $(MICROCORE_OBJ) $(EXTRACORE_SRC:.c=.obj)
736WIN32_OBJ = $(WIN32_SRC:.c=.obj)
737MINICORE_OBJ = $(MICROCORE_OBJ:..\=.\mini\) \
738 $(MINIDIR)\miniperlmain$(o) \
739 $(MINIDIR)\perlio$(o)
740MINIWIN32_OBJ = $(WIN32_OBJ:.\=.\mini\)
741MINI_OBJ = $(MINICORE_OBJ) $(MINIWIN32_OBJ)
281da5ea 742DLL_OBJ = $(DYNALOADER)
9e42cd94 743X2P_OBJ = $(X2P_SRC:.c=.obj)
202d1001 744GENUUDMAP_OBJ = $(GENUUDMAP:.exe=.obj)
9e42cd94
GS
745
746PERLDLL_OBJ = $(CORE_OBJ)
747PERLEXE_OBJ = perlmain$(o)
4e036e4b 748PERLEXEST_OBJ = perlmainst$(o)
9e42cd94
GS
749
750PERLDLL_OBJ = $(PERLDLL_OBJ) $(WIN32_OBJ) $(DLL_OBJ)
9e42cd94
GS
751
752!IF "$(USE_SETARGV)" != ""
753SETARGV_OBJ = setargv$(o)
754!ENDIF
755
a1f2e719
VK
756!IF "$(ALL_STATIC)" == "define"
757# some exclusions, unfortunately, until fixed:
758# - Win32 extension contains overlapped symbols with win32.c (BUG!)
759# - MakeMaker isn't capable enough for SDBM_File (smaller bug)
760# - Encode (encoding search algorithm relies on shared library?)
9788a75a 761STATIC_EXT = * !Win32 !SDBM_File !Encode
a1f2e719
VK
762!ELSE
763# specify static extensions here, for example:
4e036e4b 764#STATIC_EXT = Cwd Compress/Raw/Zlib
78ff2d7b 765STATIC_EXT = Win32CORE
a1f2e719 766!ENDIF
595589fa 767
281da5ea 768DYNALOADER = ..\DynaLoader$(o)
9e42cd94 769
9e42cd94
GS
770CFG_VARS = \
771 "INST_DRV=$(INST_DRV)" \
772 "INST_TOP=$(INST_TOP)" \
773 "INST_VER=$(INST_VER)" \
774 "INST_ARCH=$(INST_ARCH)" \
775 "archname=$(ARCHNAME)" \
776 "cc=$(CC)" \
777 "ld=$(LINK32)" \
bb275e72 778 "ccflags=$(EXTRACFLAGS) $(OPTIMIZE:"=\") $(DEFINES) $(BUILDOPT)" \
9e42cd94 779 "cf_email=$(EMAIL)" \
9e42cd94
GS
780 "d_mymalloc=$(PERL_MALLOC)" \
781 "libs=$(LIBFILES)" \
782 "incpath=$(CCINCDIR:"=\")" \
783 "libperl=$(PERLIMPLIB:..\=)" \
784 "libpth=$(CCLIBDIR:"=\");$(EXTRALIBDIRS:"=\")" \
785 "libc=$(LIBC)" \
786 "make=$(MAKE_BARE)" \
d2b25974 787 "static_ext=$(STATIC_EXT)" \
7e0017d3 788 "usethreads=$(USE_ITHREADS)" \
9e42cd94 789 "useithreads=$(USE_ITHREADS)" \
9e42cd94
GS
790 "usemultiplicity=$(USE_MULTI)" \
791 "useperlio=$(USE_PERLIO)" \
4a9d6100 792 "uselargefiles=$(USE_LARGE_FILES)" \
7ada00a0 793 "usesitecustomize=$(USE_SITECUST)" \
9e42cd94
GS
794 "LINK_FLAGS=$(LINK_FLAGS:"=\")" \
795 "optimize=$(OPTIMIZE:"=\")"
796
2a6dc374 797ICWD = -I..\dist\Cwd -I..\dist\Cwd\lib
403f501d 798
9e42cd94
GS
799#
800# Top targets
801#
802
a148edb6 803all : .\config.h ..\git_version.h $(GLOBEXE) $(MINIMOD) $(CONFIGPM) \
a34ce875 804 $(UNIDATAFILES) MakePPPort $(PERLEXE) $(X2P) Extensions_nonxs Extensions $(PERLSTATIC)
9e42cd94
GS
805 @echo Everything is up to date. '$(MAKE_BARE) test' to run test suite.
806
c900f745 807regnodes : ..\regnodes.h
5d458dd8 808
5b04aee6 809..\regcomp$(o) : ..\regnodes.h ..\regcharclass.h
e64b1bd1
YO
810
811..\regexec$(o) : ..\regnodes.h ..\regcharclass.h
812
a148edb6
SH
813reonly : regnodes .\config.h ..\git_version.h $(GLOBEXE) $(MINIMOD) $(CONFIGPM) \
814 $(UNIDATAFILES) $(PERLEXE) $(X2P) Extensions_reonly
a24cc0c0
YO
815 @echo Perl and 're' are up to date.
816
4e036e4b
VK
817static: $(PERLEXESTATIC)
818
9e42cd94
GS
819#------------------------------------------------------------
820
821$(GLOBEXE) : perlglob$(o)
822 $(LINK32) $(LINK_FLAGS) $(LIBFILES) -out:$@ -subsystem:$(SUBSYS) \
823 perlglob$(o) setargv$(o)
c8e599d3 824 $(EMBED_EXE_MANI)
9e42cd94
GS
825
826perlglob$(o) : perlglob.c
827
828config.w32 : $(CFGSH_TMPL)
829 copy $(CFGSH_TMPL) config.w32
830
831.\config.h : $(CFGH_TMPL)
832 -del /f config.h
833 copy $(CFGH_TMPL) config.h
834
04bf47ee 835..\git_version.h : $(MINIPERL) ..\make_patchnum.pl
a148edb6 836 cd ..
16ad9bfa 837 miniperl -Ilib make_patchnum.pl
a148edb6
SH
838 cd win32
839
931482b7
NC
840# make sure that we recompile perl.c if the git version changes
841..\perl$(o) : ..\git_version.h
a148edb6 842
c788c1c2 843..\config.sh : config.w32 $(MINIPERL) config_sh.PL FindExt.pm
9e42cd94
GS
844 $(MINIPERL) -I..\lib config_sh.PL $(CFG_VARS) config.w32 > ..\config.sh
845
76febb1c
SH
846# this target is for when changes to the main config.sh happen.
847# edit config.vc, then make perl in a minimal configuration (i.e. with MULTI,
3d39cce8 848# ITHREADS, IMP_SYS, LARGE_FILES and PERLIO off), then make this target
76febb1c 849# to regenerate config_H.vc.
e5f60eac
SH
850# unfortunately, some further manual editing is also then required to restore all
851# the special __GNUC__ handling that is otherwise lost.
76febb1c
SH
852# repeat for config.vc64 and config_H.vc64 if you have a suitable build
853# environment, otherwise hand-edit them to maintain the same differences with
854# config.vc and config_H.vc as before.
9e42cd94 855regen_config_h:
76febb1c 856 $(MINIPERL) -I..\lib config_sh.PL $(CFG_VARS) $(CFGSH_TMPL) > ..\config.sh
4e73d6a4 857 $(MINIPERL) -I..\lib ..\configpm --chdir=..
9e42cd94 858 -del /f $(CFGH_TMPL)
38cd195c 859 -$(MINIPERL) -I..\lib $(ICWD) config_h.PL "INST_VER=$(INST_VER)"
9e42cd94
GS
860 rename config.h $(CFGH_TMPL)
861
862$(CONFIGPM) : $(MINIPERL) ..\config.sh config_h.PL ..\minimod.pl
4e73d6a4 863 $(MINIPERL) -I..\lib ..\configpm --chdir=..
9e42cd94
GS
864 if exist lib\* $(RCOPY) lib\*.* ..\lib\$(NULL)
865 $(XCOPY) ..\*.h $(COREDIR)\*.*
866 $(XCOPY) *.h $(COREDIR)\*.*
9e42cd94 867 $(RCOPY) include $(COREDIR)\*.*
38cd195c 868 -$(MINIPERL) -I..\lib $(ICWD) config_h.PL "INST_VER=$(INST_VER)"
9e42cd94
GS
869 if errorlevel 1 $(MAKE) /$(MAKEFLAGS) $(CONFIGPM)
870
5e4c4c91
NC
871..\lib\buildcustomize.pl: $(MINIPERL) ..\write_buildcustomize.pl
872 $(MINIPERL) -I..\lib ..\write_buildcustomize.pl .. >..\lib\buildcustomize.pl
873
9e42cd94
GS
874$(MINIPERL) : $(MINIDIR) $(MINI_OBJ)
875 $(LINK32) -subsystem:console -out:$@ @<<
876 $(LINK_FLAGS) $(LIBFILES) $(MINI_OBJ)
877<<
c8e599d3 878 $(EMBED_EXE_MANI)
9e42cd94
GS
879
880$(MINIDIR) :
881 if not exist "$(MINIDIR)" mkdir "$(MINIDIR)"
882
883$(MINICORE_OBJ) : $(CORE_NOCFG_H)
8c4561fb 884 $(CC) -c $(CFLAGS) -DPERL_EXTERNAL_GLOB -DPERL_IS_MINIPERL $(OBJOUT_FLAG)$@ ..\$(*F).c
9e42cd94
GS
885
886$(MINIWIN32_OBJ) : $(CORE_NOCFG_H)
887 $(CC) -c $(CFLAGS) $(OBJOUT_FLAG)$@ $(*F).c
888
889# -DPERL_IMPLICIT_SYS needs C++ for perllib.c
890# This is the only file that depends on perlhost.h, vmem.h, and vdir.h
891!IF "$(USE_IMP_SYS)" == "define"
892perllib$(o) : perllib.c .\perlhost.h .\vdir.h .\vmem.h
893 $(CC) -c -I. $(CFLAGS_O) $(CXX_FLAG) $(OBJOUT_FLAG)$@ perllib.c
894!ENDIF
895
896# 1. we don't want to rebuild miniperl.exe when config.h changes
897# 2. we don't want to rebuild miniperl.exe with non-default config.h
931482b7 898# 3. we can't have miniperl.exe depend on git_version.h, as miniperl creates it
9e42cd94
GS
899$(MINI_OBJ) : $(CORE_NOCFG_H)
900
901$(WIN32_OBJ) : $(CORE_H)
902$(CORE_OBJ) : $(CORE_H)
903$(DLL_OBJ) : $(CORE_H)
904$(X2P_OBJ) : $(CORE_H)
905
d500e60d 906perldll.def : $(MINIPERL) $(CONFIGPM) ..\embed.fnc ..\makedef.pl create_perllibst_h.pl
c6d234b8 907 $(MINIPERL) -I..\lib create_perllibst_h.pl
c1effa61 908 $(MINIPERL) -I..\lib -w ..\makedef.pl PLATFORM=win32 $(OPTIMIZE) $(DEFINES) $(BUILDOPT) \
080c3729 909 CCTYPE=$(CCTYPE) TARG_DIR=..\ > perldll.def
9e42cd94 910
595589fa 911$(PERLDLL): perldll.def $(PERLDLL_OBJ) $(PERLDLL_RES) Extensions_static
9e7cf449 912 $(LINK32) -dll -def:perldll.def -base:0x28000000 -out:$@ @Extensions_static @<<
9e42cd94
GS
913 $(LINK_FLAGS) $(DELAYLOAD) $(LIBFILES) $(PERLDLL_OBJ) $(PERLDLL_RES)
914<<
c8e599d3 915 $(EMBED_DLL_MANI)
9e42cd94
GS
916 $(XCOPY) $(PERLIMPLIB) $(COREDIR)
917
4e036e4b
VK
918$(PERLSTATICLIB): Extensions_static
919 $(LIB32) $(LIB_FLAGS) -out:$@ @Extensions_static @<<
920 $(PERLDLL_OBJ)
921<<
922 $(XCOPY) $(PERLSTATICLIB) $(COREDIR)
923
4ebea3c6 924$(PERLEXE_RES): perlexe.rc $(PERLEXE_MANIFEST) $(PERLEXE_ICO)
e84ac4e2 925
9e42cd94
GS
926$(MINIMOD) : $(MINIPERL) ..\minimod.pl
927 cd ..
928 miniperl minimod.pl > lib\ExtUtils\Miniperl.pm
929 cd win32
930
931..\x2p\a2p$(o) : ..\x2p\a2p.c
932 $(CC) -I..\x2p $(CFLAGS) $(OBJOUT_FLAG)$@ -c ..\x2p\a2p.c
933
934..\x2p\hash$(o) : ..\x2p\hash.c
935 $(CC) -I..\x2p $(CFLAGS) $(OBJOUT_FLAG)$@ -c ..\x2p\hash.c
936
937..\x2p\str$(o) : ..\x2p\str.c
938 $(CC) -I..\x2p $(CFLAGS) $(OBJOUT_FLAG)$@ -c ..\x2p\str.c
939
940..\x2p\util$(o) : ..\x2p\util.c
941 $(CC) -I..\x2p $(CFLAGS) $(OBJOUT_FLAG)$@ -c ..\x2p\util.c
942
943..\x2p\walk$(o) : ..\x2p\walk.c
944 $(CC) -I..\x2p $(CFLAGS) $(OBJOUT_FLAG)$@ -c ..\x2p\walk.c
945
403f501d 946$(X2P) : $(MINIPERL) $(X2P_OBJ) Extensions
c1effa61
NC
947 $(MINIPERL) -I..\lib ..\x2p\find2perl.PL
948 $(MINIPERL) -I..\lib ..\x2p\s2p.PL
9e42cd94
GS
949 $(LINK32) -subsystem:console -out:$@ @<<
950 $(LINK_FLAGS) $(LIBFILES) $(X2P_OBJ)
951<<
c8e599d3 952 $(EMBED_EXE_MANI)
9e42cd94 953
9387abf8 954$(MINIDIR)\globals$(o) : $(GENERATED_HEADERS)
9444d213 955
6f83ef0e 956$(UUDMAP_H) $(MG_DATA_H) : $(BITCOUNT_H)
6999193b
NC
957
958$(BITCOUNT_H) : $(GENUUDMAP)
9387abf8 959 $(GENUUDMAP) $(GENERATED_HEADERS)
6f83ef0e
NC
960
961$(GENUUDMAP_OBJ) : ..\mg_raw.h
9444d213 962
202d1001 963$(GENUUDMAP) : $(GENUUDMAP_OBJ)
9444d213 964 $(LINK32) -subsystem:console -out:$@ @<<
202d1001
SH
965 $(LINK_FLAGS) $(LIBFILES) $(GENUUDMAP_OBJ)
966<<
967 $(EMBED_EXE_MANI)
9444d213 968
9e42cd94
GS
969perlmain.c : runperl.c
970 copy runperl.c perlmain.c
971
972perlmain$(o) : perlmain.c
88c9158a 973 $(CC) $(CFLAGS_O:-DPERLDLL=-UPERLDLL) $(OBJOUT_FLAG)$@ -c perlmain.c
9e42cd94 974
4e036e4b
VK
975perlmainst.c : runperl.c
976 copy runperl.c perlmainst.c
977
978perlmainst$(o) : perlmainst.c
88c9158a 979 $(CC) $(CFLAGS_O) $(OBJOUT_FLAG)$@ -c perlmainst.c
4e036e4b 980
931482b7 981$(PERLEXE): $(PERLDLL) $(CONFIGPM) $(PERLEXE_OBJ) $(PERLEXE_RES)
56a86867 982 $(LINK32) -subsystem:console -out:$@ $(LINK_FLAGS) \
9e42cd94 983 $(LIBFILES) $(PERLEXE_OBJ) $(SETARGV_OBJ) $(PERLIMPLIB) $(PERLEXE_RES)
c8e599d3 984 $(EMBED_EXE_MANI)
9e42cd94
GS
985 copy $(PERLEXE) $(WPERLEXE)
986 $(MINIPERL) -I..\lib bin\exetype.pl $(WPERLEXE) WINDOWS
9e42cd94 987
931482b7 988$(PERLEXESTATIC): $(PERLSTATICLIB) $(CONFIGPM) $(PERLEXEST_OBJ) $(PERLEXE_RES)
56a86867 989 $(LINK32) -subsystem:console -out:$@ $(LINK_FLAGS) \
a1f2e719 990 @Extensions_static $(PERLSTATICLIB) /PDB:NONE \
4e036e4b
VK
991 $(LIBFILES) $(PERLEXEST_OBJ) $(SETARGV_OBJ) $(PERLEXE_RES)
992 $(EMBED_EXE_MANI)
993
d1a21686 994MakePPPort: $(MINIPERL) $(CONFIGPM) Extensions_nonxs
403f501d 995 $(MINIPERL) -I..\lib $(ICWD) ..\mkppport
42e07562 996
9dcb9602 997#-------------------------------------------------------------------------------
281da5ea 998# There's no direct way to mark a dependency on
6afd19bc 999# DynaLoader.pm, so this will have to do
5e4c4c91 1000Extensions: ..\make_ext.pl ..\lib\buildcustomize.pl $(PERLDEP) $(CONFIGPM) $(DYNALOADER)
a5ca303d 1001 $(XCOPY) ..\*.h $(COREDIR)\*.*
a193a2db 1002 $(MINIPERL) -I..\lib ..\make_ext.pl "MAKE=$(MAKE)" --dir=$(CPANDIR) --dir=$(DISTDIR) --dir=$(EXTDIR) --dynamic
595589fa 1003
5e4c4c91 1004Extensions_reonly: ..\make_ext.pl ..\lib\buildcustomize.pl $(PERLDEP) $(CONFIGPM) $(DYNALOADER)
a5ca303d 1005 $(XCOPY) ..\*.h $(COREDIR)\*.*
a193a2db 1006 $(MINIPERL) -I..\lib ..\make_ext.pl "MAKE=$(MAKE)" --dir=$(CPANDIR) --dir=$(DISTDIR) --dir=$(EXTDIR) --dynamic +re
a24cc0c0 1007
5e4c4c91 1008Extensions_static : ..\make_ext.pl ..\lib\buildcustomize.pl list_static_libs.pl $(PERLDEP) $(CONFIGPM)
a5ca303d 1009 $(XCOPY) ..\*.h $(COREDIR)\*.*
a193a2db 1010 $(MINIPERL) -I..\lib ..\make_ext.pl "MAKE=$(MAKE)" --dir=$(CPANDIR) --dir=$(DISTDIR) --dir=$(EXTDIR) --static
c6d234b8 1011 $(MINIPERL) -I..\lib list_static_libs.pl > Extensions_static
9e42cd94 1012
5e4c4c91 1013Extensions_nonxs: ..\make_ext.pl ..\lib\buildcustomize.pl $(PERLDEP) $(CONFIGPM)
a34ce875 1014 $(XCOPY) ..\*.h $(COREDIR)\*.*
a193a2db 1015 $(MINIPERL) -I..\lib ..\make_ext.pl "MAKE=$(MAKE)" --dir=$(CPANDIR) --dir=$(DISTDIR) --dir=$(EXTDIR) --nonxs
a34ce875 1016
5e4c4c91 1017$(DYNALOADER) : ..\make_ext.pl ..\lib\buildcustomize.pl $(PERLDEP) $(CONFIGPM) Extensions_nonxs
281da5ea
NC
1018 $(XCOPY) ..\*.h $(COREDIR)\*.*
1019 $(MINIPERL) -I..\lib ..\make_ext.pl "MAKE=$(MAKE)" --dir=$(EXTDIR) --dynaloader
1020
9e42cd94 1021Extensions_clean:
a193a2db 1022 -if exist $(MINIPERL) $(MINIPERL) -I..\lib ..\make_ext.pl "MAKE=$(MAKE)" --dir=$(CPANDIR) --dir=$(DISTDIR) --dir=$(EXTDIR) --all --target=clean
9e42cd94 1023
b4dc1df6 1024Extensions_realclean:
a193a2db 1025 -if exist $(MINIPERL) $(MINIPERL) -I..\lib ..\make_ext.pl "MAKE=$(MAKE)" --dir=$(CPANDIR) --dir=$(DISTDIR) --dir=$(EXTDIR) --all --target=realclean
b4dc1df6 1026
9dcb9602 1027#-------------------------------------------------------------------------------
9e42cd94 1028
0195b144 1029doc: $(PERLEXE) ..\pod\perltoc.pod
b4a41557 1030 $(PERLEXE) -I..\lib ..\installhtml --podroot=.. --htmldir=$(HTMLDIR) \
9e42cd94 1031 --podpath=pod:lib:ext:utils --htmlroot="file://$(INST_HTML::=|)" \
9b1d99d7 1032 --recurse
9e42cd94 1033
b0b6bf2b
AT
1034# Note that this next section is parsed (and regenerated) by pod/buildtoc
1035# so please check that script before making structural changes here
1036
9ddff148 1037utils: $(PERLEXE) $(X2P)
9e42cd94
GS
1038 cd ..\utils
1039 $(MAKE) PERL=$(MINIPERL)
1040 cd ..\pod
b0b6bf2b
AT
1041 copy ..\README.aix ..\pod\perlaix.pod
1042 copy ..\README.amiga ..\pod\perlamiga.pod
b0b6bf2b
AT
1043 copy ..\README.beos ..\pod\perlbeos.pod
1044 copy ..\README.bs2000 ..\pod\perlbs2000.pod
1045 copy ..\README.ce ..\pod\perlce.pod
1046 copy ..\README.cn ..\pod\perlcn.pod
1047 copy ..\README.cygwin ..\pod\perlcygwin.pod
1048 copy ..\README.dgux ..\pod\perldgux.pod
1049 copy ..\README.dos ..\pod\perldos.pod
1050 copy ..\README.epoc ..\pod\perlepoc.pod
1051 copy ..\README.freebsd ..\pod\perlfreebsd.pod
9f968a8d 1052 copy ..\README.haiku ..\pod\perlhaiku.pod
b0b6bf2b
AT
1053 copy ..\README.hpux ..\pod\perlhpux.pod
1054 copy ..\README.hurd ..\pod\perlhurd.pod
1055 copy ..\README.irix ..\pod\perlirix.pod
1056 copy ..\README.jp ..\pod\perljp.pod
1057 copy ..\README.ko ..\pod\perlko.pod
6477b319 1058 copy ..\README.linux ..\pod\perllinux.pod
b0b6bf2b
AT
1059 copy ..\README.macos ..\pod\perlmacos.pod
1060 copy ..\README.macosx ..\pod\perlmacosx.pod
b0b6bf2b
AT
1061 copy ..\README.mpeix ..\pod\perlmpeix.pod
1062 copy ..\README.netware ..\pod\perlnetware.pod
b0846812 1063 copy ..\README.openbsd ..\pod\perlopenbsd.pod
b0b6bf2b
AT
1064 copy ..\README.os2 ..\pod\perlos2.pod
1065 copy ..\README.os390 ..\pod\perlos390.pod
1066 copy ..\README.os400 ..\pod\perlos400.pod
1067 copy ..\README.plan9 ..\pod\perlplan9.pod
1068 copy ..\README.qnx ..\pod\perlqnx.pod
2f08ed66 1069 copy ..\README.riscos ..\pod\perlriscos.pod
b0b6bf2b 1070 copy ..\README.solaris ..\pod\perlsolaris.pod
27da23d5 1071 copy ..\README.symbian ..\pod\perlsymbian.pod
b0b6bf2b
AT
1072 copy ..\README.tru64 ..\pod\perltru64.pod
1073 copy ..\README.tw ..\pod\perltw.pod
1074 copy ..\README.uts ..\pod\perluts.pod
1075 copy ..\README.vmesa ..\pod\perlvmesa.pod
b0b6bf2b
AT
1076 copy ..\README.vos ..\pod\perlvos.pod
1077 copy ..\README.win32 ..\pod\perlwin32.pod
c1e74734 1078 copy ..\pod\perldelta.pod ..\pod\perl5158delta.pod
9e42cd94
GS
1079 cd ..\win32
1080 $(PERLEXE) $(PL2BAT) $(UTILS)
403f501d
NC
1081 $(PERLEXE) $(ICWD) ..\autodoc.pl ..
1082 $(PERLEXE) $(ICWD) ..\pod\perlmodlib.pl -q
0195b144
NC
1083
1084..\pod\perltoc.pod: $(PERLEXE) Extensions Extensions_nonxs
b78c1104 1085 $(PERLEXE) -f ..\pod\buildtoc -q
9e42cd94 1086
b0b6bf2b
AT
1087# Note that the pod cleanup in this next section is parsed (and regenerated
1088# by pod/buildtoc so please check that script before making changes here
1089
b4dc1df6 1090distclean: realclean
9e42cd94 1091 -del /f $(MINIPERL) $(PERLEXE) $(PERLDLL) $(GLOBEXE) \
4e036e4b
VK
1092 $(PERLIMPLIB) ..\miniperl.lib $(MINIMOD) \
1093 $(PERLEXESTATIC) $(PERLSTATICLIB)
9e42cd94 1094 -del /f *.def *.map
ca67812f
SH
1095 -del /f $(LIBDIR)\Encode.pm $(LIBDIR)\encoding.pm $(LIBDIR)\Errno.pm
1096 -del /f $(LIBDIR)\Config.pod $(LIBDIR)\POSIX.pod $(LIBDIR)\threads.pm
48462a74 1097 -del /f $(LIBDIR)\.exists $(LIBDIR)\attributes.pm $(LIBDIR)\DynaLoader.pm
9e42cd94
GS
1098 -del /f $(LIBDIR)\Fcntl.pm $(LIBDIR)\IO.pm $(LIBDIR)\Opcode.pm
1099 -del /f $(LIBDIR)\ops.pm $(LIBDIR)\Safe.pm
1100 -del /f $(LIBDIR)\SDBM_File.pm $(LIBDIR)\Socket.pm $(LIBDIR)\POSIX.pm
1101 -del /f $(LIBDIR)\B.pm $(LIBDIR)\O.pm $(LIBDIR)\re.pm
9e42cd94
GS
1102 -del /f $(LIBDIR)\File\Glob.pm
1103 -del /f $(LIBDIR)\Storable.pm
ca67812f 1104 -del /f $(LIBDIR)\Sys\Hostname.pm
9e42cd94 1105 -del /f $(LIBDIR)\Time\HiRes.pm
9e42cd94 1106 -del /f $(LIBDIR)\Unicode\Normalize.pm
4e74047c 1107 -del /f $(LIBDIR)\Math\BigInt\FastCalc.pm
b4ad57f4 1108 -del /f $(LIBDIR)\Win32.pm
37ca3c28 1109 -del /f $(LIBDIR)\Win32CORE.pm
00701878
SH
1110 -del /f $(LIBDIR)\Win32API\File.pm
1111 -del /f $(LIBDIR)\Win32API\File\cFile.pc
5e4c4c91 1112 -del /f $(LIBDIR)\buildcustomize.pl
a85e0e8c 1113 -del /f $(DISTDIR)\XSLoader\XSLoader.pm
1a6c65ed
SH
1114 -if exist $(LIBDIR)\App rmdir /s /q $(LIBDIR)\App
1115 -if exist $(LIBDIR)\Archive rmdir /s /q $(LIBDIR)\Archive
1116 -if exist $(LIBDIR)\Attribute rmdir /s /q $(LIBDIR)\Attribute
1117 -if exist $(LIBDIR)\autodie rmdir /s /q $(LIBDIR)\autodie
9e42cd94 1118 -if exist $(LIBDIR)\B rmdir /s /q $(LIBDIR)\B
1a6c65ed
SH
1119 -if exist $(LIBDIR)\CGI rmdir /s /q $(LIBDIR)\CGI
1120 -if exist $(LIBDIR)\CPAN rmdir /s /q $(LIBDIR)\CPAN
1121 -if exist $(LIBDIR)\CPANPLUS rmdir /s /q $(LIBDIR)\CPANPLUS
46ffdcf0 1122 -if exist $(LIBDIR)\Compress rmdir /s /q $(LIBDIR)\Compress
9e42cd94 1123 -if exist $(LIBDIR)\Data rmdir /s /q $(LIBDIR)\Data
1a6c65ed
SH
1124 -if exist $(LIBDIR)\Devel rmdir /s /q $(LIBDIR)\Devel
1125 -if exist $(LIBDIR)\Digest rmdir /s /q $(LIBDIR)\Digest
ca67812f 1126 -if exist $(LIBDIR)\Encode rmdir /s /q $(LIBDIR)\Encode
1a6c65ed
SH
1127 -if exist $(LIBDIR)\encoding rmdir /s /q $(LIBDIR)\encoding
1128 -if exist $(LIBDIR)\ExtUtils\CBuilder rmdir /s /q $(LIBDIR)\ExtUtils\CBuilder
1129 -if exist $(LIBDIR)\ExtUtils\Command rmdir /s /q $(LIBDIR)\ExtUtils\Command
1130 -if exist $(LIBDIR)\ExtUtils\Constant rmdir /s /q $(LIBDIR)\ExtUtils\Constant
1131 -if exist $(LIBDIR)\ExtUtils\Liblist rmdir /s /q $(LIBDIR)\ExtUtils\Liblist
1132 -if exist $(LIBDIR)\ExtUtils\MakeMaker rmdir /s /q $(LIBDIR)\ExtUtils\MakeMaker
1133 -if exist $(LIBDIR)\File\Spec rmdir /s /q $(LIBDIR)\File\Spec
1134 -if exist $(LIBDIR)\Filter rmdir /s /q $(LIBDIR)\Filter
96c33d98 1135 -if exist $(LIBDIR)\Hash rmdir /s /q $(LIBDIR)\Hash
1a6c65ed
SH
1136 -if exist $(LIBDIR)\I18N\LangTags rmdir /s /q $(LIBDIR)\I18N\LangTags
1137 -if exist $(LIBDIR)\inc rmdir /s /q $(LIBDIR)\inc
c146e560 1138 -if exist $(LIBDIR)\Module\Pluggable rmdir /s /q $(LIBDIR)\Module\Pluggable
1a6c65ed
SH
1139 -if exist $(LIBDIR)\IO rmdir /s /q $(LIBDIR)\IO
1140 -if exist $(LIBDIR)\IPC rmdir /s /q $(LIBDIR)\IPC
69f57184 1141 -if exist $(LIBDIR)\List rmdir /s /q $(LIBDIR)\List
1a6c65ed
SH
1142 -if exist $(LIBDIR)\Locale rmdir /s /q $(LIBDIR)\Locale
1143 -if exist $(LIBDIR)\Log rmdir /s /q $(LIBDIR)\Log
1144 -if exist $(LIBDIR)\Math rmdir /s /q $(LIBDIR)\Math
1145 -if exist $(LIBDIR)\Memoize rmdir /s /q $(LIBDIR)\Memoize
69f57184 1146 -if exist $(LIBDIR)\MIME rmdir /s /q $(LIBDIR)\MIME
1a6c65ed
SH
1147 -if exist $(LIBDIR)\Module rmdir /s /q $(LIBDIR)\Module
1148 -if exist $(LIBDIR)\mro rmdir /s /q $(LIBDIR)\mro
1149 -if exist $(LIBDIR)\Net\FTP rmdir /s /q $(LIBDIR)\Net\FTP
1150 -if exist $(LIBDIR)\Object rmdir /s /q $(LIBDIR)\Object
1151 -if exist $(LIBDIR)\Package rmdir /s /q $(LIBDIR)\Package
1152 -if exist $(LIBDIR)\Params rmdir /s /q $(LIBDIR)\Params
1153 -if exist $(LIBDIR)\Parse rmdir /s /q $(LIBDIR)\Parse
1154 -if exist $(LIBDIR)\PerlIO rmdir /s /q $(LIBDIR)\PerlIO
1155 -if exist $(LIBDIR)\Pod\Perldoc rmdir /s /q $(LIBDIR)\Pod\Perldoc
1156 -if exist $(LIBDIR)\Pod\Simple rmdir /s /q $(LIBDIR)\Pod\Simple
1157 -if exist $(LIBDIR)\Pod\Text rmdir /s /q $(LIBDIR)\Pod\Text
849a608a 1158 -if exist $(LIBDIR)\re rmdir /s /q $(LIBDIR)\re
9e42cd94 1159 -if exist $(LIBDIR)\Scalar rmdir /s /q $(LIBDIR)\Scalar
6c4b87ea 1160 -if exist $(LIBDIR)\Sys rmdir /s /q $(LIBDIR)\Sys
1a6c65ed
SH
1161 -if exist $(LIBDIR)\TAP rmdir /s /q $(LIBDIR)\TAP
1162 -if exist $(LIBDIR)\Term\UI rmdir /s /q $(LIBDIR)\Term\UI
1163 -if exist $(LIBDIR)\Test rmdir /s /q $(LIBDIR)\Test
1164 -if exist $(LIBDIR)\Thread rmdir /s /q $(LIBDIR)\Thread
6c4b87ea 1165 -if exist $(LIBDIR)\threads rmdir /s /q $(LIBDIR)\threads
8cf6f931 1166 -if exist $(LIBDIR)\Tie\Hash rmdir /s /q $(LIBDIR)\Tie\Hash
1a6c65ed 1167 -if exist $(LIBDIR)\Unicode\Collate rmdir /s /q $(LIBDIR)\Unicode\Collate
9e42cd94 1168 -if exist $(LIBDIR)\XS rmdir /s /q $(LIBDIR)\XS
00701878 1169 -if exist $(LIBDIR)\Win32API rmdir /s /q $(LIBDIR)\Win32API
60f0ee9d 1170 -cd $(PODDIR) && del /f *.html *.bat roffitall \
c1e74734 1171 perl5158delta.pod perlaix.pod perlamiga.pod perlapi.pod \
1178b7e3
NC
1172 perlbeos.pod perlbs2000.pod perlce.pod perlcn.pod \
1173 perlcygwin.pod perldgux.pod perldos.pod perlepoc.pod \
b14c7f9a
SH
1174 perlfreebsd.pod perlhaiku.pod perlhpux.pod perlhurd.pod \
1175 perlintern.pod perlirix.pod perljp.pod perlko.pod perllinux.pod \
1176 perlmacos.pod perlmacosx.pod perlmodlib.pod perlmpeix.pod \
1177 perlnetware.pod perlopenbsd.pod perlos2.pod perlos390.pod \
1178 perlos400.pod perlplan9.pod perlqnx.pod perlriscos.pod \
1179 perlsolaris.pod perlsymbian.pod perltoc.pod perltru64.pod \
1180 perltw.pod perluniprops.pod perluts.pod perlvmesa.pod \
1181 perlvos.pod perlwin32.pod
ca67812f 1182 -cd ..\utils && del /f h2ph splain perlbug pl2pm c2ph pstruct h2xs \
c9dab4e9 1183 perldoc perlivp libnetcfg enc2xs piconv cpan *.bat \
08ad9465 1184 xsubpp pod2html instmodsh json_pp prove ptar ptardiff ptargrep cpanp-run-perl cpanp cpan2dist shasum corelist config_data zipdetails
ca67812f 1185 -cd ..\x2p && del /f find2perl s2p psed *.bat
19ec6f53 1186 -del /f ..\config.sh perlmain.c dlutils.c config.h.new \
4e036e4b 1187 perlmainst.c
9e42cd94 1188 -del /f $(CONFIGPM)
a148edb6 1189 -del /f ..\lib\Config_git.pl
9e42cd94 1190 -del /f bin\*.bat
322fd642 1191 -del /f perllibst.h
4ebea3c6 1192 -del /f $(PERLEXE_RES) perl.base
85741d00 1193 -cd .. && del /s *.lib *.map *.pdb *.ilk *.bs *$(o) .exists pm_to_blib ppport.h
ca67812f 1194 -cd $(EXTDIR) && del /s *.def Makefile Makefile.old
a193a2db 1195 -cd $(DISTDIR) && del /s *.def Makefile Makefile.old
b212a3c6 1196 -cd $(CPANDIR) && del /s *.def Makefile Makefile.old
9e42cd94 1197 -if exist $(AUTODIR) rmdir /s /q $(AUTODIR)
9e42cd94 1198 -if exist $(COREDIR) rmdir /s /q $(COREDIR)
b4a41557
SH
1199 -if exist pod2htmd.tmp del pod2htmd.tmp
1200 -if exist pod2htmi.tmp del pod2htmi.tmp
1201 -if exist $(HTMLDIR) rmdir /s /q $(HTMLDIR)
0279961e 1202 -del /f ..\t\test_state
9e42cd94
GS
1203
1204install : all installbare installhtml
1205
0195b144 1206installbare : utils ..\pod\perltoc.pod
9e42cd94
GS
1207 $(PERLEXE) ..\installperl
1208 if exist $(WPERLEXE) $(XCOPY) $(WPERLEXE) $(INST_BIN)\*.*
5548433c 1209 if exist $(PERLEXESTATIC) $(XCOPY) $(PERLEXESTATIC) $(INST_BIN)\*.*
9e42cd94 1210 $(XCOPY) $(GLOBEXE) $(INST_BIN)\*.*
ec25c072
SH
1211 if exist ..\perl*.pdb $(XCOPY) ..\perl*.pdb $(INST_BIN)\*.*
1212 if exist ..\x2p\a2p.pdb $(XCOPY) ..\x2p\a2p.pdb $(INST_BIN)\*.*
9e42cd94
GS
1213 $(XCOPY) bin\*.bat $(INST_SCRIPT)\*.*
1214
1215installhtml : doc
b4a41557 1216 $(RCOPY) $(HTMLDIR)\*.* $(INST_HTML)\*.*
9e42cd94
GS
1217
1218inst_lib : $(CONFIGPM)
9e42cd94
GS
1219 $(RCOPY) ..\lib $(INST_LIB)\*.*
1220
58fa074c 1221$(UNIDATAFILES) ..\pod\perluniprops.pod : $(MINIPERL) $(CONFIGPM) ..\lib\unicore\mktables Extensions_nonxs
27a8011f 1222 cd ..\lib\unicore && \
2a6dc374 1223 ..\$(MINIPERL) -I.. -I..\..\dist\Cwd\lib -I..\..\dist\Cwd mktables -P ..\..\pod -maketest -makelist -p -check $@ $(FIRSTUNIFILE)
ca12659b
NC
1224
1225minitest : $(MINIPERL) $(GLOBEXE) $(CONFIGPM) utils $(UNIDATAFILES)
6c85d12e
SH
1226 $(XCOPY) $(MINIPERL) ..\t\$(NULL)
1227 if exist ..\t\perl.exe del /f ..\t\perl.exe
1228 rename ..\t\miniperl.exe perl.exe
9e42cd94
GS
1229 $(XCOPY) $(GLOBEXE) ..\t\$(NULL)
1230 attrib -r ..\t\*.*
6c85d12e
SH
1231 cd ..\t && \
1232 $(MINIPERL) -I..\lib harness base/*.t comp/*.t cmd/*.t io/*.t op/*.t pragma/*.t
9e42cd94 1233
3bef022b 1234test-prep : all utils ../pod/perltoc.pod
9e42cd94
GS
1235 $(XCOPY) $(PERLEXE) ..\t\$(NULL)
1236 $(XCOPY) $(PERLDLL) ..\t\$(NULL)
1237 $(XCOPY) $(GLOBEXE) ..\t\$(NULL)
0b4dcbc1 1238 set PERL_STATIC_EXT=$(STATIC_EXT)
9e42cd94
GS
1239
1240test : test-prep
1241 cd ..\t
89087c85 1242 $(PERLEXE) -I..\lib harness $(TEST_SWITCHES) $(TEST_FILES)
9e42cd94
GS
1243 cd ..\win32
1244
247c55c0
CBW
1245test_porting : test-prep
1246 cd ..\t
1247 $(PERLEXE) -I..\lib harness $(TEST_SWITCHES) porting\*.t ..\lib\diagnostics.t
1248 cd ..\win32
1249
6ae7e459
YO
1250test-reonly : reonly utils
1251 $(XCOPY) $(PERLEXE) ..\t\$(NULL)
1252 $(XCOPY) $(PERLDLL) ..\t\$(NULL)
1253 $(XCOPY) $(GLOBEXE) ..\t\$(NULL)
1254 cd ..\t
a4499558 1255 $(PERLEXE) -I..\lib harness $(OPT) -re \bre\\/ $(EXTRA)
6ae7e459 1256 cd ..\win32
7bcddc65 1257
c900f745 1258regen :
7bcddc65
YO
1259 cd ..
1260 regen.pl
1261 cd win32
1262
9e42cd94
GS
1263test-notty : test-prep
1264 set PERL_SKIP_TTY_TEST=1
1265 cd ..\t
89087c85 1266 $(PERLEXE) -I..\lib harness $(TEST_SWITCHES) $(TEST_FILES)
9e42cd94
GS
1267 cd ..\win32
1268
b4a93add
NK
1269_test :
1270 $(XCOPY) $(PERLEXE) ..\t\$(NULL)
1271 $(XCOPY) $(PERLDLL) ..\t\$(NULL)
1272 $(XCOPY) $(GLOBEXE) ..\t\$(NULL)
1273 cd ..\t
89087c85 1274 $(PERLEXE) -I..\lib harness $(TEST_SWITCHES) $(TEST_FILES)
b4a93add
NK
1275 cd ..\win32
1276
b4dc1df6 1277_clean :
9e42cd94
GS
1278 -@$(DEL) miniperlmain$(o)
1279 -@$(DEL) $(MINIPERL)
1280 -@$(DEL) perlglob$(o)
1281 -@$(DEL) perlmain$(o)
4e036e4b 1282 -@$(DEL) perlmainst$(o)
9e42cd94
GS
1283 -@$(DEL) config.w32
1284 -@$(DEL) config.h
a148edb6 1285 -@$(DEL) ..\git_version.h
9e42cd94
GS
1286 -@$(DEL) $(GLOBEXE)
1287 -@$(DEL) $(PERLEXE)
1288 -@$(DEL) $(WPERLEXE)
4e036e4b
VK
1289 -@$(DEL) $(PERLEXESTATIC)
1290 -@$(DEL) $(PERLSTATICLIB)
9e42cd94
GS
1291 -@$(DEL) $(PERLDLL)
1292 -@$(DEL) $(CORE_OBJ)
9387abf8 1293 -@$(DEL) $(GENUUDMAP) $(GENUUDMAP_OBJ) $(GENERATED_HEADERS)
9e42cd94 1294 -if exist $(MINIDIR) rmdir /s /q $(MINIDIR)
27a8011f 1295 -if exist $(UNIDATADIR1) rmdir /s /q $(UNIDATADIR1)
27a8011f 1296 -if exist $(UNIDATADIR2) rmdir /s /q $(UNIDATADIR2)
ca12659b 1297 -@$(DEL) $(UNIDATAFILES)
27a8011f 1298 -@$(DEL) $(WIN32_OBJ)
9e42cd94
GS
1299 -@$(DEL) $(DLL_OBJ)
1300 -@$(DEL) $(X2P_OBJ)
1301 -@$(DEL) ..\*$(o) ..\*.lib ..\*.exp *$(o) *.lib *.exp *.res
1302 -@$(DEL) ..\t\*.exe ..\t\*.dll ..\t\*.bat
1303 -@$(DEL) ..\x2p\*.exe ..\x2p\*.bat
1304 -@$(DEL) *.ilk
1305 -@$(DEL) *.pdb
9e7cf449 1306 -@$(DEL) Extensions_static
9e42cd94 1307
6e2cec71 1308clean : Extensions_clean _clean
b4dc1df6 1309
85741d00 1310realclean : Extensions_realclean _clean
b4dc1df6 1311
9e42cd94
GS
1312# Handy way to run perlbug -ok without having to install and run the
1313# installed perlbug. We don't re-run the tests here - we trust the user.
1314# Please *don't* use this unless all tests pass.
1315# If you want to report test failures, use "nmake nok" instead.
1316ok: utils
1317 $(PERLEXE) -I..\lib ..\utils\perlbug -ok -s "(UNINSTALLED)"
1318
1319okfile: utils
1320 $(PERLEXE) -I..\lib ..\utils\perlbug -ok -s "(UNINSTALLED)" -F perl.ok
1321
1322nok: utils
1323 $(PERLEXE) -I..\lib ..\utils\perlbug -nok -s "(UNINSTALLED)"
1324
1325nokfile: utils
1326 $(PERLEXE) -I..\lib ..\utils\perlbug -nok -s "(UNINSTALLED)" -F perl.nok