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