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