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