This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
release schedule udpates through March 2015
[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#
2e3866c3 41#INST_VER = \5.21.9
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 \
e1a479c5 691 ..\mro.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 if exist lib\* $(RCOPY) lib\*.* ..\lib\$(NULL)
997 $(XCOPY) ..\*.h $(COREDIR)\*.*
998 $(XCOPY) *.h $(COREDIR)\*.*
9e42cd94 999 $(RCOPY) include $(COREDIR)\*.*
f6b3c354 1000 -$(MINIPERL) -I..\lib config_h.PL
9e42cd94
GS
1001 if errorlevel 1 $(MAKE) /$(MAKEFLAGS) $(CONFIGPM)
1002
cb251201
NC
1003# See the comment in Makefile.SH explaining this seemingly cranky ordering
1004$(MINIPERL) : ..\lib\buildcustomize.pl
5e4c4c91 1005
a9e545b9 1006..\lib\buildcustomize.pl : $(MINIDIR) $(MINI_OBJ) ..\write_buildcustomize.pl
cb251201 1007 $(LINK32) -subsystem:console -out:$(MINIPERL) @<<
19253ae6 1008 $(LINK_FLAGS) $(DELAYLOAD) $(LIBFILES) $(MINI_OBJ)
9e42cd94 1009<<
02bfb73b 1010 $(EMBED_EXE_MANI:..\lib\buildcustomize.pl=..\miniperl.exe)
b78ac715 1011 $(MINIPERL) -I..\lib -f ..\write_buildcustomize.pl ..
9e42cd94
GS
1012
1013$(MINIDIR) :
1014 if not exist "$(MINIDIR)" mkdir "$(MINIDIR)"
1015
1016$(MINICORE_OBJ) : $(CORE_NOCFG_H)
8c4561fb 1017 $(CC) -c $(CFLAGS) -DPERL_EXTERNAL_GLOB -DPERL_IS_MINIPERL $(OBJOUT_FLAG)$@ ..\$(*F).c
9e42cd94
GS
1018
1019$(MINIWIN32_OBJ) : $(CORE_NOCFG_H)
a19baa61 1020 $(CC) -c $(CFLAGS) -DPERL_IS_MINIPERL $(OBJOUT_FLAG)$@ $(*F).c
9e42cd94
GS
1021
1022# -DPERL_IMPLICIT_SYS needs C++ for perllib.c
1023# This is the only file that depends on perlhost.h, vmem.h, and vdir.h
1024!IF "$(USE_IMP_SYS)" == "define"
1025perllib$(o) : perllib.c .\perlhost.h .\vdir.h .\vmem.h
1026 $(CC) -c -I. $(CFLAGS_O) $(CXX_FLAG) $(OBJOUT_FLAG)$@ perllib.c
1027!ENDIF
1028
1029# 1. we don't want to rebuild miniperl.exe when config.h changes
1030# 2. we don't want to rebuild miniperl.exe with non-default config.h
931482b7 1031# 3. we can't have miniperl.exe depend on git_version.h, as miniperl creates it
9e42cd94
GS
1032$(MINI_OBJ) : $(CORE_NOCFG_H)
1033
1034$(WIN32_OBJ) : $(CORE_H)
1035$(CORE_OBJ) : $(CORE_H)
1036$(DLL_OBJ) : $(CORE_H)
9e42cd94 1037
d500e60d 1038perldll.def : $(MINIPERL) $(CONFIGPM) ..\embed.fnc ..\makedef.pl create_perllibst_h.pl
c6d234b8 1039 $(MINIPERL) -I..\lib create_perllibst_h.pl
c1effa61 1040 $(MINIPERL) -I..\lib -w ..\makedef.pl PLATFORM=win32 $(OPTIMIZE) $(DEFINES) $(BUILDOPT) \
080c3729 1041 CCTYPE=$(CCTYPE) TARG_DIR=..\ > perldll.def
9e42cd94 1042
595589fa 1043$(PERLDLL): perldll.def $(PERLDLL_OBJ) $(PERLDLL_RES) Extensions_static
9e7cf449 1044 $(LINK32) -dll -def:perldll.def -base:0x28000000 -out:$@ @Extensions_static @<<
9e42cd94
GS
1045 $(LINK_FLAGS) $(DELAYLOAD) $(LIBFILES) $(PERLDLL_OBJ) $(PERLDLL_RES)
1046<<
c8e599d3 1047 $(EMBED_DLL_MANI)
9e42cd94
GS
1048 $(XCOPY) $(PERLIMPLIB) $(COREDIR)
1049
4e036e4b
VK
1050$(PERLSTATICLIB): Extensions_static
1051 $(LIB32) $(LIB_FLAGS) -out:$@ @Extensions_static @<<
1052 $(PERLDLL_OBJ)
1053<<
1054 $(XCOPY) $(PERLSTATICLIB) $(COREDIR)
1055
4ebea3c6 1056$(PERLEXE_RES): perlexe.rc $(PERLEXE_MANIFEST) $(PERLEXE_ICO)
e84ac4e2 1057
9387abf8 1058$(MINIDIR)\globals$(o) : $(GENERATED_HEADERS)
9444d213 1059
6f83ef0e 1060$(UUDMAP_H) $(MG_DATA_H) : $(BITCOUNT_H)
6999193b
NC
1061
1062$(BITCOUNT_H) : $(GENUUDMAP)
9387abf8 1063 $(GENUUDMAP) $(GENERATED_HEADERS)
6f83ef0e
NC
1064
1065$(GENUUDMAP_OBJ) : ..\mg_raw.h
9444d213 1066
202d1001 1067$(GENUUDMAP) : $(GENUUDMAP_OBJ)
9444d213 1068 $(LINK32) -subsystem:console -out:$@ @<<
202d1001
SH
1069 $(LINK_FLAGS) $(LIBFILES) $(GENUUDMAP_OBJ)
1070<<
1071 $(EMBED_EXE_MANI)
9444d213 1072
9e42cd94
GS
1073perlmain.c : runperl.c
1074 copy runperl.c perlmain.c
1075
1076perlmain$(o) : perlmain.c
88c9158a 1077 $(CC) $(CFLAGS_O:-DPERLDLL=-UPERLDLL) $(OBJOUT_FLAG)$@ -c perlmain.c
9e42cd94 1078
4e036e4b
VK
1079perlmainst.c : runperl.c
1080 copy runperl.c perlmainst.c
1081
1082perlmainst$(o) : perlmainst.c
88c9158a 1083 $(CC) $(CFLAGS_O) $(OBJOUT_FLAG)$@ -c perlmainst.c
4e036e4b 1084
931482b7 1085$(PERLEXE): $(PERLDLL) $(CONFIGPM) $(PERLEXE_OBJ) $(PERLEXE_RES)
56a86867 1086 $(LINK32) -subsystem:console -out:$@ $(LINK_FLAGS) \
aafd2430 1087 $(PERLEXE_OBJ) $(PERLEXE_RES) $(PERLIMPLIB) $(LIBFILES) $(SETARGV_OBJ)
c8e599d3 1088 $(EMBED_EXE_MANI)
9e42cd94
GS
1089 copy $(PERLEXE) $(WPERLEXE)
1090 $(MINIPERL) -I..\lib bin\exetype.pl $(WPERLEXE) WINDOWS
9e42cd94 1091
931482b7 1092$(PERLEXESTATIC): $(PERLSTATICLIB) $(CONFIGPM) $(PERLEXEST_OBJ) $(PERLEXE_RES)
56a86867 1093 $(LINK32) -subsystem:console -out:$@ $(LINK_FLAGS) \
aafd2430 1094 $(PERLEXEST_OBJ) $(PERLEXE_RES) $(PERLSTATICLIB) $(LIBFILES) $(SETARGV_OBJ)
4e036e4b
VK
1095 $(EMBED_EXE_MANI)
1096
d1a21686 1097MakePPPort: $(MINIPERL) $(CONFIGPM) Extensions_nonxs
f6b3c354 1098 $(MINIPERL) -I..\lib ..\mkppport
42e07562 1099
9dcb9602 1100#-------------------------------------------------------------------------------
281da5ea 1101# There's no direct way to mark a dependency on
6afd19bc 1102# DynaLoader.pm, so this will have to do
5e4c4c91 1103Extensions: ..\make_ext.pl ..\lib\buildcustomize.pl $(PERLDEP) $(CONFIGPM) $(DYNALOADER)
a5ca303d 1104 $(XCOPY) ..\*.h $(COREDIR)\*.*
a193a2db 1105 $(MINIPERL) -I..\lib ..\make_ext.pl "MAKE=$(MAKE)" --dir=$(CPANDIR) --dir=$(DISTDIR) --dir=$(EXTDIR) --dynamic
595589fa 1106
5e4c4c91 1107Extensions_reonly: ..\make_ext.pl ..\lib\buildcustomize.pl $(PERLDEP) $(CONFIGPM) $(DYNALOADER)
a5ca303d 1108 $(XCOPY) ..\*.h $(COREDIR)\*.*
a193a2db 1109 $(MINIPERL) -I..\lib ..\make_ext.pl "MAKE=$(MAKE)" --dir=$(CPANDIR) --dir=$(DISTDIR) --dir=$(EXTDIR) --dynamic +re
a24cc0c0 1110
183ebedc 1111Extensions_static : ..\make_ext.pl ..\lib\buildcustomize.pl list_static_libs.pl $(PERLDEP) $(CONFIGPM) Extensions_nonxs
a5ca303d 1112 $(XCOPY) ..\*.h $(COREDIR)\*.*
a193a2db 1113 $(MINIPERL) -I..\lib ..\make_ext.pl "MAKE=$(MAKE)" --dir=$(CPANDIR) --dir=$(DISTDIR) --dir=$(EXTDIR) --static
c6d234b8 1114 $(MINIPERL) -I..\lib list_static_libs.pl > Extensions_static
9e42cd94 1115
291c8c21 1116Extensions_nonxs: ..\make_ext.pl ..\lib\buildcustomize.pl $(PERLDEP) $(CONFIGPM) ..\pod\perlfunc.pod
a34ce875 1117 $(XCOPY) ..\*.h $(COREDIR)\*.*
a193a2db 1118 $(MINIPERL) -I..\lib ..\make_ext.pl "MAKE=$(MAKE)" --dir=$(CPANDIR) --dir=$(DISTDIR) --dir=$(EXTDIR) --nonxs
a34ce875 1119
5e4c4c91 1120$(DYNALOADER) : ..\make_ext.pl ..\lib\buildcustomize.pl $(PERLDEP) $(CONFIGPM) Extensions_nonxs
281da5ea
NC
1121 $(XCOPY) ..\*.h $(COREDIR)\*.*
1122 $(MINIPERL) -I..\lib ..\make_ext.pl "MAKE=$(MAKE)" --dir=$(EXTDIR) --dynaloader
1123
9e42cd94 1124Extensions_clean:
a193a2db 1125 -if exist $(MINIPERL) $(MINIPERL) -I..\lib ..\make_ext.pl "MAKE=$(MAKE)" --dir=$(CPANDIR) --dir=$(DISTDIR) --dir=$(EXTDIR) --all --target=clean
9e42cd94 1126
b4dc1df6 1127Extensions_realclean:
a193a2db 1128 -if exist $(MINIPERL) $(MINIPERL) -I..\lib ..\make_ext.pl "MAKE=$(MAKE)" --dir=$(CPANDIR) --dir=$(DISTDIR) --dir=$(EXTDIR) --all --target=realclean
b4dc1df6 1129
9dcb9602 1130#-------------------------------------------------------------------------------
9e42cd94 1131
0195b144 1132doc: $(PERLEXE) ..\pod\perltoc.pod
a4e8ab8a 1133 $(PERLEXE) ..\installhtml --podroot=.. --htmldir=$(HTMLDIR) \
f8dbed5a 1134 --podpath=pod:lib:utils --htmlroot="file://$(INST_HTML::=|)" \
9b1d99d7 1135 --recurse
9e42cd94 1136
0827416d
NC
1137..\utils\Makefile: $(CONFIGPM) ..\utils\Makefile.PL
1138 $(MINIPERL) -I..\lib ..\utils\Makefile.PL ..
1139
b0b6bf2b
AT
1140# Note that this next section is parsed (and regenerated) by pod/buildtoc
1141# so please check that script before making structural changes here
1142
e5a8a0fb 1143utils: $(PERLEXE) ..\utils\Makefile
9e42cd94
GS
1144 cd ..\utils
1145 $(MAKE) PERL=$(MINIPERL)
1146 cd ..\pod
b0b6bf2b
AT
1147 copy ..\README.aix ..\pod\perlaix.pod
1148 copy ..\README.amiga ..\pod\perlamiga.pod
6001596e 1149 copy ..\README.android ..\pod\perlandroid.pod
b0b6bf2b
AT
1150 copy ..\README.bs2000 ..\pod\perlbs2000.pod
1151 copy ..\README.ce ..\pod\perlce.pod
1152 copy ..\README.cn ..\pod\perlcn.pod
1153 copy ..\README.cygwin ..\pod\perlcygwin.pod
b0b6bf2b 1154 copy ..\README.dos ..\pod\perldos.pod
b0b6bf2b 1155 copy ..\README.freebsd ..\pod\perlfreebsd.pod
9f968a8d 1156 copy ..\README.haiku ..\pod\perlhaiku.pod
b0b6bf2b
AT
1157 copy ..\README.hpux ..\pod\perlhpux.pod
1158 copy ..\README.hurd ..\pod\perlhurd.pod
1159 copy ..\README.irix ..\pod\perlirix.pod
1160 copy ..\README.jp ..\pod\perljp.pod
1161 copy ..\README.ko ..\pod\perlko.pod
6477b319 1162 copy ..\README.linux ..\pod\perllinux.pod
b0b6bf2b
AT
1163 copy ..\README.macos ..\pod\perlmacos.pod
1164 copy ..\README.macosx ..\pod\perlmacosx.pod
b0b6bf2b 1165 copy ..\README.netware ..\pod\perlnetware.pod
b0846812 1166 copy ..\README.openbsd ..\pod\perlopenbsd.pod
b0b6bf2b
AT
1167 copy ..\README.os2 ..\pod\perlos2.pod
1168 copy ..\README.os390 ..\pod\perlos390.pod
1169 copy ..\README.os400 ..\pod\perlos400.pod
1170 copy ..\README.plan9 ..\pod\perlplan9.pod
1171 copy ..\README.qnx ..\pod\perlqnx.pod
2f08ed66 1172 copy ..\README.riscos ..\pod\perlriscos.pod
b0b6bf2b 1173 copy ..\README.solaris ..\pod\perlsolaris.pod
27da23d5 1174 copy ..\README.symbian ..\pod\perlsymbian.pod
58534900 1175 copy ..\README.synology ..\pod\perlsynology.pod
b0b6bf2b
AT
1176 copy ..\README.tru64 ..\pod\perltru64.pod
1177 copy ..\README.tw ..\pod\perltw.pod
b0b6bf2b
AT
1178 copy ..\README.vos ..\pod\perlvos.pod
1179 copy ..\README.win32 ..\pod\perlwin32.pod
2ff1ebfe 1180 copy ..\pod\perldelta.pod ..\pod\perl5219delta.pod
9e42cd94
GS
1181 cd ..\win32
1182 $(PERLEXE) $(PL2BAT) $(UTILS)
f8d6280f 1183 $(MINIPERL) -I..\lib ..\autodoc.pl ..
f556af6c 1184 $(MINIPERL) -I..\lib ..\pod\perlmodlib.PL -q ..
0195b144
NC
1185
1186..\pod\perltoc.pod: $(PERLEXE) Extensions Extensions_nonxs
b78c1104 1187 $(PERLEXE) -f ..\pod\buildtoc -q
9e42cd94 1188
b0b6bf2b
AT
1189# Note that the pod cleanup in this next section is parsed (and regenerated
1190# by pod/buildtoc so please check that script before making changes here
1191
b4dc1df6 1192distclean: realclean
9e42cd94 1193 -del /f $(MINIPERL) $(PERLEXE) $(PERLDLL) $(GLOBEXE) \
7b4d95f7 1194 $(PERLIMPLIB) ..\miniperl.lib $(PERLEXESTATIC) $(PERLSTATICLIB)
ca67812f
SH
1195 -del /f $(LIBDIR)\Encode.pm $(LIBDIR)\encoding.pm $(LIBDIR)\Errno.pm
1196 -del /f $(LIBDIR)\Config.pod $(LIBDIR)\POSIX.pod $(LIBDIR)\threads.pm
48462a74 1197 -del /f $(LIBDIR)\.exists $(LIBDIR)\attributes.pm $(LIBDIR)\DynaLoader.pm
9e42cd94
GS
1198 -del /f $(LIBDIR)\Fcntl.pm $(LIBDIR)\IO.pm $(LIBDIR)\Opcode.pm
1199 -del /f $(LIBDIR)\ops.pm $(LIBDIR)\Safe.pm
1200 -del /f $(LIBDIR)\SDBM_File.pm $(LIBDIR)\Socket.pm $(LIBDIR)\POSIX.pm
1201 -del /f $(LIBDIR)\B.pm $(LIBDIR)\O.pm $(LIBDIR)\re.pm
9e42cd94
GS
1202 -del /f $(LIBDIR)\File\Glob.pm
1203 -del /f $(LIBDIR)\Storable.pm
ca67812f 1204 -del /f $(LIBDIR)\Sys\Hostname.pm
9e42cd94 1205 -del /f $(LIBDIR)\Time\HiRes.pm
9e42cd94 1206 -del /f $(LIBDIR)\Unicode\Normalize.pm
4e74047c 1207 -del /f $(LIBDIR)\Math\BigInt\FastCalc.pm
b4ad57f4 1208 -del /f $(LIBDIR)\Win32.pm
37ca3c28 1209 -del /f $(LIBDIR)\Win32CORE.pm
00701878
SH
1210 -del /f $(LIBDIR)\Win32API\File.pm
1211 -del /f $(LIBDIR)\Win32API\File\cFile.pc
5e4c4c91 1212 -del /f $(LIBDIR)\buildcustomize.pl
a85e0e8c 1213 -del /f $(DISTDIR)\XSLoader\XSLoader.pm
5daeb5b0 1214 -del /f *.def *.map
1a6c65ed
SH
1215 -if exist $(LIBDIR)\App rmdir /s /q $(LIBDIR)\App
1216 -if exist $(LIBDIR)\Archive rmdir /s /q $(LIBDIR)\Archive
1217 -if exist $(LIBDIR)\Attribute rmdir /s /q $(LIBDIR)\Attribute
1218 -if exist $(LIBDIR)\autodie rmdir /s /q $(LIBDIR)\autodie
7afc9753 1219 -if exist $(LIBDIR)\Carp rmdir /s /q $(LIBDIR)\Carp
46ffdcf0 1220 -if exist $(LIBDIR)\Compress rmdir /s /q $(LIBDIR)\Compress
7afc9753
NC
1221 -if exist $(LIBDIR)\Config\Perl rmdir /s /q $(LIBDIR)\Config\Perl
1222 -if exist $(LIBDIR)\CPAN rmdir /s /q $(LIBDIR)\CPAN
9e42cd94 1223 -if exist $(LIBDIR)\Data rmdir /s /q $(LIBDIR)\Data
1a6c65ed
SH
1224 -if exist $(LIBDIR)\Devel rmdir /s /q $(LIBDIR)\Devel
1225 -if exist $(LIBDIR)\Digest rmdir /s /q $(LIBDIR)\Digest
ca67812f 1226 -if exist $(LIBDIR)\Encode rmdir /s /q $(LIBDIR)\Encode
1a6c65ed 1227 -if exist $(LIBDIR)\encoding rmdir /s /q $(LIBDIR)\encoding
7afc9753 1228 -if exist $(LIBDIR)\Exporter rmdir /s /q $(LIBDIR)\Exporter
1a6c65ed
SH
1229 -if exist $(LIBDIR)\ExtUtils\CBuilder rmdir /s /q $(LIBDIR)\ExtUtils\CBuilder
1230 -if exist $(LIBDIR)\ExtUtils\Command rmdir /s /q $(LIBDIR)\ExtUtils\Command
1231 -if exist $(LIBDIR)\ExtUtils\Constant rmdir /s /q $(LIBDIR)\ExtUtils\Constant
1232 -if exist $(LIBDIR)\ExtUtils\Liblist rmdir /s /q $(LIBDIR)\ExtUtils\Liblist
1233 -if exist $(LIBDIR)\ExtUtils\MakeMaker rmdir /s /q $(LIBDIR)\ExtUtils\MakeMaker
7afc9753
NC
1234 -if exist $(LIBDIR)\ExtUtils\ParseXS rmdir /s /q $(LIBDIR)\ExtUtils\ParseXS
1235 -if exist $(LIBDIR)\ExtUtils\Typemaps rmdir /s /q $(LIBDIR)\ExtUtils\Typemaps
1a6c65ed
SH
1236 -if exist $(LIBDIR)\File\Spec rmdir /s /q $(LIBDIR)\File\Spec
1237 -if exist $(LIBDIR)\Filter rmdir /s /q $(LIBDIR)\Filter
96c33d98 1238 -if exist $(LIBDIR)\Hash rmdir /s /q $(LIBDIR)\Hash
7afc9753
NC
1239 -if exist $(LIBDIR)\HTTP rmdir /s /q $(LIBDIR)\HTTP
1240 -if exist $(LIBDIR)\I18N rmdir /s /q $(LIBDIR)\I18N
1a6c65ed
SH
1241 -if exist $(LIBDIR)\IO rmdir /s /q $(LIBDIR)\IO
1242 -if exist $(LIBDIR)\IPC rmdir /s /q $(LIBDIR)\IPC
7afc9753 1243 -if exist $(LIBDIR)\JSON rmdir /s /q $(LIBDIR)\JSON
69f57184 1244 -if exist $(LIBDIR)\List rmdir /s /q $(LIBDIR)\List
1a6c65ed 1245 -if exist $(LIBDIR)\Locale rmdir /s /q $(LIBDIR)\Locale
1a6c65ed
SH
1246 -if exist $(LIBDIR)\Math rmdir /s /q $(LIBDIR)\Math
1247 -if exist $(LIBDIR)\Memoize rmdir /s /q $(LIBDIR)\Memoize
69f57184 1248 -if exist $(LIBDIR)\MIME rmdir /s /q $(LIBDIR)\MIME
1a6c65ed 1249 -if exist $(LIBDIR)\Module rmdir /s /q $(LIBDIR)\Module
1a6c65ed 1250 -if exist $(LIBDIR)\Net\FTP rmdir /s /q $(LIBDIR)\Net\FTP
1a6c65ed
SH
1251 -if exist $(LIBDIR)\Params rmdir /s /q $(LIBDIR)\Params
1252 -if exist $(LIBDIR)\Parse rmdir /s /q $(LIBDIR)\Parse
7afc9753 1253 -if exist $(LIBDIR)\Perl rmdir /s /q $(LIBDIR)\Perl
1a6c65ed
SH
1254 -if exist $(LIBDIR)\PerlIO rmdir /s /q $(LIBDIR)\PerlIO
1255 -if exist $(LIBDIR)\Pod\Perldoc rmdir /s /q $(LIBDIR)\Pod\Perldoc
1256 -if exist $(LIBDIR)\Pod\Simple rmdir /s /q $(LIBDIR)\Pod\Simple
1257 -if exist $(LIBDIR)\Pod\Text rmdir /s /q $(LIBDIR)\Pod\Text
9e42cd94 1258 -if exist $(LIBDIR)\Scalar rmdir /s /q $(LIBDIR)\Scalar
7afc9753 1259 -if exist $(LIBDIR)\Search rmdir /s /q $(LIBDIR)\Search
d81c2d6a 1260 -if exist $(LIBDIR)\Sub rmdir /s /q $(LIBDIR)\Sub
6c4b87ea 1261 -if exist $(LIBDIR)\Sys rmdir /s /q $(LIBDIR)\Sys
1a6c65ed 1262 -if exist $(LIBDIR)\TAP rmdir /s /q $(LIBDIR)\TAP
7afc9753 1263 -if exist $(LIBDIR)\Term rmdir /s /q $(LIBDIR)\Term
1a6c65ed 1264 -if exist $(LIBDIR)\Test rmdir /s /q $(LIBDIR)\Test
7afc9753 1265 -if exist $(LIBDIR)\Text rmdir /s /q $(LIBDIR)\Text
1a6c65ed 1266 -if exist $(LIBDIR)\Thread rmdir /s /q $(LIBDIR)\Thread
6c4b87ea 1267 -if exist $(LIBDIR)\threads rmdir /s /q $(LIBDIR)\threads
8cf6f931 1268 -if exist $(LIBDIR)\Tie\Hash rmdir /s /q $(LIBDIR)\Tie\Hash
1a6c65ed 1269 -if exist $(LIBDIR)\Unicode\Collate rmdir /s /q $(LIBDIR)\Unicode\Collate
7afc9753 1270 -if exist $(LIBDIR)\Unicode\Collate\Locale rmdir /s /q $(LIBDIR)\Unicode\Collate\Locale
fb794281 1271 -if exist $(LIBDIR)\version rmdir /s /q $(LIBDIR)\version
7afc9753 1272 -if exist $(LIBDIR)\VMS rmdir /s /q $(LIBDIR)\VMS
00701878 1273 -if exist $(LIBDIR)\Win32API rmdir /s /q $(LIBDIR)\Win32API
7afc9753 1274 -if exist $(LIBDIR)\XS rmdir /s /q $(LIBDIR)\XS
60f0ee9d 1275 -cd $(PODDIR) && del /f *.html *.bat roffitall \
2ff1ebfe 1276 perl5219delta.pod perlaix.pod perlamiga.pod perlandroid.pod \
6001596e
BF
1277 perlapi.pod perlbs2000.pod perlce.pod perlcn.pod perlcygwin.pod \
1278 perldos.pod perlfreebsd.pod perlhaiku.pod perlhpux.pod \
1279 perlhurd.pod perlintern.pod perlirix.pod perljp.pod perlko.pod \
1280 perllinux.pod perlmacos.pod perlmacosx.pod perlmodlib.pod \
1281 perlnetware.pod perlopenbsd.pod perlos2.pod perlos390.pod \
1282 perlos400.pod perlplan9.pod perlqnx.pod perlriscos.pod \
1283 perlsolaris.pod perlsymbian.pod perlsynology.pod perltoc.pod \
1284 perltru64.pod perltw.pod perluniprops.pod perlvos.pod \
1285 perlwin32.pod
ca67812f 1286 -cd ..\utils && del /f h2ph splain perlbug pl2pm c2ph pstruct h2xs \
59658819 1287 perldoc perlivp libnetcfg enc2xs encguess piconv cpan *.bat \
2ea3abd4 1288 xsubpp pod2html instmodsh json_pp prove ptar ptardiff ptargrep shasum corelist zipdetails
19ec6f53 1289 -del /f ..\config.sh perlmain.c dlutils.c config.h.new \
4e036e4b 1290 perlmainst.c
9e42cd94 1291 -del /f $(CONFIGPM)
a148edb6 1292 -del /f ..\lib\Config_git.pl
9e42cd94 1293 -del /f bin\*.bat
322fd642 1294 -del /f perllibst.h
4ebea3c6 1295 -del /f $(PERLEXE_RES) perl.base
85741d00 1296 -cd .. && del /s *.lib *.map *.pdb *.ilk *.bs *$(o) .exists pm_to_blib ppport.h
ca67812f 1297 -cd $(EXTDIR) && del /s *.def Makefile Makefile.old
a193a2db 1298 -cd $(DISTDIR) && del /s *.def Makefile Makefile.old
b212a3c6 1299 -cd $(CPANDIR) && del /s *.def Makefile Makefile.old
0827416d 1300 -del /s ..\utils\Makefile
9e42cd94 1301 -if exist $(AUTODIR) rmdir /s /q $(AUTODIR)
9e42cd94 1302 -if exist $(COREDIR) rmdir /s /q $(COREDIR)
b4a41557 1303 -if exist pod2htmd.tmp del pod2htmd.tmp
b4a41557 1304 -if exist $(HTMLDIR) rmdir /s /q $(HTMLDIR)
0279961e 1305 -del /f ..\t\test_state
9e42cd94
GS
1306
1307install : all installbare installhtml
1308
0195b144 1309installbare : utils ..\pod\perltoc.pod
9e42cd94
GS
1310 $(PERLEXE) ..\installperl
1311 if exist $(WPERLEXE) $(XCOPY) $(WPERLEXE) $(INST_BIN)\*.*
5548433c 1312 if exist $(PERLEXESTATIC) $(XCOPY) $(PERLEXESTATIC) $(INST_BIN)\*.*
9e42cd94 1313 $(XCOPY) $(GLOBEXE) $(INST_BIN)\*.*
ec25c072 1314 if exist ..\perl*.pdb $(XCOPY) ..\perl*.pdb $(INST_BIN)\*.*
9e42cd94
GS
1315 $(XCOPY) bin\*.bat $(INST_SCRIPT)\*.*
1316
1317installhtml : doc
b4a41557 1318 $(RCOPY) $(HTMLDIR)\*.* $(INST_HTML)\*.*
9e42cd94
GS
1319
1320inst_lib : $(CONFIGPM)
9e42cd94
GS
1321 $(RCOPY) ..\lib $(INST_LIB)\*.*
1322
58fa074c 1323$(UNIDATAFILES) ..\pod\perluniprops.pod : $(MINIPERL) $(CONFIGPM) ..\lib\unicore\mktables Extensions_nonxs
27a8011f 1324 cd ..\lib\unicore && \
2a6dc374 1325 ..\$(MINIPERL) -I.. -I..\..\dist\Cwd\lib -I..\..\dist\Cwd mktables -P ..\..\pod -maketest -makelist -p -check $@ $(FIRSTUNIFILE)
ca12659b 1326
735ecbe9 1327minitest : .\config.h $(MINIPERL) ..\git_version.h $(GLOBEXE) $(CONFIGPM) $(UNIDATAFILES)
6c85d12e
SH
1328 $(XCOPY) $(MINIPERL) ..\t\$(NULL)
1329 if exist ..\t\perl.exe del /f ..\t\perl.exe
1330 rename ..\t\miniperl.exe perl.exe
9e42cd94 1331 $(XCOPY) $(GLOBEXE) ..\t\$(NULL)
a4e8ab8a 1332# Note this perl.exe is miniperl
49bf91e4 1333 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 1334
3bef022b 1335test-prep : all utils ../pod/perltoc.pod
9e42cd94
GS
1336 $(XCOPY) $(PERLEXE) ..\t\$(NULL)
1337 $(XCOPY) $(PERLDLL) ..\t\$(NULL)
1338 $(XCOPY) $(GLOBEXE) ..\t\$(NULL)
0b4dcbc1 1339 set PERL_STATIC_EXT=$(STATIC_EXT)
9e42cd94
GS
1340
1341test : test-prep
1342 cd ..\t
a4e8ab8a 1343 perl.exe harness $(TEST_SWITCHES) $(TEST_FILES)
9e42cd94
GS
1344 cd ..\win32
1345
247c55c0
CBW
1346test_porting : test-prep
1347 cd ..\t
a4e8ab8a 1348 perl.exe harness $(TEST_SWITCHES) porting\*.t ..\lib\diagnostics.t
247c55c0
CBW
1349 cd ..\win32
1350
6ae7e459
YO
1351test-reonly : reonly utils
1352 $(XCOPY) $(PERLEXE) ..\t\$(NULL)
1353 $(XCOPY) $(PERLDLL) ..\t\$(NULL)
1354 $(XCOPY) $(GLOBEXE) ..\t\$(NULL)
1355 cd ..\t
a4e8ab8a 1356 perl.exe harness $(OPT) -re \bre\\/ $(EXTRA)
6ae7e459 1357 cd ..\win32
7bcddc65 1358
c900f745 1359regen :
7bcddc65
YO
1360 cd ..
1361 regen.pl
1362 cd win32
1363
9e42cd94
GS
1364test-notty : test-prep
1365 set PERL_SKIP_TTY_TEST=1
1366 cd ..\t
a4e8ab8a 1367 perl.exe harness $(TEST_SWITCHES) $(TEST_FILES)
9e42cd94
GS
1368 cd ..\win32
1369
b4a93add
NK
1370_test :
1371 $(XCOPY) $(PERLEXE) ..\t\$(NULL)
1372 $(XCOPY) $(PERLDLL) ..\t\$(NULL)
1373 $(XCOPY) $(GLOBEXE) ..\t\$(NULL)
1374 cd ..\t
a4e8ab8a 1375 perl.exe harness $(TEST_SWITCHES) $(TEST_FILES)
b4a93add
NK
1376 cd ..\win32
1377
b4dc1df6 1378_clean :
9e42cd94
GS
1379 -@$(DEL) miniperlmain$(o)
1380 -@$(DEL) $(MINIPERL)
1381 -@$(DEL) perlglob$(o)
1382 -@$(DEL) perlmain$(o)
4e036e4b 1383 -@$(DEL) perlmainst$(o)
9e42cd94
GS
1384 -@$(DEL) config.w32
1385 -@$(DEL) config.h
a148edb6 1386 -@$(DEL) ..\git_version.h
9e42cd94
GS
1387 -@$(DEL) $(GLOBEXE)
1388 -@$(DEL) $(PERLEXE)
1389 -@$(DEL) $(WPERLEXE)
4e036e4b
VK
1390 -@$(DEL) $(PERLEXESTATIC)
1391 -@$(DEL) $(PERLSTATICLIB)
9e42cd94
GS
1392 -@$(DEL) $(PERLDLL)
1393 -@$(DEL) $(CORE_OBJ)
9387abf8 1394 -@$(DEL) $(GENUUDMAP) $(GENUUDMAP_OBJ) $(GENERATED_HEADERS)
9e42cd94 1395 -if exist $(MINIDIR) rmdir /s /q $(MINIDIR)
27a8011f 1396 -if exist $(UNIDATADIR1) rmdir /s /q $(UNIDATADIR1)
27a8011f 1397 -if exist $(UNIDATADIR2) rmdir /s /q $(UNIDATADIR2)
ca12659b 1398 -@$(DEL) $(UNIDATAFILES)
27a8011f 1399 -@$(DEL) $(WIN32_OBJ)
9e42cd94 1400 -@$(DEL) $(DLL_OBJ)
9e42cd94
GS
1401 -@$(DEL) ..\*$(o) ..\*.lib ..\*.exp *$(o) *.lib *.exp *.res
1402 -@$(DEL) ..\t\*.exe ..\t\*.dll ..\t\*.bat
9e42cd94
GS
1403 -@$(DEL) *.ilk
1404 -@$(DEL) *.pdb
9e7cf449 1405 -@$(DEL) Extensions_static
9e42cd94 1406
6e2cec71 1407clean : Extensions_clean _clean
b4dc1df6 1408
85741d00 1409realclean : Extensions_realclean _clean
b4dc1df6 1410
9e42cd94
GS
1411# Handy way to run perlbug -ok without having to install and run the
1412# installed perlbug. We don't re-run the tests here - we trust the user.
1413# Please *don't* use this unless all tests pass.
1414# If you want to report test failures, use "nmake nok" instead.
1415ok: utils
a4e8ab8a 1416 $(PERLEXE) ..\utils\perlbug -ok -s "(UNINSTALLED)"
9e42cd94
GS
1417
1418okfile: utils
a4e8ab8a 1419 $(PERLEXE) ..\utils\perlbug -ok -s "(UNINSTALLED)" -F perl.ok
9e42cd94
GS
1420
1421nok: utils
a4e8ab8a 1422 $(PERLEXE) ..\utils\perlbug -nok -s "(UNINSTALLED)"
9e42cd94
GS
1423
1424nokfile: utils
a4e8ab8a 1425 $(PERLEXE) ..\utils\perlbug -nok -s "(UNINSTALLED)" -F perl.nok