Makefile revision 1.4
1#
2# Makefile to build perl on Windows NT using Microsoft NMAKE.
3#
4
5##
6## Make sure you read README.win32 *before* you mess with anything here!
7##
8## If you want a configuration that is the same as ActivePerl (see
9## www.ActiveState.com) make sure you set at least BUILD_FLAVOR below!
10##
11
12##
13## Build configuration.  Edit the values below to suit your needs.
14##
15
16#
17# Set these to wherever you want "nmake install" to put your newly
18# built perl.  Setting it to a path with spaces is NOT recommended.
19#
20INST_DRV	= c:
21INST_TOP	= $(INST_DRV)\perl
22
23#
24# uncomment one of the following lines if you are using either
25# Visual C++ 2.x, or Visual C++ 5.x (aka Visual Studio 97) _without_
26# service pack 3 applied.
27#
28# If you have 5.x SP3 or later, or 6.x, no change is required.
29#
30#CCTYPE		= MSVC20
31#CCTYPE		= MSVC_PRE_50SP3
32
33#
34# set the install locations of the compiler include/libraries. Running
35# VCVARS32.BAT is *required* when using Visual C.  Some versions of
36# Visual C earlier than 5.x SP3 don't define MSVCDIR in the environment.
37# If such is the case you may have to set CCHOME explicitly.  Spaces in
38# the path name should not be quoted.
39#
40# If you have run VCVARS32.BAT and have VC 5.x SP3 or later, the defaults
41# should just work.
42#
43#CCHOME		= f:\msvc20
44CCHOME		= $(MSVCDIR)
45CCINCDIR	= $(CCHOME)\include
46CCLIBDIR	= $(CCHOME)\lib
47
48#
49# if you have the source for des_fcrypt(), uncomment CRYPT_SRC and make sure
50# the file exists (see README.win32).  File should be located in the same
51# directory as this makefile.
52#
53# If you didn't set CRYPT_SRC and if you have des_fcrypt() available in a
54# library, uncomment CRYPT_LIB, and make sure the library exists (see
55# README.win32).  Specify the full pathname of the library.
56#
57# If you don't enable one of these, the crypt() builtin will fail to work.
58# (Generally not critical.)
59#
60#CRYPT_SRC	= fcrypt.c
61#CRYPT_LIB	= fcrypt.lib
62
63#
64# uncomment this option if you want to bulk-enable all the options that
65# ActiveState uses to build their ActivePerl distribution.  If you set this,
66# there should be no need to set any of the other options that follow.
67#
68# If you don't enable this, the defaults below will get you the most
69# efficient perl configuration possible that will also be compatible
70# with the build defaults used on Unix platforms.  On the other hand,
71# the ActivePerl configuration will get you fork() emulation at the
72# cost of some added bloat.
73#
74#BUILD_FLAVOR	= ActivePerl
75
76#
77# uncomment next line if you want debug version of perl (big and slow).
78# If not enabled, we automatically try to use maximum optimization
79# with all compilers that are known to have a working optimizer.
80#
81#CFG		= Debug
82
83#
84# Comment this out if you DON'T want your perl installation to be versioned.
85# This means that the new installation will overwrite any files from the
86# old installation at the same INST_TOP location.  Leaving it enabled is
87# the safest route, as perl adds the extra version directory to all the
88# locations it installs files to.  If you disable it, an alternative
89# versioned installation can be obtained by setting INST_TOP above to a
90# path that includes an arbitrary version string.
91#
92INST_VER = \5.6.1
93
94#
95# Comment this out if you DON'T want your perl installation to have
96# architecture specific components.  This means that architecture-
97# specific files will be installed along with the architecture-neutral
98# files.  Leaving it enabled is safer and more flexible, in case you
99# want to build multiple flavors of perl and install them together in
100# the same location.  Commenting it out gives you a simpler
101# installation that is easier to understand for beginners.
102#
103INST_ARCH = \$(ARCHNAME)
104
105#
106# uncomment to enable multiple interpreters.  This is need for fork()
107# emulation.
108#
109#USE_MULTI = define
110
111#
112# Beginnings of interpreter cloning/threads; still very incomplete.
113# This should be enabled to get the fork() emulation.  This needs
114# USE_MULTI as well.
115#
116#USE_ITHREADS = define
117
118#
119# uncomment to enable the implicit "host" layer for all system calls
120# made by perl.  This needs USE_MULTI above.  This is also needed to
121# get fork().
122#
123#USE_IMP_SYS = define
124
125#
126# WARNING! This option is deprecated and will eventually go away (enable
127# USE_ITHREADS instead).
128#
129# uncomment to enable threads-capabilities.  This is incompatible with
130# USE_ITHREADS, and is only here for people who may have come to rely
131# on the experimental Thread support that was in 5.005.
132#
133#USE_5005THREADS= define
134
135#
136# WARNING! This option is deprecated and will eventually go away (enable
137# USE_MULTI instead).
138#
139# uncomment next line if you want to use the PERL_OBJECT build option.
140# DO NOT ENABLE unless you have legacy code that relies on the C++
141# CPerlObj class that was available in 5.005.  This cannot be enabled
142# if you ask for USE_5005THREADS or USE_MULTI above.
143#
144#USE_OBJECT	= define
145
146#
147# uncomment to enable use of PerlCRT.DLL when using the Visual C compiler.
148# It has patches that fix known bugs in older versions of MSVCRT.DLL.
149# This currently requires VC 5.0 with Service Pack 3 or later.
150# Get it from CPAN at http://www.perl.com/CPAN/authors/id/D/DO/DOUGL/
151# and follow the directions in the package to install.
152#
153# Not recommended if you have VC 6.x and you're not running Windows 9x.
154#
155#USE_PERLCRT	= define
156
157#
158# uncomment to enable linking with setargv.obj under the Visual C
159# compiler. Setting this option enables perl to expand wildcards in
160# arguments, but it may be harder to use alternate methods like
161# File::DosGlob that are more powerful, or use perl inside shells
162# that do the expansion for you.  This option is supported only
163# with Visual C.
164#
165#USE_SETARGV	= define
166
167#
168# set this if you wish to use perl's malloc
169# WARNING: Turning this on/off WILL break binary compatibility with extensions
170# you may have compiled with/without it.  Be prepared to recompile all
171# extensions if you change the default.  Currently, this cannot be enabled
172# if you ask for USE_IMP_SYS above.
173#
174#PERL_MALLOC	= define
175
176#
177# Additional compiler flags can be specified here.
178#
179
180#
181# This should normally be disabled.  Adding -DPERL_POLLUTE enables support
182# for old symbols by default, at the expense of extreme pollution.  You most
183# probably just want to build modules that won't compile with
184#         perl Makefile.PL POLLUTE=1
185# instead of enabling this.  Please report such modules to the respective
186# authors.
187#
188#BUILDOPT	= $(BUILDOPT) -DPERL_POLLUTE
189
190#
191# This should normally be disabled.  Enabling it will disable the File::Glob
192# implementation of CORE::glob.
193#
194#BUILDOPT	= $(BUILDOPT) -DPERL_EXTERNAL_GLOB
195
196#
197# This should normally be disabled.  Enabling it causes perl to read scripts
198# in text mode (which is the 5.005 behavior) and will break ByteLoader.
199#BUILDOPT	= $(BUILDOPT) -DPERL_TEXTMODE_SCRIPTS
200
201#
202# specify semicolon-separated list of extra directories that modules will
203# look for libraries (spaces in path names need not be quoted)
204#
205EXTRALIBDIRS	=
206
207#
208# set this to your email address (perl will guess a value from
209# from your loginname and your hostname, which may not be right)
210#
211#EMAIL		=
212
213##
214## Build configuration ends.
215##
216
217##################### CHANGE THESE ONLY IF YOU MUST #####################
218
219!IF "$(BUILD_FLAVOR)" == "ActivePerl"
220INST_VER	= 
221INST_ARCH	= 
222USE_MULTI	= define
223USE_ITHREADS	= define
224USE_IMP_SYS	= define
225USE_5005THREADS	= undef
226USE_OBJECT	= undef
227USE_PERLCRT	= undef
228USE_SETARGV	=
229PERL_MALLOC	= undef
230!ENDIF
231
232!IF "$(CRYPT_SRC)$(CRYPT_LIB)" == ""
233D_CRYPT		= undef
234!ELSE
235D_CRYPT		= define
236CRYPT_FLAG	= -DHAVE_DES_FCRYPT
237!ENDIF
238
239!IF "$(USE_OBJECT)" == "define"
240PERL_MALLOC	= undef
241USE_5005THREADS	= undef
242USE_MULTI	= undef
243USE_IMP_SYS	= define
244!ENDIF
245
246!IF "$(PERL_MALLOC)" == ""
247PERL_MALLOC	= undef
248!ENDIF
249
250!IF "$(USE_5005THREADS)" == ""
251USE_5005THREADS	= undef
252!ENDIF
253
254!IF "$(USE_5005THREADS)" == "define"
255USE_ITHREADS	= undef
256!ENDIF
257
258!IF "$(USE_IMP_SYS)" == "define"
259PERL_MALLOC	= undef
260!ENDIF
261
262!IF "$(CCTYPE)" == ""
263CCTYPE		= MSVC60
264!ENDIF
265
266!IF "$(USE_MULTI)" == ""
267USE_MULTI	= undef
268!ENDIF
269
270!IF "$(USE_OBJECT)" == ""
271USE_OBJECT	= undef
272!ENDIF
273
274!IF "$(USE_ITHREADS)" == ""
275USE_ITHREADS	= undef
276!ENDIF
277
278!IF "$(USE_IMP_SYS)" == ""
279USE_IMP_SYS	= undef
280!ENDIF
281
282!IF "$(USE_PERLCRT)" == ""
283USE_PERLCRT	= undef
284!ENDIF
285
286!IF "$(USE_IMP_SYS)$(USE_MULTI)$(USE_5005THREADS)$(USE_OBJECT)" == "defineundefundefundef"
287USE_MULTI	= define
288!ENDIF
289
290!IF "$(USE_ITHREADS)$(USE_MULTI)$(USE_OBJECT)" == "defineundefundef"
291USE_MULTI	= define
292USE_5005THREADS	= undef
293!ENDIF
294
295!IF "$(USE_MULTI)$(USE_5005THREADS)$(USE_OBJECT)" != "undefundefundef"
296BUILDOPT	= $(BUILDOPT) -DPERL_IMPLICIT_CONTEXT
297!ENDIF
298
299!IF "$(USE_IMP_SYS)" != "undef"
300BUILDOPT	= $(BUILDOPT) -DPERL_IMPLICIT_SYS
301!ENDIF
302
303!IF "$(PROCESSOR_ARCHITECTURE)" == ""
304PROCESSOR_ARCHITECTURE	= x86
305!ENDIF
306
307!IF "$(USE_OBJECT)" == "define"
308ARCHNAME	= MSWin32-$(PROCESSOR_ARCHITECTURE)-object
309!ELSE
310!IF "$(USE_5005THREADS)" == "define"
311ARCHNAME	= MSWin32-$(PROCESSOR_ARCHITECTURE)-thread
312!ELSE
313!IF "$(USE_MULTI)" == "define"
314ARCHNAME	= MSWin32-$(PROCESSOR_ARCHITECTURE)-multi
315!ELSE
316ARCHNAME	= MSWin32-$(PROCESSOR_ARCHITECTURE)
317!ENDIF
318!ENDIF
319!ENDIF
320
321!IF "$(USE_ITHREADS)" == "define"
322ARCHNAME	= $(ARCHNAME)-thread
323!ENDIF
324
325# Visual Studio 98 specific
326!IF "$(CCTYPE)" == "MSVC60"
327# VC 6.0 can load the socket dll on demand.  Makes the test suite
328# run in about 10% less time.
329DELAYLOAD	= -DELAYLOAD:wsock32.dll -DELAYLOAD:shell32.dll delayimp.lib 
330!ENDIF
331
332
333ARCHDIR		= ..\lib\$(ARCHNAME)
334COREDIR		= ..\lib\CORE
335AUTODIR		= ..\lib\auto
336LIBDIR		= ..\lib
337EXTDIR		= ..\ext
338PODDIR		= ..\pod
339EXTUTILSDIR	= $(LIBDIR)\ExtUtils
340
341#
342INST_SCRIPT	= $(INST_TOP)$(INST_VER)\bin
343INST_BIN	= $(INST_SCRIPT)$(INST_ARCH)
344INST_LIB	= $(INST_TOP)$(INST_VER)\lib
345INST_ARCHLIB	= $(INST_LIB)$(INST_ARCH)
346INST_COREDIR	= $(INST_ARCHLIB)\CORE
347INST_POD	= $(INST_LIB)\pod
348INST_HTML	= $(INST_TOP)$(INST_VER)\html
349
350#
351# Programs to compile, build .lib files and link
352#
353
354CC		= cl
355LINK32		= link
356LIB32		= $(LINK32) -lib
357RSC		= rc
358
359#
360# Options
361#
362
363INCLUDES	= -I$(COREDIR) -I.\include -I. -I..
364#PCHFLAGS	= -Fpc:\temp\vcmoduls.pch -YX 
365DEFINES		= -DWIN32 -D_CONSOLE -DNO_STRICT $(CRYPT_FLAG)
366LOCDEFS		= -DPERLDLL -DPERL_CORE
367SUBSYS		= console
368CXX_FLAG	= -TP -GX
369
370!IF "$(USE_PERLCRT)" != "define"
371LIBC	= msvcrt.lib
372!ELSE
373LIBC	= PerlCRT.lib
374!ENDIF
375
376PERLEXE_RES	=
377PERLDLL_RES	=
378
379!IF  "$(CFG)" == "Debug"
380!  IF "$(CCTYPE)" == "MSVC20"
381OPTIMIZE	= -Od -MD -Z7 -DDEBUGGING
382!  ELSE
383OPTIMIZE	= -Od -MD -Zi -DDEBUGGING
384!  ENDIF
385LINK_DBG	= -debug -pdb:none
386!ELSE
387# -O1 yields smaller code, which turns out to be faster than -O2
388OPTIMIZE	= -O1 -MD -DNDEBUG
389# VC 6.0 seems capable of compiling perl correctly with optimizations
390# enabled.  Anything earlier fails tests.
391!  IF "$(CCTYPE)" == "MSVC20" || "$(CCTYPE)" == "MSVC_PRE_50SP3"
392OPTIMIZE	= -Od -MD -DNDEBUG
393!  ENDIF
394LINK_DBG	= -release
395!ENDIF
396
397
398!IF "$(USE_OBJECT)" == "define"
399OPTIMIZE	= $(OPTIMIZE) $(CXX_FLAG)
400BUILDOPT	= $(BUILDOPT) -DPERL_OBJECT
401!ENDIF
402
403!IF "$(USE_PERLCRT)" != "define"
404BUILDOPT	= $(BUILDOPT) -DPERL_MSVCRT_READFIX
405!ENDIF
406
407LIBBASEFILES	= $(CRYPT_LIB) \
408		oldnames.lib kernel32.lib user32.lib gdi32.lib winspool.lib \
409		comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib \
410		netapi32.lib uuid.lib wsock32.lib mpr.lib winmm.lib \
411		version.lib odbc32.lib odbccp32.lib
412
413# we add LIBC here, since we may be using PerlCRT.dll
414LIBFILES	= $(LIBBASEFILES) $(LIBC)
415
416CFLAGS		= -nologo -Gf -W3 $(INCLUDES) $(DEFINES) $(LOCDEFS) \
417		$(PCHFLAGS) $(OPTIMIZE)
418LINK_FLAGS	= -nologo -nodefaultlib $(LINK_DBG) \
419		-libpath:"$(INST_COREDIR)" \
420		-machine:$(PROCESSOR_ARCHITECTURE)
421OBJOUT_FLAG	= -Fo
422EXEOUT_FLAG	= -Fe
423
424CFLAGS_O	= $(CFLAGS) $(BUILDOPT)
425
426#################### do not edit below this line #######################
427############# NO USER-SERVICEABLE PARTS BEYOND THIS POINT ##############
428
429o = .obj
430
431#
432# Rules
433# 
434
435.SUFFIXES : .c $(o) .dll .lib .exe .rc .res
436
437.c$(o):
438	$(CC) -c -I$(<D) $(CFLAGS_O) $(OBJOUT_FLAG)$@ $<
439
440.y.c:
441	$(NOOP)
442
443$(o).dll:
444	$(LINK32) -dll -subsystem:windows -implib:$(*B).lib -def:$(*B).def \
445	    -out:$@ $(LINK_FLAGS) $(LIBFILES) $< $(LIBPERL)  
446
447.rc.res:
448	$(RSC) -i.. $<
449
450#
451# various targets
452PERLIMPLIB	= ..\perl56.lib
453PERLDLL		= ..\perl56.dll
454
455MINIPERL	= ..\miniperl.exe
456MINIDIR		= .\mini
457PERLEXE		= ..\perl.exe
458WPERLEXE	= ..\wperl.exe
459GLOBEXE		= ..\perlglob.exe
460CONFIGPM	= ..\lib\Config.pm
461MINIMOD		= ..\lib\ExtUtils\Miniperl.pm
462X2P		= ..\x2p\a2p.exe
463
464PL2BAT		= bin\pl2bat.pl
465GLOBBAT		= bin\perlglob.bat
466
467UTILS		=			\
468		..\utils\h2ph		\
469		..\utils\splain		\
470		..\utils\dprofpp	\
471		..\utils\perlbug	\
472		..\utils\pl2pm 		\
473		..\utils\c2ph		\
474		..\utils\h2xs		\
475		..\utils\perldoc	\
476		..\utils\perlcc		\
477		..\pod\checkpods	\
478		..\pod\pod2html		\
479		..\pod\pod2latex	\
480		..\pod\pod2man		\
481		..\pod\pod2text		\
482		..\pod\pod2usage	\
483		..\pod\podchecker	\
484		..\pod\podselect	\
485		..\x2p\find2perl	\
486		..\x2p\s2p		\
487		bin\exetype.pl		\
488		bin\runperl.pl		\
489		bin\pl2bat.pl		\
490		bin\perlglob.pl		\
491		bin\search.pl
492
493MAKE		= nmake -nologo
494
495CFGSH_TMPL	= config.vc
496CFGH_TMPL	= config_H.vc
497
498XCOPY		= xcopy /f /r /i /d
499RCOPY		= xcopy /f /r /i /e /d
500NOOP		= @echo
501NULL		=
502
503#
504# filenames given to xsubpp must have forward slashes (since it puts
505# full pathnames in #line strings)
506XSUBPP		= ..\$(MINIPERL) -I..\..\lib ..\$(EXTUTILSDIR)\xsubpp \
507		-C++ -prototypes
508
509MICROCORE_SRC	=		\
510		..\av.c		\
511		..\deb.c	\
512		..\doio.c	\
513		..\doop.c	\
514		..\dump.c	\
515		..\globals.c	\
516		..\gv.c		\
517		..\hv.c		\
518		..\mg.c		\
519		..\op.c		\
520		..\perl.c	\
521		..\perlapi.c	\
522		..\perly.c	\
523		..\pp.c		\
524		..\pp_ctl.c	\
525		..\pp_hot.c	\
526		..\pp_sys.c	\
527		..\regcomp.c	\
528		..\regexec.c	\
529		..\run.c	\
530		..\scope.c	\
531		..\sv.c		\
532		..\taint.c	\
533		..\toke.c	\
534		..\universal.c	\
535		..\utf8.c	\
536		..\util.c	\
537		..\xsutils.c
538
539EXTRACORE_SRC	= $(EXTRACORE_SRC) perllib.c
540
541!IF "$(PERL_MALLOC)" == "define"
542EXTRACORE_SRC	= $(EXTRACORE_SRC) ..\malloc.c
543!ENDIF
544
545!IF "$(USE_OBJECT)" != "define"
546EXTRACORE_SRC	= $(EXTRACORE_SRC) ..\perlio.c
547!ENDIF
548
549WIN32_SRC	=		\
550		.\win32.c	\
551		.\win32sck.c	\
552		.\win32thread.c 
553
554!IF "$(CRYPT_SRC)" != ""
555WIN32_SRC	= $(WIN32_SRC) .\$(CRYPT_SRC)
556!ENDIF
557
558DLL_SRC		= $(DYNALOADER).c
559
560X2P_SRC		=		\
561		..\x2p\a2p.c	\
562		..\x2p\hash.c	\
563		..\x2p\str.c	\
564		..\x2p\util.c	\
565		..\x2p\walk.c
566
567CORE_NOCFG_H	=		\
568		..\av.h		\
569		..\cop.h	\
570		..\cv.h		\
571		..\dosish.h	\
572		..\embed.h	\
573		..\form.h	\
574		..\gv.h		\
575		..\handy.h	\
576		..\hv.h		\
577		..\iperlsys.h	\
578		..\mg.h		\
579		..\nostdio.h	\
580		..\op.h		\
581		..\opcode.h	\
582		..\perl.h	\
583		..\perlapi.h	\
584		..\perlsdio.h	\
585		..\perlsfio.h	\
586		..\perly.h	\
587		..\pp.h		\
588		..\proto.h	\
589		..\regexp.h	\
590		..\scope.h	\
591		..\sv.h		\
592		..\thread.h	\
593		..\unixish.h	\
594		..\utf8.h	\
595		..\util.h	\
596		..\warnings.h	\
597		..\XSUB.h	\
598		..\EXTERN.h	\
599		..\perlvars.h	\
600		..\intrpvar.h	\
601		..\thrdvar.h	\
602		.\include\dirent.h	\
603		.\include\netdb.h	\
604		.\include\sys\socket.h	\
605		.\win32.h
606
607CORE_H		= $(CORE_NOCFG_H) .\config.h
608
609MICROCORE_OBJ	= $(MICROCORE_SRC:.c=.obj)
610CORE_OBJ	= $(MICROCORE_OBJ) $(EXTRACORE_SRC:.c=.obj)
611WIN32_OBJ	= $(WIN32_SRC:.c=.obj)
612MINICORE_OBJ	= $(MICROCORE_OBJ:..\=.\mini\)	\
613		  $(MINIDIR)\miniperlmain$(o)	\
614		  $(MINIDIR)\perlio$(o)
615MINIWIN32_OBJ	= $(WIN32_OBJ:.\=.\mini\)
616MINI_OBJ	= $(MINICORE_OBJ) $(MINIWIN32_OBJ)
617DLL_OBJ		= $(DLL_SRC:.c=.obj)
618X2P_OBJ		= $(X2P_SRC:.c=.obj)
619
620PERLDLL_OBJ	= $(CORE_OBJ)
621PERLEXE_OBJ	= perlmain$(o)
622
623PERLDLL_OBJ	= $(PERLDLL_OBJ) $(WIN32_OBJ) $(DLL_OBJ)
624#PERLEXE_OBJ	= $(PERLEXE_OBJ) $(WIN32_OBJ) $(DLL_OBJ)
625
626!IF "$(USE_SETARGV)" != ""
627SETARGV_OBJ	= setargv$(o)
628!ENDIF
629
630DYNAMIC_EXT	= Socket IO Fcntl Opcode SDBM_File POSIX attrs Thread B re \
631		Data/Dumper Devel/Peek ByteLoader Devel/DProf File/Glob \
632		Sys/Hostname
633STATIC_EXT	= DynaLoader
634NONXS_EXT	= Errno
635
636DYNALOADER	= $(EXTDIR)\DynaLoader\DynaLoader
637SOCKET		= $(EXTDIR)\Socket\Socket
638FCNTL		= $(EXTDIR)\Fcntl\Fcntl
639OPCODE		= $(EXTDIR)\Opcode\Opcode
640SDBM_FILE	= $(EXTDIR)\SDBM_File\SDBM_File
641IO		= $(EXTDIR)\IO\IO
642POSIX		= $(EXTDIR)\POSIX\POSIX
643ATTRS		= $(EXTDIR)\attrs\attrs
644THREAD		= $(EXTDIR)\Thread\Thread
645B		= $(EXTDIR)\B\B
646RE		= $(EXTDIR)\re\re
647DUMPER		= $(EXTDIR)\Data\Dumper\Dumper
648ERRNO		= $(EXTDIR)\Errno\Errno
649PEEK		= $(EXTDIR)\Devel\Peek\Peek
650BYTELOADER	= $(EXTDIR)\ByteLoader\ByteLoader
651DPROF		= $(EXTDIR)\Devel\DProf\DProf
652GLOB		= $(EXTDIR)\File\Glob\Glob
653HOSTNAME	= $(EXTDIR)\Sys\Hostname\Hostname
654
655SOCKET_DLL	= $(AUTODIR)\Socket\Socket.dll
656FCNTL_DLL	= $(AUTODIR)\Fcntl\Fcntl.dll
657OPCODE_DLL	= $(AUTODIR)\Opcode\Opcode.dll
658SDBM_FILE_DLL	= $(AUTODIR)\SDBM_File\SDBM_File.dll
659IO_DLL		= $(AUTODIR)\IO\IO.dll
660POSIX_DLL	= $(AUTODIR)\POSIX\POSIX.dll
661ATTRS_DLL	= $(AUTODIR)\attrs\attrs.dll
662THREAD_DLL	= $(AUTODIR)\Thread\Thread.dll
663B_DLL		= $(AUTODIR)\B\B.dll
664DUMPER_DLL	= $(AUTODIR)\Data\Dumper\Dumper.dll
665PEEK_DLL	= $(AUTODIR)\Devel\Peek\Peek.dll
666RE_DLL		= $(AUTODIR)\re\re.dll
667BYTELOADER_DLL	= $(AUTODIR)\ByteLoader\ByteLoader.dll
668DPROF_DLL	= $(AUTODIR)\Devel\DProf\DProf.dll
669GLOB_DLL	= $(AUTODIR)\File\Glob\Glob.dll
670HOSTNAME_DLL	= $(AUTODIR)\Sys\Hostname\Hostname.dll
671
672ERRNO_PM	= $(LIBDIR)\Errno.pm
673
674EXTENSION_C	= 		\
675		$(SOCKET).c	\
676		$(FCNTL).c	\
677		$(OPCODE).c	\
678		$(SDBM_FILE).c	\
679		$(IO).c		\
680		$(POSIX).c	\
681		$(ATTRS).c	\
682		$(THREAD).c	\
683		$(RE).c		\
684		$(DUMPER).c	\
685		$(PEEK).c	\
686		$(B).c		\
687		$(BYTELOADER).c	\
688		$(DPROF).c	\
689		$(GLOB).c	\
690		$(HOSTNAME).c
691
692EXTENSION_DLL	= 		\
693		$(SOCKET_DLL)	\
694		$(FCNTL_DLL)	\
695		$(OPCODE_DLL)	\
696		$(SDBM_FILE_DLL)\
697		$(IO_DLL)	\
698		$(POSIX_DLL)	\
699		$(ATTRS_DLL)	\
700		$(DUMPER_DLL)	\
701		$(PEEK_DLL)	\
702		$(B_DLL)	\
703		$(RE_DLL)	\
704		$(THREAD_DLL)	\
705		$(BYTELOADER_DLL)	\
706		$(DPROF_DLL)	\
707		$(GLOB_DLL)	\
708		$(HOSTNAME_DLL)
709
710EXTENSION_PM	=		\
711		$(ERRNO_PM)
712
713POD2HTML	= $(PODDIR)\pod2html
714POD2MAN		= $(PODDIR)\pod2man
715POD2LATEX	= $(PODDIR)\pod2latex
716POD2TEXT	= $(PODDIR)\pod2text
717
718CFG_VARS	=					\
719		"INST_DRV=$(INST_DRV)"			\
720		"INST_TOP=$(INST_TOP)"			\
721		"INST_VER=$(INST_VER)"			\
722		"INST_ARCH=$(INST_ARCH)"		\
723		"archname=$(ARCHNAME)"			\
724		"cc=$(CC)"				\
725		"ccflags=-nologo $(OPTIMIZE:"=\") $(DEFINES) $(BUILDOPT)"	\
726		"cf_email=$(EMAIL)"			\
727		"d_crypt=$(D_CRYPT)"			\
728		"d_mymalloc=$(PERL_MALLOC)"		\
729		"libs=$(LIBFILES)"			\
730		"incpath=$(CCINCDIR:"=\")"		\
731		"libperl=$(PERLIMPLIB:..\=)"		\
732		"libpth=$(CCLIBDIR:"=\");$(EXTRALIBDIRS:"=\")"	\
733		"libc=$(LIBC)"				\
734		"make=nmake"				\
735		"static_ext=$(STATIC_EXT)"		\
736		"dynamic_ext=$(DYNAMIC_EXT)"		\
737		"nonxs_ext=$(NONXS_EXT)"		\
738		"use5005threads=$(USE_5005THREADS)"	\
739		"useithreads=$(USE_ITHREADS)"		\
740		"usethreads=$(USE_5005THREADS)"		\
741		"usemultiplicity=$(USE_MULTI)"		\
742		"LINK_FLAGS=$(LINK_FLAGS:"=\")"		\
743		"optimize=$(OPTIMIZE:"=\")"
744
745#
746# Top targets
747#
748
749all : .\config.h $(GLOBEXE) $(MINIMOD) $(CONFIGPM) $(PERLEXE) \
750	$(X2P) $(EXTENSION_DLL) $(EXTENSION_PM)
751
752$(DYNALOADER)$(o) : $(DYNALOADER).c $(CORE_H) $(EXTDIR)\DynaLoader\dlutils.c
753
754#------------------------------------------------------------
755
756$(GLOBEXE) : perlglob$(o)
757	$(LINK32) $(LINK_FLAGS) $(LIBFILES) -out:$@ -subsystem:$(SUBSYS) \
758	    perlglob$(o) setargv$(o) 
759
760perlglob$(o)  : perlglob.c
761
762config.w32 : $(CFGSH_TMPL)
763	copy $(CFGSH_TMPL) config.w32
764
765.\config.h : $(CFGH_TMPL)
766	-del /f config.h
767	copy $(CFGH_TMPL) config.h
768
769..\config.sh : config.w32 $(MINIPERL) config_sh.PL
770	$(MINIPERL) -I..\lib config_sh.PL $(CFG_VARS) config.w32 > ..\config.sh
771
772# this target is for when changes to the main config.sh happen
773# edit config.{b,v,g}c and make this target once for each supported
774# compiler (e.g. `dmake CCTYPE=BORLAND regen_config_h`)
775regen_config_h:
776	perl config_sh.PL $(CFG_VARS) $(CFGSH_TMPL) > ..\config.sh
777	cd ..
778	-del /f perl.exe
779	perl configpm
780	cd win32
781	-del /f $(CFGH_TMPL)
782	-mkdir $(COREDIR)
783	-perl -I..\lib config_h.PL "INST_VER=$(INST_VER)"
784	rename config.h $(CFGH_TMPL)
785
786$(CONFIGPM) : $(MINIPERL) ..\config.sh config_h.PL ..\minimod.pl
787	cd .. && miniperl configpm
788	if exist lib\* $(RCOPY) lib\*.* ..\lib\$(NULL)
789	$(XCOPY) ..\*.h $(COREDIR)\*.*
790	$(XCOPY) *.h $(COREDIR)\*.*
791	$(XCOPY) ..\ext\re\re.pm $(LIBDIR)\*.*
792	$(RCOPY) include $(COREDIR)\*.*
793	$(MINIPERL) -I..\lib config_h.PL "INST_VER=$(INST_VER)" \
794	    || $(MAKE) /$(MAKEFLAGS) $(CONFIGPM)
795
796$(MINIPERL) : $(MINIDIR) $(MINI_OBJ)
797	$(LINK32) -subsystem:console -out:$@ @<<
798	$(LINK_FLAGS) $(LIBFILES) $(MINI_OBJ)
799<<
800
801$(MINIDIR) :
802	if not exist "$(MINIDIR)" mkdir "$(MINIDIR)"
803
804$(MINICORE_OBJ) : $(CORE_NOCFG_H)
805	$(CC) -c $(CFLAGS) -DPERL_EXTERNAL_GLOB $(OBJOUT_FLAG)$@ ..\$(*F).c
806
807$(MINIWIN32_OBJ) : $(CORE_NOCFG_H)
808	$(CC) -c $(CFLAGS) $(OBJOUT_FLAG)$@ $(*F).c
809
810# -DPERL_IMPLICIT_SYS needs C++ for perllib.c
811# This is the only file that depends on perlhost.h, vmem.h, and vdir.h
812!IF "$(USE_IMP_SYS)$(USE_OBJECT)" == "defineundef"
813perllib$(o)	: perllib.c .\perlhost.h .\vdir.h .\vmem.h
814	$(CC) -c -I. $(CFLAGS_O) $(CXX_FLAG) $(OBJOUT_FLAG)$@ perllib.c
815!ENDIF
816
817# 1. we don't want to rebuild miniperl.exe when config.h changes
818# 2. we don't want to rebuild miniperl.exe with non-default config.h
819$(MINI_OBJ)	: $(CORE_NOCFG_H)
820
821$(WIN32_OBJ)	: $(CORE_H)
822$(CORE_OBJ)	: $(CORE_H)
823$(DLL_OBJ)	: $(CORE_H)
824$(X2P_OBJ)	: $(CORE_H)
825
826perldll.def : $(MINIPERL) $(CONFIGPM) ..\global.sym ..\pp.sym ..\makedef.pl
827	$(MINIPERL) -w ..\makedef.pl PLATFORM=win32 $(OPTIMIZE) $(DEFINES) $(BUILDOPT) \
828	    CCTYPE=$(CCTYPE) > perldll.def
829
830$(PERLDLL): perldll.def $(PERLDLL_OBJ) $(PERLDLL_RES)
831	$(LINK32) -dll -def:perldll.def -base:0x28000000 -out:$@ @<<
832		$(LINK_FLAGS) $(DELAYLOAD) $(LIBFILES) $(PERLDLL_OBJ) $(PERLDLL_RES)
833<<
834	$(XCOPY) $(PERLIMPLIB) $(COREDIR)
835
836$(MINIMOD) : $(MINIPERL) ..\minimod.pl
837	cd .. && miniperl minimod.pl > lib\ExtUtils\Miniperl.pm
838
839..\x2p\a2p$(o) : ..\x2p\a2p.c
840	$(CC) -I..\x2p $(CFLAGS) $(OBJOUT_FLAG)$@ -c ..\x2p\a2p.c
841
842..\x2p\hash$(o) : ..\x2p\hash.c
843	$(CC) -I..\x2p  $(CFLAGS) $(OBJOUT_FLAG)$@ -c ..\x2p\hash.c
844
845..\x2p\str$(o) : ..\x2p\str.c
846	$(CC) -I..\x2p  $(CFLAGS) $(OBJOUT_FLAG)$@ -c ..\x2p\str.c
847
848..\x2p\util$(o) : ..\x2p\util.c
849	$(CC) -I..\x2p  $(CFLAGS) $(OBJOUT_FLAG)$@ -c ..\x2p\util.c
850
851..\x2p\walk$(o) : ..\x2p\walk.c
852	$(CC) -I..\x2p  $(CFLAGS) $(OBJOUT_FLAG)$@ -c ..\x2p\walk.c
853
854$(X2P) : $(MINIPERL) $(X2P_OBJ)
855	$(MINIPERL) ..\x2p\find2perl.PL
856	$(MINIPERL) ..\x2p\s2p.PL
857	$(LINK32) -subsystem:console -out:$@ @<<
858		$(LINK_FLAGS) $(LIBFILES) $(X2P_OBJ)
859<<
860
861perlmain.c : runperl.c 
862	copy runperl.c perlmain.c
863
864perlmain$(o) : perlmain.c
865	$(CC) $(CFLAGS_O) -UPERLDLL $(OBJOUT_FLAG)$@ -c perlmain.c
866
867$(PERLEXE): $(PERLDLL) $(CONFIGPM) $(PERLEXE_OBJ) $(PERLEXE_RES)
868	$(LINK32) -subsystem:console -out:$@ -stack:0x1000000 $(LINK_FLAGS) \
869	    $(LIBFILES) $(PERLEXE_OBJ) $(SETARGV_OBJ) $(PERLIMPLIB) $(PERLEXE_RES)
870	copy $(PERLEXE) $(WPERLEXE)
871	$(MINIPERL) -I..\lib bin\exetype.pl $(WPERLEXE) WINDOWS
872	copy splittree.pl .. 
873	$(MINIPERL) -I..\lib ..\splittree.pl "../LIB" $(AUTODIR)
874
875$(DYNALOADER).c: $(MINIPERL) $(EXTDIR)\DynaLoader\dl_win32.xs $(CONFIGPM)
876	if not exist $(AUTODIR) mkdir $(AUTODIR)
877	cd $(EXTDIR)\$(*B)
878	..\$(MINIPERL) -I..\..\lib $(*B)_pm.PL
879	..\$(MINIPERL) -I..\..\lib XSLoader_pm.PL
880	cd ..\..\win32
881	$(XCOPY) $(EXTDIR)\$(*B)\$(*B).pm $(LIBDIR)\$(NULL)
882	$(XCOPY) $(EXTDIR)\$(*B)\XSLoader.pm $(LIBDIR)\$(NULL)
883	cd $(EXTDIR)\$(*B)
884	$(XSUBPP) dl_win32.xs > $(*B).c
885	cd ..\..\win32
886
887$(EXTDIR)\DynaLoader\dl_win32.xs: dl_win32.xs
888	copy dl_win32.xs $(EXTDIR)\DynaLoader\dl_win32.xs
889
890$(DUMPER_DLL): $(PERLEXE) $(DUMPER).xs
891	cd $(EXTDIR)\Data\$(*B)
892	..\..\..\miniperl -I..\..\..\lib Makefile.PL INSTALLDIRS=perl
893	$(MAKE)
894	cd ..\..\..\win32
895
896$(DPROF_DLL): $(PERLEXE) $(DPROF).xs
897	cd $(EXTDIR)\Devel\$(*B)
898	..\..\..\miniperl -I..\..\..\lib Makefile.PL INSTALLDIRS=perl
899	$(MAKE)
900	cd ..\..\..\win32
901
902$(GLOB_DLL): $(PERLEXE) $(GLOB).xs
903	cd $(EXTDIR)\File\$(*B)
904	..\..\..\miniperl -I..\..\..\lib Makefile.PL INSTALLDIRS=perl
905	$(MAKE)
906	cd ..\..\..\win32
907
908$(PEEK_DLL): $(PERLEXE) $(PEEK).xs
909	cd $(EXTDIR)\Devel\$(*B)
910	..\..\..\miniperl -I..\..\..\lib Makefile.PL INSTALLDIRS=perl
911	$(MAKE)
912	cd ..\..\..\win32
913
914$(RE_DLL): $(PERLEXE) $(RE).xs
915	cd $(EXTDIR)\$(*B)
916	..\..\miniperl -I..\..\lib Makefile.PL INSTALLDIRS=perl
917	$(MAKE)
918	cd ..\..\win32
919
920$(B_DLL): $(PERLEXE) $(B).xs
921	cd $(EXTDIR)\$(*B)
922	..\..\miniperl -I..\..\lib Makefile.PL INSTALLDIRS=perl
923	$(MAKE)
924	cd ..\..\win32
925
926$(THREAD_DLL): $(PERLEXE) $(THREAD).xs
927	cd $(EXTDIR)\$(*B)
928	..\..\miniperl -I..\..\lib Makefile.PL INSTALLDIRS=perl
929	$(MAKE)
930	cd ..\..\win32
931
932$(ATTRS_DLL): $(PERLEXE) $(ATTRS).xs
933	cd $(EXTDIR)\$(*B)
934	..\..\miniperl -I..\..\lib Makefile.PL INSTALLDIRS=perl
935	$(MAKE)
936	cd ..\..\win32
937
938$(POSIX_DLL): $(PERLEXE) $(POSIX).xs
939	cd $(EXTDIR)\$(*B)
940	..\..\miniperl -I..\..\lib Makefile.PL INSTALLDIRS=perl
941	$(MAKE)
942	cd ..\..\win32
943
944$(IO_DLL): $(PERLEXE) $(IO).xs
945	cd $(EXTDIR)\$(*B)
946	..\..\miniperl -I..\..\lib Makefile.PL INSTALLDIRS=perl
947	$(MAKE)
948	cd ..\..\win32
949
950$(SDBM_FILE_DLL) : $(PERLEXE) $(SDBM_FILE).xs
951	cd $(EXTDIR)\$(*B)
952	..\..\miniperl -I..\..\lib Makefile.PL INSTALLDIRS=perl
953	$(MAKE)
954	cd ..\..\win32
955
956$(FCNTL_DLL): $(PERLEXE) $(FCNTL).xs
957	cd $(EXTDIR)\$(*B)
958	..\..\miniperl -I..\..\lib Makefile.PL INSTALLDIRS=perl
959	$(MAKE)
960	cd ..\..\win32
961
962$(OPCODE_DLL): $(PERLEXE) $(OPCODE).xs
963	cd $(EXTDIR)\$(*B)
964	..\..\miniperl -I..\..\lib Makefile.PL INSTALLDIRS=perl
965	$(MAKE)
966	cd ..\..\win32
967
968$(SOCKET_DLL): $(PERLEXE) $(SOCKET).xs
969	cd $(EXTDIR)\$(*B)
970	..\..\miniperl -I..\..\lib Makefile.PL INSTALLDIRS=perl
971	$(MAKE)
972	cd ..\..\win32
973
974$(HOSTNAME_DLL): $(PERLEXE) $(HOSTNAME).xs
975	cd $(EXTDIR)\Sys\$(*B)
976	..\..\..\miniperl -I..\..\..\lib Makefile.PL INSTALLDIRS=perl
977	$(MAKE)
978	cd ..\..\..\win32
979
980$(BYTELOADER_DLL): $(PERLEXE) $(BYTELOADER).xs
981	cd $(EXTDIR)\$(*B)
982	..\..\miniperl -I..\..\lib Makefile.PL INSTALLDIRS=perl
983	$(MAKE)
984	cd ..\..\win32
985
986$(ERRNO_PM): $(PERLEXE) $(ERRNO)_pm.PL
987	cd $(EXTDIR)\$(*B)
988	..\..\miniperl -I..\..\lib Makefile.PL INSTALLDIRS=perl
989	$(MAKE)
990	cd ..\..\win32
991
992doc: $(PERLEXE)
993	$(PERLEXE) -I..\lib ..\installhtml --podroot=.. --htmldir=./html \
994	    --podpath=pod:lib:ext:utils --htmlroot="file://$(INST_HTML::=|)" \
995	    --libpod=perlfunc:perlguts:perlvar:perlrun:perlop --recurse
996
997utils: $(PERLEXE) $(X2P)
998	cd ..\utils
999	$(MAKE) PERL=$(MINIPERL)
1000	cd ..\pod
1001	copy ..\README.aix	.\perlaix.pod
1002	copy ..\README.amiga	.\perlamiga.pod
1003	copy ..\README.bs2000	.\perlbs2000.pod
1004	copy ..\README.cygwin	.\perlcygwin.pod
1005	copy ..\README.dos	.\perldos.pod
1006	copy ..\README.epoc	.\perlepoc.pod
1007	copy ..\README.hpux	.\perlhpux.pod
1008	copy ..\README.machten	.\perlmachten.pod
1009	copy ..\README.macos	.\perlmacos.pod
1010	copy ..\README.mpeix	.\perlmpeix.pod
1011	copy ..\README.os2	.\perlos2.pod
1012	copy ..\README.os390	.\perlos390.pod
1013	copy ..\README.solaris	.\perlsolaris.pod
1014	copy ..\README.vmesa	.\perlvmesa.pod
1015	copy ..\vms\perlvms.pod	.\perlvms.pod
1016	copy ..\README.vos	.\perlvos.pod
1017	copy ..\README.win32	.\perlwin32.pod
1018	$(MAKE) -f ..\win32\pod.mak converters
1019	cd ..\win32
1020	$(PERLEXE) $(PL2BAT) $(UTILS)
1021
1022distclean: clean
1023	-del /f $(MINIPERL) $(PERLEXE) $(PERLDLL) $(GLOBEXE) \
1024		$(PERLIMPLIB) ..\miniperl.lib $(MINIMOD)
1025	-del /f *.def *.map
1026	-del /f $(EXTENSION_DLL) $(EXTENSION_PM)
1027	-del /f $(EXTENSION_C) $(DYNALOADER).c $(ERRNO).pm
1028	-del /f $(EXTDIR)\DynaLoader\dl_win32.xs $(EXTDIR)\DynaLoader\DynaLoader.pm
1029	-del /f $(LIBDIR)\.exists $(LIBDIR)\attrs.pm $(LIBDIR)\DynaLoader.pm
1030	-del /f $(LIBDIR)\XSLoader.pm $(EXTDIR)\DynaLoader\XSLoader.pm
1031	-del /f $(LIBDIR)\Devel\.exists $(LIBDIR)\File\.exists $(LIBDIR)\Sys\.exists
1032	-del /f $(LIBDIR)\Fcntl.pm $(LIBDIR)\IO.pm $(LIBDIR)\Opcode.pm
1033	-del /f $(LIBDIR)\ops.pm $(LIBDIR)\Safe.pm $(LIBDIR)\Thread.pm
1034	-del /f $(LIBDIR)\SDBM_File.pm $(LIBDIR)\Socket.pm $(LIBDIR)\POSIX.pm
1035	-del /f $(LIBDIR)\B.pm $(EXTDIR)\B\defsubs.h $(LIBDIR)\O.pm $(LIBDIR)\re.pm
1036	-del /f $(LIBDIR)\Data\Dumper.pm $(LIBDIR)\ByteLoader.pm
1037	-del /f $(LIBDIR)\Devel\Peek.pm $(LIBDIR)\Devel\DProf.pm
1038	-del /f $(LIBDIR)\File\Glob.pm
1039	-if exist $(LIBDIR)\IO rmdir /s /q $(LIBDIR)\IO || rmdir /s $(LIBDIR)\IO
1040	-if exist $(LIBDIR)\Thread rmdir /s /q $(LIBDIR)\Thread || rmdir /s $(LIBDIR)\Thread
1041	-if exist $(LIBDIR)\B rmdir /s /q $(LIBDIR)\B || rmdir /s $(LIBDIR)\B
1042	-if exist $(LIBDIR)\Data rmdir /s /q $(LIBDIR)\Data || rmdir /s $(LIBDIR)\Data
1043	cd $(PODDIR)
1044	-del /f *.html *.bat checkpods \
1045	    perlaix.pod perlamiga.pod perlbs2000.pod perlcygwin.pod \
1046	    perldos.pod perlepoc.pod perlhpux.pod perlmachten.pod \
1047	    perlmacos.pod perlmpeix.pod perlos2.pod perlos390.pod \
1048	    perlsolaris.pod perlvmesa.pod perlvms.pod perlvos.pod \
1049	    perlwin32.pod pod2html pod2latex pod2man pod2text pod2usage \
1050	    podchecker podselect
1051	cd ..\utils
1052	-del /f h2ph splain perlbug pl2pm c2ph h2xs perldoc dprofpp \
1053	    *.bat perlcc pstruct
1054	cd ..\win32
1055	cd ..\x2p
1056	-del /f find2perl s2p
1057	-del /f *.bat
1058	cd ..\win32
1059	-del /f ..\config.sh ..\splittree.pl perlmain.c dlutils.c config.h.new
1060	-del /f $(CONFIGPM)
1061	-del /f bin\*.bat
1062	cd $(EXTDIR)
1063	-del /s *.lib *.def *.map *.pdb *.bs Makefile *$(o) pm_to_blib
1064	cd ..\win32
1065	-if exist $(AUTODIR) rmdir /s /q $(AUTODIR) || rmdir /s $(AUTODIR)
1066	-if exist $(COREDIR) rmdir /s /q $(COREDIR) || rmdir /s $(COREDIR)
1067
1068install : all installbare installhtml
1069
1070installbare : utils
1071	$(PERLEXE) ..\installperl
1072	if exist $(WPERLEXE) $(XCOPY) $(WPERLEXE) $(INST_BIN)\*.*
1073	$(XCOPY) $(GLOBEXE) $(INST_BIN)\*.*
1074	$(XCOPY) bin\*.bat $(INST_SCRIPT)\*.*
1075
1076installhtml : doc
1077	$(RCOPY) html\*.* $(INST_HTML)\*.*
1078
1079inst_lib : $(CONFIGPM)
1080	copy splittree.pl .. 
1081	$(MINIPERL) -I..\lib ..\splittree.pl "../LIB" $(AUTODIR)
1082	$(RCOPY) ..\lib $(INST_LIB)\*.*
1083
1084minitest : $(MINIPERL) $(GLOBEXE) $(CONFIGPM) utils
1085	$(XCOPY) $(MINIPERL) ..\t\perl.exe
1086	$(XCOPY) $(GLOBEXE) ..\t\$(NULL)
1087	attrib -r ..\t\*.*
1088	copy test ..\t
1089	cd ..\t
1090	$(MINIPERL) -I..\lib test base/*.t comp/*.t cmd/*.t io/*.t op/*.t pragma/*.t
1091	cd ..\win32
1092
1093test-prep : all utils
1094	$(XCOPY) $(PERLEXE) ..\t\$(NULL)
1095	$(XCOPY) $(PERLDLL) ..\t\$(NULL)
1096	$(XCOPY) $(GLOBEXE) ..\t\$(NULL)
1097
1098test : test-prep
1099	cd ..\t
1100	$(PERLEXE) -I..\lib harness
1101	cd ..\win32
1102
1103test-notty : test-prep
1104	set PERL_SKIP_TTY_TEST=1
1105	cd ..\t
1106	$(PERLEXE) -I..\lib harness
1107	cd ..\win32
1108
1109test-wide : test-prep
1110	set HARNESS_PERL_SWITCHES=-C
1111	cd ..\t
1112	$(PERLEXE) -I..\lib harness
1113	cd ..\win32
1114
1115test-wide-notty : test-prep
1116	set PERL_SKIP_TTY_TEST=1
1117	set HARNESS_PERL_SWITCHES=-C
1118	cd ..\t
1119	$(PERLEXE) -I..\lib harness
1120	cd ..\win32
1121
1122clean : 
1123	-@erase miniperlmain$(o)
1124	-@erase $(MINIPERL)
1125	-@erase perlglob$(o)
1126	-@erase perlmain$(o)
1127	-@erase config.w32
1128	-@erase /f config.h
1129	-@erase $(GLOBEXE)
1130	-@erase $(PERLEXE)
1131	-@erase $(WPERLEXE)
1132	-@erase $(PERLDLL)
1133	-@erase $(CORE_OBJ)
1134	-if exist $(MINIDIR) rmdir /s /q $(MINIDIR) || rmdir /s $(MINIDIR)
1135	-@erase $(WIN32_OBJ)
1136	-@erase $(DLL_OBJ)
1137	-@erase $(X2P_OBJ)
1138	-@erase ..\*$(o) ..\*.lib ..\*.exp *$(o) *.lib *.exp *.res
1139	-@erase ..\t\*.exe ..\t\*.dll ..\t\*.bat
1140	-@erase ..\x2p\*.exe ..\x2p\*.bat
1141	-@erase *.ilk
1142	-@erase *.pdb
1143 
1144# Handy way to run perlbug -ok without having to install and run the
1145# installed perlbug. We don't re-run the tests here - we trust the user.
1146# Please *don't* use this unless all tests pass.
1147# If you want to report test failures, use "nmake nok" instead.
1148ok: utils
1149	$(PERLEXE) -I..\lib ..\utils\perlbug -ok -s "(UNINSTALLED)"
1150
1151okfile: utils
1152	$(PERLEXE) -I..\lib ..\utils\perlbug -ok -s "(UNINSTALLED)" -F perl.ok
1153 
1154nok: utils
1155	$(PERLEXE) -I..\lib ..\utils\perlbug -nok -s "(UNINSTALLED)"
1156 
1157nokfile: utils
1158	$(PERLEXE) -I..\lib ..\utils\perlbug -nok -s "(UNINSTALLED)" -F perl.nok
1159