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