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