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