Fwd: Memory leak with s/// and hashes
[p5sagit/p5-mst-13.2.git] / win32 / Makefile
CommitLineData
9e42cd94 1#
2# Makefile to build perl on Windows NT using Microsoft NMAKE.
3# Supported compilers:
da2c7419 4# Visual C++ 2.0 through 7.0 (and possibly newer versions)
9453ddcd 5# MS Platform SDK 64-bit compiler and tools
9e42cd94 6#
7# This is set up to build a perl.exe that runs off a shared library
78a7c709 8# (perl59.dll). Also makes individual DLLs for the XS extensions.
9e42cd94 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#
27# Comment this out if you DON'T want your perl installation to be versioned.
28# This means that the new installation will overwrite any files from the
29# old installation at the same INST_TOP location. Leaving it enabled is
30# the safest route, as perl adds the extra version directory to all the
31# locations it installs files to. If you disable it, an alternative
32# versioned installation can be obtained by setting INST_TOP above to a
33# path that includes an arbitrary version string.
34#
56a89353 35#INST_VER = \5.9.5
9e42cd94 36
37#
38# Comment this out if you DON'T want your perl installation to have
39# architecture specific components. This means that architecture-
40# specific files will be installed along with the architecture-neutral
41# files. Leaving it enabled is safer and more flexible, in case you
42# want to build multiple flavors of perl and install them together in
43# the same location. Commenting it out gives you a simpler
44# installation that is easier to understand for beginners.
45#
bdb4cb88 46#INST_ARCH = \$(ARCHNAME)
9e42cd94 47
48#
7ada00a0 49# Uncomment this if you want perl to run
50# $Config{sitelibexp}\sitecustomize.pl
51# before anything else. This script can then be set up, for example,
52# to add additional entries to @INC.
53#
54#USE_SITECUST = define
55
56#
9e42cd94 57# uncomment to enable multiple interpreters. This is need for fork()
f7d585d3 58# emulation and for thread support.
9e42cd94 59#
bdb4cb88 60USE_MULTI = define
9e42cd94 61
62#
f7d585d3 63# Beginnings of interpreter cloning/threads; now reasonably complete.
9e42cd94 64# This should be enabled to get the fork() emulation. This needs
65# USE_MULTI as well.
66#
bdb4cb88 67USE_ITHREADS = define
9e42cd94 68
69#
70# uncomment to enable the implicit "host" layer for all system calls
71# made by perl. This needs USE_MULTI above. This is also needed to
72# get fork().
73#
bdb4cb88 74USE_IMP_SYS = define
9e42cd94 75
76#
f7d585d3 77# Comment out next assign to disable perl's I/O subsystem and use compiler's
78# stdio for IO - depending on your compiler vendor and run time library you may
79# then get a number of fails from make test i.e. bugs - complain to them not us ;-).
80# You will also be unable to take full advantage of perl5.8's support for multiple
81# encodings and may see lower IO performance. You have been warned.
9e42cd94 82USE_PERLIO = define
83
84#
4a9d6100 85# Comment this out if you don't want to enable large file support for
86# some reason. Should normally only be changed to maintain compatibility
87# with an older release of perl.
bdb4cb88 88USE_LARGE_FILES = define
4a9d6100 89
90#
da2c7419 91# uncomment exactly one of the following
9e42cd94 92#
da2c7419 93# Visual C++ 2.x
9e42cd94 94#CCTYPE = MSVC20
da2c7419 95# Visual C++ > 2.x and < 6.x
96#CCTYPE = MSVC
1c847d4b 97# Visual C++ 6.x (aka Visual C++ 98)
4a9d6100 98CCTYPE = MSVC60
1c847d4b 99# Visual C++ Toolkit 2003 (aka Visual C++ 7.x) (free command-line tools)
da2c7419 100#CCTYPE = MSVC70FREE
1c847d4b 101# Visual C++ .NET 2003 (aka Visual C++ 7.x) (full version)
da2c7419 102#CCTYPE = MSVC70
1c847d4b 103# Visual C++ 2005 Express Edition (aka Visual C++ 8.x) (free version)
73c9ebc7 104#CCTYPE = MSVC80FREE
1c847d4b 105# Visual C++ 2005 (aka Visual C++ 8.x) (full version)
73c9ebc7 106#CCTYPE = MSVC80
9e42cd94 107
108#
109# uncomment next line if you want debug version of perl (big,slow)
f7d585d3 110# If not enabled, we automatically try to use maximum optimization
111# with all compilers that are known to have a working optimizer.
9e42cd94 112#
113#CFG = Debug
114
115#
116# uncomment to enable use of PerlCRT.DLL when using the Visual C compiler.
117# It has patches that fix known bugs in older versions of MSVCRT.DLL.
118# This currently requires VC 5.0 with Service Pack 3 or later.
119# Get it from CPAN at http://www.cpan.org/authors/id/D/DO/DOUGL/
120# and follow the directions in the package to install.
121#
122# Not recommended if you have VC 6.x and you're not running Windows 9x.
123#
124#USE_PERLCRT = define
125
126#
127# uncomment to enable linking with setargv.obj under the Visual C
128# compiler. Setting this options enables perl to expand wildcards in
129# arguments, but it may be harder to use alternate methods like
130# File::DosGlob that are more powerful. This option is supported only with
131# Visual C.
132#
133#USE_SETARGV = define
134
135#
4ace4afb 136# if you want to have the crypt() builtin function implemented, leave this or
137# CRYPT_LIB uncommented. The fcrypt.c file named here contains a suitable
138# version of des_fcrypt().
9e42cd94 139#
4ace4afb 140CRYPT_SRC = fcrypt.c
9e42cd94 141
142#
143# if you didn't set CRYPT_SRC and if you have des_fcrypt() available in a
144# library, uncomment this, and make sure the library exists (see README.win32)
145# Specify the full pathname of the library.
146#
147#CRYPT_LIB = fcrypt.lib
148
149#
150# set this if you wish to use perl's malloc
151# WARNING: Turning this on/off WILL break binary compatibility with extensions
152# you may have compiled with/without it. Be prepared to recompile all
153# extensions if you change the default. Currently, this cannot be enabled
154# if you ask for USE_IMP_SYS above.
155#
156#PERL_MALLOC = define
157
158#
06c896bb 159# set this to enable debugging mstats
160# This must be enabled to use the Devel::Peek::mstat() function. This cannot
161# be enabled without PERL_MALLOC as well.
162#
bdb4cb88 163#DEBUG_MSTATS = define
06c896bb 164
165#
166#
9e42cd94 167# set the install locations of the compiler include/libraries
168# Running VCVARS32.BAT is *required* when using Visual C.
169# Some versions of Visual C don't define MSVCDIR in the environment,
170# so you may have to set CCHOME explicitly (spaces in the path name should
171# not be quoted)
172#
173#CCHOME = f:\msvc20
174CCHOME = $(MSVCDIR)
175CCINCDIR = $(CCHOME)\include
176CCLIBDIR = $(CCHOME)\lib
177
178#
179# Additional compiler flags can be specified here.
180#
2e30e1e1 181BUILDOPT = $(BUILDOPTEXTRA)
9e42cd94 182
7ada00a0 183#
2eb87578 184# Adding -DPERL_HASH_SEED_EXPLICIT will disable randomization of Perl's
185# internal hash function unless the PERL_HASH_SEED environment variable is set.
186# Alternatively, adding -DNO_HASH_SEED will completely disable the
187# randomization feature.
188# The latter is required to maintain binary compatibility with Perl 5.8.0.
189#
190#BUILDOPT = $(BUILDOPT) -DPERL_HASH_SEED_EXPLICIT
191#BUILDOPT = $(BUILDOPT) -DNO_HASH_SEED
192
9e42cd94 193#
194# This should normally be disabled. Adding -DPERL_POLLUTE enables support
195# for old symbols by default, at the expense of extreme pollution. You most
196# probably just want to build modules that won't compile with
197# perl Makefile.PL POLLUTE=1
198# instead of enabling this. Please report such modules to the respective
199# authors.
200#
201#BUILDOPT = $(BUILDOPT) -DPERL_POLLUTE
202
203#
204# This should normally be disabled. Enabling it will disable the File::Glob
205# implementation of CORE::glob.
206#
207#BUILDOPT = $(BUILDOPT) -DPERL_EXTERNAL_GLOB
208
209#
210# This should normally be disabled. Enabling it causes perl to read scripts
211# in text mode (which is the 5.005 behavior) and will break ByteLoader.
bdb4cb88 212#
9e42cd94 213#BUILDOPT = $(BUILDOPT) -DPERL_TEXTMODE_SCRIPTS
214
215#
216# specify semicolon-separated list of extra directories that modules will
217# look for libraries (spaces in path names need not be quoted)
218#
219EXTRALIBDIRS =
220
221#
222# set this to your email address (perl will guess a value from
223# from your loginname and your hostname, which may not be right)
224#
225#EMAIL =
226
227##
228## Build configuration ends.
229##
230
231##################### CHANGE THESE ONLY IF YOU MUST #####################
232
233!IF "$(CRYPT_SRC)$(CRYPT_LIB)" == ""
234D_CRYPT = undef
235!ELSE
236D_CRYPT = define
237CRYPT_FLAG = -DHAVE_DES_FCRYPT
238!ENDIF
239
646e33b6 240!IF "$(USE_IMP_SYS)" == "define"
241PERL_MALLOC = undef
242DEBUG_MSTATS = undef
243!ENDIF
244
9e42cd94 245!IF "$(PERL_MALLOC)" == ""
246PERL_MALLOC = undef
646e33b6 247DEBUG_MSTATS = undef
06c896bb 248!ENDIF
249
250!IF "$(DEBUG_MSTATS)" == ""
646e33b6 251DEBUG_MSTATS = undef
06c896bb 252!ENDIF
253
254!IF "$(DEBUG_MSTATS)" == "define"
646e33b6 255BUILDOPT = $(BUILDOPT) -DPERL_DEBUGGING_MSTATS
9e42cd94 256!ENDIF
257
7ada00a0 258!IF "$(USE_SITECUST)" == ""
259USE_SITECUST = undef
260!ENDIF
261
9e42cd94 262!IF "$(USE_MULTI)" == ""
263USE_MULTI = undef
264!ENDIF
265
266!IF "$(USE_ITHREADS)" == ""
267USE_ITHREADS = undef
268!ENDIF
269
270!IF "$(USE_IMP_SYS)" == ""
271USE_IMP_SYS = undef
272!ENDIF
273
274!IF "$(USE_PERLIO)" == ""
275USE_PERLIO = undef
276!ENDIF
277
4a9d6100 278!IF "$(USE_LARGE_FILES)" == ""
279USE_LARGE_FILES = undef
280!ENDIF
281
9e42cd94 282!IF "$(USE_PERLCRT)" == ""
283USE_PERLCRT = undef
284!ENDIF
285
3db8f154 286!IF "$(USE_IMP_SYS)$(USE_MULTI)" == "defineundef"
9e42cd94 287USE_MULTI = define
288!ENDIF
289
290!IF "$(USE_ITHREADS)$(USE_MULTI)" == "defineundef"
291USE_MULTI = define
9e42cd94 292!ENDIF
293
7ada00a0 294!IF "$(USE_SITECUST)" == "define"
295BUILDOPT = $(BUILDOPT) -DUSE_SITECUSTOMIZE
296!ENDIF
297
3db8f154 298!IF "$(USE_MULTI)" != "undef"
9e42cd94 299BUILDOPT = $(BUILDOPT) -DPERL_IMPLICIT_CONTEXT
300!ENDIF
301
302!IF "$(USE_IMP_SYS)" != "undef"
303BUILDOPT = $(BUILDOPT) -DPERL_IMPLICIT_SYS
304!ENDIF
305
306!IF "$(PROCESSOR_ARCHITECTURE)" == ""
307PROCESSOR_ARCHITECTURE = x86
308!ENDIF
309
c623ac67 310!IF "$(WIN64)" == ""
bf2a35e5 311# When we are running from a 32bit cmd.exe on AMD64 then
312# PROCESSOR_ARCHITECTURE is set to x86 and PROCESSOR_ARCHITEW6432
313# is set to AMD64
c623ac67 314!IF "$(PROCESSOR_ARCHITEW6432)" != ""
315PROCESSOR_ARCHITECTURE = $(PROCESSOR_ARCHITEW6432)
316WIN64 = define
317!ELSE
bf2a35e5 318!IF "$(PROCESSOR_ARCHITECTURE)" == "AMD64" || "$(PROCESSOR_ARCHITECTURE)" == "IA64"
c623ac67 319WIN64 = define
320!ELSE
321WIN64 = undef
322!ENDIF
323!ENDIF
324!ENDIF
325
bf2a35e5 326ARCHITECTURE = $(PROCESSOR_ARCHITECTURE)
327!IF "$(ARCHITECTURE)" == "AMD64"
328ARCHITECTURE = x64
9453ddcd 329!ENDIF
bf2a35e5 330!IF "$(ARCHITECTURE)" == "IA64"
331ARCHITECTURE = ia64
9453ddcd 332!ENDIF
333
9e42cd94 334!IF "$(USE_MULTI)" == "define"
bf2a35e5 335ARCHNAME = MSWin32-$(ARCHITECTURE)-multi
9e42cd94 336!ELSE
337!IF "$(USE_PERLIO)" == "define"
bf2a35e5 338ARCHNAME = MSWin32-$(ARCHITECTURE)-perlio
9e42cd94 339!ELSE
bf2a35e5 340ARCHNAME = MSWin32-$(ARCHITECTURE)
9e42cd94 341!ENDIF
342!ENDIF
9e42cd94 343
344!IF "$(USE_PERLIO)" == "define"
345BUILDOPT = $(BUILDOPT) -DUSE_PERLIO
346!ENDIF
347
348!IF "$(USE_ITHREADS)" == "define"
349ARCHNAME = $(ARCHNAME)-thread
350!ENDIF
351
1c847d4b 352# Visual C++ 98, .NET 2003 and 2005 specific.
353# VC++ 6.x, 7.x and 8.x can load DLL's on demand. Makes the test suite run in
354# about 10% less time. (The free version of 7.x can't do this, but the free
355# version of 8.x can.)
356!IF "$(CCTYPE)" == "MSVC60" || "$(CCTYPE)" == "MSVC70" || \
357 "$(CCTYPE)" == "MSVC80" || "$(CCTYPE)" == "MSVC80FREE"
036c1c1e 358DELAYLOAD = -DELAYLOAD:ws2_32.dll -DELAYLOAD:shell32.dll delayimp.lib
9e42cd94 359!ENDIF
360
c8e599d3 361# Visual C++ 2005 (VC++ 8.x) creates manifest files for EXEs and DLLs. These
362# either need copying everywhere with the binaries, or else need embedding in
363# them otherwise MSVCR80.dll won't be found. Embed them for simplicity, and
364# delete them afterwards so that they don't get installed too.
365!IF "$(CCTYPE)" == "MSVC80" || "$(CCTYPE)" == "MSVC80FREE"
366EMBED_EXE_MANI = mt -nologo -manifest $@.manifest -outputresource:$@;1 && \
367 del $@.manifest
368EMBED_DLL_MANI = mt -nologo -manifest $@.manifest -outputresource:$@;2 && \
369 del $@.manifest
370!ENDIF
371
9e42cd94 372ARCHDIR = ..\lib\$(ARCHNAME)
373COREDIR = ..\lib\CORE
374AUTODIR = ..\lib\auto
375LIBDIR = ..\lib
376EXTDIR = ..\ext
377PODDIR = ..\pod
378EXTUTILSDIR = $(LIBDIR)\ExtUtils
b4a41557 379HTMLDIR = .\html
9e42cd94 380
381#
382INST_SCRIPT = $(INST_TOP)$(INST_VER)\bin
383INST_BIN = $(INST_SCRIPT)$(INST_ARCH)
384INST_LIB = $(INST_TOP)$(INST_VER)\lib
385INST_ARCHLIB = $(INST_LIB)$(INST_ARCH)
386INST_COREDIR = $(INST_ARCHLIB)\CORE
9e42cd94 387INST_HTML = $(INST_TOP)$(INST_VER)\html
388
389#
390# Programs to compile, build .lib files and link
391#
392
393CC = cl
394LINK32 = link
395LIB32 = $(LINK32) -lib
396RSC = rc
397
398#
399# Options
400#
401
402INCLUDES = -I$(COREDIR) -I.\include -I. -I..
403#PCHFLAGS = -Fpc:\temp\vcmoduls.pch -YX
404DEFINES = -DWIN32 -D_CONSOLE -DNO_STRICT $(CRYPT_FLAG)
405LOCDEFS = -DPERLDLL -DPERL_CORE
406SUBSYS = console
407CXX_FLAG = -TP -GX
408
409!IF "$(USE_PERLCRT)" != "define"
410LIBC = msvcrt.lib
411!ELSE
412LIBC = PerlCRT.lib
413!ENDIF
414
9e42cd94 415!IF "$(CFG)" == "Debug"
416! IF "$(CCTYPE)" == "MSVC20"
417OPTIMIZE = -Od -MD -Z7 -DDEBUGGING
418! ELSE
419OPTIMIZE = -Od -MD -Zi -DDEBUGGING
420! ENDIF
c623ac67 421LINK_DBG = -debug
9e42cd94 422!ELSE
ec25c072 423OPTIMIZE = -MD -Zi -DNDEBUG
424# we enable debug symbols in release builds also
425LINK_DBG = -debug -opt:ref,icf
426# you may want to enable this if you want COFF symbols in the executables
427# in addition to the PDB symbols. The default Dr. Watson that ships with
428# Windows can use the the former but not latter. The free WinDbg can be
429# installed to get better stack traces from just the PDB symbols, so we
430# avoid the bloat of COFF symbols by default.
431#LINK_DBG = $(LINK_DBG) -debugtype:both
d921a5fb 432! IF "$(WIN64)" == "define"
433# enable Whole Program Optimizations (WPO) and Link Time Code Generation (LTCG)
434OPTIMIZE = $(OPTIMIZE) -Ox -GL
435LINK_DBG = $(LINK_DBG) -ltcg
436! ELSE
437# -O1 yields smaller code, which turns out to be faster than -O2 on x86
438OPTIMIZE = $(OPTIMIZE) -O1
439#OPTIMIZE = $(OPTIMIZE) -O2
440! ENDIF
9e42cd94 441!ENDIF
442
c623ac67 443!IF "$(WIN64)" == "define"
444DEFINES = $(DEFINES) -DWIN64 -DCONSERVATIVE
9453ddcd 445OPTIMIZE = $(OPTIMIZE) -Wp64 -fp:precise
da2c7419 446!ENDIF
447
46e77f11 448# Use the MSVCRT read() fix if the PerlCRT was not chosen, but only when using
449# VC++ 6.x or earlier. Later versions use MSVCR70.dll, MSVCR71.dll, etc, which
450# do not require the fix.
451!IF "$(CCTYPE)" == "MSVC20" || "$(CCTYPE)" == "MSVC" || "$(CCTYPE)" == "MSVC60"
452! IF "$(USE_PERLCRT)" != "define"
9e42cd94 453BUILDOPT = $(BUILDOPT) -DPERL_MSVCRT_READFIX
46e77f11 454! ENDIF
9e42cd94 455!ENDIF
456
457LIBBASEFILES = $(CRYPT_LIB) \
458 oldnames.lib kernel32.lib user32.lib gdi32.lib winspool.lib \
459 comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib \
036c1c1e 460 netapi32.lib uuid.lib ws2_32.lib mpr.lib winmm.lib \
9453ddcd 461 version.lib odbc32.lib odbccp32.lib
c623ac67 462
9453ddcd 463# The 64 bit Platform SDK compilers contain a runtime library that doesn't
464# include the buffer overrun verification code used by the /GS switch.
465# Since the code links against libraries that are compiled with /GS, this
466# "security cookie verification" must be included via bufferoverlow.lib.
467!IF "$(WIN64)" == "define"
468LIBBASEFILES = $(LIBBASEFILES) bufferoverflowU.lib
c623ac67 469!ENDIF
9e42cd94 470
471# we add LIBC here, since we may be using PerlCRT.dll
472LIBFILES = $(LIBBASEFILES) $(LIBC)
473
a5ca303d 474#EXTRACFLAGS = -nologo -GF -W4 -wd4127 -wd4706
9453ddcd 475EXTRACFLAGS = -nologo -GF -W3
bb275e72 476CFLAGS = $(EXTRACFLAGS) $(INCLUDES) $(DEFINES) $(LOCDEFS) \
9e42cd94 477 $(PCHFLAGS) $(OPTIMIZE)
478LINK_FLAGS = -nologo -nodefaultlib $(LINK_DBG) \
479 -libpath:"$(INST_COREDIR)" \
480 -machine:$(PROCESSOR_ARCHITECTURE)
481OBJOUT_FLAG = -Fo
482EXEOUT_FLAG = -Fe
483
484CFLAGS_O = $(CFLAGS) $(BUILDOPT)
485
486#################### do not edit below this line #######################
487############# NO USER-SERVICEABLE PARTS BEYOND THIS POINT ##############
488
489o = .obj
490
491#
492# Rules
493#
494
495.SUFFIXES : .c $(o) .dll .lib .exe .rc .res
496
497.c$(o):
498 $(CC) -c -I$(<D) $(CFLAGS_O) $(OBJOUT_FLAG)$@ $<
499
500.y.c:
501 $(NOOP)
502
503$(o).dll:
504 $(LINK32) -dll -subsystem:windows -implib:$(*B).lib -def:$(*B).def \
505 -out:$@ $(LINK_FLAGS) $(LIBFILES) $< $(LIBPERL)
c8e599d3 506 $(EMBED_DLL_MANI)
9e42cd94 507
508.rc.res:
509 $(RSC) -i.. $<
510
5d458dd8 511
9e42cd94 512#
513# various targets
514
515# makedef.pl must be updated if this changes, and this should normally
516# only change when there is an incompatible revision of the public API.
78a7c709 517PERLIMPLIB = ..\perl59.lib
518PERLDLL = ..\perl59.dll
9e42cd94 519
520MINIPERL = ..\miniperl.exe
521MINIDIR = .\mini
522PERLEXE = ..\perl.exe
523WPERLEXE = ..\wperl.exe
524GLOBEXE = ..\perlglob.exe
04bae4fb 525CONFIGPM = ..\lib\Config.pm ..\lib\Config_heavy.pl
9e42cd94 526MINIMOD = ..\lib\ExtUtils\Miniperl.pm
527X2P = ..\x2p\a2p.exe
73c9ebc7 528
ca12659b 529# Unicode data files generated by mktables
6ae7e459 530FIRSTUNIFILE = ..\lib\unicore\Canonical.pl
ca12659b 531UNIDATAFILES = ..\lib\unicore\Canonical.pl ..\lib\unicore\Exact.pl \
532 ..\lib\unicore\Properties ..\lib\unicore\Decomposition.pl \
7ebf06b3 533 ..\lib\unicore\CombiningClass.pl ..\lib\unicore\Name.pl \
534 ..\lib\unicore\PVA.pl
ca12659b 535
536# Directories of Unicode data files generated by mktables
27a8011f 537UNIDATADIR1 = ..\lib\unicore\To
538UNIDATADIR2 = ..\lib\unicore\lib
ca12659b 539
3890b58f 540PERLEXE_ICO = .\perlexe.ico
541PERLEXE_RES = .\perlexe.res
542PERLDLL_RES =
543
9e42cd94 544# Nominate a target which causes extensions to be re-built
545# This used to be $(PERLEXE), but at worst it is the .dll that they depend
546# on and really only the interface - i.e. the .def file used to export symbols
547# from the .dll
548PERLDEP = perldll.def
549
550PL2BAT = bin\pl2bat.pl
551GLOBBAT = bin\perlglob.bat
552
553UTILS = \
554 ..\utils\h2ph \
555 ..\utils\splain \
556 ..\utils\dprofpp \
557 ..\utils\perlbug \
558 ..\utils\pl2pm \
559 ..\utils\c2ph \
827a599d 560 ..\utils\pstruct \
9e42cd94 561 ..\utils\h2xs \
562 ..\utils\perldoc \
9e42cd94 563 ..\utils\perlivp \
564 ..\utils\libnetcfg \
827a599d 565 ..\utils\enc2xs \
566 ..\utils\piconv \
bb4e9162 567 ..\utils\config_data \
18a1cebe 568 ..\utils\corelist \
83cd6e83 569 ..\utils\cpan \
ea0e987d 570 ..\utils\xsubpp \
4b618757 571 ..\utils\prove \
291d3373 572 ..\utils\ptar \
b8669316 573 ..\utils\ptardiff \
3ddf9550 574 ..\utils\shasum \
ea0e987d 575 ..\utils\instmodsh \
9e42cd94 576 ..\pod\checkpods \
577 ..\pod\pod2html \
578 ..\pod\pod2latex \
579 ..\pod\pod2man \
580 ..\pod\pod2text \
581 ..\pod\pod2usage \
582 ..\pod\podchecker \
583 ..\pod\podselect \
584 ..\x2p\find2perl \
827a599d 585 ..\x2p\psed \
9e42cd94 586 ..\x2p\s2p \
9e42cd94 587 bin\exetype.pl \
588 bin\runperl.pl \
589 bin\pl2bat.pl \
590 bin\perlglob.pl \
591 bin\search.pl
592
593MAKE = nmake -nologo
594MAKE_BARE = nmake
595
c623ac67 596!IF "$(WIN64)" == "define"
597CFGSH_TMPL = config.vc64
598CFGH_TMPL = config_H.vc64
599!ELSE
9e42cd94 600CFGSH_TMPL = config.vc
601CFGH_TMPL = config_H.vc
c623ac67 602!ENDIF
9e42cd94 603
b6ed7314 604XCOPY = xcopy /f /r /i /d /y
605RCOPY = xcopy /f /r /i /e /d /y
65980d94 606NOOP = @rem
9e42cd94 607NULL =
608
609DEL = del
610
611#
612# filenames given to xsubpp must have forward slashes (since it puts
613# full pathnames in #line strings)
614XSUBPP = ..\$(MINIPERL) -I..\..\lib ..\$(EXTUTILSDIR)\xsubpp \
615 -C++ -prototypes
616
617MICROCORE_SRC = \
618 ..\av.c \
619 ..\deb.c \
620 ..\doio.c \
621 ..\doop.c \
622 ..\dump.c \
623 ..\globals.c \
624 ..\gv.c \
625 ..\hv.c \
626 ..\locale.c \
a0d89a74 627 ..\mathoms.c \
9e42cd94 628 ..\mg.c \
629 ..\numeric.c \
630 ..\op.c \
295f0f84 631 ..\pad.c \
9e42cd94 632 ..\perl.c \
633 ..\perlapi.c \
634 ..\perly.c \
635 ..\pp.c \
636 ..\pp_ctl.c \
637 ..\pp_hot.c \
638 ..\pp_pack.c \
639 ..\pp_sort.c \
640 ..\pp_sys.c \
10bc17b6 641 ..\reentr.c \
9e42cd94 642 ..\regcomp.c \
643 ..\regexec.c \
644 ..\run.c \
645 ..\scope.c \
646 ..\sv.c \
647 ..\taint.c \
648 ..\toke.c \
649 ..\universal.c \
650 ..\utf8.c \
651 ..\util.c \
652 ..\xsutils.c
653
654EXTRACORE_SRC = $(EXTRACORE_SRC) perllib.c
655
656!IF "$(PERL_MALLOC)" == "define"
657EXTRACORE_SRC = $(EXTRACORE_SRC) ..\malloc.c
658!ENDIF
659
660EXTRACORE_SRC = $(EXTRACORE_SRC) ..\perlio.c
661
662WIN32_SRC = \
663 .\win32.c \
664 .\win32sck.c \
665 .\win32thread.c
666
f7d585d3 667# We need this for miniperl build unless we override canned
668# config.h #define building mini\*
669#!IF "$(USE_PERLIO)" == "define"
9e42cd94 670WIN32_SRC = $(WIN32_SRC) .\win32io.c
f7d585d3 671#!ENDIF
9e42cd94 672
673!IF "$(CRYPT_SRC)" != ""
674WIN32_SRC = $(WIN32_SRC) .\$(CRYPT_SRC)
675!ENDIF
676
677DLL_SRC = $(DYNALOADER).c
678
679X2P_SRC = \
680 ..\x2p\a2p.c \
681 ..\x2p\hash.c \
682 ..\x2p\str.c \
683 ..\x2p\util.c \
684 ..\x2p\walk.c
685
686CORE_NOCFG_H = \
687 ..\av.h \
688 ..\cop.h \
689 ..\cv.h \
690 ..\dosish.h \
691 ..\embed.h \
692 ..\form.h \
693 ..\gv.h \
694 ..\handy.h \
695 ..\hv.h \
696 ..\iperlsys.h \
697 ..\mg.h \
698 ..\nostdio.h \
699 ..\op.h \
700 ..\opcode.h \
701 ..\perl.h \
702 ..\perlapi.h \
703 ..\perlsdio.h \
704 ..\perlsfio.h \
705 ..\perly.h \
706 ..\pp.h \
707 ..\proto.h \
cdb0f547 708 ..\regcomp.h \
9e42cd94 709 ..\regexp.h \
710 ..\scope.h \
711 ..\sv.h \
712 ..\thread.h \
713 ..\unixish.h \
714 ..\utf8.h \
715 ..\util.h \
716 ..\warnings.h \
717 ..\XSUB.h \
718 ..\EXTERN.h \
719 ..\perlvars.h \
720 ..\intrpvar.h \
721 ..\thrdvar.h \
722 .\include\dirent.h \
723 .\include\netdb.h \
724 .\include\sys\socket.h \
725 .\win32.h
726
727CORE_H = $(CORE_NOCFG_H) .\config.h
728
729MICROCORE_OBJ = $(MICROCORE_SRC:.c=.obj)
730CORE_OBJ = $(MICROCORE_OBJ) $(EXTRACORE_SRC:.c=.obj)
731WIN32_OBJ = $(WIN32_SRC:.c=.obj)
732MINICORE_OBJ = $(MICROCORE_OBJ:..\=.\mini\) \
733 $(MINIDIR)\miniperlmain$(o) \
734 $(MINIDIR)\perlio$(o)
735MINIWIN32_OBJ = $(WIN32_OBJ:.\=.\mini\)
736MINI_OBJ = $(MINICORE_OBJ) $(MINIWIN32_OBJ)
737DLL_OBJ = $(DLL_SRC:.c=.obj)
738X2P_OBJ = $(X2P_SRC:.c=.obj)
739
740PERLDLL_OBJ = $(CORE_OBJ)
741PERLEXE_OBJ = perlmain$(o)
742
743PERLDLL_OBJ = $(PERLDLL_OBJ) $(WIN32_OBJ) $(DLL_OBJ)
744#PERLEXE_OBJ = $(PERLEXE_OBJ) $(WIN32_OBJ) $(DLL_OBJ)
745
746!IF "$(USE_SETARGV)" != ""
747SETARGV_OBJ = setargv$(o)
748!ENDIF
749
595589fa 750# specify static extensions here
9e7cf449 751#STATIC_EXT = Cwd Compress/Zlib
752STATIC_EXT =
595589fa 753
9e42cd94 754DYNALOADER = $(EXTDIR)\DynaLoader\DynaLoader
755SOCKET = $(EXTDIR)\Socket\Socket
756FCNTL = $(EXTDIR)\Fcntl\Fcntl
757OPCODE = $(EXTDIR)\Opcode\Opcode
758SDBM_FILE = $(EXTDIR)\SDBM_File\SDBM_File
759IO = $(EXTDIR)\IO\IO
760POSIX = $(EXTDIR)\POSIX\POSIX
761ATTRS = $(EXTDIR)\attrs\attrs
762THREAD = $(EXTDIR)\Thread\Thread
763B = $(EXTDIR)\B\B
764RE = $(EXTDIR)\re\re
765DUMPER = $(EXTDIR)\Data\Dumper\Dumper
766ERRNO = $(EXTDIR)\Errno\Errno
767PEEK = $(EXTDIR)\Devel\Peek\Peek
768BYTELOADER = $(EXTDIR)\ByteLoader\ByteLoader
769DPROF = $(EXTDIR)\Devel\DProf\DProf
770GLOB = $(EXTDIR)\File\Glob\Glob
771HOSTNAME = $(EXTDIR)\Sys\Hostname\Hostname
772STORABLE = $(EXTDIR)\Storable\Storable
773FILTER = $(EXTDIR)\Filter\Util\Call\Call
774ENCODE = $(EXTDIR)\Encode\Encode
775MD5 = $(EXTDIR)\Digest\MD5\MD5
59717686 776SHA = $(EXTDIR)\Digest\SHA\SHA
e934609f 777PERLIOSCALAR = $(EXTDIR)\PerlIO\scalar\scalar
9e42cd94 778MIMEBASE64 = $(EXTDIR)\MIME\Base64\Base64
779TIMEHIRES = $(EXTDIR)\Time\HiRes\HiRes
780CWD = $(EXTDIR)\Cwd\Cwd
781LISTUTIL = $(EXTDIR)\List\Util\Util
96c33d98 782HASHUTIL = $(EXTDIR)\Hash\Util\Util
e934609f 783PERLIOVIA = $(EXTDIR)\PerlIO\via\via
83e2e978 784XSAPITEST = $(EXTDIR)\XS\APItest\APItest
9e42cd94 785XSTYPEMAP = $(EXTDIR)\XS\Typemap\Typemap
786UNICODENORMALIZE = $(EXTDIR)\Unicode\Normalize\Normalize
4e74047c 787MATHBIGINTFASTCALC = $(EXTDIR)\Math\BigInt\FastCalc\FastCalc
059b2413 788COMPRESSZLIB = $(EXTDIR)\Compress\Zlib\Zlib
b4ad57f4 789WIN32_DIR = ext\Win32
00701878 790WIN32APIFILE = ext\Win32API\File\File
9e42cd94 791
792SOCKET_DLL = $(AUTODIR)\Socket\Socket.dll
793FCNTL_DLL = $(AUTODIR)\Fcntl\Fcntl.dll
794OPCODE_DLL = $(AUTODIR)\Opcode\Opcode.dll
795SDBM_FILE_DLL = $(AUTODIR)\SDBM_File\SDBM_File.dll
796IO_DLL = $(AUTODIR)\IO\IO.dll
797POSIX_DLL = $(AUTODIR)\POSIX\POSIX.dll
798ATTRS_DLL = $(AUTODIR)\attrs\attrs.dll
799THREAD_DLL = $(AUTODIR)\Thread\Thread.dll
800B_DLL = $(AUTODIR)\B\B.dll
801DUMPER_DLL = $(AUTODIR)\Data\Dumper\Dumper.dll
802PEEK_DLL = $(AUTODIR)\Devel\Peek\Peek.dll
803RE_DLL = $(AUTODIR)\re\re.dll
804BYTELOADER_DLL = $(AUTODIR)\ByteLoader\ByteLoader.dll
805DPROF_DLL = $(AUTODIR)\Devel\DProf\DProf.dll
806GLOB_DLL = $(AUTODIR)\File\Glob\Glob.dll
807HOSTNAME_DLL = $(AUTODIR)\Sys\Hostname\Hostname.dll
808STORABLE_DLL = $(AUTODIR)\Storable\Storable.dll
809FILTER_DLL = $(AUTODIR)\Filter\Util\Call\Call.dll
810ENCODE_DLL = $(AUTODIR)\Encode\Encode.dll
811MD5_DLL = $(AUTODIR)\Digest\MD5\MD5.dll
59717686 812SHA_DLL = $(AUTODIR)\Digest\SHA\SHA.dll
e934609f 813PERLIOSCALAR_DLL = $(AUTODIR)\PerlIO\scalar\scalar.dll
9e42cd94 814MIMEBASE64_DLL = $(AUTODIR)\MIME\Base64\Base64.dll
815TIMEHIRES_DLL = $(AUTODIR)\Time\HiRes\HiRes.dll
816CWD_DLL = $(AUTODIR)\Cwd\Cwd.dll
817LISTUTIL_DLL = $(AUTODIR)\List\Util\Util.dll
96c33d98 818HASHUTIL_DLL = $(AUTODIR)\HASH\Util\Util.dll
e934609f 819PERLIOVIA_DLL = $(AUTODIR)\PerlIO\via\via.dll
83e2e978 820XSAPITEST_DLL = $(AUTODIR)\XS\APItest\APItest.dll
9e42cd94 821XSTYPEMAP_DLL = $(AUTODIR)\XS\Typemap\Typemap.dll
822UNICODENORMALIZE_DLL = $(AUTODIR)\Unicode\Normalize\Normalize.dll
4e74047c 823MATHBIGINTFASTCALC_DLL = $(AUTODIR)\Math\BigInt\FastCalc\FastCalc.dll
059b2413 824COMPRESSZLIB_DLL = $(AUTODIR)\Compress\Zlib\Zlib.dll
b4ad57f4 825WIN32_DLL = $(AUTODIR)\Win32\Win32.dll
00701878 826WIN32APIFILE_DLL = $(AUTODIR)\Win32API\File\File.dll
9e42cd94 827
828EXTENSION_C = \
829 $(SOCKET).c \
830 $(FCNTL).c \
831 $(OPCODE).c \
832 $(SDBM_FILE).c \
833 $(IO).c \
834 $(POSIX).c \
835 $(ATTRS).c \
836 $(THREAD).c \
837 $(RE).c \
838 $(DUMPER).c \
839 $(PEEK).c \
840 $(B).c \
841 $(BYTELOADER).c \
842 $(DPROF).c \
843 $(GLOB).c \
844 $(HOSTNAME).c \
845 $(STORABLE).c \
846 $(FILTER).c \
847 $(ENCODE).c \
848 $(MD5).c \
59717686 849 $(SHA).c \
9e42cd94 850 $(PERLIOSCALAR).c \
851 $(MIMEBASE64).c \
852 $(TIMEHIRES).c \
853 $(CWD).c \
854 $(LISTUTIL).c \
96c33d98 855 $(HASHUTIL).c \
9e42cd94 856 $(PERLIOVIA).c \
83e2e978 857 $(XSAPITEST).c \
9e42cd94 858 $(XSTYPEMAP).c \
b4ad57f4 859 $(UNICODENORMALIZE).c \
4e74047c 860 $(MATHBIGINTFASTCALC).c \
059b2413 861 $(COMPRESSZLIB).c \
00701878 862 $(WIN32_DIR).c \
863 $(WIN32APIFILE).c
9e42cd94 864
865EXTENSION_DLL = \
866 $(SOCKET_DLL) \
867 $(FCNTL_DLL) \
868 $(OPCODE_DLL) \
869 $(SDBM_FILE_DLL)\
870 $(IO_DLL) \
871 $(POSIX_DLL) \
872 $(ATTRS_DLL) \
873 $(DUMPER_DLL) \
874 $(PEEK_DLL) \
875 $(B_DLL) \
876 $(RE_DLL) \
877 $(THREAD_DLL) \
878 $(BYTELOADER_DLL) \
879 $(DPROF_DLL) \
880 $(GLOB_DLL) \
881 $(HOSTNAME_DLL) \
882 $(STORABLE_DLL) \
883 $(FILTER_DLL) \
884 $(ENCODE_DLL) \
885 $(MD5_DLL) \
59717686 886 $(SHA_DLL) \
9e42cd94 887 $(PERLIOSCALAR_DLL) \
888 $(MIMEBASE64_DLL) \
889 $(TIMEHIRES_DLL) \
890 $(CWD_DLL) \
891 $(LISTUTIL_DLL) \
96c33d98 892 $(HASHUTIL_DLL) \
9e42cd94 893 $(PERLIOVIA_DLL) \
83e2e978 894 $(XSAPITEST_DLL) \
9e42cd94 895 $(XSTYPEMAP_DLL) \
b4ad57f4 896 $(UNICODENORMALIZE_DLL) \
4e74047c 897 $(MATHBIGINTFASTCALC_DLL) \
059b2413 898 $(COMPRESSZLIB_DLL) \
00701878 899 $(WIN32_DLL) \
900 $(WIN32APIFILE_DLL)
9e42cd94 901
9e42cd94 902CFG_VARS = \
903 "INST_DRV=$(INST_DRV)" \
904 "INST_TOP=$(INST_TOP)" \
905 "INST_VER=$(INST_VER)" \
906 "INST_ARCH=$(INST_ARCH)" \
907 "archname=$(ARCHNAME)" \
908 "cc=$(CC)" \
909 "ld=$(LINK32)" \
bb275e72 910 "ccflags=$(EXTRACFLAGS) $(OPTIMIZE:"=\") $(DEFINES) $(BUILDOPT)" \
9e42cd94 911 "cf_email=$(EMAIL)" \
912 "d_crypt=$(D_CRYPT)" \
913 "d_mymalloc=$(PERL_MALLOC)" \
914 "libs=$(LIBFILES)" \
915 "incpath=$(CCINCDIR:"=\")" \
916 "libperl=$(PERLIMPLIB:..\=)" \
917 "libpth=$(CCLIBDIR:"=\");$(EXTRALIBDIRS:"=\")" \
918 "libc=$(LIBC)" \
919 "make=$(MAKE_BARE)" \
d2b25974 920 "static_ext=$(STATIC_EXT)" \
7e0017d3 921 "usethreads=$(USE_ITHREADS)" \
9e42cd94 922 "useithreads=$(USE_ITHREADS)" \
9e42cd94 923 "usemultiplicity=$(USE_MULTI)" \
924 "useperlio=$(USE_PERLIO)" \
4a9d6100 925 "uselargefiles=$(USE_LARGE_FILES)" \
7ada00a0 926 "usesitecustomize=$(USE_SITECUST)" \
9e42cd94 927 "LINK_FLAGS=$(LINK_FLAGS:"=\")" \
928 "optimize=$(OPTIMIZE:"=\")"
929
930#
931# Top targets
932#
933
ca12659b 934all : .\config.h $(GLOBEXE) $(MINIMOD) $(CONFIGPM) $(UNIDATAFILES) $(PERLEXE) \
42e07562 935 $(X2P) MakePPPort Extensions
9e42cd94 936 @echo Everything is up to date. '$(MAKE_BARE) test' to run test suite.
937
5d458dd8 938..\regnodes.h : ..\regcomp.sym
939 cd ..
940 regcomp.pl
941 cd win32
942
943regnodes : ..\regnodes.h
944
945reonly : regnodes .\config.h $(GLOBEXE) $(MINIMOD) $(CONFIGPM) $(UNIDATAFILES) $(PERLEXE) \
a24cc0c0 946 $(X2P) Extensions_reonly
947 @echo Perl and 're' are up to date.
948
9e42cd94 949$(DYNALOADER)$(o) : $(DYNALOADER).c $(CORE_H) $(EXTDIR)\DynaLoader\dlutils.c
950
951#------------------------------------------------------------
952
953$(GLOBEXE) : perlglob$(o)
954 $(LINK32) $(LINK_FLAGS) $(LIBFILES) -out:$@ -subsystem:$(SUBSYS) \
955 perlglob$(o) setargv$(o)
c8e599d3 956 $(EMBED_EXE_MANI)
9e42cd94 957
958perlglob$(o) : perlglob.c
959
960config.w32 : $(CFGSH_TMPL)
961 copy $(CFGSH_TMPL) config.w32
962
963.\config.h : $(CFGH_TMPL)
964 -del /f config.h
965 copy $(CFGH_TMPL) config.h
966
967..\config.sh : config.w32 $(MINIPERL) config_sh.PL
968 $(MINIPERL) -I..\lib config_sh.PL $(CFG_VARS) config.w32 > ..\config.sh
969
970# this target is for when changes to the main config.sh happen
971# edit config.{b,v,g}c and make this target once for each supported
972# compiler (e.g. `nmake CCTYPE=BORLAND regen_config_h`)
973regen_config_h:
974 perl config_sh.PL $(CFG_VARS) $(CFGSH_TMPL) > ..\config.sh
975 cd ..
8839b9e4 976 -del /f perl.exe perl*.dll
9e42cd94 977 perl configpm
978 cd win32
979 -del /f $(CFGH_TMPL)
980 -mkdir $(COREDIR)
8839b9e4 981 -perl config_h.PL "INST_VER=$(INST_VER)"
9e42cd94 982 rename config.h $(CFGH_TMPL)
983
984$(CONFIGPM) : $(MINIPERL) ..\config.sh config_h.PL ..\minimod.pl
985 cd ..
986 miniperl configpm
987 cd win32
988 if exist lib\* $(RCOPY) lib\*.* ..\lib\$(NULL)
989 $(XCOPY) ..\*.h $(COREDIR)\*.*
990 $(XCOPY) *.h $(COREDIR)\*.*
991 $(XCOPY) ..\ext\re\re.pm $(LIBDIR)\*.*
992 $(RCOPY) include $(COREDIR)\*.*
993 -$(MINIPERL) -I..\lib config_h.PL "INST_VER=$(INST_VER)"
994 if errorlevel 1 $(MAKE) /$(MAKEFLAGS) $(CONFIGPM)
995
996$(MINIPERL) : $(MINIDIR) $(MINI_OBJ)
997 $(LINK32) -subsystem:console -out:$@ @<<
998 $(LINK_FLAGS) $(LIBFILES) $(MINI_OBJ)
999<<
c8e599d3 1000 $(EMBED_EXE_MANI)
9e42cd94 1001
1002$(MINIDIR) :
1003 if not exist "$(MINIDIR)" mkdir "$(MINIDIR)"
1004
1005$(MINICORE_OBJ) : $(CORE_NOCFG_H)
1006 $(CC) -c $(CFLAGS) -DPERL_EXTERNAL_GLOB $(OBJOUT_FLAG)$@ ..\$(*F).c
1007
1008$(MINIWIN32_OBJ) : $(CORE_NOCFG_H)
1009 $(CC) -c $(CFLAGS) $(OBJOUT_FLAG)$@ $(*F).c
1010
1011# -DPERL_IMPLICIT_SYS needs C++ for perllib.c
1012# This is the only file that depends on perlhost.h, vmem.h, and vdir.h
1013!IF "$(USE_IMP_SYS)" == "define"
1014perllib$(o) : perllib.c .\perlhost.h .\vdir.h .\vmem.h
1015 $(CC) -c -I. $(CFLAGS_O) $(CXX_FLAG) $(OBJOUT_FLAG)$@ perllib.c
1016!ENDIF
1017
1018# 1. we don't want to rebuild miniperl.exe when config.h changes
1019# 2. we don't want to rebuild miniperl.exe with non-default config.h
1020$(MINI_OBJ) : $(CORE_NOCFG_H)
1021
1022$(WIN32_OBJ) : $(CORE_H)
1023$(CORE_OBJ) : $(CORE_H)
1024$(DLL_OBJ) : $(CORE_H)
1025$(X2P_OBJ) : $(CORE_H)
1026
1027perldll.def : $(MINIPERL) $(CONFIGPM) ..\global.sym ..\pp.sym ..\makedef.pl
595589fa 1028 $(MINIPERL) -I..\lib buildext.pl --create-perllibst-h
9e42cd94 1029 $(MINIPERL) -w ..\makedef.pl PLATFORM=win32 $(OPTIMIZE) $(DEFINES) $(BUILDOPT) \
1030 CCTYPE=$(CCTYPE) > perldll.def
1031
595589fa 1032$(PERLDLL): perldll.def $(PERLDLL_OBJ) $(PERLDLL_RES) Extensions_static
9e7cf449 1033 $(LINK32) -dll -def:perldll.def -base:0x28000000 -out:$@ @Extensions_static @<<
9e42cd94 1034 $(LINK_FLAGS) $(DELAYLOAD) $(LIBFILES) $(PERLDLL_OBJ) $(PERLDLL_RES)
1035<<
c8e599d3 1036 $(EMBED_DLL_MANI)
9e42cd94 1037 $(XCOPY) $(PERLIMPLIB) $(COREDIR)
1038
e84ac4e2 1039$(PERLEXE_ICO): $(MINIPERL) makeico.pl
1040 $(MINIPERL) makeico.pl > $@
1041
1042$(PERLEXE_RES): perlexe.rc $(PERLEXE_ICO)
1043
9e42cd94 1044$(MINIMOD) : $(MINIPERL) ..\minimod.pl
1045 cd ..
1046 miniperl minimod.pl > lib\ExtUtils\Miniperl.pm
1047 cd win32
1048
1049..\x2p\a2p$(o) : ..\x2p\a2p.c
1050 $(CC) -I..\x2p $(CFLAGS) $(OBJOUT_FLAG)$@ -c ..\x2p\a2p.c
1051
1052..\x2p\hash$(o) : ..\x2p\hash.c
1053 $(CC) -I..\x2p $(CFLAGS) $(OBJOUT_FLAG)$@ -c ..\x2p\hash.c
1054
1055..\x2p\str$(o) : ..\x2p\str.c
1056 $(CC) -I..\x2p $(CFLAGS) $(OBJOUT_FLAG)$@ -c ..\x2p\str.c
1057
1058..\x2p\util$(o) : ..\x2p\util.c
1059 $(CC) -I..\x2p $(CFLAGS) $(OBJOUT_FLAG)$@ -c ..\x2p\util.c
1060
1061..\x2p\walk$(o) : ..\x2p\walk.c
1062 $(CC) -I..\x2p $(CFLAGS) $(OBJOUT_FLAG)$@ -c ..\x2p\walk.c
1063
1064$(X2P) : $(MINIPERL) $(X2P_OBJ)
1065 $(MINIPERL) ..\x2p\find2perl.PL
1066 $(MINIPERL) ..\x2p\s2p.PL
1067 $(LINK32) -subsystem:console -out:$@ @<<
1068 $(LINK_FLAGS) $(LIBFILES) $(X2P_OBJ)
1069<<
c8e599d3 1070 $(EMBED_EXE_MANI)
9e42cd94 1071
1072perlmain.c : runperl.c
1073 copy runperl.c perlmain.c
1074
1075perlmain$(o) : perlmain.c
1076 $(CC) $(CFLAGS_O) -UPERLDLL $(OBJOUT_FLAG)$@ -c perlmain.c
1077
1078$(PERLEXE): $(PERLDLL) $(CONFIGPM) $(PERLEXE_OBJ) $(PERLEXE_RES)
1079 $(LINK32) -subsystem:console -out:$@ -stack:0x1000000 $(LINK_FLAGS) \
1080 $(LIBFILES) $(PERLEXE_OBJ) $(SETARGV_OBJ) $(PERLIMPLIB) $(PERLEXE_RES)
c8e599d3 1081 $(EMBED_EXE_MANI)
9e42cd94 1082 copy $(PERLEXE) $(WPERLEXE)
1083 $(MINIPERL) -I..\lib bin\exetype.pl $(WPERLEXE) WINDOWS
1084 copy splittree.pl ..
1085 $(MINIPERL) -I..\lib ..\splittree.pl "../LIB" $(AUTODIR)
1086
1087$(DYNALOADER).c: $(MINIPERL) $(EXTDIR)\DynaLoader\dl_win32.xs $(CONFIGPM)
1088 if not exist $(AUTODIR) mkdir $(AUTODIR)
1089 cd $(EXTDIR)\$(*B)
1090 ..\$(MINIPERL) -I..\..\lib $(*B)_pm.PL
1091 ..\$(MINIPERL) -I..\..\lib XSLoader_pm.PL
1092 cd ..\..\win32
1093 $(XCOPY) $(EXTDIR)\$(*B)\$(*B).pm $(LIBDIR)\$(NULL)
1094 $(XCOPY) $(EXTDIR)\$(*B)\XSLoader.pm $(LIBDIR)\$(NULL)
1095 cd $(EXTDIR)\$(*B)
1096 $(XSUBPP) dl_win32.xs > $(*B).c
1097 cd ..\..\win32
1098
1099$(EXTDIR)\DynaLoader\dl_win32.xs: dl_win32.xs
1100 copy dl_win32.xs $(EXTDIR)\DynaLoader\dl_win32.xs
1101
42e07562 1102MakePPPort: $(MINIPERL) $(CONFIGPM)
1103 $(MINIPERL) -I..\lib ..\mkppport
1104
1105MakePPPort_clean:
1106 -if exist $(MINIPERL) $(MINIPERL) -I..\lib ..\mkppport --clean
1107
9dcb9602 1108#-------------------------------------------------------------------------------
9e42cd94 1109Extensions: buildext.pl $(PERLDEP) $(CONFIGPM)
a5ca303d 1110 $(XCOPY) ..\*.h $(COREDIR)\*.*
595589fa 1111 $(MINIPERL) -I..\lib buildext.pl $(MAKE) $(PERLDEP) $(EXTDIR) --dynamic
1112 $(MINIPERL) -I..\lib buildext.pl $(MAKE) $(PERLDEP) ext --dynamic
1113
a24cc0c0 1114Extensions_reonly: buildext.pl $(PERLDEP) $(CONFIGPM)
a5ca303d 1115 $(XCOPY) ..\*.h $(COREDIR)\*.*
a24cc0c0 1116 $(MINIPERL) -I..\lib buildext.pl $(MAKE) $(PERLDEP) $(EXTDIR) --dynamic +re
1117 $(MINIPERL) -I..\lib buildext.pl $(MAKE) $(PERLDEP) ext --dynamic +re
1118
595589fa 1119Extensions_static : buildext.pl
a5ca303d 1120 $(XCOPY) ..\*.h $(COREDIR)\*.*
595589fa 1121 $(MINIPERL) -I..\lib buildext.pl $(MAKE) $(PERLDEP) $(EXTDIR) --static
9e7cf449 1122 $(MINIPERL) -I..\lib buildext.pl $(MAKE) $(PERLDEP) ext --static
1123 $(MINIPERL) -I..\lib buildext.pl --list-static-libs > Extensions_static
9e42cd94 1124
1125Extensions_clean:
1126 -if exist $(MINIPERL) $(MINIPERL) -I..\lib buildext.pl $(MAKE) $(PERLDEP) $(EXTDIR) clean
b4ad57f4 1127 -if exist $(MINIPERL) $(MINIPERL) -I..\lib buildext.pl $(MAKE) $(PERLDEP) ext clean
9e42cd94 1128
b4dc1df6 1129Extensions_realclean:
1130 -if exist $(MINIPERL) $(MINIPERL) -I..\lib buildext.pl $(MAKE) $(PERLDEP) $(EXTDIR) realclean
b4ad57f4 1131 -if exist $(MINIPERL) $(MINIPERL) -I..\lib buildext.pl $(MAKE) $(PERLDEP) ext realclean
b4dc1df6 1132
9dcb9602 1133#-------------------------------------------------------------------------------
9e42cd94 1134
1135doc: $(PERLEXE)
b4a41557 1136 $(PERLEXE) -I..\lib ..\installhtml --podroot=.. --htmldir=$(HTMLDIR) \
9e42cd94 1137 --podpath=pod:lib:ext:utils --htmlroot="file://$(INST_HTML::=|)" \
1138 --libpod=perlfunc:perlguts:perlvar:perlrun:perlop --recurse
1139
b0b6bf2b 1140# Note that this next section is parsed (and regenerated) by pod/buildtoc
1141# so please check that script before making structural changes here
1142
9e42cd94 1143utils: $(PERLEXE) $(X2P)
1144 cd ..\utils
1145 $(MAKE) PERL=$(MINIPERL)
1146 cd ..\pod
4cb44f92 1147 copy ..\vms\perlvms.pod .\perlvms.pod
b0b6bf2b 1148 copy ..\README.aix ..\pod\perlaix.pod
1149 copy ..\README.amiga ..\pod\perlamiga.pod
1150 copy ..\README.apollo ..\pod\perlapollo.pod
1151 copy ..\README.beos ..\pod\perlbeos.pod
1152 copy ..\README.bs2000 ..\pod\perlbs2000.pod
1153 copy ..\README.ce ..\pod\perlce.pod
1154 copy ..\README.cn ..\pod\perlcn.pod
1155 copy ..\README.cygwin ..\pod\perlcygwin.pod
1156 copy ..\README.dgux ..\pod\perldgux.pod
1157 copy ..\README.dos ..\pod\perldos.pod
1158 copy ..\README.epoc ..\pod\perlepoc.pod
1159 copy ..\README.freebsd ..\pod\perlfreebsd.pod
1160 copy ..\README.hpux ..\pod\perlhpux.pod
1161 copy ..\README.hurd ..\pod\perlhurd.pod
1162 copy ..\README.irix ..\pod\perlirix.pod
1163 copy ..\README.jp ..\pod\perljp.pod
1164 copy ..\README.ko ..\pod\perlko.pod
6477b319 1165 copy ..\README.linux ..\pod\perllinux.pod
b0b6bf2b 1166 copy ..\README.machten ..\pod\perlmachten.pod
1167 copy ..\README.macos ..\pod\perlmacos.pod
1168 copy ..\README.macosx ..\pod\perlmacosx.pod
1169 copy ..\README.mint ..\pod\perlmint.pod
1170 copy ..\README.mpeix ..\pod\perlmpeix.pod
1171 copy ..\README.netware ..\pod\perlnetware.pod
b0846812 1172 copy ..\README.openbsd ..\pod\perlopenbsd.pod
b0b6bf2b 1173 copy ..\README.os2 ..\pod\perlos2.pod
1174 copy ..\README.os390 ..\pod\perlos390.pod
1175 copy ..\README.os400 ..\pod\perlos400.pod
1176 copy ..\README.plan9 ..\pod\perlplan9.pod
1177 copy ..\README.qnx ..\pod\perlqnx.pod
2f08ed66 1178 copy ..\README.riscos ..\pod\perlriscos.pod
b0b6bf2b 1179 copy ..\README.solaris ..\pod\perlsolaris.pod
27da23d5 1180 copy ..\README.symbian ..\pod\perlsymbian.pod
b0b6bf2b 1181 copy ..\README.tru64 ..\pod\perltru64.pod
1182 copy ..\README.tw ..\pod\perltw.pod
1183 copy ..\README.uts ..\pod\perluts.pod
1184 copy ..\README.vmesa ..\pod\perlvmesa.pod
1185 copy ..\README.vms ..\pod\perlvms.pod
1186 copy ..\README.vos ..\pod\perlvos.pod
1187 copy ..\README.win32 ..\pod\perlwin32.pod
f6eae373 1188 copy ..\pod\perl595delta.pod ..\pod\perldelta.pod
9e42cd94 1189 $(MAKE) -f ..\win32\pod.mak converters
1190 cd ..\lib
1191 $(PERLEXE) lib_pm.PL
1192 cd ..\win32
1193 $(PERLEXE) $(PL2BAT) $(UTILS)
1194
b0b6bf2b 1195# Note that the pod cleanup in this next section is parsed (and regenerated
1196# by pod/buildtoc so please check that script before making changes here
1197
b4dc1df6 1198distclean: realclean
9e42cd94 1199 -del /f $(MINIPERL) $(PERLEXE) $(PERLDLL) $(GLOBEXE) \
1200 $(PERLIMPLIB) ..\miniperl.lib $(MINIMOD)
1201 -del /f *.def *.map
1202 -del /f $(EXTENSION_DLL)
1203 -del /f $(EXTENSION_C) $(DYNALOADER).c $(ERRNO).pm
1204 -del /f $(EXTDIR)\DynaLoader\dl_win32.xs
ca67812f 1205 -del /f $(EXTDIR)\DynaLoader\DynaLoader.pm
1206 -del /f $(EXTDIR)\DynaLoader\XSLoader.pm
1207 -del /f $(LIBDIR)\Encode.pm $(LIBDIR)\encoding.pm $(LIBDIR)\Errno.pm
1208 -del /f $(LIBDIR)\Config.pod $(LIBDIR)\POSIX.pod $(LIBDIR)\threads.pm
9e42cd94 1209 -del /f $(LIBDIR)\.exists $(LIBDIR)\attrs.pm $(LIBDIR)\DynaLoader.pm
b4dc1df6 1210 -del /f $(LIBDIR)\XSLoader.pm $(LIBDIR)\lib.pm
9e42cd94 1211 -del /f $(LIBDIR)\Fcntl.pm $(LIBDIR)\IO.pm $(LIBDIR)\Opcode.pm
1212 -del /f $(LIBDIR)\ops.pm $(LIBDIR)\Safe.pm
1213 -del /f $(LIBDIR)\SDBM_File.pm $(LIBDIR)\Socket.pm $(LIBDIR)\POSIX.pm
1214 -del /f $(LIBDIR)\B.pm $(LIBDIR)\O.pm $(LIBDIR)\re.pm
ca67812f 1215 -del /f $(LIBDIR)\ByteLoader.pm
9e42cd94 1216 -del /f $(LIBDIR)\Devel\Peek.pm $(LIBDIR)\Devel\DProf.pm
ca67812f 1217 -del /f $(LIBDIR)\Devel\PPPort.pm
9e42cd94 1218 -del /f $(LIBDIR)\File\Glob.pm
1219 -del /f $(LIBDIR)\Storable.pm
9e42cd94 1220 -del /f $(LIBDIR)\Digest\MD5.pm
59717686 1221 -del /f $(LIBDIR)\Digest\SHA.pm
ca67812f 1222 -del /f $(LIBDIR)\PerlIO\encoding.pm
e934609f 1223 -del /f $(LIBDIR)\PerlIO\scalar.pm
1224 -del /f $(LIBDIR)\PerlIO\via.pm
ca67812f 1225 -del /f $(LIBDIR)\Sys\Hostname.pm
1226 -del /f $(LIBDIR)\Thread\Signal.pm $(LIBDIR)\Thread\Specific.pm
1227 -del /f $(LIBDIR)\threads\shared.pm
9e42cd94 1228 -del /f $(LIBDIR)\Time\HiRes.pm
9e42cd94 1229 -del /f $(LIBDIR)\Unicode\Normalize.pm
4e74047c 1230 -del /f $(LIBDIR)\Math\BigInt\FastCalc.pm
b4ad57f4 1231 -del /f $(LIBDIR)\Win32.pm
00701878 1232 -del /f $(LIBDIR)\Win32API\File.pm
1233 -del /f $(LIBDIR)\Win32API\File\cFile.pc
9e42cd94 1234 -if exist $(LIBDIR)\B rmdir /s /q $(LIBDIR)\B
46ffdcf0 1235 -if exist $(LIBDIR)\Compress rmdir /s /q $(LIBDIR)\Compress
9e42cd94 1236 -if exist $(LIBDIR)\Data rmdir /s /q $(LIBDIR)\Data
ca67812f 1237 -if exist $(LIBDIR)\Encode rmdir /s /q $(LIBDIR)\Encode
9e42cd94 1238 -if exist $(LIBDIR)\Filter\Util rmdir /s /q $(LIBDIR)\Filter\Util
96c33d98 1239 -if exist $(LIBDIR)\Hash rmdir /s /q $(LIBDIR)\Hash
69f57184 1240 -if exist $(LIBDIR)\IO\Compress rmdir /s /q $(LIBDIR)\IO\Compress
69f57184 1241 -if exist $(LIBDIR)\IO\Socket rmdir /s /q $(LIBDIR)\IO\Socket
69f57184 1242 -if exist $(LIBDIR)\IO\Uncompress rmdir /s /q $(LIBDIR)\IO\Uncompress
69f57184 1243 -if exist $(LIBDIR)\List rmdir /s /q $(LIBDIR)\List
69f57184 1244 -if exist $(LIBDIR)\MIME rmdir /s /q $(LIBDIR)\MIME
9e42cd94 1245 -if exist $(LIBDIR)\Scalar rmdir /s /q $(LIBDIR)\Scalar
6c4b87ea 1246 -if exist $(LIBDIR)\Sys rmdir /s /q $(LIBDIR)\Sys
6c4b87ea 1247 -if exist $(LIBDIR)\threads rmdir /s /q $(LIBDIR)\threads
9e42cd94 1248 -if exist $(LIBDIR)\XS rmdir /s /q $(LIBDIR)\XS
00701878 1249 -if exist $(LIBDIR)\Win32API rmdir /s /q $(LIBDIR)\Win32API
ca67812f 1250 -cd $(PODDIR) && del /f *.html *.bat checkpods \
9e42cd94 1251 perlaix.pod perlamiga.pod perlapollo.pod perlbeos.pod \
b0b6bf2b 1252 perlbs2000.pod perlce.pod perlcn.pod perlcygwin.pod \
1400179b 1253 perldelta.pod perldgux.pod perldos.pod perlepoc.pod \
1254 perlfreebsd.pod perlhpux.pod perlhurd.pod perlirix.pod \
6477b319 1255 perljp.pod perlko.pod perllinux.pod perlmachten.pod \
1256 perlmacos.pod perlmacosx.pod perlmint.pod perlmpeix.pod \
1257 perlnetware.pod perlopenbsd.pod perlos2.pod perlos390.pod \
2f08ed66 1258 perlos400.pod perlplan9.pod perlqnx.pod perlriscos.pod \
1259 perlsolaris.pod perlsymbian.pod perltru64.pod perltw.pod \
1260 perluts.pod perlvmesa.pod perlvms.pod perlvms.pod perlvos.pod \
1261 perlwin32.pod \
b0b6bf2b 1262 pod2html pod2latex pod2man pod2text pod2usage \
9e42cd94 1263 podchecker podselect
ca67812f 1264 -cd ..\utils && del /f h2ph splain perlbug pl2pm c2ph pstruct h2xs \
de125441 1265 perldoc perlivp dprofpp libnetcfg enc2xs piconv cpan *.bat \
bb4e9162 1266 xsubpp instmodsh prove ptar ptardiff shasum corelist config_data
ca67812f 1267 -cd ..\x2p && del /f find2perl s2p psed *.bat
9e42cd94 1268 -del /f ..\config.sh ..\splittree.pl perlmain.c dlutils.c config.h.new
1269 -del /f $(CONFIGPM)
1270 -del /f bin\*.bat
322fd642 1271 -del /f perllibst.h
ec25c072 1272 -del /f $(PERLEXE_ICO) perl.base
ca67812f 1273 -cd .. && del /s *.lib *.map *.pdb *.ilk *.bs *$(o) .exists pm_to_blib
1274 -cd $(EXTDIR) && del /s *.def Makefile Makefile.old
9e42cd94 1275 -if exist $(AUTODIR) rmdir /s /q $(AUTODIR)
9e42cd94 1276 -if exist $(COREDIR) rmdir /s /q $(COREDIR)
b4a41557 1277 -if exist pod2htmd.tmp del pod2htmd.tmp
1278 -if exist pod2htmi.tmp del pod2htmi.tmp
1279 -if exist $(HTMLDIR) rmdir /s /q $(HTMLDIR)
9e42cd94 1280
1281install : all installbare installhtml
1282
1283installbare : utils
1284 $(PERLEXE) ..\installperl
1285 if exist $(WPERLEXE) $(XCOPY) $(WPERLEXE) $(INST_BIN)\*.*
1286 $(XCOPY) $(GLOBEXE) $(INST_BIN)\*.*
ec25c072 1287 if exist ..\perl*.pdb $(XCOPY) ..\perl*.pdb $(INST_BIN)\*.*
1288 if exist ..\x2p\a2p.pdb $(XCOPY) ..\x2p\a2p.pdb $(INST_BIN)\*.*
9e42cd94 1289 $(XCOPY) bin\*.bat $(INST_SCRIPT)\*.*
1290
1291installhtml : doc
b4a41557 1292 $(RCOPY) $(HTMLDIR)\*.* $(INST_HTML)\*.*
9e42cd94 1293
1294inst_lib : $(CONFIGPM)
1295 copy splittree.pl ..
1296 $(MINIPERL) -I..\lib ..\splittree.pl "../LIB" $(AUTODIR)
1297 $(RCOPY) ..\lib $(INST_LIB)\*.*
1298
ca12659b 1299$(UNIDATAFILES) : $(MINIPERL) $(CONFIGPM) ..\lib\unicore\mktables
27a8011f 1300 cd ..\lib\unicore && \
6ae7e459 1301 ..\$(MINIPERL) -I.. mktables -check $@ $(FIRSTUNIFILE)
ca12659b 1302
1303minitest : $(MINIPERL) $(GLOBEXE) $(CONFIGPM) utils $(UNIDATAFILES)
6c85d12e 1304 $(XCOPY) $(MINIPERL) ..\t\$(NULL)
1305 if exist ..\t\perl.exe del /f ..\t\perl.exe
1306 rename ..\t\miniperl.exe perl.exe
9e42cd94 1307 $(XCOPY) $(GLOBEXE) ..\t\$(NULL)
1308 attrib -r ..\t\*.*
6c85d12e 1309 cd ..\t && \
1310 $(MINIPERL) -I..\lib harness base/*.t comp/*.t cmd/*.t io/*.t op/*.t pragma/*.t
9e42cd94 1311
1312test-prep : all utils
1313 $(XCOPY) $(PERLEXE) ..\t\$(NULL)
1314 $(XCOPY) $(PERLDLL) ..\t\$(NULL)
1315 $(XCOPY) $(GLOBEXE) ..\t\$(NULL)
1316
1317test : test-prep
1318 cd ..\t
89087c85 1319 $(PERLEXE) -I..\lib harness $(TEST_SWITCHES) $(TEST_FILES)
9e42cd94 1320 cd ..\win32
1321
6ae7e459 1322test-reonly : reonly utils
1323 $(XCOPY) $(PERLEXE) ..\t\$(NULL)
1324 $(XCOPY) $(PERLDLL) ..\t\$(NULL)
1325 $(XCOPY) $(GLOBEXE) ..\t\$(NULL)
1326 cd ..\t
a5ca303d 1327 $(PERLEXE) -I..\lib harness $(OPT) -re \bpat\b \breg \bre\b $(EXTRA)
6ae7e459 1328 cd ..\win32
7bcddc65 1329
5d458dd8 1330regen :
7bcddc65 1331 cd ..
1332 regen.pl
1333 cd win32
1334
9e42cd94 1335test-notty : test-prep
1336 set PERL_SKIP_TTY_TEST=1
1337 cd ..\t
89087c85 1338 $(PERLEXE) -I..\lib harness $(TEST_SWITCHES) $(TEST_FILES)
9e42cd94 1339 cd ..\win32
1340
b4a93add 1341_test :
1342 $(XCOPY) $(PERLEXE) ..\t\$(NULL)
1343 $(XCOPY) $(PERLDLL) ..\t\$(NULL)
1344 $(XCOPY) $(GLOBEXE) ..\t\$(NULL)
1345 cd ..\t
89087c85 1346 $(PERLEXE) -I..\lib harness $(TEST_SWITCHES) $(TEST_FILES)
b4a93add 1347 cd ..\win32
1348
b4dc1df6 1349_clean :
9e42cd94 1350 -@$(DEL) miniperlmain$(o)
1351 -@$(DEL) $(MINIPERL)
1352 -@$(DEL) perlglob$(o)
1353 -@$(DEL) perlmain$(o)
1354 -@$(DEL) config.w32
1355 -@$(DEL) config.h
1356 -@$(DEL) $(GLOBEXE)
1357 -@$(DEL) $(PERLEXE)
1358 -@$(DEL) $(WPERLEXE)
1359 -@$(DEL) $(PERLDLL)
1360 -@$(DEL) $(CORE_OBJ)
1361 -if exist $(MINIDIR) rmdir /s /q $(MINIDIR)
27a8011f 1362 -if exist $(UNIDATADIR1) rmdir /s /q $(UNIDATADIR1)
27a8011f 1363 -if exist $(UNIDATADIR2) rmdir /s /q $(UNIDATADIR2)
ca12659b 1364 -@$(DEL) $(UNIDATAFILES)
27a8011f 1365 -@$(DEL) $(WIN32_OBJ)
9e42cd94 1366 -@$(DEL) $(DLL_OBJ)
1367 -@$(DEL) $(X2P_OBJ)
1368 -@$(DEL) ..\*$(o) ..\*.lib ..\*.exp *$(o) *.lib *.exp *.res
1369 -@$(DEL) ..\t\*.exe ..\t\*.dll ..\t\*.bat
1370 -@$(DEL) ..\x2p\*.exe ..\x2p\*.bat
1371 -@$(DEL) *.ilk
1372 -@$(DEL) *.pdb
9e7cf449 1373 -@$(DEL) Extensions_static
9e42cd94 1374
b4dc1df6 1375clean : Extensions_clean _clean
1376
42e07562 1377realclean : Extensions_realclean MakePPPort_clean _clean
b4dc1df6 1378
9e42cd94 1379# Handy way to run perlbug -ok without having to install and run the
1380# installed perlbug. We don't re-run the tests here - we trust the user.
1381# Please *don't* use this unless all tests pass.
1382# If you want to report test failures, use "nmake nok" instead.
1383ok: utils
1384 $(PERLEXE) -I..\lib ..\utils\perlbug -ok -s "(UNINSTALLED)"
1385
1386okfile: utils
1387 $(PERLEXE) -I..\lib ..\utils\perlbug -ok -s "(UNINSTALLED)" -F perl.ok
1388
1389nok: utils
1390 $(PERLEXE) -I..\lib ..\utils\perlbug -nok -s "(UNINSTALLED)"
1391
1392nokfile: utils
1393 $(PERLEXE) -I..\lib ..\utils\perlbug -nok -s "(UNINSTALLED)" -F perl.nok