Fix utils/perldoc.PL for dos-djgpp:
[p5sagit/p5-mst-13.2.git] / win32 / Makefile
1 #
2 # Makefile to build perl on Windowns NT using Microsoft NMAKE.
3 #
4 #
5 # This is set up to build a perl.exe that runs off a shared library
6 # (perl.dll).  Also makes individual DLLs for the XS extensions.
7 #
8
9 #
10 # Set these to wherever you want "nmake install" to put your
11 # newly built perl.
12 INST_DRV=c:
13 INST_TOP=$(INST_DRV)\perl5004.5x
14 BUILDOPT=-DUSE_THREADS
15 #BUILDOPT=-DMULTIPLICITY 
16 #BUILDOPT=-DMULTIPLICITY -DUSE_THREADS
17 #BUILDOPT=-DPERL_GLOBAL_STRUCT -DMULTIPLICITY 
18
19 #
20 # uncomment next line if you are using Visual C++ 2.x
21 #CCTYPE=MSVC20
22
23 #
24 # uncomment next line if you want debug version of perl (big,slow)
25 #CFG=Debug
26
27 #
28 # if you have the source for des_fcrypt(), uncomment this and make sure the
29 # file exists (see README.win32)
30 #CRYPT_SRC=des_fcrypt.c
31
32 #
33 # if you didn't set CRYPT_SRC and if you have des_fcrypt() available in a
34 # library, uncomment this, and make sure the library exists (see README.win32)
35 #CRYPT_LIB=des_fcrypt.lib
36
37 #
38 # set the install locations of the compiler include/libraries
39 #CCHOME = f:\msvc20
40 CCHOME = $(MSVCDIR)
41 CCINCDIR = $(CCHOME)\include
42 CCLIBDIR = $(CCHOME)\lib
43
44 #
45 # set this to your email address (perl will guess a value from
46 # from your loginname and your hostname, which may not be right)
47 #EMAIL = 
48
49 ##################### CHANGE THESE ONLY IF YOU MUST #####################
50
51 !IF "$(CRYPT_SRC)$(CRYPT_LIB)" == ""
52 D_CRYPT=undef
53 !ELSE
54 D_CRYPT=define
55 CRYPT_FLAG=-DHAVE_DES_FCRYPT
56 !ENDIF
57
58 #
59 # Programs to compile, build .lib files and link
60 #
61
62 CC=cl.exe
63 LINK32=link.exe
64 LIB32=$(LINK32) -lib
65 #
66 # Options
67 #
68 !IF "$(RUNTIME)" == ""
69 RUNTIME  = -MD
70 !ENDIF
71 INCLUDES = -I.\include -I. -I..
72 #PCHFLAGS = -Fp"$(INTDIR)/modules.pch" -YX 
73 DEFINES  = -DWIN32 -D_CONSOLE $(BUILDOPT) $(CRYPT_FLAG)
74 LOCDEFS  = -DPERLDLL -DPERL_CORE
75 SUBSYS   = console
76
77 !IF "$(RUNTIME)" == "-MD"
78 LIBC = msvcrt.lib
79 WINIOMAYBE =
80 !ELSE
81 LIBC = libcmt.lib
82 WINIOMAYBE =
83 !ENDIF
84
85 !IF  "$(CFG)" == "Debug"
86 !  IF "$(CCTYPE)" == "MSVC20"
87 OPTIMIZE = -Od $(RUNTIME) -Z7 -D_DEBUG -DDEBUGGING
88 !  ELSE
89 OPTIMIZE = -Od $(RUNTIME)d -Z7 -D_DEBUG -DDEBUGGING
90 !  ENDIF
91 LINK_DBG = -debug -pdb:none
92 !ELSE
93 !  IF "$(CCTYPE)" == "MSVC20"
94 OPTIMIZE = -Od $(RUNTIME) -DNDEBUG
95 !  ELSE
96 OPTIMIZE = -Od $(RUNTIME) -DNDEBUG
97 !  ENDIF
98 LINK_DBG = -release
99 !ENDIF
100
101 # we don't add LIBC here, the compiler do it based on -MD/-MT
102 LIBFILES = $(CRYPT_LIB) oldnames.lib kernel32.lib user32.lib gdi32.lib \
103         winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib \
104         oleaut32.lib netapi32.lib uuid.lib wsock32.lib mpr.lib winmm.lib \
105         version.lib odbc32.lib odbccp32.lib
106
107 CFLAGS   = -nologo -Gf -W3 $(INCLUDES) $(DEFINES) $(LOCDEFS) $(PCHFLAGS) $(OPTIMIZE)
108 LINK_FLAGS  = -nologo $(LINK_DBG) -machine:$(PROCESSOR_ARCHITECTURE)
109 OBJOUT_FLAG = -Fo
110 EXEOUT_FLAG = -Fe
111
112 #################### do not edit below this line #######################
113 ############# NO USER-SERVICEABLE PARTS BEYOND THIS POINT ##############
114
115 o = .obj
116
117 #
118 # Rules
119
120
121 .SUFFIXES : .c $(o) .dll .lib .exe
122
123 .c$(o):
124         $(CC) -c $(CFLAGS) $(OBJOUT_FLAG)$@ $<
125
126 $(o).dll:
127         $(LINK32) -dll -subsystem:windows -implib:$(*B).lib -def:$(*B).def \
128             -out:$@ $(LINK_FLAGS) $(LIBFILES) $< $(LIBPERL)  
129
130 #
131 INST_BIN=$(INST_TOP)\bin
132 INST_LIB=$(INST_TOP)\lib
133 INST_POD=$(INST_LIB)\pod
134 INST_HTML=$(INST_POD)\html
135 LIBDIR=..\lib
136 EXTDIR=..\ext
137 PODDIR=..\pod
138 EXTUTILSDIR=$(LIBDIR)\extutils
139
140 #
141 # various targets
142 PERLIMPLIB=..\perl.lib
143 MINIPERL=..\miniperl.exe
144 PERLDLL=..\perl.dll
145 PERLEXE=..\perl.exe
146 GLOBEXE=..\perlglob.exe
147 CONFIGPM=..\lib\Config.pm
148 MINIMOD=..\lib\ExtUtils\Miniperl.pm
149
150 PL2BAT=bin\pl2bat.pl
151 GLOBBAT = bin\perlglob.bat
152
153 MAKE=nmake -nologo
154 CFGSH_TMPL = config.vc
155 CFGH_TMPL = config_H.vc
156 PERL95EXE=..\perl95.exe
157 XCOPY=xcopy /f /r /i /d
158 RCOPY=xcopy /f /r /i /e /d
159 NULL=
160
161 !IF "$(CRYPT_SRC)" != ""
162 CRYPT_OBJ=$(CRYPT_SRC:.c=.obj)
163 !ENDIF
164
165 #
166 # filenames given to xsubpp must have forward slashes (since it puts
167 # full pathnames in #line strings)
168 XSUBPP=..\$(MINIPERL) -I..\..\lib ..\$(EXTUTILSDIR)\xsubpp -C++ -prototypes
169
170 CORE_C= ..\av.c         \
171         ..\deb.c        \
172         ..\doio.c       \
173         ..\doop.c       \
174         ..\dump.c       \
175         ..\globals.c    \
176         ..\gv.c         \
177         ..\hv.c         \
178         ..\mg.c         \
179         ..\op.c         \
180         ..\perl.c       \
181         ..\perlio.c     \
182         ..\perly.c      \
183         ..\pp.c         \
184         ..\pp_ctl.c     \
185         ..\pp_hot.c     \
186         ..\pp_sys.c     \
187         ..\regcomp.c    \
188         ..\regexec.c    \
189         ..\run.c        \
190         ..\scope.c      \
191         ..\sv.c         \
192         ..\taint.c      \
193         ..\toke.c       \
194         ..\universal.c  \
195         ..\util.c       \
196         ..\malloc.c     \
197         $(CRYPT_SRC)
198
199 CORE_OBJ= ..\av$(o)     \
200         ..\deb$(o)      \
201         ..\doio$(o)     \
202         ..\doop$(o)     \
203         ..\dump$(o)     \
204         ..\globals$(o)  \
205         ..\gv$(o)       \
206         ..\hv$(o)       \
207         ..\mg$(o)       \
208         ..\op$(o)       \
209         ..\perl$(o)     \
210         ..\perlio$(o)   \
211         ..\perly$(o)    \
212         ..\pp$(o)       \
213         ..\pp_ctl$(o)   \
214         ..\pp_hot$(o)   \
215         ..\pp_sys$(o)   \
216         ..\regcomp$(o)  \
217         ..\regexec$(o)  \
218         ..\run$(o)      \
219         ..\scope$(o)    \
220         ..\sv$(o)       \
221         ..\taint$(o)    \
222         ..\toke$(o)     \
223         ..\universal$(o)\
224         ..\util$(o)     \
225         ..\malloc$(o)   \
226         $(CRYPT_OBJ)
227
228 WIN32_C = perllib.c \
229         win32.c \
230         win32sck.c \
231         win32thread.c 
232
233 WIN32_OBJ = win32$(o) \
234         win32sck$(o) \
235         win32thread$(o)
236
237 PERL95_OBJ = perl95$(o) \
238         win32mt$(o) \
239         win32sckmt$(o) \
240         $(CRYPT_OBJ)
241
242 DLL_OBJ = perllib$(o) $(DYNALOADER)$(o)
243
244 CORE_H = ..\av.h        \
245         ..\cop.h        \
246         ..\cv.h         \
247         ..\dosish.h     \
248         ..\embed.h      \
249         ..\form.h       \
250         ..\gv.h         \
251         ..\handy.h      \
252         ..\hv.h         \
253         ..\mg.h         \
254         ..\nostdio.h    \
255         ..\op.h         \
256         ..\opcode.h     \
257         ..\perl.h       \
258         ..\perlio.h     \
259         ..\perlsdio.h   \
260         ..\perlsfio.h   \
261         ..\perly.h      \
262         ..\pp.h         \
263         ..\proto.h      \
264         ..\regexp.h     \
265         ..\scope.h      \
266         ..\sv.h         \
267         ..\thread.h     \
268         ..\unixish.h    \
269         ..\util.h       \
270         ..\XSUB.h       \
271         .\config.h      \
272         ..\EXTERN.h     \
273         ..\perlvars.h   \
274         ..\intrpvar.h   \
275         ..\thrdvar.h    \
276         .\include\dirent.h      \
277         .\include\netdb.h       \
278         .\include\sys\socket.h  \
279         .\win32.h
280
281 DYNAMIC_EXT=Socket IO Fcntl Opcode SDBM_File attrs Thread
282 STATIC_EXT=DynaLoader
283
284 DYNALOADER=$(EXTDIR)\DynaLoader\DynaLoader
285 SOCKET=$(EXTDIR)\Socket\Socket
286 FCNTL=$(EXTDIR)\Fcntl\Fcntl
287 OPCODE=$(EXTDIR)\Opcode\Opcode
288 SDBM_FILE=$(EXTDIR)\SDBM_File\SDBM_File
289 IO=$(EXTDIR)\IO\IO
290 ATTRS=$(EXTDIR)\attrs\attrs
291 THREAD=$(EXTDIR)\Thread\Thread
292
293 SOCKET_DLL=..\lib\auto\Socket\Socket.dll
294 FCNTL_DLL=..\lib\auto\Fcntl\Fcntl.dll
295 OPCODE_DLL=..\lib\auto\Opcode\Opcode.dll
296 SDBM_FILE_DLL=..\lib\auto\SDBM_File\SDBM_File.dll
297 IO_DLL=..\lib\auto\IO\IO.dll
298 ATTRS_DLL=..\lib\auto\attrs\attrs.dll
299 THREAD_DLL=..\lib\auto\Thread\Thread.dll
300
301 STATICLINKMODULES=DynaLoader
302 DYNALOADMODULES=        \
303         $(SOCKET_DLL)   \
304         $(FCNTL_DLL)    \
305         $(OPCODE_DLL)   \
306         $(SDBM_FILE_DLL)\
307         $(IO_DLL)       \
308         $(ATTRS_DLL)    \
309         $(THREAD_DLL)
310
311 POD2HTML=$(PODDIR)\pod2html
312 POD2MAN=$(PODDIR)\pod2man
313 POD2LATEX=$(PODDIR)\pod2latex
314 POD2TEXT=$(PODDIR)\pod2text
315
316 #
317 # Top targets
318 #
319
320 all: $(PERLEXE) $(PERL95EXE) $(GLOBEXE) $(DYNALOADMODULES) $(MINIMOD) $(GLOBBAT)
321
322 $(DYNALOADER)$(o) : $(DYNALOADER).c $(CORE_H) $(EXTDIR)\DynaLoader\dlutils.c
323
324 #------------------------------------------------------------
325
326 $(GLOBEXE): perlglob$(o)
327         $(LINK32) $(LINK_FLAGS) $(LIBFILES) -out:$@ -subsystem:$(SUBSYS) \
328             perlglob$(o) setargv$(o) 
329
330 $(GLOBBAT) : ..\lib\File\DosGlob.pm $(MINIPERL)
331         $(MINIPERL) $(PL2BAT) - < ..\lib\File\DosGlob.pm > $(GLOBBAT)
332
333 perlglob$(o)  : perlglob.c
334
335 ..\miniperlmain$(o) : ..\miniperlmain.c $(CORE_H)
336
337 config.w32 : $(CFGSH_TMPL)
338         copy $(CFGSH_TMPL) config.w32
339
340 .\config.h : $(CFGH_TMPL)
341         -del /f config.h
342         copy $(CFGH_TMPL) config.h
343
344 ..\config.sh : config.w32 $(MINIPERL) config_sh.PL
345         $(MINIPERL) -I..\lib config_sh.PL       \
346             "INST_DRV=$(INST_DRV)"              \
347             "INST_TOP=$(INST_TOP)"              \
348             "cc=$(CC)"                          \
349             "ccflags=$(OPTIMIZE) $(DEFINES)"    \
350             "cf_email=$(EMAIL)"                 \
351             "d_crypt=$(D_CRYPT)"                \
352             "libs=$(LIBFILES)"                  \
353             "incpath=$(CCINCDIR)"               \
354             "libpth=$(CCLIBDIR)"                \
355             "libc=$(LIBC)"                      \
356             "static_ext=$(STATIC_EXT)"          \
357             "dynamic_ext=$(DYNAMIC_EXT)"        \
358             "ldflags=$(LINK_FLAGS)"             \
359             "optimize=$(OPTIMIZE)"              \
360             config.w32                          > ..\config.sh
361
362 $(CONFIGPM) : $(MINIPERL) ..\config.sh config_h.PL ..\minimod.pl
363         cd .. && miniperl configpm
364         if exist lib\* $(RCOPY) lib\*.* ..\lib\$(NULL)
365         $(XCOPY) ..\*.h ..\lib\CORE\*.*
366         $(XCOPY) *.h ..\lib\CORE\*.*
367         $(RCOPY) include ..\lib\CORE\*.*
368         $(MINIPERL) -I..\lib config_h.PL || $(MAKE) CCTYPE=$(CCTYPE) \
369             RUNTIME=$(RUNTIME) CFG=$(CFG) $(CONFIGPM)
370
371 $(MINIPERL) : ..\miniperlmain$(o) $(CORE_OBJ) $(WIN32_OBJ)
372         $(LINK32) -subsystem:console -out:$@ @<<
373         $(LINK_FLAGS) $(LIBFILES) ..\miniperlmain$(o) $(CORE_OBJ) $(WIN32_OBJ)
374 <<
375
376 $(WIN32_OBJ)  : $(CORE_H)
377 $(CORE_OBJ)   : $(CORE_H)
378 $(DLL_OBJ)    : $(CORE_H) 
379 $(PERL95_OBJ) : $(CORE_H)
380
381 perldll.def : $(MINIPERL) $(CONFIGPM) ..\global.sym makedef.pl
382         $(MINIPERL) -w makedef.pl $(OPTIMIZE) $(DEFINES) \
383             CCTYPE=$(CCTYPE) > perldll.def
384
385 $(PERLDLL): perldll.def $(CORE_OBJ) $(WIN32_OBJ) $(DLL_OBJ)
386         $(LINK32) -dll -def:perldll.def -out:$@ @<<
387                 $(LINK_FLAGS) $(LIBFILES) $(CORE_OBJ) $(WIN32_OBJ) $(DLL_OBJ)
388 <<
389         $(XCOPY) $(PERLIMPLIB) ..\lib\CORE
390
391 perl.def  : $(MINIPERL) makeperldef.pl
392         $(MINIPERL) -I..\lib makeperldef.pl $(NULL) > perl.def
393
394 $(MINIMOD) : $(MINIPERL) ..\minimod.pl
395         cd .. && miniperl minimod.pl > lib\ExtUtils\Miniperl.pm
396
397 perlmain.c : runperl.c 
398         copy runperl.c perlmain.c
399
400 perlmain$(o) : perlmain.c
401         $(CC) $(CFLAGS) -UPERLDLL -c perlmain.c
402
403 $(PERLEXE): $(PERLDLL) $(CONFIGPM) perlmain$(o)  
404         $(LINK32) -subsystem:console -out:perl.exe $(LINK_FLAGS) $(LIBFILES) \
405             perlmain$(o) $(WINIOMAYBE) $(PERLIMPLIB) 
406         copy perl.exe $@
407         del perl.exe
408         copy splittree.pl .. 
409         $(MINIPERL) -I..\lib ..\splittree.pl "../LIB" "../LIB/auto"
410
411 perl95.c : runperl.c 
412         copy runperl.c perl95.c
413
414 perl95$(o) : perl95.c
415         $(CC) $(CFLAGS) -MT -UPERLDLL -DWIN95FIX -c perl95.c
416
417 win32sckmt$(o) : win32sck.c
418         $(CC) $(CFLAGS) -MT -UPERLDLL -DWIN95FIX -c $(OBJOUT_FLAG)win32sckmt$(o) win32sck.c
419
420 win32mt$(o) : win32.c
421         $(CC) $(CFLAGS) -MT -UPERLDLL -DWIN95FIX -c $(OBJOUT_FLAG)win32mt$(o) win32.c
422
423 $(PERL95EXE): $(PERLDLL) $(CONFIGPM) $(PERL95_OBJ)
424         $(LINK32) -subsystem:console -out:perl95.exe $(LINK_FLAGS) $(LIBFILES) \
425             $(PERL95_OBJ) $(PERLIMPLIB) 
426         copy perl95.exe $@
427         del perl95.exe
428
429 $(DYNALOADER).c: $(MINIPERL) $(EXTDIR)\DynaLoader\dl_win32.xs $(CONFIGPM)
430         if not exist ..\lib\auto mkdir ..\lib\auto
431         $(XCOPY) $(EXTDIR)\$(*B)\$(*B).pm $(LIBDIR)\$(NULL)
432         cd $(EXTDIR)\$(*B)
433         $(XSUBPP) dl_win32.xs > $(*B).c
434         cd ..\..\win32
435
436 $(EXTDIR)\DynaLoader\dl_win32.xs: dl_win32.xs
437         copy dl_win32.xs $(EXTDIR)\DynaLoader\dl_win32.xs
438
439 $(ATTRS_DLL): $(PERLEXE) $(ATTRS).xs
440         cd $(EXTDIR)\$(*B)
441         ..\..\miniperl -I..\..\lib Makefile.PL INSTALLDIRS=perl
442         $(MAKE)
443         cd ..\..\win32
444
445 $(THREAD_DLL): $(PERLEXE) $(THREAD).xs
446         cd $(EXTDIR)\$(*B)
447         ..\..\miniperl -I..\..\lib Makefile.PL INSTALLDIRS=perl
448         $(MAKE)
449         cd ..\..\win32
450
451
452 $(IO_DLL): $(PERLEXE) $(CONFIGPM) $(IO).xs
453         cd $(EXTDIR)\$(*B)
454         ..\..\miniperl -I..\..\lib Makefile.PL INSTALLDIRS=perl
455         $(MAKE)
456         cd ..\..\win32
457
458 $(SDBM_FILE_DLL) : $(PERLEXE) $(SDBM_FILE).xs
459         cd $(EXTDIR)\$(*B)
460         ..\..\miniperl -I..\..\lib Makefile.PL INSTALLDIRS=perl
461         $(MAKE)
462         cd ..\..\win32
463
464 $(FCNTL_DLL): $(PERLEXE) $(FCNTL).xs
465         cd $(EXTDIR)\$(*B)
466         ..\..\miniperl -I..\..\lib Makefile.PL INSTALLDIRS=perl
467         $(MAKE)
468         cd ..\..\win32
469
470 $(OPCODE_DLL): $(PERLEXE) $(OPCODE).xs
471         cd $(EXTDIR)\$(*B)
472         ..\..\miniperl -I..\..\lib Makefile.PL INSTALLDIRS=perl
473         $(MAKE)
474         cd ..\..\win32
475
476 $(SOCKET_DLL): $(PERLEXE) $(SOCKET).xs
477         cd $(EXTDIR)\$(*B)
478         ..\..\miniperl -I..\..\lib Makefile.PL INSTALLDIRS=perl
479         $(MAKE)
480         cd ..\..\win32
481
482 doc: $(PERLEXE)
483         cd ..\pod
484         $(MAKE) -f ..\win32\pod.mak checkpods pod2html pod2latex \
485                 pod2man pod2text
486         $(XCOPY) *.bat ..\win32\bin\*.*
487         cd ..\win32
488         copy ..\README.win32 ..\pod\perlwin32.pod
489         $(PERLEXE) ..\installhtml --podroot=.. --htmldir=./html \
490             --podpath=pod:lib:ext:utils --htmlroot="//$(INST_HTML::=|)" \
491             --libpod=perlfunc:perlguts:perlvar:perlrun:perlop --recurse
492
493 utils: $(PERLEXE)
494         cd ..\utils
495         nmake PERL=$(MINIPERL)
496         $(PERLEXE) ..\win32\$(PL2BAT) h2ph splain perlbug pl2pm c2ph
497         $(PERLEXE) ..\win32\$(PL2BAT) h2xs perldoc pstruct
498         $(XCOPY) *.bat ..\win32\bin\*.*
499         cd ..\win32
500         $(PERLEXE) $(PL2BAT) bin\network.pl bin\www.pl bin\runperl.pl \
501                         bin\pl2bat.pl
502
503 distclean: clean
504         -del /f $(MINIPERL) $(PERLEXE) $(PERL95EXE) $(PERLDLL) $(GLOBEXE) \
505                 $(PERLIMPLIB) ..\miniperl.lib $(MINIMOD)
506         -del /f *.def *.map
507         -del /f $(SOCKET_DLL) $(IO_DLL) $(SDBM_FILE_DLL) $(FCNTL_DLL) \
508                 $(OPCODE_DLL) $(ATTRS_DLL) $(THREAD_DLL)
509         -del /f $(SOCKET).c $(IO).c $(SDBM_FILE).c $(FCNTL).c $(OPCODE).c \
510                 $(DYNALOADER).c $(ATTRS).c $(THREAD).c
511         -del /f $(PODDIR)\*.html
512         -del /f $(PODDIR)\*.bat
513         -del /f ..\config.sh ..\splittree.pl perlmain.c dlutils.c \
514                 config.h.new perl95.c
515         -del /f bin\*.bat
516         -rmdir /s /q ..\lib\auto
517         -rmdir /s /q ..\lib\CORE
518         cd $(EXTDIR)
519         -del /s *.lib *.def *.map *.bs Makefile *$(o) pm_to_blib
520         cd ..\win32
521
522 install : all doc utils
523         if not exist $(INST_TOP) mkdir $(INST_TOP)
524         echo I $(INST_TOP) L $(LIBDIR)
525         $(XCOPY) $(PERLEXE) $(INST_BIN)\*.*
526         $(XCOPY) $(PERL95EXE) $(INST_BIN)\*.*
527         $(XCOPY) $(GLOBEXE) $(INST_BIN)\*.*
528         $(XCOPY) $(PERLDLL) $(INST_BIN)\*.*
529         $(XCOPY) bin\*.bat $(INST_BIN)\*.*
530         $(RCOPY) ..\lib $(INST_LIB)\*.*
531         $(XCOPY) ..\pod\*.bat $(INST_BIN)\*.*
532         $(XCOPY) ..\pod\*.pod $(INST_POD)\*.*
533         $(RCOPY) html\*.* $(INST_HTML)\*.*
534
535 inst_lib : $(CONFIGPM)
536         copy splittree.pl .. 
537         $(MINIPERL) -I..\lib ..\splittree.pl "../LIB" "../LIB/auto"
538         $(RCOPY) ..\lib $(INST_LIB)\*.*
539
540 minitest : $(MINIPERL) $(GLOBEXE) $(CONFIGPM)
541         $(XCOPY) $(MINIPERL) ..\t\perl.exe
542         $(XCOPY) $(GLOBEXE) ..\t\$(NULL)
543         attrib -r ..\t\*.*
544         copy test ..\t
545         cd ..\t
546         $(MINIPERL) -I..\lib test base/*.t comp/*.t cmd/*.t io/*.t op/*.t pragma/*.t
547         cd ..\win32
548
549 test-prep : all
550         $(XCOPY) $(PERLEXE) ..\t\$(NULL)
551         $(XCOPY) $(PERLDLL) ..\t\$(NULL)
552         $(XCOPY) $(GLOBEXE) ..\t\$(NULL)
553
554 test : test-prep
555         cd ..\t
556         $(PERLEXE) -I..\lib harness
557         cd ..\win32
558
559 test-notty : test-prep
560         set PERL_SKIP_TTY_TEST=1
561         cd ..\t
562         $(PERLEXE) -I..\lib harness
563         cd ..\win32
564
565 clean : 
566         -@erase miniperlmain$(o)
567         -@erase $(MINIPERL)
568         -@erase perlglob$(o)
569         -@erase perlmain$(o)
570         -@erase config.w32
571         -@erase /f config.h
572         -@erase $(GLOBEXE)
573         -@erase $(PERLEXE)
574         -@erase $(PERLDLL)
575         -@erase $(CORE_OBJ)
576         -@erase $(WIN32_OBJ)
577         -@erase $(DLL_OBJ)
578         -@erase ..\*$(o) ..\*.lib ..\*.exp *$(o) *.lib *.exp
579         -@erase ..\t\*.exe ..\t\*.dll ..\t\*.bat
580         -@erase *.ilk
581         -@erase *.pdb
582
583