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