This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Addition to README.riscos suggested by Nicholas
[perl5.git] / win32 / Makefile
CommitLineData
9e42cd94
GS
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
GS
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
GS
9#
10
11##
12## Make sure you read README.win32 *before* you mess with anything here!
13##
14
15##
16## Build configuration. Edit the values below to suit your needs.
17##
18
19#
20# Set these to wherever you want "nmake install" to put your
21# newly built perl.
22#
23INST_DRV = c:
24INST_TOP = $(INST_DRV)\perl
25
26#
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#
a1e6f3ef 35#INST_VER = \5.9.4
9e42cd94
GS
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
GS
47
48#
7ada00a0
SH
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
GS
61
62#
f7d585d3 63# Beginnings of interpreter cloning/threads; now reasonably complete.
9e42cd94
GS
64# This should be enabled to get the fork() emulation. This needs
65# USE_MULTI as well.
66#
bdb4cb88 67USE_ITHREADS = define
9e42cd94
GS
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
GS
75
76#
f7d585d3
GS
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
GS
82USE_PERLIO = define
83
84#
4a9d6100
GS
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
GS
89
90#
da2c7419 91# uncomment exactly one of the following
9e42cd94 92#
da2c7419 93# Visual C++ 2.x
9e42cd94 94#CCTYPE = MSVC20
da2c7419
SH
95# Visual C++ > 2.x and < 6.x
96#CCTYPE = MSVC
97# Visual C++ 6.x (aka Visual Studio 98)
4a9d6100 98CCTYPE = MSVC60
da2c7419
SH
99# Visual C++ Toolkit 2003 (free version of Visual C++ 7.x command-line tools)
100#CCTYPE = MSVC70FREE
101# Visual C++ 7.x (aka Visual Studio .NET 2003) (full version)
102#CCTYPE = MSVC70
73c9ebc7
SP
103# Visual C++ Toolkit 2005 (free version of Visual C++ 8.x command-line tools)
104#CCTYPE = MSVC80FREE
84b05a71 105# Visual C++ 8.x (aka Visual Studio 2005) (full version)
73c9ebc7 106#CCTYPE = MSVC80
9e42cd94
GS
107
108#
109# uncomment next line if you want debug version of perl (big,slow)
f7d585d3
GS
110# If not enabled, we automatically try to use maximum optimization
111# with all compilers that are known to have a working optimizer.
9e42cd94
GS
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
SH
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
GS
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
SH
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
SH
164
165#
166#
9e42cd94
GS
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
SH
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
GS
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
GS
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
SH
240!IF "$(USE_IMP_SYS)" == "define"
241PERL_MALLOC = undef
242DEBUG_MSTATS = undef
243!ENDIF
244
9e42cd94
GS
245!IF "$(PERL_MALLOC)" == ""
246PERL_MALLOC = undef
646e33b6 247DEBUG_MSTATS = undef
06c896bb
SH
248!ENDIF
249
250!IF "$(DEBUG_MSTATS)" == ""
646e33b6 251DEBUG_MSTATS = undef
06c896bb
SH
252!ENDIF
253
254!IF "$(DEBUG_MSTATS)" == "define"
646e33b6 255BUILDOPT = $(BUILDOPT) -DPERL_DEBUGGING_MSTATS
9e42cd94
GS
256!ENDIF
257
7ada00a0
SH
258!IF "$(USE_SITECUST)" == ""
259USE_SITECUST = undef
260!ENDIF
261
9e42cd94
GS
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
GS
278!IF "$(USE_LARGE_FILES)" == ""
279USE_LARGE_FILES = undef
280!ENDIF
281
9e42cd94
GS
282!IF "$(USE_PERLCRT)" == ""
283USE_PERLCRT = undef
284!ENDIF
285
3db8f154 286!IF "$(USE_IMP_SYS)$(USE_MULTI)" == "defineundef"
9e42cd94
GS
287USE_MULTI = define
288!ENDIF
289
290!IF "$(USE_ITHREADS)$(USE_MULTI)" == "defineundef"
291USE_MULTI = define
9e42cd94
GS
292!ENDIF
293
7ada00a0
SH
294!IF "$(USE_SITECUST)" == "define"
295BUILDOPT = $(BUILDOPT) -DUSE_SITECUSTOMIZE
296!ENDIF
297
3db8f154 298!IF "$(USE_MULTI)" != "undef"
9e42cd94
GS
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
GS
310!IF "$(WIN64)" == ""
311!IF "$(PROCESSOR_ARCHITEW6432)" != ""
312PROCESSOR_ARCHITECTURE = $(PROCESSOR_ARCHITEW6432)
313WIN64 = define
314!ELSE
315!IF "$(PROCESSOR_ARCHITECTURE)" == "IA64"
316WIN64 = define
317!ELSE
318WIN64 = undef
319!ENDIF
320!ENDIF
321!ENDIF
322
9453ddcd
SH
323!IF "$(PROCESSOR_ARCHITECTURE)" == "AMD64"
324PROCESSOR_ARCHITECTURE = x86_64
325!ENDIF
326!IF "$(PROCESSOR_ARCHITECTURE)" == "IA64"
327PROCESSOR_ARCHITECTURE = ia64
328!ENDIF
329
9e42cd94
GS
330!IF "$(USE_MULTI)" == "define"
331ARCHNAME = MSWin32-$(PROCESSOR_ARCHITECTURE)-multi
332!ELSE
333!IF "$(USE_PERLIO)" == "define"
334ARCHNAME = MSWin32-$(PROCESSOR_ARCHITECTURE)-perlio
335!ELSE
336ARCHNAME = MSWin32-$(PROCESSOR_ARCHITECTURE)
337!ENDIF
338!ENDIF
9e42cd94
GS
339
340!IF "$(USE_PERLIO)" == "define"
341BUILDOPT = $(BUILDOPT) -DUSE_PERLIO
342!ENDIF
343
344!IF "$(USE_ITHREADS)" == "define"
345ARCHNAME = $(ARCHNAME)-thread
346!ENDIF
347
da2c7419
SH
348# Visual Studio 98 and .NET 2003 specific
349# VC++ 6.x and 7.x can load DLL's on demand. Makes the test suite run in
350# about 10% less time. (The free version of 7.x can't do this, however.)
73c9ebc7
SP
351# The addition of VC++ 8.x is currently an educated guess.
352!IF "$(CCTYPE)" == "MSVC60" || "$(CCTYPE)" == "MSVC70" || "$(CCTYPE)" == "MSVC80"
036c1c1e 353DELAYLOAD = -DELAYLOAD:ws2_32.dll -DELAYLOAD:shell32.dll delayimp.lib
9e42cd94
GS
354!ENDIF
355
356ARCHDIR = ..\lib\$(ARCHNAME)
357COREDIR = ..\lib\CORE
358AUTODIR = ..\lib\auto
359LIBDIR = ..\lib
360EXTDIR = ..\ext
361PODDIR = ..\pod
362EXTUTILSDIR = $(LIBDIR)\ExtUtils
b4a41557 363HTMLDIR = .\html
9e42cd94
GS
364
365#
366INST_SCRIPT = $(INST_TOP)$(INST_VER)\bin
367INST_BIN = $(INST_SCRIPT)$(INST_ARCH)
368INST_LIB = $(INST_TOP)$(INST_VER)\lib
369INST_ARCHLIB = $(INST_LIB)$(INST_ARCH)
370INST_COREDIR = $(INST_ARCHLIB)\CORE
9e42cd94
GS
371INST_HTML = $(INST_TOP)$(INST_VER)\html
372
373#
374# Programs to compile, build .lib files and link
375#
376
377CC = cl
378LINK32 = link
379LIB32 = $(LINK32) -lib
380RSC = rc
381
382#
383# Options
384#
385
386INCLUDES = -I$(COREDIR) -I.\include -I. -I..
387#PCHFLAGS = -Fpc:\temp\vcmoduls.pch -YX
388DEFINES = -DWIN32 -D_CONSOLE -DNO_STRICT $(CRYPT_FLAG)
389LOCDEFS = -DPERLDLL -DPERL_CORE
390SUBSYS = console
391CXX_FLAG = -TP -GX
392
393!IF "$(USE_PERLCRT)" != "define"
394LIBC = msvcrt.lib
395!ELSE
396LIBC = PerlCRT.lib
397!ENDIF
398
9e42cd94
GS
399!IF "$(CFG)" == "Debug"
400! IF "$(CCTYPE)" == "MSVC20"
401OPTIMIZE = -Od -MD -Z7 -DDEBUGGING
402! ELSE
403OPTIMIZE = -Od -MD -Zi -DDEBUGGING
404! ENDIF
c623ac67 405LINK_DBG = -debug
9e42cd94 406!ELSE
ec25c072
SH
407OPTIMIZE = -MD -Zi -DNDEBUG
408# we enable debug symbols in release builds also
409LINK_DBG = -debug -opt:ref,icf
410# you may want to enable this if you want COFF symbols in the executables
411# in addition to the PDB symbols. The default Dr. Watson that ships with
412# Windows can use the the former but not latter. The free WinDbg can be
413# installed to get better stack traces from just the PDB symbols, so we
414# avoid the bloat of COFF symbols by default.
415#LINK_DBG = $(LINK_DBG) -debugtype:both
d921a5fb
GS
416! IF "$(WIN64)" == "define"
417# enable Whole Program Optimizations (WPO) and Link Time Code Generation (LTCG)
418OPTIMIZE = $(OPTIMIZE) -Ox -GL
419LINK_DBG = $(LINK_DBG) -ltcg
420! ELSE
421# -O1 yields smaller code, which turns out to be faster than -O2 on x86
422OPTIMIZE = $(OPTIMIZE) -O1
423#OPTIMIZE = $(OPTIMIZE) -O2
424! ENDIF
9e42cd94
GS
425!ENDIF
426
c623ac67
GS
427!IF "$(WIN64)" == "define"
428DEFINES = $(DEFINES) -DWIN64 -DCONSERVATIVE
9453ddcd 429OPTIMIZE = $(OPTIMIZE) -Wp64 -fp:precise
da2c7419
SH
430!ENDIF
431
9e42cd94
GS
432!IF "$(USE_PERLCRT)" != "define"
433BUILDOPT = $(BUILDOPT) -DPERL_MSVCRT_READFIX
434!ENDIF
435
436LIBBASEFILES = $(CRYPT_LIB) \
437 oldnames.lib kernel32.lib user32.lib gdi32.lib winspool.lib \
438 comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib \
036c1c1e 439 netapi32.lib uuid.lib ws2_32.lib mpr.lib winmm.lib \
9453ddcd 440 version.lib odbc32.lib odbccp32.lib
c623ac67 441
9453ddcd
SH
442# The 64 bit Platform SDK compilers contain a runtime library that doesn't
443# include the buffer overrun verification code used by the /GS switch.
444# Since the code links against libraries that are compiled with /GS, this
445# "security cookie verification" must be included via bufferoverlow.lib.
446!IF "$(WIN64)" == "define"
447LIBBASEFILES = $(LIBBASEFILES) bufferoverflowU.lib
c623ac67 448!ENDIF
9e42cd94
GS
449
450# we add LIBC here, since we may be using PerlCRT.dll
451LIBFILES = $(LIBBASEFILES) $(LIBC)
452
9453ddcd 453EXTRACFLAGS = -nologo -GF -W3
bb275e72 454CFLAGS = $(EXTRACFLAGS) $(INCLUDES) $(DEFINES) $(LOCDEFS) \
9e42cd94
GS
455 $(PCHFLAGS) $(OPTIMIZE)
456LINK_FLAGS = -nologo -nodefaultlib $(LINK_DBG) \
457 -libpath:"$(INST_COREDIR)" \
458 -machine:$(PROCESSOR_ARCHITECTURE)
459OBJOUT_FLAG = -Fo
460EXEOUT_FLAG = -Fe
461
462CFLAGS_O = $(CFLAGS) $(BUILDOPT)
463
464#################### do not edit below this line #######################
465############# NO USER-SERVICEABLE PARTS BEYOND THIS POINT ##############
466
467o = .obj
468
469#
470# Rules
471#
472
473.SUFFIXES : .c $(o) .dll .lib .exe .rc .res
474
475.c$(o):
476 $(CC) -c -I$(<D) $(CFLAGS_O) $(OBJOUT_FLAG)$@ $<
477
478.y.c:
479 $(NOOP)
480
481$(o).dll:
482 $(LINK32) -dll -subsystem:windows -implib:$(*B).lib -def:$(*B).def \
483 -out:$@ $(LINK_FLAGS) $(LIBFILES) $< $(LIBPERL)
484
485.rc.res:
486 $(RSC) -i.. $<
487
488#
489# various targets
490
491# makedef.pl must be updated if this changes, and this should normally
492# only change when there is an incompatible revision of the public API.
78a7c709
HS
493PERLIMPLIB = ..\perl59.lib
494PERLDLL = ..\perl59.dll
9e42cd94
GS
495
496MINIPERL = ..\miniperl.exe
497MINIDIR = .\mini
498PERLEXE = ..\perl.exe
499WPERLEXE = ..\wperl.exe
500GLOBEXE = ..\perlglob.exe
04bae4fb 501CONFIGPM = ..\lib\Config.pm ..\lib\Config_heavy.pl
9e42cd94
GS
502MINIMOD = ..\lib\ExtUtils\Miniperl.pm
503X2P = ..\x2p\a2p.exe
73c9ebc7 504
84b05a71
SP
505# With the .NET 2.0 SDK, setargs.obj is not available with the .NET SDK. It
506# only comes with Visual Studio 2005.
507!IF "$(CCTYPE)" != "MSVC80FREE"
73c9ebc7
SP
508GLOBEXEBUILD =
509!ENDIF
9e42cd94 510
ca12659b
NC
511# Unicode data files generated by mktables
512UNIDATAFILES = ..\lib\unicore\Canonical.pl ..\lib\unicore\Exact.pl \
513 ..\lib\unicore\Properties ..\lib\unicore\Decomposition.pl \
7ebf06b3
NC
514 ..\lib\unicore\CombiningClass.pl ..\lib\unicore\Name.pl \
515 ..\lib\unicore\PVA.pl
ca12659b
NC
516
517# Directories of Unicode data files generated by mktables
27a8011f
SH
518UNIDATADIR1 = ..\lib\unicore\To
519UNIDATADIR2 = ..\lib\unicore\lib
ca12659b 520
3890b58f
RGS
521PERLEXE_ICO = .\perlexe.ico
522PERLEXE_RES = .\perlexe.res
523PERLDLL_RES =
524
9e42cd94
GS
525# Nominate a target which causes extensions to be re-built
526# This used to be $(PERLEXE), but at worst it is the .dll that they depend
527# on and really only the interface - i.e. the .def file used to export symbols
528# from the .dll
529PERLDEP = perldll.def
530
531PL2BAT = bin\pl2bat.pl
532GLOBBAT = bin\perlglob.bat
533
534UTILS = \
535 ..\utils\h2ph \
536 ..\utils\splain \
537 ..\utils\dprofpp \
538 ..\utils\perlbug \
539 ..\utils\pl2pm \
540 ..\utils\c2ph \
827a599d 541 ..\utils\pstruct \
9e42cd94
GS
542 ..\utils\h2xs \
543 ..\utils\perldoc \
544 ..\utils\perlcc \
545 ..\utils\perlivp \
546 ..\utils\libnetcfg \
827a599d
GS
547 ..\utils\enc2xs \
548 ..\utils\piconv \
bb4e9162 549 ..\utils\config_data \
18a1cebe 550 ..\utils\corelist \
83cd6e83 551 ..\utils\cpan \
ea0e987d 552 ..\utils\xsubpp \
4b618757 553 ..\utils\prove \
291d3373 554 ..\utils\ptar \
b8669316 555 ..\utils\ptardiff \
3ddf9550 556 ..\utils\shasum \
ea0e987d 557 ..\utils\instmodsh \
9e42cd94
GS
558 ..\pod\checkpods \
559 ..\pod\pod2html \
560 ..\pod\pod2latex \
561 ..\pod\pod2man \
562 ..\pod\pod2text \
563 ..\pod\pod2usage \
564 ..\pod\podchecker \
565 ..\pod\podselect \
566 ..\x2p\find2perl \
827a599d 567 ..\x2p\psed \
9e42cd94 568 ..\x2p\s2p \
9e42cd94
GS
569 bin\exetype.pl \
570 bin\runperl.pl \
571 bin\pl2bat.pl \
572 bin\perlglob.pl \
573 bin\search.pl
574
575MAKE = nmake -nologo
576MAKE_BARE = nmake
577
c623ac67
GS
578!IF "$(WIN64)" == "define"
579CFGSH_TMPL = config.vc64
580CFGH_TMPL = config_H.vc64
581!ELSE
9e42cd94
GS
582CFGSH_TMPL = config.vc
583CFGH_TMPL = config_H.vc
c623ac67 584!ENDIF
9e42cd94 585
b6ed7314
YO
586XCOPY = xcopy /f /r /i /d /y
587RCOPY = xcopy /f /r /i /e /d /y
65980d94 588NOOP = @rem
9e42cd94
GS
589NULL =
590
591DEL = del
592
593#
594# filenames given to xsubpp must have forward slashes (since it puts
595# full pathnames in #line strings)
596XSUBPP = ..\$(MINIPERL) -I..\..\lib ..\$(EXTUTILSDIR)\xsubpp \
597 -C++ -prototypes
598
599MICROCORE_SRC = \
600 ..\av.c \
601 ..\deb.c \
602 ..\doio.c \
603 ..\doop.c \
604 ..\dump.c \
605 ..\globals.c \
606 ..\gv.c \
607 ..\hv.c \
608 ..\locale.c \
a0d89a74 609 ..\mathoms.c \
9e42cd94
GS
610 ..\mg.c \
611 ..\numeric.c \
612 ..\op.c \
295f0f84 613 ..\pad.c \
9e42cd94
GS
614 ..\perl.c \
615 ..\perlapi.c \
616 ..\perly.c \
617 ..\pp.c \
618 ..\pp_ctl.c \
619 ..\pp_hot.c \
620 ..\pp_pack.c \
621 ..\pp_sort.c \
622 ..\pp_sys.c \
10bc17b6 623 ..\reentr.c \
9e42cd94
GS
624 ..\regcomp.c \
625 ..\regexec.c \
626 ..\run.c \
627 ..\scope.c \
628 ..\sv.c \
629 ..\taint.c \
630 ..\toke.c \
631 ..\universal.c \
632 ..\utf8.c \
633 ..\util.c \
634 ..\xsutils.c
635
636EXTRACORE_SRC = $(EXTRACORE_SRC) perllib.c
637
638!IF "$(PERL_MALLOC)" == "define"
639EXTRACORE_SRC = $(EXTRACORE_SRC) ..\malloc.c
640!ENDIF
641
642EXTRACORE_SRC = $(EXTRACORE_SRC) ..\perlio.c
643
644WIN32_SRC = \
645 .\win32.c \
646 .\win32sck.c \
647 .\win32thread.c
648
f7d585d3
GS
649# We need this for miniperl build unless we override canned
650# config.h #define building mini\*
651#!IF "$(USE_PERLIO)" == "define"
9e42cd94 652WIN32_SRC = $(WIN32_SRC) .\win32io.c
f7d585d3 653#!ENDIF
9e42cd94
GS
654
655!IF "$(CRYPT_SRC)" != ""
656WIN32_SRC = $(WIN32_SRC) .\$(CRYPT_SRC)
657!ENDIF
658
659DLL_SRC = $(DYNALOADER).c
660
661X2P_SRC = \
662 ..\x2p\a2p.c \
663 ..\x2p\hash.c \
664 ..\x2p\str.c \
665 ..\x2p\util.c \
666 ..\x2p\walk.c
667
668CORE_NOCFG_H = \
669 ..\av.h \
670 ..\cop.h \
671 ..\cv.h \
672 ..\dosish.h \
673 ..\embed.h \
674 ..\form.h \
675 ..\gv.h \
676 ..\handy.h \
677 ..\hv.h \
678 ..\iperlsys.h \
679 ..\mg.h \
680 ..\nostdio.h \
681 ..\op.h \
682 ..\opcode.h \
683 ..\perl.h \
684 ..\perlapi.h \
685 ..\perlsdio.h \
686 ..\perlsfio.h \
687 ..\perly.h \
688 ..\pp.h \
689 ..\proto.h \
cdb0f547 690 ..\regcomp.h \
9e42cd94
GS
691 ..\regexp.h \
692 ..\scope.h \
693 ..\sv.h \
694 ..\thread.h \
695 ..\unixish.h \
696 ..\utf8.h \
697 ..\util.h \
698 ..\warnings.h \
699 ..\XSUB.h \
700 ..\EXTERN.h \
701 ..\perlvars.h \
702 ..\intrpvar.h \
703 ..\thrdvar.h \
704 .\include\dirent.h \
705 .\include\netdb.h \
706 .\include\sys\socket.h \
707 .\win32.h
708
709CORE_H = $(CORE_NOCFG_H) .\config.h
710
711MICROCORE_OBJ = $(MICROCORE_SRC:.c=.obj)
712CORE_OBJ = $(MICROCORE_OBJ) $(EXTRACORE_SRC:.c=.obj)
713WIN32_OBJ = $(WIN32_SRC:.c=.obj)
714MINICORE_OBJ = $(MICROCORE_OBJ:..\=.\mini\) \
715 $(MINIDIR)\miniperlmain$(o) \
716 $(MINIDIR)\perlio$(o)
717MINIWIN32_OBJ = $(WIN32_OBJ:.\=.\mini\)
718MINI_OBJ = $(MINICORE_OBJ) $(MINIWIN32_OBJ)
719DLL_OBJ = $(DLL_SRC:.c=.obj)
720X2P_OBJ = $(X2P_SRC:.c=.obj)
721
722PERLDLL_OBJ = $(CORE_OBJ)
723PERLEXE_OBJ = perlmain$(o)
724
725PERLDLL_OBJ = $(PERLDLL_OBJ) $(WIN32_OBJ) $(DLL_OBJ)
726#PERLEXE_OBJ = $(PERLEXE_OBJ) $(WIN32_OBJ) $(DLL_OBJ)
727
728!IF "$(USE_SETARGV)" != ""
729SETARGV_OBJ = setargv$(o)
730!ENDIF
731
595589fa 732# specify static extensions here
9e7cf449
VK
733#STATIC_EXT = Cwd Compress/Zlib
734STATIC_EXT =
595589fa 735
9e42cd94
GS
736DYNALOADER = $(EXTDIR)\DynaLoader\DynaLoader
737SOCKET = $(EXTDIR)\Socket\Socket
738FCNTL = $(EXTDIR)\Fcntl\Fcntl
739OPCODE = $(EXTDIR)\Opcode\Opcode
740SDBM_FILE = $(EXTDIR)\SDBM_File\SDBM_File
741IO = $(EXTDIR)\IO\IO
742POSIX = $(EXTDIR)\POSIX\POSIX
743ATTRS = $(EXTDIR)\attrs\attrs
744THREAD = $(EXTDIR)\Thread\Thread
745B = $(EXTDIR)\B\B
746RE = $(EXTDIR)\re\re
747DUMPER = $(EXTDIR)\Data\Dumper\Dumper
748ERRNO = $(EXTDIR)\Errno\Errno
749PEEK = $(EXTDIR)\Devel\Peek\Peek
750BYTELOADER = $(EXTDIR)\ByteLoader\ByteLoader
751DPROF = $(EXTDIR)\Devel\DProf\DProf
752GLOB = $(EXTDIR)\File\Glob\Glob
753HOSTNAME = $(EXTDIR)\Sys\Hostname\Hostname
754STORABLE = $(EXTDIR)\Storable\Storable
755FILTER = $(EXTDIR)\Filter\Util\Call\Call
756ENCODE = $(EXTDIR)\Encode\Encode
757MD5 = $(EXTDIR)\Digest\MD5\MD5
59717686 758SHA = $(EXTDIR)\Digest\SHA\SHA
e934609f 759PERLIOSCALAR = $(EXTDIR)\PerlIO\scalar\scalar
9e42cd94
GS
760MIMEBASE64 = $(EXTDIR)\MIME\Base64\Base64
761TIMEHIRES = $(EXTDIR)\Time\HiRes\HiRes
762CWD = $(EXTDIR)\Cwd\Cwd
763LISTUTIL = $(EXTDIR)\List\Util\Util
96c33d98 764HASHUTIL = $(EXTDIR)\Hash\Util\Util
e934609f 765PERLIOVIA = $(EXTDIR)\PerlIO\via\via
83e2e978 766XSAPITEST = $(EXTDIR)\XS\APItest\APItest
9e42cd94
GS
767XSTYPEMAP = $(EXTDIR)\XS\Typemap\Typemap
768UNICODENORMALIZE = $(EXTDIR)\Unicode\Normalize\Normalize
4e74047c 769MATHBIGINTFASTCALC = $(EXTDIR)\Math\BigInt\FastCalc\FastCalc
059b2413 770COMPRESSZLIB = $(EXTDIR)\Compress\Zlib\Zlib
b4ad57f4 771WIN32_DIR = ext\Win32
9e42cd94
GS
772
773SOCKET_DLL = $(AUTODIR)\Socket\Socket.dll
774FCNTL_DLL = $(AUTODIR)\Fcntl\Fcntl.dll
775OPCODE_DLL = $(AUTODIR)\Opcode\Opcode.dll
776SDBM_FILE_DLL = $(AUTODIR)\SDBM_File\SDBM_File.dll
777IO_DLL = $(AUTODIR)\IO\IO.dll
778POSIX_DLL = $(AUTODIR)\POSIX\POSIX.dll
779ATTRS_DLL = $(AUTODIR)\attrs\attrs.dll
780THREAD_DLL = $(AUTODIR)\Thread\Thread.dll
781B_DLL = $(AUTODIR)\B\B.dll
782DUMPER_DLL = $(AUTODIR)\Data\Dumper\Dumper.dll
783PEEK_DLL = $(AUTODIR)\Devel\Peek\Peek.dll
784RE_DLL = $(AUTODIR)\re\re.dll
785BYTELOADER_DLL = $(AUTODIR)\ByteLoader\ByteLoader.dll
786DPROF_DLL = $(AUTODIR)\Devel\DProf\DProf.dll
787GLOB_DLL = $(AUTODIR)\File\Glob\Glob.dll
788HOSTNAME_DLL = $(AUTODIR)\Sys\Hostname\Hostname.dll
789STORABLE_DLL = $(AUTODIR)\Storable\Storable.dll
790FILTER_DLL = $(AUTODIR)\Filter\Util\Call\Call.dll
791ENCODE_DLL = $(AUTODIR)\Encode\Encode.dll
792MD5_DLL = $(AUTODIR)\Digest\MD5\MD5.dll
59717686 793SHA_DLL = $(AUTODIR)\Digest\SHA\SHA.dll
e934609f 794PERLIOSCALAR_DLL = $(AUTODIR)\PerlIO\scalar\scalar.dll
9e42cd94
GS
795MIMEBASE64_DLL = $(AUTODIR)\MIME\Base64\Base64.dll
796TIMEHIRES_DLL = $(AUTODIR)\Time\HiRes\HiRes.dll
797CWD_DLL = $(AUTODIR)\Cwd\Cwd.dll
798LISTUTIL_DLL = $(AUTODIR)\List\Util\Util.dll
96c33d98 799HASHUTIL_DLL = $(AUTODIR)\HASH\Util\Util.dll
e934609f 800PERLIOVIA_DLL = $(AUTODIR)\PerlIO\via\via.dll
83e2e978 801XSAPITEST_DLL = $(AUTODIR)\XS\APItest\APItest.dll
9e42cd94
GS
802XSTYPEMAP_DLL = $(AUTODIR)\XS\Typemap\Typemap.dll
803UNICODENORMALIZE_DLL = $(AUTODIR)\Unicode\Normalize\Normalize.dll
4e74047c 804MATHBIGINTFASTCALC_DLL = $(AUTODIR)\Math\BigInt\FastCalc\FastCalc.dll
059b2413 805COMPRESSZLIB_DLL = $(AUTODIR)\Compress\Zlib\Zlib.dll
b4ad57f4 806WIN32_DLL = $(AUTODIR)\Win32\Win32.dll
9e42cd94
GS
807
808EXTENSION_C = \
809 $(SOCKET).c \
810 $(FCNTL).c \
811 $(OPCODE).c \
812 $(SDBM_FILE).c \
813 $(IO).c \
814 $(POSIX).c \
815 $(ATTRS).c \
816 $(THREAD).c \
817 $(RE).c \
818 $(DUMPER).c \
819 $(PEEK).c \
820 $(B).c \
821 $(BYTELOADER).c \
822 $(DPROF).c \
823 $(GLOB).c \
824 $(HOSTNAME).c \
825 $(STORABLE).c \
826 $(FILTER).c \
827 $(ENCODE).c \
828 $(MD5).c \
59717686 829 $(SHA).c \
9e42cd94
GS
830 $(PERLIOSCALAR).c \
831 $(MIMEBASE64).c \
832 $(TIMEHIRES).c \
833 $(CWD).c \
834 $(LISTUTIL).c \
96c33d98 835 $(HASHUTIL).c \
9e42cd94 836 $(PERLIOVIA).c \
83e2e978 837 $(XSAPITEST).c \
9e42cd94 838 $(XSTYPEMAP).c \
b4ad57f4 839 $(UNICODENORMALIZE).c \
4e74047c 840 $(MATHBIGINTFASTCALC).c \
059b2413 841 $(COMPRESSZLIB).c \
b4ad57f4 842 $(WIN32_DIR).c
9e42cd94
GS
843
844EXTENSION_DLL = \
845 $(SOCKET_DLL) \
846 $(FCNTL_DLL) \
847 $(OPCODE_DLL) \
848 $(SDBM_FILE_DLL)\
849 $(IO_DLL) \
850 $(POSIX_DLL) \
851 $(ATTRS_DLL) \
852 $(DUMPER_DLL) \
853 $(PEEK_DLL) \
854 $(B_DLL) \
855 $(RE_DLL) \
856 $(THREAD_DLL) \
857 $(BYTELOADER_DLL) \
858 $(DPROF_DLL) \
859 $(GLOB_DLL) \
860 $(HOSTNAME_DLL) \
861 $(STORABLE_DLL) \
862 $(FILTER_DLL) \
863 $(ENCODE_DLL) \
864 $(MD5_DLL) \
59717686 865 $(SHA_DLL) \
9e42cd94
GS
866 $(PERLIOSCALAR_DLL) \
867 $(MIMEBASE64_DLL) \
868 $(TIMEHIRES_DLL) \
869 $(CWD_DLL) \
870 $(LISTUTIL_DLL) \
96c33d98 871 $(HASHUTIL_DLL) \
9e42cd94 872 $(PERLIOVIA_DLL) \
83e2e978 873 $(XSAPITEST_DLL) \
9e42cd94 874 $(XSTYPEMAP_DLL) \
b4ad57f4 875 $(UNICODENORMALIZE_DLL) \
4e74047c 876 $(MATHBIGINTFASTCALC_DLL) \
059b2413 877 $(COMPRESSZLIB_DLL) \
b4ad57f4 878 $(WIN32_DLL)
9e42cd94 879
9e42cd94
GS
880CFG_VARS = \
881 "INST_DRV=$(INST_DRV)" \
882 "INST_TOP=$(INST_TOP)" \
883 "INST_VER=$(INST_VER)" \
884 "INST_ARCH=$(INST_ARCH)" \
885 "archname=$(ARCHNAME)" \
886 "cc=$(CC)" \
887 "ld=$(LINK32)" \
bb275e72 888 "ccflags=$(EXTRACFLAGS) $(OPTIMIZE:"=\") $(DEFINES) $(BUILDOPT)" \
9e42cd94
GS
889 "cf_email=$(EMAIL)" \
890 "d_crypt=$(D_CRYPT)" \
891 "d_mymalloc=$(PERL_MALLOC)" \
892 "libs=$(LIBFILES)" \
893 "incpath=$(CCINCDIR:"=\")" \
894 "libperl=$(PERLIMPLIB:..\=)" \
895 "libpth=$(CCLIBDIR:"=\");$(EXTRALIBDIRS:"=\")" \
896 "libc=$(LIBC)" \
897 "make=$(MAKE_BARE)" \
d2b25974 898 "static_ext=$(STATIC_EXT)" \
7e0017d3 899 "usethreads=$(USE_ITHREADS)" \
9e42cd94 900 "useithreads=$(USE_ITHREADS)" \
9e42cd94
GS
901 "usemultiplicity=$(USE_MULTI)" \
902 "useperlio=$(USE_PERLIO)" \
4a9d6100 903 "uselargefiles=$(USE_LARGE_FILES)" \
7ada00a0 904 "usesitecustomize=$(USE_SITECUST)" \
9e42cd94
GS
905 "LINK_FLAGS=$(LINK_FLAGS:"=\")" \
906 "optimize=$(OPTIMIZE:"=\")"
907
908#
909# Top targets
910#
911
ca12659b 912all : .\config.h $(GLOBEXE) $(MINIMOD) $(CONFIGPM) $(UNIDATAFILES) $(PERLEXE) \
9e42cd94
GS
913 $(X2P) Extensions
914 @echo Everything is up to date. '$(MAKE_BARE) test' to run test suite.
915
916$(DYNALOADER)$(o) : $(DYNALOADER).c $(CORE_H) $(EXTDIR)\DynaLoader\dlutils.c
917
918#------------------------------------------------------------
919
920$(GLOBEXE) : perlglob$(o)
73c9ebc7 921!ifdef GLOBEXEBUILD
9e42cd94
GS
922 $(LINK32) $(LINK_FLAGS) $(LIBFILES) -out:$@ -subsystem:$(SUBSYS) \
923 perlglob$(o) setargv$(o)
73c9ebc7
SP
924!else
925 echo Skipping $(GLOBEXE)
926!endif
9e42cd94
GS
927
928perlglob$(o) : perlglob.c
929
930config.w32 : $(CFGSH_TMPL)
931 copy $(CFGSH_TMPL) config.w32
932
933.\config.h : $(CFGH_TMPL)
934 -del /f config.h
935 copy $(CFGH_TMPL) config.h
936
937..\config.sh : config.w32 $(MINIPERL) config_sh.PL
938 $(MINIPERL) -I..\lib config_sh.PL $(CFG_VARS) config.w32 > ..\config.sh
939
940# this target is for when changes to the main config.sh happen
941# edit config.{b,v,g}c and make this target once for each supported
942# compiler (e.g. `nmake CCTYPE=BORLAND regen_config_h`)
943regen_config_h:
944 perl config_sh.PL $(CFG_VARS) $(CFGSH_TMPL) > ..\config.sh
945 cd ..
8839b9e4 946 -del /f perl.exe perl*.dll
9e42cd94
GS
947 perl configpm
948 cd win32
949 -del /f $(CFGH_TMPL)
950 -mkdir $(COREDIR)
8839b9e4 951 -perl config_h.PL "INST_VER=$(INST_VER)"
9e42cd94
GS
952 rename config.h $(CFGH_TMPL)
953
954$(CONFIGPM) : $(MINIPERL) ..\config.sh config_h.PL ..\minimod.pl
955 cd ..
956 miniperl configpm
957 cd win32
958 if exist lib\* $(RCOPY) lib\*.* ..\lib\$(NULL)
959 $(XCOPY) ..\*.h $(COREDIR)\*.*
960 $(XCOPY) *.h $(COREDIR)\*.*
961 $(XCOPY) ..\ext\re\re.pm $(LIBDIR)\*.*
962 $(RCOPY) include $(COREDIR)\*.*
963 -$(MINIPERL) -I..\lib config_h.PL "INST_VER=$(INST_VER)"
964 if errorlevel 1 $(MAKE) /$(MAKEFLAGS) $(CONFIGPM)
965
966$(MINIPERL) : $(MINIDIR) $(MINI_OBJ)
967 $(LINK32) -subsystem:console -out:$@ @<<
968 $(LINK_FLAGS) $(LIBFILES) $(MINI_OBJ)
969<<
970
971$(MINIDIR) :
972 if not exist "$(MINIDIR)" mkdir "$(MINIDIR)"
973
974$(MINICORE_OBJ) : $(CORE_NOCFG_H)
975 $(CC) -c $(CFLAGS) -DPERL_EXTERNAL_GLOB $(OBJOUT_FLAG)$@ ..\$(*F).c
976
977$(MINIWIN32_OBJ) : $(CORE_NOCFG_H)
978 $(CC) -c $(CFLAGS) $(OBJOUT_FLAG)$@ $(*F).c
979
980# -DPERL_IMPLICIT_SYS needs C++ for perllib.c
981# This is the only file that depends on perlhost.h, vmem.h, and vdir.h
982!IF "$(USE_IMP_SYS)" == "define"
983perllib$(o) : perllib.c .\perlhost.h .\vdir.h .\vmem.h
984 $(CC) -c -I. $(CFLAGS_O) $(CXX_FLAG) $(OBJOUT_FLAG)$@ perllib.c
985!ENDIF
986
987# 1. we don't want to rebuild miniperl.exe when config.h changes
988# 2. we don't want to rebuild miniperl.exe with non-default config.h
989$(MINI_OBJ) : $(CORE_NOCFG_H)
990
991$(WIN32_OBJ) : $(CORE_H)
992$(CORE_OBJ) : $(CORE_H)
993$(DLL_OBJ) : $(CORE_H)
994$(X2P_OBJ) : $(CORE_H)
995
996perldll.def : $(MINIPERL) $(CONFIGPM) ..\global.sym ..\pp.sym ..\makedef.pl
595589fa 997 $(MINIPERL) -I..\lib buildext.pl --create-perllibst-h
9e42cd94
GS
998 $(MINIPERL) -w ..\makedef.pl PLATFORM=win32 $(OPTIMIZE) $(DEFINES) $(BUILDOPT) \
999 CCTYPE=$(CCTYPE) > perldll.def
1000
595589fa 1001$(PERLDLL): perldll.def $(PERLDLL_OBJ) $(PERLDLL_RES) Extensions_static
9e7cf449 1002 $(LINK32) -dll -def:perldll.def -base:0x28000000 -out:$@ @Extensions_static @<<
9e42cd94
GS
1003 $(LINK_FLAGS) $(DELAYLOAD) $(LIBFILES) $(PERLDLL_OBJ) $(PERLDLL_RES)
1004<<
1005 $(XCOPY) $(PERLIMPLIB) $(COREDIR)
1006
e84ac4e2
SH
1007$(PERLEXE_ICO): $(MINIPERL) makeico.pl
1008 $(MINIPERL) makeico.pl > $@
1009
1010$(PERLEXE_RES): perlexe.rc $(PERLEXE_ICO)
1011
9e42cd94
GS
1012$(MINIMOD) : $(MINIPERL) ..\minimod.pl
1013 cd ..
1014 miniperl minimod.pl > lib\ExtUtils\Miniperl.pm
1015 cd win32
1016
1017..\x2p\a2p$(o) : ..\x2p\a2p.c
1018 $(CC) -I..\x2p $(CFLAGS) $(OBJOUT_FLAG)$@ -c ..\x2p\a2p.c
1019
1020..\x2p\hash$(o) : ..\x2p\hash.c
1021 $(CC) -I..\x2p $(CFLAGS) $(OBJOUT_FLAG)$@ -c ..\x2p\hash.c
1022
1023..\x2p\str$(o) : ..\x2p\str.c
1024 $(CC) -I..\x2p $(CFLAGS) $(OBJOUT_FLAG)$@ -c ..\x2p\str.c
1025
1026..\x2p\util$(o) : ..\x2p\util.c
1027 $(CC) -I..\x2p $(CFLAGS) $(OBJOUT_FLAG)$@ -c ..\x2p\util.c
1028
1029..\x2p\walk$(o) : ..\x2p\walk.c
1030 $(CC) -I..\x2p $(CFLAGS) $(OBJOUT_FLAG)$@ -c ..\x2p\walk.c
1031
1032$(X2P) : $(MINIPERL) $(X2P_OBJ)
1033 $(MINIPERL) ..\x2p\find2perl.PL
1034 $(MINIPERL) ..\x2p\s2p.PL
1035 $(LINK32) -subsystem:console -out:$@ @<<
1036 $(LINK_FLAGS) $(LIBFILES) $(X2P_OBJ)
1037<<
1038
1039perlmain.c : runperl.c
1040 copy runperl.c perlmain.c
1041
1042perlmain$(o) : perlmain.c
1043 $(CC) $(CFLAGS_O) -UPERLDLL $(OBJOUT_FLAG)$@ -c perlmain.c
1044
1045$(PERLEXE): $(PERLDLL) $(CONFIGPM) $(PERLEXE_OBJ) $(PERLEXE_RES)
1046 $(LINK32) -subsystem:console -out:$@ -stack:0x1000000 $(LINK_FLAGS) \
1047 $(LIBFILES) $(PERLEXE_OBJ) $(SETARGV_OBJ) $(PERLIMPLIB) $(PERLEXE_RES)
1048 copy $(PERLEXE) $(WPERLEXE)
1049 $(MINIPERL) -I..\lib bin\exetype.pl $(WPERLEXE) WINDOWS
1050 copy splittree.pl ..
1051 $(MINIPERL) -I..\lib ..\splittree.pl "../LIB" $(AUTODIR)
1052
1053$(DYNALOADER).c: $(MINIPERL) $(EXTDIR)\DynaLoader\dl_win32.xs $(CONFIGPM)
1054 if not exist $(AUTODIR) mkdir $(AUTODIR)
1055 cd $(EXTDIR)\$(*B)
1056 ..\$(MINIPERL) -I..\..\lib $(*B)_pm.PL
1057 ..\$(MINIPERL) -I..\..\lib XSLoader_pm.PL
1058 cd ..\..\win32
1059 $(XCOPY) $(EXTDIR)\$(*B)\$(*B).pm $(LIBDIR)\$(NULL)
1060 $(XCOPY) $(EXTDIR)\$(*B)\XSLoader.pm $(LIBDIR)\$(NULL)
1061 cd $(EXTDIR)\$(*B)
1062 $(XSUBPP) dl_win32.xs > $(*B).c
1063 cd ..\..\win32
1064
1065$(EXTDIR)\DynaLoader\dl_win32.xs: dl_win32.xs
1066 copy dl_win32.xs $(EXTDIR)\DynaLoader\dl_win32.xs
1067
9dcb9602 1068#-------------------------------------------------------------------------------
9e42cd94 1069Extensions: buildext.pl $(PERLDEP) $(CONFIGPM)
595589fa
VK
1070 $(MINIPERL) -I..\lib buildext.pl $(MAKE) $(PERLDEP) $(EXTDIR) --dynamic
1071 $(MINIPERL) -I..\lib buildext.pl $(MAKE) $(PERLDEP) ext --dynamic
1072
1073Extensions_static : buildext.pl
595589fa 1074 $(MINIPERL) -I..\lib buildext.pl $(MAKE) $(PERLDEP) $(EXTDIR) --static
9e7cf449
VK
1075 $(MINIPERL) -I..\lib buildext.pl $(MAKE) $(PERLDEP) ext --static
1076 $(MINIPERL) -I..\lib buildext.pl --list-static-libs > Extensions_static
9e42cd94
GS
1077
1078Extensions_clean:
1079 -if exist $(MINIPERL) $(MINIPERL) -I..\lib buildext.pl $(MAKE) $(PERLDEP) $(EXTDIR) clean
b4ad57f4 1080 -if exist $(MINIPERL) $(MINIPERL) -I..\lib buildext.pl $(MAKE) $(PERLDEP) ext clean
9e42cd94 1081
b4dc1df6
SH
1082Extensions_realclean:
1083 -if exist $(MINIPERL) $(MINIPERL) -I..\lib buildext.pl $(MAKE) $(PERLDEP) $(EXTDIR) realclean
b4ad57f4 1084 -if exist $(MINIPERL) $(MINIPERL) -I..\lib buildext.pl $(MAKE) $(PERLDEP) ext realclean
b4dc1df6 1085
9dcb9602 1086#-------------------------------------------------------------------------------
9e42cd94
GS
1087
1088doc: $(PERLEXE)
b4a41557 1089 $(PERLEXE) -I..\lib ..\installhtml --podroot=.. --htmldir=$(HTMLDIR) \
9e42cd94
GS
1090 --podpath=pod:lib:ext:utils --htmlroot="file://$(INST_HTML::=|)" \
1091 --libpod=perlfunc:perlguts:perlvar:perlrun:perlop --recurse
1092
b0b6bf2b
AT
1093# Note that this next section is parsed (and regenerated) by pod/buildtoc
1094# so please check that script before making structural changes here
1095
9e42cd94
GS
1096utils: $(PERLEXE) $(X2P)
1097 cd ..\utils
1098 $(MAKE) PERL=$(MINIPERL)
1099 cd ..\pod
4cb44f92 1100 copy ..\vms\perlvms.pod .\perlvms.pod
b0b6bf2b
AT
1101 copy ..\README.aix ..\pod\perlaix.pod
1102 copy ..\README.amiga ..\pod\perlamiga.pod
1103 copy ..\README.apollo ..\pod\perlapollo.pod
1104 copy ..\README.beos ..\pod\perlbeos.pod
1105 copy ..\README.bs2000 ..\pod\perlbs2000.pod
1106 copy ..\README.ce ..\pod\perlce.pod
1107 copy ..\README.cn ..\pod\perlcn.pod
1108 copy ..\README.cygwin ..\pod\perlcygwin.pod
1109 copy ..\README.dgux ..\pod\perldgux.pod
1110 copy ..\README.dos ..\pod\perldos.pod
1111 copy ..\README.epoc ..\pod\perlepoc.pod
1112 copy ..\README.freebsd ..\pod\perlfreebsd.pod
1113 copy ..\README.hpux ..\pod\perlhpux.pod
1114 copy ..\README.hurd ..\pod\perlhurd.pod
1115 copy ..\README.irix ..\pod\perlirix.pod
1116 copy ..\README.jp ..\pod\perljp.pod
1117 copy ..\README.ko ..\pod\perlko.pod
6477b319 1118 copy ..\README.linux ..\pod\perllinux.pod
b0b6bf2b
AT
1119 copy ..\README.machten ..\pod\perlmachten.pod
1120 copy ..\README.macos ..\pod\perlmacos.pod
1121 copy ..\README.macosx ..\pod\perlmacosx.pod
1122 copy ..\README.mint ..\pod\perlmint.pod
1123 copy ..\README.mpeix ..\pod\perlmpeix.pod
1124 copy ..\README.netware ..\pod\perlnetware.pod
b0846812 1125 copy ..\README.openbsd ..\pod\perlopenbsd.pod
b0b6bf2b
AT
1126 copy ..\README.os2 ..\pod\perlos2.pod
1127 copy ..\README.os390 ..\pod\perlos390.pod
1128 copy ..\README.os400 ..\pod\perlos400.pod
1129 copy ..\README.plan9 ..\pod\perlplan9.pod
1130 copy ..\README.qnx ..\pod\perlqnx.pod
1131 copy ..\README.solaris ..\pod\perlsolaris.pod
27da23d5 1132 copy ..\README.symbian ..\pod\perlsymbian.pod
b0b6bf2b
AT
1133 copy ..\README.tru64 ..\pod\perltru64.pod
1134 copy ..\README.tw ..\pod\perltw.pod
1135 copy ..\README.uts ..\pod\perluts.pod
1136 copy ..\README.vmesa ..\pod\perlvmesa.pod
1137 copy ..\README.vms ..\pod\perlvms.pod
1138 copy ..\README.vos ..\pod\perlvos.pod
1139 copy ..\README.win32 ..\pod\perlwin32.pod
6c7deadb 1140 copy ..\pod\perl594delta.pod ..\pod\perldelta.pod
9e42cd94
GS
1141 $(MAKE) -f ..\win32\pod.mak converters
1142 cd ..\lib
1143 $(PERLEXE) lib_pm.PL
1144 cd ..\win32
1145 $(PERLEXE) $(PL2BAT) $(UTILS)
1146
b0b6bf2b
AT
1147# Note that the pod cleanup in this next section is parsed (and regenerated
1148# by pod/buildtoc so please check that script before making changes here
1149
b4dc1df6 1150distclean: realclean
9e42cd94
GS
1151 -del /f $(MINIPERL) $(PERLEXE) $(PERLDLL) $(GLOBEXE) \
1152 $(PERLIMPLIB) ..\miniperl.lib $(MINIMOD)
1153 -del /f *.def *.map
1154 -del /f $(EXTENSION_DLL)
1155 -del /f $(EXTENSION_C) $(DYNALOADER).c $(ERRNO).pm
1156 -del /f $(EXTDIR)\DynaLoader\dl_win32.xs
ca67812f
SH
1157 -del /f $(EXTDIR)\DynaLoader\DynaLoader.pm
1158 -del /f $(EXTDIR)\DynaLoader\XSLoader.pm
1159 -del /f $(LIBDIR)\Encode.pm $(LIBDIR)\encoding.pm $(LIBDIR)\Errno.pm
1160 -del /f $(LIBDIR)\Config.pod $(LIBDIR)\POSIX.pod $(LIBDIR)\threads.pm
9e42cd94 1161 -del /f $(LIBDIR)\.exists $(LIBDIR)\attrs.pm $(LIBDIR)\DynaLoader.pm
b4dc1df6 1162 -del /f $(LIBDIR)\XSLoader.pm $(LIBDIR)\lib.pm
9e42cd94
GS
1163 -del /f $(LIBDIR)\Fcntl.pm $(LIBDIR)\IO.pm $(LIBDIR)\Opcode.pm
1164 -del /f $(LIBDIR)\ops.pm $(LIBDIR)\Safe.pm
1165 -del /f $(LIBDIR)\SDBM_File.pm $(LIBDIR)\Socket.pm $(LIBDIR)\POSIX.pm
1166 -del /f $(LIBDIR)\B.pm $(LIBDIR)\O.pm $(LIBDIR)\re.pm
ca67812f 1167 -del /f $(LIBDIR)\ByteLoader.pm
9e42cd94 1168 -del /f $(LIBDIR)\Devel\Peek.pm $(LIBDIR)\Devel\DProf.pm
ca67812f 1169 -del /f $(LIBDIR)\Devel\PPPort.pm
9e42cd94
GS
1170 -del /f $(LIBDIR)\File\Glob.pm
1171 -del /f $(LIBDIR)\Storable.pm
9e42cd94 1172 -del /f $(LIBDIR)\Digest\MD5.pm
59717686 1173 -del /f $(LIBDIR)\Digest\SHA.pm
ca67812f 1174 -del /f $(LIBDIR)\PerlIO\encoding.pm
e934609f
JH
1175 -del /f $(LIBDIR)\PerlIO\scalar.pm
1176 -del /f $(LIBDIR)\PerlIO\via.pm
ca67812f
SH
1177 -del /f $(LIBDIR)\Sys\Hostname.pm
1178 -del /f $(LIBDIR)\Thread\Signal.pm $(LIBDIR)\Thread\Specific.pm
1179 -del /f $(LIBDIR)\threads\shared.pm
9e42cd94 1180 -del /f $(LIBDIR)\Time\HiRes.pm
9e42cd94 1181 -del /f $(LIBDIR)\Unicode\Normalize.pm
4e74047c 1182 -del /f $(LIBDIR)\Math\BigInt\FastCalc.pm
b4ad57f4 1183 -del /f $(LIBDIR)\Win32.pm
9e42cd94 1184 -if exist $(LIBDIR)\B rmdir /s /q $(LIBDIR)\B
46ffdcf0 1185 -if exist $(LIBDIR)\Compress rmdir /s /q $(LIBDIR)\Compress
9e42cd94 1186 -if exist $(LIBDIR)\Data rmdir /s /q $(LIBDIR)\Data
ca67812f 1187 -if exist $(LIBDIR)\Encode rmdir /s /q $(LIBDIR)\Encode
9e42cd94 1188 -if exist $(LIBDIR)\Filter\Util rmdir /s /q $(LIBDIR)\Filter\Util
96c33d98 1189 -if exist $(LIBDIR)\Hash rmdir /s /q $(LIBDIR)\Hash
69f57184 1190 -if exist $(LIBDIR)\IO\Compress rmdir /s /q $(LIBDIR)\IO\Compress
69f57184 1191 -if exist $(LIBDIR)\IO\Socket rmdir /s /q $(LIBDIR)\IO\Socket
69f57184 1192 -if exist $(LIBDIR)\IO\Uncompress rmdir /s /q $(LIBDIR)\IO\Uncompress
69f57184 1193 -if exist $(LIBDIR)\List rmdir /s /q $(LIBDIR)\List
69f57184 1194 -if exist $(LIBDIR)\MIME rmdir /s /q $(LIBDIR)\MIME
9e42cd94 1195 -if exist $(LIBDIR)\Scalar rmdir /s /q $(LIBDIR)\Scalar
6c4b87ea 1196 -if exist $(LIBDIR)\Sys rmdir /s /q $(LIBDIR)\Sys
6c4b87ea 1197 -if exist $(LIBDIR)\threads rmdir /s /q $(LIBDIR)\threads
9e42cd94 1198 -if exist $(LIBDIR)\XS rmdir /s /q $(LIBDIR)\XS
ca67812f 1199 -cd $(PODDIR) && del /f *.html *.bat checkpods \
9e42cd94 1200 perlaix.pod perlamiga.pod perlapollo.pod perlbeos.pod \
b0b6bf2b 1201 perlbs2000.pod perlce.pod perlcn.pod perlcygwin.pod \
1400179b
NC
1202 perldelta.pod perldgux.pod perldos.pod perlepoc.pod \
1203 perlfreebsd.pod perlhpux.pod perlhurd.pod perlirix.pod \
6477b319
NC
1204 perljp.pod perlko.pod perllinux.pod perlmachten.pod \
1205 perlmacos.pod perlmacosx.pod perlmint.pod perlmpeix.pod \
1206 perlnetware.pod perlopenbsd.pod perlos2.pod perlos390.pod \
1207 perlos400.pod perlplan9.pod perlqnx.pod perlsolaris.pod \
1208 perlsymbian.pod perltru64.pod perltw.pod perluts.pod \
1209 perlvmesa.pod perlvms.pod perlvms.pod perlvos.pod perlwin32.pod \
b0b6bf2b 1210 pod2html pod2latex pod2man pod2text pod2usage \
9e42cd94 1211 podchecker podselect
ca67812f
SH
1212 -cd ..\utils && del /f h2ph splain perlbug pl2pm c2ph pstruct h2xs \
1213 perldoc perlivp dprofpp perlcc libnetcfg enc2xs piconv cpan *.bat \
bb4e9162 1214 xsubpp instmodsh prove ptar ptardiff shasum corelist config_data
ca67812f 1215 -cd ..\x2p && del /f find2perl s2p psed *.bat
9e42cd94
GS
1216 -del /f ..\config.sh ..\splittree.pl perlmain.c dlutils.c config.h.new
1217 -del /f $(CONFIGPM)
1218 -del /f bin\*.bat
322fd642 1219 -del /f perllibst.h
ec25c072 1220 -del /f $(PERLEXE_ICO) perl.base
ca67812f
SH
1221 -cd .. && del /s *.lib *.map *.pdb *.ilk *.bs *$(o) .exists pm_to_blib
1222 -cd $(EXTDIR) && del /s *.def Makefile Makefile.old
9e42cd94 1223 -if exist $(AUTODIR) rmdir /s /q $(AUTODIR)
9e42cd94 1224 -if exist $(COREDIR) rmdir /s /q $(COREDIR)
b4a41557
SH
1225 -if exist pod2htmd.tmp del pod2htmd.tmp
1226 -if exist pod2htmi.tmp del pod2htmi.tmp
1227 -if exist $(HTMLDIR) rmdir /s /q $(HTMLDIR)
9e42cd94
GS
1228
1229install : all installbare installhtml
1230
1231installbare : utils
1232 $(PERLEXE) ..\installperl
1233 if exist $(WPERLEXE) $(XCOPY) $(WPERLEXE) $(INST_BIN)\*.*
1234 $(XCOPY) $(GLOBEXE) $(INST_BIN)\*.*
ec25c072
SH
1235 if exist ..\perl*.pdb $(XCOPY) ..\perl*.pdb $(INST_BIN)\*.*
1236 if exist ..\x2p\a2p.pdb $(XCOPY) ..\x2p\a2p.pdb $(INST_BIN)\*.*
9e42cd94
GS
1237 $(XCOPY) bin\*.bat $(INST_SCRIPT)\*.*
1238
1239installhtml : doc
b4a41557 1240 $(RCOPY) $(HTMLDIR)\*.* $(INST_HTML)\*.*
9e42cd94
GS
1241
1242inst_lib : $(CONFIGPM)
1243 copy splittree.pl ..
1244 $(MINIPERL) -I..\lib ..\splittree.pl "../LIB" $(AUTODIR)
1245 $(RCOPY) ..\lib $(INST_LIB)\*.*
1246
ca12659b 1247$(UNIDATAFILES) : $(MINIPERL) $(CONFIGPM) ..\lib\unicore\mktables
27a8011f
SH
1248 cd ..\lib\unicore && \
1249 ..\$(MINIPERL) -I.. mktables
ca12659b
NC
1250
1251minitest : $(MINIPERL) $(GLOBEXE) $(CONFIGPM) utils $(UNIDATAFILES)
6c85d12e
SH
1252 $(XCOPY) $(MINIPERL) ..\t\$(NULL)
1253 if exist ..\t\perl.exe del /f ..\t\perl.exe
1254 rename ..\t\miniperl.exe perl.exe
9e42cd94
GS
1255 $(XCOPY) $(GLOBEXE) ..\t\$(NULL)
1256 attrib -r ..\t\*.*
6c85d12e
SH
1257 cd ..\t && \
1258 $(MINIPERL) -I..\lib harness base/*.t comp/*.t cmd/*.t io/*.t op/*.t pragma/*.t
9e42cd94
GS
1259
1260test-prep : all utils
1261 $(XCOPY) $(PERLEXE) ..\t\$(NULL)
1262 $(XCOPY) $(PERLDLL) ..\t\$(NULL)
1263 $(XCOPY) $(GLOBEXE) ..\t\$(NULL)
1264
1265test : test-prep
1266 cd ..\t
89087c85 1267 $(PERLEXE) -I..\lib harness $(TEST_SWITCHES) $(TEST_FILES)
9e42cd94
GS
1268 cd ..\win32
1269
1270test-notty : test-prep
1271 set PERL_SKIP_TTY_TEST=1
1272 cd ..\t
89087c85 1273 $(PERLEXE) -I..\lib harness $(TEST_SWITCHES) $(TEST_FILES)
9e42cd94
GS
1274 cd ..\win32
1275
b4a93add
NK
1276_test :
1277 $(XCOPY) $(PERLEXE) ..\t\$(NULL)
1278 $(XCOPY) $(PERLDLL) ..\t\$(NULL)
1279 $(XCOPY) $(GLOBEXE) ..\t\$(NULL)
1280 cd ..\t
89087c85 1281 $(PERLEXE) -I..\lib harness $(TEST_SWITCHES) $(TEST_FILES)
b4a93add
NK
1282 cd ..\win32
1283
b4dc1df6 1284_clean :
9e42cd94
GS
1285 -@$(DEL) miniperlmain$(o)
1286 -@$(DEL) $(MINIPERL)
1287 -@$(DEL) perlglob$(o)
1288 -@$(DEL) perlmain$(o)
1289 -@$(DEL) config.w32
1290 -@$(DEL) config.h
1291 -@$(DEL) $(GLOBEXE)
1292 -@$(DEL) $(PERLEXE)
1293 -@$(DEL) $(WPERLEXE)
1294 -@$(DEL) $(PERLDLL)
1295 -@$(DEL) $(CORE_OBJ)
1296 -if exist $(MINIDIR) rmdir /s /q $(MINIDIR)
27a8011f 1297 -if exist $(UNIDATADIR1) rmdir /s /q $(UNIDATADIR1)
27a8011f 1298 -if exist $(UNIDATADIR2) rmdir /s /q $(UNIDATADIR2)
ca12659b 1299 -@$(DEL) $(UNIDATAFILES)
27a8011f 1300 -@$(DEL) $(WIN32_OBJ)
9e42cd94
GS
1301 -@$(DEL) $(DLL_OBJ)
1302 -@$(DEL) $(X2P_OBJ)
1303 -@$(DEL) ..\*$(o) ..\*.lib ..\*.exp *$(o) *.lib *.exp *.res
1304 -@$(DEL) ..\t\*.exe ..\t\*.dll ..\t\*.bat
1305 -@$(DEL) ..\x2p\*.exe ..\x2p\*.bat
1306 -@$(DEL) *.ilk
1307 -@$(DEL) *.pdb
9e7cf449 1308 -@$(DEL) Extensions_static
9e42cd94 1309
b4dc1df6
SH
1310clean : Extensions_clean _clean
1311
1312realclean : Extensions_realclean _clean
1313
9e42cd94
GS
1314# Handy way to run perlbug -ok without having to install and run the
1315# installed perlbug. We don't re-run the tests here - we trust the user.
1316# Please *don't* use this unless all tests pass.
1317# If you want to report test failures, use "nmake nok" instead.
1318ok: utils
1319 $(PERLEXE) -I..\lib ..\utils\perlbug -ok -s "(UNINSTALLED)"
1320
1321okfile: utils
1322 $(PERLEXE) -I..\lib ..\utils\perlbug -ok -s "(UNINSTALLED)" -F perl.ok
1323
1324nok: utils
1325 $(PERLEXE) -I..\lib ..\utils\perlbug -nok -s "(UNINSTALLED)"
1326
1327nokfile: utils
1328 $(PERLEXE) -I..\lib ..\utils\perlbug -nok -s "(UNINSTALLED)" -F perl.nok