add workaround for textmode read() bug in MSVCRT; make chdir() do
[p5sagit/p5-mst-13.2.git] / win32 / makefile.mk
CommitLineData
08aa1457 1#
e7083a8c 2# Makefile to build perl on Windows NT using DMAKE.
d56e6723 3# Supported compilers:
5db10396 4# Visual C++ 2.0 thro 6.0
d56e6723 5# Borland C++ 5.02
5db10396 6# Mingw32 with gcc-2.95.2 or better **experimental**
08aa1457 7#
8# This is set up to build a perl.exe that runs off a shared library
9# (perl.dll). Also makes individual DLLs for the XS extensions.
10#
11
e7083a8c 12##
69e1fe5e 13## Make sure you read README.win32 *before* you mess with anything here!
14##
15
16##
e7083a8c 17## Build configuration. Edit the values below to suit your needs.
18##
19
08aa1457 20#
7a958ec3 21# Set these to wherever you want "dmake install" to put your
08aa1457 22# newly built perl.
e7083a8c 23#
d56e6723 24INST_DRV *= c:
e5a95ffb 25INST_TOP *= $(INST_DRV)\perl
26
e7083a8c 27#
e5a95ffb 28# Comment this out if you DON'T want your perl installation to be versioned.
29# This means that the new installation will overwrite any files from the
30# old installation at the same INST_TOP location. Leaving it enabled is
31# the safest route, as perl adds the extra version directory to all the
32# locations it installs files to. If you disable it, an alternative
33# versioned installation can be obtained by setting INST_TOP above to a
34# path that includes an arbitrary version string.
e7083a8c 35#
273cf8d1 36INST_VER *= \5.5.640
d56e6723 37
38#
0cb96387 39# Comment this out if you DON'T want your perl installation to have
40# architecture specific components. This means that architecture-
41# specific files will be installed along with the architecture-neutral
42# files. Leaving it enabled is safer and more flexible, in case you
43# want to build multiple flavors of perl and install them together in
44# the same location. Commenting it out gives you a simpler
45# installation that is easier to understand for beginners.
46#
47INST_ARCH *= \$(ARCHNAME)
48
49#
c5be433b 50# XXX WARNING! This option currently undergoing changes. May be broken.
51#
d07c2202 52# uncomment to enable threads-capabilities
e7083a8c 53#
aaacdc8b 54#USE_5005THREADS *= define
08aa1457 55
56#
c5be433b 57# XXX WARNING! This option currently undergoing changes. May be broken.
58#
b86a2fa7 59# uncomment to enable multiple interpreters
60#
61#USE_MULTI *= define
62
63#
c5be433b 64# XXX WARNING! This option currently undergoing changes. May be broken.
65#
66# uncomment next line if you want to use the perl object
67# Currently, this cannot be enabled if you ask for threads above, or
68# if you are using GCC or EGCS.
69#
70#USE_OBJECT *= define
71
72#
7766f137 73# XXX WARNING! This option currently undergoing changes. May be broken.
74#
75# Beginnings of interpreter cloning/threads: still rather rough, fails
76# tests. This should be enabled to get the fork() emulation. Do not
77# enable unless you know what you're doing!
78#
4ce4f76e 79#USE_ITHREADS *= define
7766f137 80
81#
82# uncomment to enable the implicit "host" layer for all system calls
83# made by perl. This is needed and auto-enabled by USE_OBJECT above.
5db10396 84# This is also needed to get fork().
7766f137 85#
4ce4f76e 86#USE_IMP_SYS *= define
7766f137 87
88#
7fac1903 89# uncomment exactly one of the following
90#
91# Visual C++ 2.x
d56e6723 92#CCTYPE *= MSVC20
7fac1903 93# Visual C++ > 2.x and < 6.x
d56e6723 94#CCTYPE *= MSVC
7fac1903 95# Visual C++ >= 6.x
96#CCTYPE *= MSVC60
97# Borland 5.02 or later
4a52a3da 98CCTYPE *= BORLAND
5db10396 99# mingw32/gcc-2.95.2 or better
4a52a3da 100#CCTYPE *= GCC
08aa1457 101
102#
04dc9db9 103# uncomment this if you are compiling under Windows 95/98 and command.com
104# (not needed if you're running under 4DOS/NT 6.01 or later)
105#IS_WIN95 *= define
106
107#
08aa1457 108# uncomment next line if you want debug version of perl (big,slow)
7fac1903 109# If not enabled, we automatically try to use maximum optimization
110# with all compilers that are known to have a working optimizer.
e7083a8c 111#
d56e6723 112#CFG *= Debug
08aa1457 113
114#
5db10396 115# uncomment to enable use of PerlCRT.DLL when using the Visual C compiler.
116# It has patches that fix known bugs in older versions of MSVCRT.DLL.
117# This currently requires VC 5.0 with Service Pack 3 or later.
b89743e8 118# Get it from CPAN at http://www.perl.com/CPAN/authors/id/D/DO/DOUGL/
e9ee4811 119# and follow the directions in the package to install.
e7083a8c 120#
f7aeb604 121# Not recommended if you have VC 6.x and you're not running Windows 9x.
122#
e7083a8c 123#USE_PERLCRT *= define
124
125#
baed7233 126# uncomment to enable linking with setargv.obj under the Visual C
127# compiler. Setting this options enables perl to expand wildcards in
128# arguments, but it may be harder to use alternate methods like
129# File::DosGlob that are more powerful. This option is supported only with
130# Visual C.
131#
132#USE_SETARGV *= define
133
134#
26618a56 135# if you have the source for des_fcrypt(), uncomment this and make sure the
8d9b2e3c 136# file exists (see README.win32). File should be located in the same
ff95b63e 137# directory as this file.
e7083a8c 138#
2d77217b 139#CRYPT_SRC *= fcrypt.c
26618a56 140
141#
142# if you didn't set CRYPT_SRC and if you have des_fcrypt() available in a
143# library, uncomment this, and make sure the library exists (see README.win32)
a1dd9325 144# Specify the full pathname of the library.
e7083a8c 145#
2d77217b 146#CRYPT_LIB *= fcrypt.lib
26618a56 147
148#
1c1c7f20 149# set this if you wish to use perl's malloc
150# WARNING: Turning this on/off WILL break binary compatibility with extensions
5fd76c3e 151# you may have compiled with/without it. Be prepared to recompile all
152# extensions if you change the default. Currently, this cannot be enabled
c5be433b 153# if you ask for USE_OBJECT above.
e7083a8c 154#
ac4c12e7 155#PERL_MALLOC *= define
1c1c7f20 156
157#
08aa1457 158# set the install locations of the compiler include/libraries
69e1fe5e 159# Running VCVARS32.BAT is *required* when using Visual C.
95883bf3 160# Some versions of Visual C don't define MSVCDIR in the environment,
80252599 161# so you may have to set CCHOME explicitly (spaces in the path name should
162# not be quoted)
a8deba26 163#
fd9459bc 164CCHOME *= c:\bc5
95883bf3 165#CCHOME *= $(MSVCDIR)
4a52a3da 166#CCHOME *= D:\packages\mingw32
d56e6723 167CCINCDIR *= $(CCHOME)\include
168CCLIBDIR *= $(CCHOME)\lib
08aa1457 169
170#
c39cd008 171# Additional compiler flags can be specified here.
e02fdbd2 172#
c39cd008 173
174#
175# This should normally be disabled. Adding -DPERL_POLLUTE enables support
176# for old symbols by default, at the expense of extreme pollution. You most
177# probably just want to build modules that won't compile with
178# perl Makefile.PL POLLUTE=1
179# instead of enabling this. Please report such modules to the respective
180# authors.
e02fdbd2 181#
c5be433b 182#BUILDOPT += -DPERL_POLLUTE
e02fdbd2 183
184#
c39cd008 185# This should normally be disabled. Enabling it will disable the File::Glob
186# implementation of CORE::glob.
a7089531 187#
52bb0670 188#BUILDOPT += -DPERL_EXTERNAL_GLOB
a7089531 189
c39cd008 190#
191# This should normally be disabled. Enabling it causes perl to read scripts
192# in text mode (which is the 5.005 behavior) and will break ByteLoader.
e68cb057 193#BUILDOPT += -DPERL_TEXTMODE_SCRIPTS
5db10396 194
c39cd008 195#
196# This should normally be disabled. Enabling it runs a cloned toplevel
197# interpreter (*EXPERIMENTAL*, fails tests)
7766f137 198#BUILDOPT += -DTOP_CLONE
199
a7089531 200#
80252599 201# specify semicolon-separated list of extra directories that modules will
202# look for libraries (spaces in path names need not be quoted)
fa4efe8e 203#
204EXTRALIBDIRS *=
205
206#
08aa1457 207# set this to point to cmd.exe (only needed if you use some
208# alternate shell that doesn't grok cmd.exe style commands)
e7083a8c 209#
d56e6723 210#SHELL *= g:\winnt\system32\cmd.exe
08aa1457 211
212#
213# set this to your email address (perl will guess a value from
214# from your loginname and your hostname, which may not be right)
e7083a8c 215#
0b94c7bb 216#EMAIL *=
08aa1457 217
e7083a8c 218##
219## Build configuration ends.
220##
221
08aa1457 222##################### CHANGE THESE ONLY IF YOU MUST #####################
223
26618a56 224.IF "$(CRYPT_SRC)$(CRYPT_LIB)" == ""
eb480a0b 225D_CRYPT = undef
26618a56 226.ELSE
eb480a0b 227D_CRYPT = define
228CRYPT_FLAG = -DHAVE_DES_FCRYPT
26618a56 229.ENDIF
230
c5be433b 231.IF "$(USE_OBJECT)" == "define"
eb480a0b 232PERL_MALLOC != undef
aaacdc8b 233USE_5005THREADS != undef
b86a2fa7 234USE_MULTI != undef
7766f137 235USE_IMP_SYS != define
1c1c7f20 236.ENDIF
237
eb480a0b 238PERL_MALLOC *= undef
239
aaacdc8b 240USE_5005THREADS *= undef
7766f137 241
aaacdc8b 242.IF "$(USE_5005THREADS)" == "define"
7766f137 243USE_ITHREADS != undef
244.ENDIF
245
b86a2fa7 246USE_MULTI *= undef
3bb366e1 247USE_OBJECT *= undef
7766f137 248USE_ITHREADS *= undef
249USE_IMP_SYS *= undef
f7aeb604 250USE_PERLCRT *= undef
eb480a0b 251
aaacdc8b 252.IF "$(USE_MULTI)$(USE_5005THREADS)$(USE_OBJECT)" != "undefundefundef"
0b94c7bb 253BUILDOPT += -DPERL_IMPLICIT_CONTEXT
254.ENDIF
255
7766f137 256.IF "$(USE_IMP_SYS)" != "undef"
257BUILDOPT += -DPERL_IMPLICIT_SYS
258.ENDIF
0b94c7bb 259
d07c2202 260.IMPORT .IGNORE : PROCESSOR_ARCHITECTURE
261
262PROCESSOR_ARCHITECTURE *= x86
263
c5be433b 264.IF "$(USE_OBJECT)" == "define"
b83ac84c 265ARCHNAME = MSWin32-$(PROCESSOR_ARCHITECTURE)-object
aaacdc8b 266.ELIF "$(USE_5005THREADS)" == "define"
d07c2202 267ARCHNAME = MSWin32-$(PROCESSOR_ARCHITECTURE)-thread
c5be433b 268.ELIF "$(USE_MULTI)" == "define"
269ARCHNAME = MSWin32-$(PROCESSOR_ARCHITECTURE)-multi
924b3ec4 270.ELSE
271ARCHNAME = MSWin32-$(PROCESSOR_ARCHITECTURE)
d07c2202 272.ENDIF
273
aaacdc8b 274.IF "$(USE_OBJECT)" == "define"
275ARCHNAME = $(ARCHNAME)-thread
276.ENDIF
277
7fac1903 278# Visual Studio 98 specific
279.IF "$(CCTYPE)" == "MSVC60"
280
281# VC 6.0 can load the socket dll on demand. Makes the test suite
282# run in about 10% less time.
283DELAYLOAD *= -DELAYLOAD:wsock32.dll delayimp.lib
284
285# VC 6.0 seems capable of compiling perl correctly with optimizations
286# enabled. Anything earlier fails tests.
287CFG *= Optimize
288.ENDIF
289
28004758 290ARCHDIR = ..\lib\$(ARCHNAME)
d07c2202 291COREDIR = ..\lib\CORE
eb480a0b 292AUTODIR = ..\lib\auto
28004758 293LIBDIR = ..\lib
294EXTDIR = ..\ext
295PODDIR = ..\pod
296EXTUTILSDIR = $(LIBDIR)\ExtUtils
297
298#
299INST_SCRIPT = $(INST_TOP)$(INST_VER)\bin
300INST_BIN = $(INST_SCRIPT)$(INST_ARCH)
301INST_LIB = $(INST_TOP)$(INST_VER)\lib
302INST_ARCHLIB = $(INST_LIB)$(INST_ARCH)
303INST_COREDIR = $(INST_ARCHLIB)\CORE
304INST_POD = $(INST_LIB)\pod
305INST_HTML = $(INST_POD)\html
d07c2202 306
08aa1457 307#
308# Programs to compile, build .lib files and link
309#
310
311.USESHELL :
312
313.IF "$(CCTYPE)" == "BORLAND"
314
eb480a0b 315CC = bcc32
316LINK32 = tlink32
064a70d4 317LIB32 = tlib /P128
eb480a0b 318IMPLIB = implib -c
fd9459bc 319RSC = rc
08aa1457 320
321#
322# Options
323#
eb480a0b 324RUNTIME = -D_RTLDLL
80252599 325INCLUDES = -I$(COREDIR) -I.\include -I. -I.. -I"$(CCINCDIR)"
eb480a0b 326#PCHFLAGS = -H -Hc -H=c:\temp\bcmoduls.pch
c5be433b 327DEFINES = -DWIN32 $(CRYPT_FLAG)
eb480a0b 328LOCDEFS = -DPERLDLL -DPERL_CORE
329SUBSYS = console
330CXX_FLAG = -P
08aa1457 331
eb480a0b 332LIBC = cw32mti.lib
333LIBFILES = $(CRYPT_LIB) import32.lib $(LIBC) odbc32.lib odbccp32.lib
08aa1457 334
335.IF "$(CFG)" == "Debug"
eb480a0b 336OPTIMIZE = -v $(RUNTIME) -DDEBUGGING
337LINK_DBG = -v
08aa1457 338.ELSE
6a6688c3 339OPTIMIZE = -O2 $(RUNTIME)
eb480a0b 340LINK_DBG =
08aa1457 341.ENDIF
342
a88c3d7c 343CFLAGS = -w -g0 -tWM -tWD $(INCLUDES) $(DEFINES) $(LOCDEFS) \
eb480a0b 344 $(PCHFLAGS) $(OPTIMIZE)
28004758 345LINK_FLAGS = $(LINK_DBG) -L"$(INST_COREDIR)" -L"$(CCLIBDIR)"
eb480a0b 346OBJOUT_FLAG = -o
347EXEOUT_FLAG = -e
064a70d4 348LIBOUT_FLAG =
d56e6723 349
350.ELIF "$(CCTYPE)" == "GCC"
351
3b657871 352CC = gcc
353LINK32 = gcc
064a70d4 354LIB32 = ar rc
eb480a0b 355IMPLIB = dlltool
fd9459bc 356RSC = rc
d56e6723 357
358o = .o
eda5ff31 359a = .a
d56e6723 360
361#
362# Options
363#
7a958ec3 364
5db10396 365RUNTIME =
9036c72f 366INCLUDES = -I$(COREDIR) -I.\include -I. -I..
c5be433b 367DEFINES = -DWIN32 $(CRYPT_FLAG)
eb480a0b 368LOCDEFS = -DPERLDLL -DPERL_CORE
369SUBSYS = console
370CXX_FLAG = -xc++
d56e6723 371
5db10396 372LIBC = -lmsvcrt
7a958ec3 373
5db10396 374# same libs as MSVC
375LIBFILES = $(CRYPT_LIB) $(LIBC) \
376 -lmoldname -lkernel32 -luser32 -lgdi32 \
377 -lwinspool -lcomdlg32 -ladvapi32 -lshell32 -lole32 \
378 -loleaut32 -lnetapi32 -luuid -lwsock32 -lmpr \
379 -lwinmm -lversion -lodbc32
d56e6723 380
381.IF "$(CFG)" == "Debug"
2b260de0 382OPTIMIZE = -g $(RUNTIME) -DDEBUGGING
eb480a0b 383LINK_DBG = -g
d56e6723 384.ELSE
eb480a0b 385OPTIMIZE = -g -O2 $(RUNTIME)
386LINK_DBG =
d56e6723 387.ENDIF
388
eb480a0b 389CFLAGS = $(INCLUDES) $(DEFINES) $(LOCDEFS) $(OPTIMIZE)
28004758 390LINK_FLAGS = $(LINK_DBG) -L"$(INST_COREDIR)" -L"$(CCLIBDIR)"
eb480a0b 391OBJOUT_FLAG = -o
392EXEOUT_FLAG = -o
064a70d4 393LIBOUT_FLAG =
08aa1457 394
395.ELSE
396
045453ec 397CC = cl
398LINK32 = link
eb480a0b 399LIB32 = $(LINK32) -lib
fd9459bc 400RSC = rc
eb480a0b 401
08aa1457 402#
403# Options
404#
eb480a0b 405
af883608 406RUNTIME = -MD
9036c72f 407INCLUDES = -I$(COREDIR) -I.\include -I. -I..
eb480a0b 408#PCHFLAGS = -Fpc:\temp\vcmoduls.pch -YX
c5be433b 409DEFINES = -DWIN32 -D_CONSOLE -DNO_STRICT $(CRYPT_FLAG)
eb480a0b 410LOCDEFS = -DPERLDLL -DPERL_CORE
411SUBSYS = console
412CXX_FLAG = -TP -GX
08aa1457 413
f7aeb604 414.IF "$(USE_PERLCRT)" != "define"
e7083a8c 415.IF "$(CFG)" == "Debug"
416PERLCRTLIBC = msvcrtd.lib
417.ELSE
418PERLCRTLIBC = msvcrt.lib
419.ENDIF
420.ELSE
421.IF "$(CFG)" == "Debug"
422PERLCRTLIBC = PerlCRTD.lib
423.ELSE
424PERLCRTLIBC = PerlCRT.lib
425.ENDIF
426.ENDIF
427
fd9459bc 428PERLEXE_RES =
429PERLDLL_RES =
430
08aa1457 431.IF "$(RUNTIME)" == "-MD"
e7083a8c 432LIBC = $(PERLCRTLIBC)
08aa1457 433.ELSE
eb480a0b 434LIBC = libcmt.lib
08aa1457 435.ENDIF
436
437.IF "$(CFG)" == "Debug"
438.IF "$(CCTYPE)" == "MSVC20"
eb480a0b 439OPTIMIZE = -Od $(RUNTIME) -Z7 -D_DEBUG -DDEBUGGING
08aa1457 440.ELSE
3dfd1da1 441OPTIMIZE = -Od $(RUNTIME)d -Zi -D_DEBUG -DDEBUGGING
08aa1457 442.ENDIF
eb480a0b 443LINK_DBG = -debug -pdb:none
08aa1457 444.ELSE
74593e1f 445.IF "$(CFG)" == "Optimize"
c5be433b 446# -O1 yields smaller code, which turns out to be faster than -O2
447#OPTIMIZE = -O2 $(RUNTIME) -DNDEBUG
448OPTIMIZE = -O1 $(RUNTIME) -DNDEBUG
08aa1457 449.ELSE
af883608 450OPTIMIZE = -Od $(RUNTIME) -DNDEBUG
08aa1457 451.ENDIF
eb480a0b 452LINK_DBG = -release
08aa1457 453.ENDIF
454
7fac1903 455LIBBASEFILES = $(DELAYLOAD) $(CRYPT_LIB) \
f7aeb604 456 oldnames.lib kernel32.lib user32.lib gdi32.lib winspool.lib \
457 comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib \
458 netapi32.lib uuid.lib wsock32.lib mpr.lib winmm.lib \
459 version.lib odbc32.lib odbccp32.lib
08aa1457 460
e7083a8c 461# we add LIBC here, since we may be using PerlCRT.dll
462LIBFILES = $(LIBBASEFILES) $(LIBC)
463
eb480a0b 464CFLAGS = -nologo -Gf -W3 $(INCLUDES) $(DEFINES) $(LOCDEFS) \
465 $(PCHFLAGS) $(OPTIMIZE)
28004758 466LINK_FLAGS = -nologo -nodefaultlib $(LINK_DBG) \
467 -libpath:"$(INST_COREDIR)" \
468 -machine:$(PROCESSOR_ARCHITECTURE)
eb480a0b 469OBJOUT_FLAG = -Fo
470EXEOUT_FLAG = -Fe
064a70d4 471LIBOUT_FLAG = /out:
08aa1457 472
f7aeb604 473.IF "$(USE_PERLCRT)" != "define"
474BUILDOPT += -DPERL_MSVCRT_READFIX
475.ENDIF
476
08aa1457 477.ENDIF
478
c5be433b 479.IF "$(USE_OBJECT)" == "define"
eb480a0b 480OPTIMIZE += $(CXX_FLAG)
c5be433b 481BUILDOPT += -DPERL_OBJECT
eb480a0b 482.ENDIF
483
c5be433b 484CFLAGS_O = $(CFLAGS) $(BUILDOPT)
eb480a0b 485
5db10396 486# used to allow local linking flags that are not propogated into Config.pm,
487# currently unused
488# -- BKS, 12-12-1999
7a958ec3 489PRIV_LINK_FLAGS *=
490BLINK_FLAGS = $(PRIV_LINK_FLAGS) $(LINK_FLAGS)
491
08aa1457 492#################### do not edit below this line #######################
493############# NO USER-SERVICEABLE PARTS BEYOND THIS POINT ##############
494
d56e6723 495o *= .obj
eda5ff31 496a *= .lib
d56e6723 497
eb480a0b 498LKPRE = INPUT (
499LKPOST = )
500
08aa1457 501#
502# Rules
503#
08aa1457 504
fd9459bc 505.SUFFIXES : .c $(o) .dll $(a) .exe .rc .res
d56e6723 506
507.c$(o):
eb480a0b 508 $(CC) -c $(null,$(<:d) $(NULL) -I$(<:d)) $(CFLAGS_O) $(OBJOUT_FLAG)$@ $<
d07c2202 509
510.y.c:
511 $(NOOP)
08aa1457 512
d56e6723 513$(o).dll:
08aa1457 514.IF "$(CCTYPE)" == "BORLAND"
7a958ec3 515 $(LINK32) -Tpd -ap $(BLINK_FLAGS) c0d32$(o) $<,$@,,$(LIBFILES),$(*B).def
08aa1457 516 $(IMPLIB) $(*B).lib $@
d56e6723 517.ELIF "$(CCTYPE)" == "GCC"
7a958ec3 518 $(LINK32) -o $@ $(BLINK_FLAGS) $< $(LIBFILES)
5db10396 519 $(IMPLIB) --input-def $(*B).def --output-lib $(*B).a $@
08aa1457 520.ELSE
08aa1457 521 $(LINK32) -dll -subsystem:windows -implib:$(*B).lib -def:$(*B).def \
7a958ec3 522 -out:$@ $(BLINK_FLAGS) $(LIBFILES) $< $(LIBPERL)
08aa1457 523.ENDIF
524
fd9459bc 525.rc.res:
526 $(RSC) $<
527
08aa1457 528#
08aa1457 529# various targets
eb480a0b 530MINIPERL = ..\miniperl.exe
531MINIDIR = .\mini
532PERLEXE = ..\perl.exe
7766f137 533WPERLEXE = ..\wperl.exe
eb480a0b 534GLOBEXE = ..\perlglob.exe
535CONFIGPM = ..\lib\Config.pm
536MINIMOD = ..\lib\ExtUtils\Miniperl.pm
537X2P = ..\x2p\a2p.exe
538
539PL2BAT = bin\pl2bat.pl
540GLOBBAT = bin\perlglob.bat
08aa1457 541
4a71ed0c 542UTILS = \
543 ..\utils\h2ph \
544 ..\utils\splain \
95667ae4 545 ..\utils\dprofpp \
4a71ed0c 546 ..\utils\perlbug \
547 ..\utils\pl2pm \
548 ..\utils\c2ph \
549 ..\utils\h2xs \
550 ..\utils\perldoc \
4a71ed0c 551 ..\utils\perlcc \
552 ..\pod\checkpods \
553 ..\pod\pod2html \
554 ..\pod\pod2latex \
555 ..\pod\pod2man \
556 ..\pod\pod2text \
360aca43 557 ..\pod\pod2usage \
558 ..\pod\podchecker \
559 ..\pod\podselect \
4a71ed0c 560 ..\x2p\find2perl \
561 ..\x2p\s2p \
4a71ed0c 562 bin\runperl.pl \
563 bin\pl2bat.pl \
564 bin\perlglob.pl \
565 bin\search.pl
566
08aa1457 567.IF "$(CCTYPE)" == "BORLAND"
568
eb480a0b 569CFGSH_TMPL = config.bc
570CFGH_TMPL = config_H.bc
d56e6723 571
572.ELIF "$(CCTYPE)" == "GCC"
573
eb480a0b 574CFGSH_TMPL = config.gc
575CFGH_TMPL = config_H.gc
c5be433b 576.IF "$(USE_OBJECT)" == "define"
db15561c 577PERLIMPLIB = ..\libperlcore$(a)
578.ELSE
579PERLIMPLIB = ..\libperl$(a)
580.ENDIF
08aa1457 581
582.ELSE
583
eb480a0b 584CFGSH_TMPL = config.vc
585CFGH_TMPL = config_H.vc
f7aeb604 586.IF "$(USE_PERLCRT)" != "define"
eb480a0b 587PERL95EXE = ..\perl95.exe
e7083a8c 588.ENDIF
08aa1457 589
590.ENDIF
591
c5be433b 592.IF "$(USE_OBJECT)" == "define"
3075ddba 593PERLIMPLIB *= ..\perl56$(a)
594PERLDLL = ..\perl56.dll
eda5ff31 595.ELSE
596PERLIMPLIB *= ..\perl$(a)
597PERLDLL = ..\perl.dll
eda5ff31 598.ENDIF
599
eb480a0b 600XCOPY = xcopy /f /r /i /d
601RCOPY = xcopy /f /r /i /e /d
602NOOP = @echo
08aa1457 603
eb480a0b 604#
605# filenames given to xsubpp must have forward slashes (since it puts
606# full pathnames in #line strings)
607XSUBPP = ..\$(MINIPERL) -I..\..\lib ..\$(EXTUTILSDIR)\xsubpp \
608 -C++ -prototypes
609
852c2e52 610MICROCORE_SRC = \
eb480a0b 611 ..\av.c \
eb480a0b 612 ..\deb.c \
613 ..\doio.c \
614 ..\doop.c \
615 ..\dump.c \
616 ..\globals.c \
617 ..\gv.c \
618 ..\hv.c \
619 ..\mg.c \
620 ..\op.c \
621 ..\perl.c \
c5be433b 622 ..\perlapi.c \
eb480a0b 623 ..\perly.c \
624 ..\pp.c \
625 ..\pp_ctl.c \
626 ..\pp_hot.c \
627 ..\pp_sys.c \
628 ..\regcomp.c \
629 ..\regexec.c \
630 ..\run.c \
631 ..\scope.c \
632 ..\sv.c \
633 ..\taint.c \
634 ..\toke.c \
635 ..\universal.c \
a176fa2a 636 ..\utf8.c \
349fd7b7 637 ..\util.c \
638 ..\xsutils.c
eb480a0b 639
c5be433b 640EXTRACORE_SRC += perllib.c
641
1c1c7f20 642.IF "$(PERL_MALLOC)" == "define"
852c2e52 643EXTRACORE_SRC += ..\malloc.c
1c1c7f20 644.ENDIF
645
c5be433b 646.IF "$(USE_OBJECT)" != "define"
852c2e52 647EXTRACORE_SRC += ..\perlio.c
eb480a0b 648.ENDIF
649
650WIN32_SRC = \
651 .\win32.c \
652 .\win32sck.c
653
aaacdc8b 654.IF "$(USE_5005THREADS)" == "define"
eb480a0b 655WIN32_SRC += .\win32thread.c
656.ENDIF
657
8d9b2e3c 658.IF "$(CRYPT_SRC)" != ""
659WIN32_SRC += .\$(CRYPT_SRC)
660.ENDIF
661
eb480a0b 662PERL95_SRC = \
663 perl95.c \
664 win32mt.c \
665 win32sckmt.c
666
a1dd9325 667.IF "$(CRYPT_SRC)" != ""
8d9b2e3c 668PERL95_SRC += .\$(CRYPT_SRC)
a1dd9325 669.ENDIF
670
eb480a0b 671DLL_SRC = $(DYNALOADER).c
672
eb480a0b 673X2P_SRC = \
674 ..\x2p\a2p.c \
675 ..\x2p\hash.c \
676 ..\x2p\str.c \
677 ..\x2p\util.c \
678 ..\x2p\walk.c
679
852c2e52 680CORE_NOCFG_H = \
eb480a0b 681 ..\av.h \
eb480a0b 682 ..\cop.h \
683 ..\cv.h \
684 ..\dosish.h \
685 ..\embed.h \
686 ..\form.h \
687 ..\gv.h \
688 ..\handy.h \
689 ..\hv.h \
0f4eea8f 690 ..\iperlsys.h \
eb480a0b 691 ..\mg.h \
692 ..\nostdio.h \
693 ..\op.h \
694 ..\opcode.h \
695 ..\perl.h \
c5be433b 696 ..\perlapi.h \
eb480a0b 697 ..\perlsdio.h \
698 ..\perlsfio.h \
699 ..\perly.h \
700 ..\pp.h \
701 ..\proto.h \
702 ..\regexp.h \
703 ..\scope.h \
704 ..\sv.h \
705 ..\thread.h \
706 ..\unixish.h \
a176fa2a 707 ..\utf8.h \
eb480a0b 708 ..\util.h \
2985053f 709 ..\warnings.h \
eb480a0b 710 ..\XSUB.h \
eb480a0b 711 ..\EXTERN.h \
712 ..\perlvars.h \
713 ..\intrpvar.h \
714 ..\thrdvar.h \
715 .\include\dirent.h \
716 .\include\netdb.h \
717 .\include\sys\socket.h \
7766f137 718 .\win32.h \
719 .\perlhost.h \
720 .\vdir.h \
721 .\vmem.h
eb480a0b 722
852c2e52 723CORE_H = $(CORE_NOCFG_H) .\config.h
724
725MICROCORE_OBJ = $(MICROCORE_SRC:db:+$(o))
726CORE_OBJ = $(MICROCORE_OBJ) $(EXTRACORE_SRC:db:+$(o))
eb480a0b 727WIN32_OBJ = $(WIN32_SRC:db:+$(o))
5fd76c3e 728MINICORE_OBJ = $(MINIDIR)\{$(MICROCORE_OBJ:f) miniperlmain$(o) perlio$(o)}
eb480a0b 729MINIWIN32_OBJ = $(MINIDIR)\{$(WIN32_OBJ:f)}
730MINI_OBJ = $(MINICORE_OBJ) $(MINIWIN32_OBJ)
af883608 731PERL95_OBJ = $(PERL95_SRC:db:+$(o))
eb480a0b 732DLL_OBJ = $(DLL_SRC:db:+$(o))
733X2P_OBJ = $(X2P_SRC:db:+$(o))
734
eb480a0b 735PERLDLL_OBJ = $(CORE_OBJ)
736PERLEXE_OBJ = perlmain$(o)
737
eb480a0b 738PERLDLL_OBJ += $(WIN32_OBJ) $(DLL_OBJ)
eb480a0b 739
baed7233 740.IF "$(USE_SETARGV)" != ""
741SETARGV_OBJ = setargv$(o)
742.ENDIF
743
823edd99 744DYNAMIC_EXT = Socket IO Fcntl Opcode SDBM_File POSIX attrs Thread B re \
4f49e16e 745 Data/Dumper Devel/Peek ByteLoader Devel/DProf File/Glob
eb480a0b 746STATIC_EXT = DynaLoader
eab60bb1 747NONXS_EXT = Errno
eb480a0b 748
749DYNALOADER = $(EXTDIR)\DynaLoader\DynaLoader
750SOCKET = $(EXTDIR)\Socket\Socket
751FCNTL = $(EXTDIR)\Fcntl\Fcntl
752OPCODE = $(EXTDIR)\Opcode\Opcode
753SDBM_FILE = $(EXTDIR)\SDBM_File\SDBM_File
754IO = $(EXTDIR)\IO\IO
755POSIX = $(EXTDIR)\POSIX\POSIX
756ATTRS = $(EXTDIR)\attrs\attrs
757THREAD = $(EXTDIR)\Thread\Thread
758B = $(EXTDIR)\B\B
15e52e56 759RE = $(EXTDIR)\re\re
823edd99 760DUMPER = $(EXTDIR)\Data\Dumper\Dumper
eab60bb1 761ERRNO = $(EXTDIR)\Errno\Errno
3967c732 762PEEK = $(EXTDIR)\Devel\Peek\Peek
a6c40364 763BYTELOADER = $(EXTDIR)\ByteLoader\ByteLoader
38b3a85b 764DPROF = $(EXTDIR)\Devel\DProf\DProf
4f49e16e 765GLOB = $(EXTDIR)\File\Glob\Glob
eb480a0b 766
767SOCKET_DLL = $(AUTODIR)\Socket\Socket.dll
768FCNTL_DLL = $(AUTODIR)\Fcntl\Fcntl.dll
769OPCODE_DLL = $(AUTODIR)\Opcode\Opcode.dll
770SDBM_FILE_DLL = $(AUTODIR)\SDBM_File\SDBM_File.dll
771IO_DLL = $(AUTODIR)\IO\IO.dll
772POSIX_DLL = $(AUTODIR)\POSIX\POSIX.dll
773ATTRS_DLL = $(AUTODIR)\attrs\attrs.dll
774THREAD_DLL = $(AUTODIR)\Thread\Thread.dll
775B_DLL = $(AUTODIR)\B\B.dll
823edd99 776DUMPER_DLL = $(AUTODIR)\Data\Dumper\Dumper.dll
3967c732 777PEEK_DLL = $(AUTODIR)\Devel\Peek\Peek.dll
15e52e56 778RE_DLL = $(AUTODIR)\re\re.dll
b295d113 779BYTELOADER_DLL = $(AUTODIR)\ByteLoader\ByteLoader.dll
38b3a85b 780DPROF_DLL = $(AUTODIR)\Devel\DProf\DProf.dll
4f49e16e 781GLOB_DLL = $(AUTODIR)\File\Glob\Glob.dll
eb480a0b 782
eab60bb1 783ERRNO_PM = $(LIBDIR)\Errno.pm
784
ac4c12e7 785EXTENSION_C = \
eb480a0b 786 $(SOCKET).c \
787 $(FCNTL).c \
788 $(OPCODE).c \
789 $(SDBM_FILE).c \
790 $(IO).c \
791 $(POSIX).c \
792 $(ATTRS).c \
793 $(THREAD).c \
15e52e56 794 $(RE).c \
823edd99 795 $(DUMPER).c \
3967c732 796 $(PEEK).c \
b295d113 797 $(B).c \
38b3a85b 798 $(BYTELOADER).c \
4f49e16e 799 $(DPROF).c \
800 $(GLOB).c
eb480a0b 801
ac4c12e7 802EXTENSION_DLL = \
eb480a0b 803 $(SOCKET_DLL) \
804 $(FCNTL_DLL) \
805 $(OPCODE_DLL) \
806 $(SDBM_FILE_DLL)\
807 $(IO_DLL) \
808 $(POSIX_DLL) \
51aa15f3 809 $(ATTRS_DLL) \
823edd99 810 $(DUMPER_DLL) \
3967c732 811 $(PEEK_DLL) \
b295d113 812 $(B_DLL) \
c5be433b 813 $(RE_DLL) \
814 $(THREAD_DLL) \
38b3a85b 815 $(BYTELOADER_DLL) \
4f49e16e 816 $(DPROF_DLL) \
817 $(GLOB_DLL)
26ca90b6 818
eab60bb1 819EXTENSION_PM = \
820 $(ERRNO_PM)
821
eb480a0b 822POD2HTML = $(PODDIR)\pod2html
823POD2MAN = $(PODDIR)\pod2man
824POD2LATEX = $(PODDIR)\pod2latex
825POD2TEXT = $(PODDIR)\pod2text
826
7a958ec3 827# vars must be separated by "\t+~\t+", since we're using the tempfile
828# version of config_sh.pl (we were overflowing someone's buffer by
829# trying to fit them all on the command line)
830# -- BKS 10-17-1999
eb480a0b 831CFG_VARS = \
7a958ec3 832 INST_DRV=$(INST_DRV) ~ \
833 INST_TOP=$(INST_TOP) ~ \
834 INST_VER=$(INST_VER:s/\/\\/) ~ \
835 INST_ARCH=$(INST_ARCH) ~ \
836 archname=$(ARCHNAME) ~ \
837 cc=$(CC) ~ \
838 ccflags=$(OPTIMIZE) $(DEFINES) $(BUILDOPT) ~ \
839 cf_email=$(EMAIL) ~ \
840 d_crypt=$(D_CRYPT) ~ \
841 d_mymalloc=$(PERL_MALLOC) ~ \
842 libs=$(LIBFILES:f) ~ \
843 incpath=$(CCINCDIR) ~ \
844 libperl=$(PERLIMPLIB:f) ~ \
845 libpth=$(CCLIBDIR);$(EXTRALIBDIRS) ~ \
846 libc=$(LIBC) ~ \
847 make=dmake ~ \
848 _o=$(o) obj_ext=$(o) ~ \
849 _a=$(a) lib_ext=$(a) ~ \
850 static_ext=$(STATIC_EXT) ~ \
851 dynamic_ext=$(DYNAMIC_EXT) ~ \
852 nonxs_ext=$(NONXS_EXT) ~ \
aaacdc8b 853 use5005threads=$(USE_5005THREADS) ~ \
854 useithreads=$(USE_ITHREADS) ~ \
855 usethreads=$(USE_5005THREADS) ~ \
7a958ec3 856 usemultiplicity=$(USE_MULTI) ~ \
857 LINK_FLAGS=$(LINK_FLAGS:s/\/\\/) ~ \
858 optimize=$(OPTIMIZE)
859
860#
861# set up targets varying between Win95 and WinNT builds
862#
863
864.IF "$(IS_WIN95)" == "define"
865MK2 = .\makefile.95
866RIGHTMAKE = __switch_makefiles
867NOOP = @rem
868.ELSE
869MK2 = __not_needed
870RIGHTMAKE = __not_needed
871.ENDIF
924b3ec4 872
08aa1457 873#
874# Top targets
875#
876
5db10396 877all : .\config.h $(GLOBEXE) $(MINIPERL) $(MK2) \
7a958ec3 878 $(RIGHTMAKE) $(MINIMOD) $(CONFIGPM) $(PERLEXE) $(PERL95EXE) \
879 $(X2P) $(EXTENSION_DLL) $(EXTENSION_PM)
880
881$(DYNALOADER)$(o) : $(DYNALOADER).c $(CORE_H) $(EXTDIR)\DynaLoader\dlutils.c
882
883#----------------------------------------------------------------
884
885#-------------------- BEGIN Win95 SPECIFIC ----------------------
886
887# this target is a jump-off point for Win95
888# 1. it switches to the Win95-specific makefile if it exists
5db10396 889# (__do_switch_makefiles)
7a958ec3 890# 2. it prints a message when the Win95-specific one finishes (__done)
891# 3. it then kills this makefile by trying to make __no_such_target
8ec44883 892
7a958ec3 893__switch_makefiles: __do_switch_makefiles __done __no_such_target
894
895__do_switch_makefiles:
896.IF "$(NOTFIRST)" != "true"
897 if exist $(MK2) $(MAKE:s/-S//) -f $(MK2) $(MAKETARGETS) NOTFIRST=true
8ec44883 898.ELSE
7a958ec3 899 $(NOOP)
8ec44883 900.ENDIF
08aa1457 901
7a958ec3 902.IF "$(NOTFIRST)" != "true"
903__done:
904 @echo Build process complete. Ignore any errors after this message.
905 @echo Run "dmake test" to test and "dmake install" to install
906
907.ELSE
908# dummy targets for Win95-specific makefile
08aa1457 909
7a958ec3 910__done:
911 $(NOOP)
912
913__no_such_target:
914 $(NOOP)
08aa1457 915
8ec44883 916.ENDIF
917
7a958ec3 918# This target is used to generate the new makefile (.\makefile.95) for Win95
919
920.\makefile.95: .\makefile.mk
921 $(MINIPERL) genmk95.pl makefile.mk $(MK2)
922
923#--------------------- END Win95 SPECIFIC ---------------------
924
7a958ec3 925# a blank target for when builds don't need to do certain things
926# this target added for Win95 port but used to keep the WinNT port able to
927# use this file
928__not_needed:
4ce4f76e 929 $(NOOP)
7a958ec3 930
eb480a0b 931$(GLOBEXE) : perlglob$(o)
08aa1457 932.IF "$(CCTYPE)" == "BORLAND"
80252599 933 $(CC) -c -w -v -tWM -I"$(CCINCDIR)" perlglob.c
7a958ec3 934 $(LINK32) -Tpe -ap $(BLINK_FLAGS) c0x32$(o) perlglob$(o) \
80252599 935 "$(CCLIBDIR)\32BIT\wildargs$(o)",$@,,import32.lib cw32mt.lib,
d56e6723 936.ELIF "$(CCTYPE)" == "GCC"
5db10396 937 $(LINK32) $(BLINK_FLAGS) -mconsole -o $@ perlglob$(o) $(LIBFILES)
08aa1457 938.ELSE
7a958ec3 939 $(LINK32) $(BLINK_FLAGS) $(LIBFILES) -out:$@ -subsystem:$(SUBSYS) \
d56e6723 940 perlglob$(o) setargv$(o)
08aa1457 941.ENDIF
942
d56e6723 943perlglob$(o) : perlglob.c
08aa1457 944
08aa1457 945config.w32 : $(CFGSH_TMPL)
946 copy $(CFGSH_TMPL) config.w32
947
852c2e52 948.\config.h : $(CFGH_TMPL) $(CORE_NOCFG_H)
08aa1457 949 -del /f config.h
950 copy $(CFGH_TMPL) config.h
951
952..\config.sh : config.w32 $(MINIPERL) config_sh.PL
7a958ec3 953 $(MINIPERL) -I..\lib config_sh.PL --cfgsh-option-file \
954 $(mktmp $(CFG_VARS)) config.w32 > ..\config.sh
924b3ec4 955
956# this target is for when changes to the main config.sh happen
957# edit config.{b,v,g}c and make this target once for each supported
958# compiler (e.g. `dmake CCTYPE=BORLAND regen_config_h`)
959regen_config_h:
bbda9c9d 960 perl config_sh.PL --cfgsh-option-file $(mktmp $(CFG_VARS)) \
961 $(CFGSH_TMPL) > ..\config.sh
924b3ec4 962 -cd .. && del /f perl.exe
963 cd .. && perl configpm
964 -del /f $(CFGH_TMPL)
80252599 965 -mkdir $(COREDIR)
e5a95ffb 966 -perl -I..\lib config_h.PL "INST_VER=$(INST_VER)"
924b3ec4 967 rename config.h $(CFGH_TMPL)
08aa1457 968
969$(CONFIGPM) : $(MINIPERL) ..\config.sh config_h.PL ..\minimod.pl
970 cd .. && miniperl configpm
971 if exist lib\* $(RCOPY) lib\*.* ..\lib\$(NULL)
d07c2202 972 $(XCOPY) ..\*.h $(COREDIR)\*.*
973 $(XCOPY) *.h $(COREDIR)\*.*
15e52e56 974 $(XCOPY) ..\ext\re\re.pm $(LIBDIR)\*.*
d07c2202 975 $(RCOPY) include $(COREDIR)\*.*
e5a95ffb 976 $(MINIPERL) -I..\lib config_h.PL "INST_VER=$(INST_VER)" \
d543acb6 977 || $(MAKE) $(MAKEMACROS) $(CONFIGPM) $(MAKEFILE)
08aa1457 978
7a958ec3 979$(MINIPERL) : $(MINIDIR) $(MINI_OBJ) $(CRTIPMLIBS)
08aa1457 980.IF "$(CCTYPE)" == "BORLAND"
7a958ec3 981 $(LINK32) -Tpe -ap $(BLINK_FLAGS) \
eb480a0b 982 @$(mktmp c0x32$(o) $(MINI_OBJ:s,\,\\),$(@:s,\,\\),,$(LIBFILES),)
d56e6723 983.ELIF "$(CCTYPE)" == "GCC"
5db10396 984 $(LINK32) -v -mconsole -o $@ $(BLINK_FLAGS) \
7a958ec3 985 $(mktmp $(LKPRE) $(MINI_OBJ:s,\,\\) $(LIBFILES) $(LKPOST))
08aa1457 986.ELSE
987 $(LINK32) -subsystem:console -out:$@ \
7a958ec3 988 @$(mktmp $(BLINK_FLAGS) $(LIBFILES) $(MINI_OBJ:s,\,\\))
08aa1457 989.ENDIF
990
eb480a0b 991$(MINIDIR) :
992 if not exist "$(MINIDIR)" mkdir "$(MINIDIR)"
993
852c2e52 994$(MINICORE_OBJ) : $(CORE_NOCFG_H)
fe0bfefd 995 $(CC) -c $(CFLAGS) -DPERL_EXTERNAL_GLOB $(OBJOUT_FLAG)$@ ..\$(*B).c
eb480a0b 996
852c2e52 997$(MINIWIN32_OBJ) : $(CORE_NOCFG_H)
eb480a0b 998 $(CC) -c $(CFLAGS) $(OBJOUT_FLAG)$@ $(*B).c
999
7766f137 1000# -DPERL_IMPLICIT_SYS needs C++ for perllib.c
5db10396 1001# rules wrapped in .IFs break Win9X build (we end up with unbalanced []s unless
1002# unless the .IF is true), so instead we use a .ELSE with the default
7766f137 1003perllib$(o) : perllib.c
5db10396 1004.IF "$(USE_IMP_SYS)$(USE_OBJECT)" == "defineundef"
7766f137 1005 $(CC) -c -I. $(CFLAGS_O) $(CXX_FLAG) $(OBJOUT_FLAG)$@ perllib.c
5db10396 1006.ELSE
1007 $(CC) -c -I. $(CFLAGS_O) $(OBJOUT_FLAG)$@ perllib.c
7766f137 1008.ENDIF
1009
852c2e52 1010# 1. we don't want to rebuild miniperl.exe when config.h changes
1011# 2. we don't want to rebuild miniperl.exe with non-default config.h
1012$(MINI_OBJ) : $(CORE_NOCFG_H)
1013
eb480a0b 1014$(WIN32_OBJ) : $(CORE_H)
1015$(CORE_OBJ) : $(CORE_H)
eb480a0b 1016$(DLL_OBJ) : $(CORE_H)
1017$(PERL95_OBJ) : $(CORE_H)
1018$(X2P_OBJ) : $(CORE_H)
08aa1457 1019
549a6b10 1020perldll.def : $(MINIPERL) $(CONFIGPM) ..\global.sym ..\pp.sym ..\makedef.pl
e2207946 1021 $(MINIPERL) -w ..\makedef.pl PLATFORM=win32 $(OPTIMIZE) $(DEFINES) \
1022 $(BUILDOPT) CCTYPE=$(CCTYPE) > perldll.def
08aa1457 1023
fd9459bc 1024$(PERLDLL): perldll.def $(PERLDLL_OBJ) $(PERLDLL_RES)
08aa1457 1025.IF "$(CCTYPE)" == "BORLAND"
e2207946 1026 $(LINK32) -Tpd -ap $(BLINK_FLAGS) \
eb480a0b 1027 @$(mktmp c0d32$(o) $(PERLDLL_OBJ:s,\,\\)\n \
08aa1457 1028 $@,\n \
1029 $(LIBFILES)\n \
1030 perldll.def\n)
1031 $(IMPLIB) $*.lib $@
d56e6723 1032.ELIF "$(CCTYPE)" == "GCC"
e2207946 1033 $(LINK32) -mdll -o $@ -Wl,--base-file -Wl,perl.base $(BLINK_FLAGS) \
eb480a0b 1034 $(mktmp $(LKPRE) $(PERLDLL_OBJ:s,\,\\) $(LIBFILES) $(LKPOST))
d56e6723 1035 dlltool --output-lib $(PERLIMPLIB) \
5db10396 1036 --dllname $(PERLDLL:b).dll \
1037 --def perldll.def \
1038 --base-file perl.base \
1039 --output-exp perl.exp
e2207946 1040 $(LINK32) -mdll -o $@ $(BLINK_FLAGS) \
eb480a0b 1041 $(mktmp $(LKPRE) $(PERLDLL_OBJ:s,\,\\) $(LIBFILES) \
1042 perl.exp $(LKPOST))
08aa1457 1043.ELSE
1044 $(LINK32) -dll -def:perldll.def -out:$@ \
fd9459bc 1045 @$(mktmp $(BLINK_FLAGS) $(LIBFILES) $(PERLDLL_RES) $(PERLDLL_OBJ:s,\,\\))
08aa1457 1046.ENDIF
d07c2202 1047 $(XCOPY) $(PERLIMPLIB) $(COREDIR)
08aa1457 1048
08aa1457 1049$(MINIMOD) : $(MINIPERL) ..\minimod.pl
1050 cd .. && miniperl minimod.pl > lib\ExtUtils\Miniperl.pm
1051
eb480a0b 1052..\x2p\a2p$(o) : ..\x2p\a2p.c
1053 $(CC) -I..\x2p $(CFLAGS) $(OBJOUT_FLAG)$@ -c ..\x2p\a2p.c
1054
1055..\x2p\hash$(o) : ..\x2p\hash.c
1056 $(CC) -I..\x2p $(CFLAGS) $(OBJOUT_FLAG)$@ -c ..\x2p\hash.c
1057
1058..\x2p\str$(o) : ..\x2p\str.c
1059 $(CC) -I..\x2p $(CFLAGS) $(OBJOUT_FLAG)$@ -c ..\x2p\str.c
1060
1061..\x2p\util$(o) : ..\x2p\util.c
1062 $(CC) -I..\x2p $(CFLAGS) $(OBJOUT_FLAG)$@ -c ..\x2p\util.c
1063
1064..\x2p\walk$(o) : ..\x2p\walk.c
1065 $(CC) -I..\x2p $(CFLAGS) $(OBJOUT_FLAG)$@ -c ..\x2p\walk.c
1066
1067$(X2P) : $(MINIPERL) $(X2P_OBJ)
d07c2202 1068 $(MINIPERL) ..\x2p\find2perl.PL
1069 $(MINIPERL) ..\x2p\s2p.PL
1070.IF "$(CCTYPE)" == "BORLAND"
7a958ec3 1071 $(LINK32) -Tpe -ap $(BLINK_FLAGS) \
d07c2202 1072 @$(mktmp c0x32$(o) $(X2P_OBJ:s,\,\\),$(@:s,\,\\),,$(LIBFILES),)
1073.ELIF "$(CCTYPE)" == "GCC"
7a958ec3 1074 $(LINK32) -v -o $@ $(BLINK_FLAGS) \
d07c2202 1075 $(mktmp $(LKPRE) $(X2P_OBJ:s,\,\\) $(LIBFILES) $(LKPOST))
1076.ELSE
1077 $(LINK32) -subsystem:console -out:$@ \
7a958ec3 1078 @$(mktmp $(BLINK_FLAGS) $(LIBFILES) $(X2P_OBJ:s,\,\\))
d07c2202 1079.ENDIF
1080
08aa1457 1081perlmain.c : runperl.c
1082 copy runperl.c perlmain.c
1083
d56e6723 1084perlmain$(o) : perlmain.c
8957be0a 1085 $(CC) $(CFLAGS_O) -UPERLDLL $(OBJOUT_FLAG)$@ -c perlmain.c
08aa1457 1086
fd9459bc 1087$(PERLEXE): $(PERLDLL) $(CONFIGPM) $(PERLEXE_OBJ) $(PERLEXE_RES)
08aa1457 1088.IF "$(CCTYPE)" == "BORLAND"
7a958ec3 1089 $(LINK32) -Tpe -ap $(BLINK_FLAGS) \
8957be0a 1090 @$(mktmp c0x32$(o) $(PERLEXE_OBJ:s,\,\\)\n \
1091 $(@:s,\,\\),\n \
08aa1457 1092 $(PERLIMPLIB) $(LIBFILES)\n)
d56e6723 1093.ELIF "$(CCTYPE)" == "GCC"
5db10396 1094 $(LINK32) -mconsole -o $@ $(BLINK_FLAGS) \
eb480a0b 1095 $(PERLEXE_OBJ) $(PERLIMPLIB) $(LIBFILES)
08aa1457 1096.ELSE
7a958ec3 1097 $(LINK32) -subsystem:console -out:$@ $(BLINK_FLAGS) $(LIBFILES) \
fd9459bc 1098 $(PERLEXE_OBJ) $(SETARGV_OBJ) $(PERLIMPLIB) $(PERLEXE_RES)
7766f137 1099 copy $(PERLEXE) $(WPERLEXE)
1100 editbin /subsystem:windows $(WPERLEXE)
08aa1457 1101.ENDIF
1102 copy splittree.pl ..
eb480a0b 1103 $(MINIPERL) -I..\lib ..\splittree.pl "../LIB" $(AUTODIR)
08aa1457 1104
1105.IF "$(CCTYPE)" != "BORLAND"
d56e6723 1106.IF "$(CCTYPE)" != "GCC"
f7aeb604 1107.IF "$(USE_PERLCRT)" != "define"
08aa1457 1108
1109perl95.c : runperl.c
1110 copy runperl.c perl95.c
1111
d56e6723 1112perl95$(o) : perl95.c
eb480a0b 1113 $(CC) $(CFLAGS_O) -MT -UPERLDLL -DWIN95FIX -c perl95.c
08aa1457 1114
d56e6723 1115win32sckmt$(o) : win32sck.c
eb480a0b 1116 $(CC) $(CFLAGS_O) -MT -UPERLDLL -DWIN95FIX -c \
1117 $(OBJOUT_FLAG)win32sckmt$(o) win32sck.c
fb73857a 1118
d56e6723 1119win32mt$(o) : win32.c
eb480a0b 1120 $(CC) $(CFLAGS_O) -MT -UPERLDLL -DWIN95FIX -c \
1121 $(OBJOUT_FLAG)win32mt$(o) win32.c
fb73857a 1122
ac4c12e7 1123DynaLoadmt$(o) : $(DYNALOADER).c
1124 $(CC) $(CFLAGS_O) -MT -UPERLDLL -DWIN95FIX -c \
1125 $(OBJOUT_FLAG)DynaLoadmt$(o) $(DYNALOADER).c
fb73857a 1126
1127$(PERL95EXE): $(PERLDLL) $(CONFIGPM) $(PERL95_OBJ)
7a958ec3 1128 $(LINK32) -subsystem:console -nodefaultlib -out:$@ $(BLINK_FLAGS) \
baed7233 1129 $(LIBBASEFILES) $(PERL95_OBJ) $(SETARGV_OBJ) $(PERLIMPLIB) \
1130 libcmt.lib
08aa1457 1131
1132.ENDIF
d56e6723 1133.ENDIF
e7083a8c 1134.ENDIF
08aa1457 1135
1136$(DYNALOADER).c: $(MINIPERL) $(EXTDIR)\DynaLoader\dl_win32.xs $(CONFIGPM)
eb480a0b 1137 if not exist $(AUTODIR) mkdir $(AUTODIR)
bfab39a2 1138 cd $(EXTDIR)\$(*B) && ..\$(MINIPERL) -I..\..\lib $(*B)_pm.PL
8454a2ba 1139 cd $(EXTDIR)\$(*B) && ..\$(MINIPERL) -I..\..\lib XSLoader_pm.PL
08aa1457 1140 $(XCOPY) $(EXTDIR)\$(*B)\$(*B).pm $(LIBDIR)\$(NULL)
8454a2ba 1141 $(XCOPY) $(EXTDIR)\$(*B)\XSLoader.pm $(LIBDIR)\$(NULL)
08aa1457 1142 cd $(EXTDIR)\$(*B) && $(XSUBPP) dl_win32.xs > $(*B).c
1143 $(XCOPY) $(EXTDIR)\$(*B)\dlutils.c .
1144
1145$(EXTDIR)\DynaLoader\dl_win32.xs: dl_win32.xs
1146 copy dl_win32.xs $(EXTDIR)\DynaLoader\dl_win32.xs
1147
823edd99 1148$(DUMPER_DLL): $(PERLEXE) $(DUMPER).xs
1149 cd $(EXTDIR)\Data\$(*B) && \
1150 ..\..\..\miniperl -I..\..\..\lib Makefile.PL INSTALLDIRS=perl
1151 cd $(EXTDIR)\Data\$(*B) && $(MAKE)
1152
38b3a85b 1153$(DPROF_DLL): $(PERLEXE) $(DPROF).xs
1154 cd $(EXTDIR)\Devel\$(*B) && \
1155 ..\..\..\miniperl -I..\..\..\lib Makefile.PL INSTALLDIRS=perl
1156 cd $(EXTDIR)\Devel\$(*B) && $(MAKE)
1157
4f49e16e 1158$(GLOB_DLL): $(PERLEXE) $(GLOB).xs
1159 cd $(EXTDIR)\File\$(*B) && \
1160 ..\..\..\miniperl -I..\..\..\lib Makefile.PL INSTALLDIRS=perl
1161 cd $(EXTDIR)\File\$(*B) && $(MAKE)
1162
35ef4773 1163$(PEEK_DLL): $(PERLEXE) $(PEEK).xs
3967c732 1164 cd $(EXTDIR)\Devel\$(*B) && \
1165 ..\..\..\miniperl -I..\..\..\lib Makefile.PL INSTALLDIRS=perl
1166 cd $(EXTDIR)\Devel\$(*B) && $(MAKE)
1167
15e52e56 1168$(RE_DLL): $(PERLEXE) $(RE).xs
1169 cd $(EXTDIR)\$(*B) && \
1170 ..\..\miniperl -I..\..\lib Makefile.PL INSTALLDIRS=perl
1171 cd $(EXTDIR)\$(*B) && $(MAKE)
1172
2a321948 1173$(B_DLL): $(PERLEXE) $(B).xs
1174 cd $(EXTDIR)\$(*B) && \
1175 ..\..\miniperl -I..\..\lib Makefile.PL INSTALLDIRS=perl
1176 cd $(EXTDIR)\$(*B) && $(MAKE)
1177
a98bd6f4 1178$(THREAD_DLL): $(PERLEXE) $(THREAD).xs
1179 cd $(EXTDIR)\$(*B) && \
1180 ..\..\miniperl -I..\..\lib Makefile.PL INSTALLDIRS=perl
1181 cd $(EXTDIR)\$(*B) && $(MAKE)
1182
5d925967 1183$(ATTRS_DLL): $(PERLEXE) $(ATTRS).xs
1184 cd $(EXTDIR)\$(*B) && \
1185 ..\..\miniperl -I..\..\lib Makefile.PL INSTALLDIRS=perl
1186 cd $(EXTDIR)\$(*B) && $(MAKE)
1187
6dead956 1188$(POSIX_DLL): $(PERLEXE) $(POSIX).xs
1189 cd $(EXTDIR)\$(*B) && \
1190 ..\..\miniperl -I..\..\lib Makefile.PL INSTALLDIRS=perl
1191 cd $(EXTDIR)\$(*B) && $(MAKE)
1192
5d925967 1193$(IO_DLL): $(PERLEXE) $(IO).xs
08aa1457 1194 cd $(EXTDIR)\$(*B) && \
1195 ..\..\miniperl -I..\..\lib Makefile.PL INSTALLDIRS=perl
1196 cd $(EXTDIR)\$(*B) && $(MAKE)
1197
1198$(SDBM_FILE_DLL) : $(PERLEXE) $(SDBM_FILE).xs
1199 cd $(EXTDIR)\$(*B) && \
1200 ..\..\miniperl -I..\..\lib Makefile.PL INSTALLDIRS=perl
1201 cd $(EXTDIR)\$(*B) && $(MAKE)
1202
1203$(FCNTL_DLL): $(PERLEXE) $(FCNTL).xs
1204 cd $(EXTDIR)\$(*B) && \
1205 ..\..\miniperl -I..\..\lib Makefile.PL INSTALLDIRS=perl
1206 cd $(EXTDIR)\$(*B) && $(MAKE)
1207
1208$(OPCODE_DLL): $(PERLEXE) $(OPCODE).xs
1209 cd $(EXTDIR)\$(*B) && \
1210 ..\..\miniperl -I..\..\lib Makefile.PL INSTALLDIRS=perl
1211 cd $(EXTDIR)\$(*B) && $(MAKE)
1212
5d925967 1213$(SOCKET_DLL): $(PERLEXE) $(SOCKET).xs
08aa1457 1214 cd $(EXTDIR)\$(*B) && \
1215 ..\..\miniperl -I..\..\lib Makefile.PL INSTALLDIRS=perl
1216 cd $(EXTDIR)\$(*B) && $(MAKE)
1217
b295d113 1218$(BYTELOADER_DLL): $(PERLEXE) $(BYTELOADER).xs
1219 cd $(EXTDIR)\$(*B) && \
1220 ..\..\miniperl -I..\..\lib Makefile.PL INSTALLDIRS=perl
1221 cd $(EXTDIR)\$(*B) && $(MAKE)
1222
eab60bb1 1223$(ERRNO_PM): $(PERLEXE) $(ERRNO)_pm.PL
1224 cd $(EXTDIR)\$(*B) && \
1225 ..\..\miniperl -I..\..\lib Makefile.PL INSTALLDIRS=perl
1226 cd $(EXTDIR)\$(*B) && $(MAKE)
1227
08aa1457 1228doc: $(PERLEXE)
d07c2202 1229 $(PERLEXE) -I..\lib ..\installhtml --podroot=.. --htmldir=./html \
b3b61bd8 1230 --podpath=pod:lib:ext:utils --htmlroot="file://$(INST_HTML:s,:,|,)"\
08aa1457 1231 --libpod=perlfunc:perlguts:perlvar:perlrun:perlop --recurse
1232
4a71ed0c 1233utils: $(PERLEXE) $(X2P)
08aa1457 1234 cd ..\utils && $(MAKE) PERL=$(MINIPERL)
66aa1127 1235 copy ..\README.win32 ..\pod\perlwin32.pod
4a71ed0c 1236 cd ..\pod && $(MAKE) -f ..\win32\pod.mak converters
1237 $(PERLEXE) $(PL2BAT) $(UTILS)
08aa1457 1238
1239distclean: clean
dc050285 1240 -del /f $(MINIPERL) $(PERLEXE) $(PERL95EXE) $(PERLDLL) $(GLOBEXE) \
eda5ff31 1241 $(PERLIMPLIB) ..\miniperl$(a) $(MINIMOD)
08aa1457 1242 -del /f *.def *.map
eab60bb1 1243 -del /f $(EXTENSION_DLL) $(EXTENSION_PM)
1244 -del /f $(EXTENSION_C) $(DYNALOADER).c $(ERRNO).pm
eb480a0b 1245 -del /f $(EXTDIR)\DynaLoader\dl_win32.xs
1246 -del /f $(LIBDIR)\.exists $(LIBDIR)\attrs.pm $(LIBDIR)\DynaLoader.pm
8454a2ba 1247 -del /f $(LIBDIR)\XSLoader.pm
eb480a0b 1248 -del /f $(LIBDIR)\Fcntl.pm $(LIBDIR)\IO.pm $(LIBDIR)\Opcode.pm
1249 -del /f $(LIBDIR)\ops.pm $(LIBDIR)\Safe.pm $(LIBDIR)\Thread.pm
1250 -del /f $(LIBDIR)\SDBM_File.pm $(LIBDIR)\Socket.pm $(LIBDIR)\POSIX.pm
15e52e56 1251 -del /f $(LIBDIR)\B.pm $(LIBDIR)\O.pm $(LIBDIR)\re.pm
b295d113 1252 -del /f $(LIBDIR)\Data\Dumper.pm $(LIBDIR)\ByteLoader.pm
38b3a85b 1253 -del /f $(LIBDIR)\Devel\Peek.pm $(LIBDIR)\Devel\DProf.pm
4f49e16e 1254 -del /f $(LIBDIR)\File\Glob.pm
eb480a0b 1255 -rmdir /s /q $(LIBDIR)\IO || rmdir /s $(LIBDIR)\IO
1256 -rmdir /s /q $(LIBDIR)\Thread || rmdir /s $(LIBDIR)\Thread
1257 -rmdir /s /q $(LIBDIR)\B || rmdir /s $(LIBDIR)\B
823edd99 1258 -rmdir /s /q $(LIBDIR)\Data || rmdir /s $(LIBDIR)\Data
08aa1457 1259 -del /f $(PODDIR)\*.html
1260 -del /f $(PODDIR)\*.bat
22c35a8c 1261 -cd ..\utils && del /f h2ph splain perlbug pl2pm c2ph h2xs perldoc \
5920a0ba 1262 dprofpp *.bat
eb480a0b 1263 -cd ..\x2p && del /f find2perl s2p *.bat
d444a431 1264 -del /f ..\config.sh ..\splittree.pl perlmain.c dlutils.c config.h.new
eb480a0b 1265 -del /f $(CONFIGPM)
d444a431 1266.IF "$(PERL95EXE)" != ""
1267 -del /f perl95.c
1268.ENDIF
1269 -del /f bin\*.bat
22c35a8c 1270 -cd $(EXTDIR) && del /s *$(a) *.def *.map *.pdb *.bs Makefile *$(o) \
1271 pm_to_blib
eb480a0b 1272 -rmdir /s /q $(AUTODIR) || rmdir /s $(AUTODIR)
d07c2202 1273 -rmdir /s /q $(COREDIR) || rmdir /s $(COREDIR)
08aa1457 1274
4a71ed0c 1275install : all installbare installhtml
6dead956 1276
7a958ec3 1277installbare : $(RIGHTMAKE) utils
d07c2202 1278 $(PERLEXE) ..\installperl
08aa1457 1279.IF "$(PERL95EXE)" != ""
1280 $(XCOPY) $(PERL95EXE) $(INST_BIN)\*.*
1281.ENDIF
7766f137 1282 if exist $(WPERLEXE) $(XCOPY) $(WPERLEXE) $(INST_BIN)\*.*
08aa1457 1283 $(XCOPY) $(GLOBEXE) $(INST_BIN)\*.*
e5a95ffb 1284 $(XCOPY) bin\*.bat $(INST_SCRIPT)\*.*
6dead956 1285
1286installhtml : doc
08aa1457 1287 $(RCOPY) html\*.* $(INST_HTML)\*.*
1288
1289inst_lib : $(CONFIGPM)
1290 copy splittree.pl ..
eb480a0b 1291 $(MINIPERL) -I..\lib ..\splittree.pl "../LIB" $(AUTODIR)
08aa1457 1292 $(RCOPY) ..\lib $(INST_LIB)\*.*
1293
dfb634a9 1294minitest : $(MINIPERL) $(GLOBEXE) $(CONFIGPM) utils
08aa1457 1295 $(XCOPY) $(MINIPERL) ..\t\perl.exe
1296.IF "$(CCTYPE)" == "BORLAND"
1297 $(XCOPY) $(GLOBBAT) ..\t\$(NULL)
1298.ELSE
1299 $(XCOPY) $(GLOBEXE) ..\t\$(NULL)
1300.ENDIF
1301 attrib -r ..\t\*.*
1302 copy test ..\t
1303 cd ..\t && \
1304 $(MINIPERL) -I..\lib test base/*.t comp/*.t cmd/*.t io/*.t op/*.t pragma/*.t
1305
dfb634a9 1306test-prep : all utils
08aa1457 1307 $(XCOPY) $(PERLEXE) ..\t\$(NULL)
1308 $(XCOPY) $(PERLDLL) ..\t\$(NULL)
1309.IF "$(CCTYPE)" == "BORLAND"
1310 $(XCOPY) $(GLOBBAT) ..\t\$(NULL)
1311.ELSE
1312 $(XCOPY) $(GLOBEXE) ..\t\$(NULL)
1313.ENDIF
32f822de 1314
7a958ec3 1315test : $(RIGHTMAKE) test-prep
08aa1457 1316 cd ..\t && $(PERLEXE) -I..\lib harness
1317
32f822de 1318test-notty : test-prep
1319 set PERL_SKIP_TTY_TEST=1 && \
1320 cd ..\t && $(PERLEXE) -I.\lib harness
1321
08aa1457 1322clean :
d56e6723 1323 -@erase miniperlmain$(o)
08aa1457 1324 -@erase $(MINIPERL)
d56e6723 1325 -@erase perlglob$(o)
1326 -@erase perlmain$(o)
08aa1457 1327 -@erase config.w32
1328 -@erase /f config.h
1329 -@erase $(GLOBEXE)
1330 -@erase $(PERLEXE)
7766f137 1331 -@erase $(WPERLEXE)
08aa1457 1332 -@erase $(PERLDLL)
1333 -@erase $(CORE_OBJ)
eb480a0b 1334 -rmdir /s /q $(MINIDIR) || rmdir /s $(MINIDIR)
08aa1457 1335 -@erase $(WIN32_OBJ)
1336 -@erase $(DLL_OBJ)
d07c2202 1337 -@erase $(X2P_OBJ)
c5be433b 1338 -@erase ..\*$(o) ..\*$(a) ..\*.exp *$(o) *$(a) *.exp *.res
d444a431 1339 -@erase ..\t\*.exe ..\t\*.dll ..\t\*.bat
d07c2202 1340 -@erase ..\x2p\*.exe ..\x2p\*.bat
08aa1457 1341 -@erase *.ilk
1342 -@erase *.pdb