2 # Makefile to build perl on Windows NT using DMAKE.
4 # Visual C++ 2.0 through 6.0 (and possibly newer versions)
6 # Mingw32 with gcc-2.95.2 or better **experimental**
7 # MS Platform SDK 64-bit compiler and tools **experimental**
9 # This is set up to build a perl.exe that runs off a shared library
10 # (perl59.dll). Also makes individual DLLs for the XS extensions.
14 ## Make sure you read README.win32 *before* you mess with anything here!
18 ## Build configuration. Edit the values below to suit your needs.
22 # Set these to wherever you want "dmake install" to put your
26 INST_TOP *= $(INST_DRV)\perl
29 # Comment this out if you DON'T want your perl installation to be versioned.
30 # This means that the new installation will overwrite any files from the
31 # old installation at the same INST_TOP location. Leaving it enabled is
32 # the safest route, as perl adds the extra version directory to all the
33 # locations it installs files to. If you disable it, an alternative
34 # versioned installation can be obtained by setting INST_TOP above to a
35 # path that includes an arbitrary version string.
40 # Comment this out if you DON'T want your perl installation to have
41 # architecture specific components. This means that architecture-
42 # specific files will be installed along with the architecture-neutral
43 # files. Leaving it enabled is safer and more flexible, in case you
44 # want to build multiple flavors of perl and install them together in
45 # the same location. Commenting it out gives you a simpler
46 # installation that is easier to understand for beginners.
48 #INST_ARCH *= \$(ARCHNAME)
51 # uncomment to enable multiple interpreters. This is need for fork()
52 # emulation and for thread support.
57 # Interpreter cloning/threads; now reasonably complete.
58 # This should be enabled to get the fork() emulation.
59 # This needs USE_MULTI above.
61 USE_ITHREADS *= define
64 # uncomment to enable the implicit "host" layer for all system calls
65 # made by perl. This needs USE_MULTI above.
66 # This is also needed to get fork().
71 # Comment out next assign to disable perl's I/O subsystem and use compiler's
72 # stdio for IO - depending on your compiler vendor and run time library you may
73 # then get a number of fails from make test i.e. bugs - complain to them not us ;-).
74 # You will also be unable to take full advantage of perl5.8's support for multiple
75 # encodings and may see lower IO performance. You have been warned.
79 # Comment this out if you don't want to enable large file support for
80 # some reason. Should normally only be changed to maintain compatibility
81 # with an older release of perl.
82 USE_LARGE_FILES *= define
85 # uncomment exactly one of the following
89 # Visual C++ > 2.x and < 6.x
93 # Borland 5.02 or later
95 # MinGW with gcc-2.95.2 or later
99 # uncomment this if your Borland compiler is older than v5.4.
102 # uncomment this if you want to use Borland's VCL as your CRT
106 # uncomment this if you are compiling under Windows 95/98 and command.com
107 # (not needed if you're running under 4DOS/NT 6.01 or later)
111 # uncomment next line if you want debug version of perl (big,slow)
112 # If not enabled, we automatically try to use maximum optimization
113 # with all compilers that are known to have a working optimizer.
118 # uncomment to enable use of PerlCRT.DLL when using the Visual C compiler.
119 # It has patches that fix known bugs in older versions of MSVCRT.DLL.
120 # This currently requires VC 5.0 with Service Pack 3 or later.
121 # Get it from CPAN at http://www.cpan.org/authors/id/D/DO/DOUGL/
122 # and follow the directions in the package to install.
124 # Not recommended if you have VC 6.x and you're not running Windows 9x.
126 #USE_PERLCRT *= define
129 # uncomment to enable linking with setargv.obj under the Visual C
130 # compiler. Setting this options enables perl to expand wildcards in
131 # arguments, but it may be harder to use alternate methods like
132 # File::DosGlob that are more powerful. This option is supported only with
135 #USE_SETARGV *= define
138 # if you want to have the crypt() builtin function implemented, leave this or
139 # CRYPT_LIB uncommented. The fcrypt.c file named here contains a suitable
140 # version of des_fcrypt().
142 CRYPT_SRC *= fcrypt.c
145 # if you didn't set CRYPT_SRC and if you have des_fcrypt() available in a
146 # library, uncomment this, and make sure the library exists (see README.win32)
147 # Specify the full pathname of the library.
149 #CRYPT_LIB *= fcrypt.lib
152 # set this if you wish to use perl's malloc
153 # WARNING: Turning this on/off WILL break binary compatibility with extensions
154 # you may have compiled with/without it. Be prepared to recompile all
155 # extensions if you change the default. Currently, this cannot be enabled
156 # if you ask for USE_IMP_SYS above.
158 #PERL_MALLOC *= define
161 # set this to enable debugging mstats
162 # This must be enabled to use the Devel::Peek::mstat() function. This cannot
163 # be enabled without PERL_MALLOC as well.
165 #DEBUG_MSTATS *= define
168 # set the install locations of the compiler include/libraries
169 # Running VCVARS32.BAT is *required* when using Visual C.
170 # Some versions of Visual C don't define MSVCDIR in the environment,
171 # so you may have to set CCHOME explicitly (spaces in the path name should
174 .IF "$(CCTYPE)" == "BORLAND"
175 CCHOME *= C:\borland\bcc55
176 .ELIF "$(CCTYPE)" == "GCC"
181 CCINCDIR *= $(CCHOME)\include
182 CCLIBDIR *= $(CCHOME)\lib
185 # Additional compiler flags can be specified here.
189 # Adding -DPERL_HASH_SEED_EXPLICIT will disable randomization of Perl's
190 # internal hash function unless the PERL_HASH_SEED environment variable is set.
191 # Alternatively, adding -DNO_HASH_SEED will completely disable the
192 # randomization feature.
193 # The latter is required to maintain binary compatibility with Perl 5.8.0.
195 #BUILDOPT += -DPERL_HASH_SEED_EXPLICIT
196 #BUILDOPT += -DNO_HASH_SEED
199 # This should normally be disabled. Adding -DPERL_POLLUTE enables support
200 # for old symbols by default, at the expense of extreme pollution. You most
201 # probably just want to build modules that won't compile with
202 # perl Makefile.PL POLLUTE=1
203 # instead of enabling this. Please report such modules to the respective
206 #BUILDOPT += -DPERL_POLLUTE
209 # This should normally be disabled. Enabling it will disable the File::Glob
210 # implementation of CORE::glob.
212 #BUILDOPT += -DPERL_EXTERNAL_GLOB
215 # This should normally be disabled. Enabling it causes perl to read scripts
216 # in text mode (which is the 5.005 behavior) and will break ByteLoader.
218 #BUILDOPT += -DPERL_TEXTMODE_SCRIPTS
221 # specify semicolon-separated list of extra directories that modules will
222 # look for libraries (spaces in path names need not be quoted)
227 # set this to point to cmd.exe (only needed if you use some
228 # alternate shell that doesn't grok cmd.exe style commands)
230 #SHELL *= g:\winnt\system32\cmd.exe
233 # set this to your email address (perl will guess a value from
234 # from your loginname and your hostname, which may not be right)
239 ## Build configuration ends.
242 ##################### CHANGE THESE ONLY IF YOU MUST #####################
244 .IF "$(CRYPT_SRC)$(CRYPT_LIB)" == ""
248 CRYPT_FLAG = -DHAVE_DES_FCRYPT
252 DEBUG_MSTATS *= undef
255 USE_ITHREADS *= undef
258 USE_LARGE_FILES *= undef
261 .IF "$(USE_IMP_SYS)" == "define"
265 .IF "$(PERL_MALLOC)" == "undef"
269 .IF "$(DEBUG_MSTATS)" == "define"
270 BUILDOPT += -DPERL_DEBUGGING_MSTATS
273 .IF "$(USE_IMP_SYS) $(USE_MULTI)" == "define undef"
277 .IF "$(USE_ITHREADS) $(USE_MULTI)" == "define undef"
281 .IF "$(USE_MULTI)" != "undef"
282 BUILDOPT += -DPERL_IMPLICIT_CONTEXT
285 .IF "$(USE_IMP_SYS)" != "undef"
286 BUILDOPT += -DPERL_IMPLICIT_SYS
289 .IMPORT .IGNORE : PROCESSOR_ARCHITECTURE PROCESSOR_ARCHITEW6432
291 PROCESSOR_ARCHITECTURE *= x86
294 .IF "$(PROCESSOR_ARCHITEW6432)" != ""
295 PROCESSOR_ARCHITECTURE != $(PROCESSOR_ARCHITEW6432)
297 .ELIF "$(PROCESSOR_ARCHITECTURE)" == "IA64"
304 .IF "$(USE_MULTI)" == "define"
305 ARCHNAME = MSWin32-$(PROCESSOR_ARCHITECTURE)-multi
307 .IF "$(USE_PERLIO)" == "define"
308 ARCHNAME = MSWin32-$(PROCESSOR_ARCHITECTURE)-perlio
310 ARCHNAME = MSWin32-$(PROCESSOR_ARCHITECTURE)
312 ARCHNAME = MSWin32-$(PROCESSOR_ARCHITECTURE)
315 .IF "$(USE_ITHREADS)" == "define"
316 ARCHNAME !:= $(ARCHNAME)-thread
319 # Visual Studio 98 specific
320 .IF "$(CCTYPE)" == "MSVC60"
322 # VC 6.0 can load the socket dll on demand. Makes the test suite
323 # run in about 10% less time.
324 DELAYLOAD *= -DELAYLOAD:ws2_32.dll -DELAYLOAD:shell32.dll delayimp.lib
326 .IF "$(CFG)" == "Debug"
328 # VC 6.0 seems capable of compiling perl correctly with optimizations
329 # enabled. Anything earlier fails tests.
334 ARCHDIR = ..\lib\$(ARCHNAME)
335 COREDIR = ..\lib\CORE
336 AUTODIR = ..\lib\auto
340 EXTUTILSDIR = $(LIBDIR)\ExtUtils
343 INST_SCRIPT = $(INST_TOP)$(INST_VER)\bin
344 INST_BIN = $(INST_SCRIPT)$(INST_ARCH)
345 INST_LIB = $(INST_TOP)$(INST_VER)\lib
346 INST_ARCHLIB = $(INST_LIB)$(INST_ARCH)
347 INST_COREDIR = $(INST_ARCHLIB)\CORE
348 INST_POD = $(INST_LIB)\pod
349 INST_HTML = $(INST_TOP)$(INST_VER)\html
352 # Programs to compile, build .lib files and link
357 .IF "$(CCTYPE)" == "BORLAND"
360 .IF "$(BCCOLD)" != "define"
372 INCLUDES = -I$(COREDIR) -I.\include -I. -I.. -I"$(CCINCDIR)"
373 #PCHFLAGS = -H -Hc -H=c:\temp\bcmoduls.pch
374 DEFINES = -DWIN32 $(CRYPT_FLAG)
375 LOCDEFS = -DPERLDLL -DPERL_CORE
380 LIBFILES = $(CRYPT_LIB) import32.lib $(LIBC)
382 .IF "$(CFG)" == "Debug"
383 OPTIMIZE = -v -D_RTLDLL -DDEBUGGING
386 OPTIMIZE = -O2 -D_RTLDLL
390 CFLAGS = -w -g0 -tWM -tWD $(INCLUDES) $(DEFINES) $(LOCDEFS) \
391 $(PCHFLAGS) $(OPTIMIZE)
392 LINK_FLAGS = $(LINK_DBG) -L"$(INST_COREDIR)" -L"$(CCLIBDIR)"
396 .IF "$(BCCOLD)" != "define"
398 DEFINES += -D_MT -D__USELOCALES__ -D_WIN32_WINNT=0x0410
400 .IF "$(BCCVCL)" == "define"
401 LIBC = cp32mti.lib vcl.lib vcl50.lib vclx50.lib vcle50.lib
402 LINK_FLAGS += -L"$(CCLIBDIR)\Release"
406 .ELIF "$(CCTYPE)" == "GCC"
422 INCLUDES = -I.\include -I. -I.. -I$(COREDIR)
423 DEFINES = -DWIN32 $(CRYPT_FLAG)
424 LOCDEFS = -DPERLDLL -DPERL_CORE
431 LIBFILES = $(CRYPT_LIB) $(LIBC) \
432 -lmoldname -lkernel32 -luser32 -lgdi32 \
433 -lwinspool -lcomdlg32 -ladvapi32 -lshell32 -lole32 \
434 -loleaut32 -lnetapi32 -luuid -lws2_32 -lmpr \
435 -lwinmm -lversion -lodbc32
437 .IF "$(CFG)" == "Debug"
438 OPTIMIZE = -g -O2 -DDEBUGGING
445 CFLAGS = $(INCLUDES) $(DEFINES) $(LOCDEFS) $(OPTIMIZE)
446 LINK_FLAGS = $(LINK_DBG) -L"$(INST_COREDIR)" -L"$(CCLIBDIR)"
451 # NOTE: we assume that GCC uses MSVCRT.DLL
452 BUILDOPT += -fno-strict-aliasing -DPERL_MSVCRT_READFIX
458 LIB32 = $(LINK32) -lib
465 INCLUDES = -I$(COREDIR) -I.\include -I. -I..
466 #PCHFLAGS = -Fpc:\temp\vcmoduls.pch -YX
467 DEFINES = -DWIN32 -D_CONSOLE -DNO_STRICT $(CRYPT_FLAG)
468 LOCDEFS = -DPERLDLL -DPERL_CORE
472 .IF "$(USE_PERLCRT)" != "define"
478 .IF "$(CFG)" == "Debug"
479 .IF "$(CCTYPE)" == "MSVC20"
480 OPTIMIZE = -Od -MD -Z7 -DDEBUGGING
482 OPTIMIZE = -O1 -MD -Zi -DDEBUGGING
486 OPTIMIZE = -MD -Zi -DNDEBUG
487 # we enable debug symbols in release builds also
488 LINK_DBG = -debug -opt:ref,icf
489 # you may want to enable this if you want COFF symbols in the executables
490 # in addition to the PDB symbols. The default Dr. Watson that ships with
491 # Windows can use the the former but not latter. The free WinDbg can be
492 # installed to get better stack traces from just the PDB symbols, so we
493 # avoid the bloat of COFF symbols by default.
494 #LINK_DBG = $(LINK_DBG) -debugtype:both
495 .IF "$(WIN64)" == "define"
496 # enable Whole Program Optimizations (WPO) and Link Time Code Generation (LTCG)
500 # -O1 yields smaller code, which turns out to be faster than -O2 on x86
506 .IF "$(WIN64)" == "define"
507 DEFINES += -DWIN64 -DCONSERVATIVE
508 OPTIMIZE += -Wp64 -Op
511 .IF "$(USE_PERLCRT)" != "define"
512 BUILDOPT += -DPERL_MSVCRT_READFIX
515 LIBBASEFILES = $(CRYPT_LIB) \
516 oldnames.lib kernel32.lib user32.lib gdi32.lib winspool.lib \
517 comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib \
518 netapi32.lib uuid.lib ws2_32.lib mpr.lib winmm.lib \
521 # win64 doesn't have some libs
522 .IF "$(WIN64)" != "define"
523 LIBBASEFILES += odbc32.lib odbccp32.lib
526 # we add LIBC here, since we may be using PerlCRT.dll
527 LIBFILES = $(LIBBASEFILES) $(LIBC)
529 CFLAGS = -nologo -Gf -W3 $(INCLUDES) $(DEFINES) $(LOCDEFS) \
530 $(PCHFLAGS) $(OPTIMIZE)
531 LINK_FLAGS = -nologo -nodefaultlib $(LINK_DBG) \
532 -libpath:"$(INST_COREDIR)" \
533 -machine:$(PROCESSOR_ARCHITECTURE)
540 CFLAGS_O = $(CFLAGS) $(BUILDOPT)
542 # used to allow local linking flags that are not propogated into Config.pm,
546 BLINK_FLAGS = $(PRIV_LINK_FLAGS) $(LINK_FLAGS)
548 #################### do not edit below this line #######################
549 ############# NO USER-SERVICEABLE PARTS BEYOND THIS POINT ##############
551 # Some dmake's built with Borland C++, including Sarathy's one at:
552 # http://search.cpan.org/CPAN/authors/id/G/GS/GSAR/dmake-4.1pl1-win32.zip
553 # require backslashes to be doubled-up when written to $(mktmp) files.
554 # Other dmake's do not require this and would actually output a double
555 # backslash if they were doubled-up.
556 .IF "$(shell type $(mktmp \\))"=="\\"
572 .SUFFIXES : .c .i $(o) .dll $(a) .exe .rc .res
575 $(CC) -c $(null,$(<:d) $(NULL) -I$(<:d)) $(CFLAGS_O) $(OBJOUT_FLAG)$@ $<
578 $(CC) -c $(null,$(<:d) $(NULL) -I$(<:d)) $(CFLAGS_O) -E $< >$@
584 .IF "$(CCTYPE)" == "BORLAND"
585 $(LINK32) -Tpd -ap $(BLINK_FLAGS) c0d32$(o) $<,$@,,$(LIBFILES),$(*B).def
586 $(IMPLIB) $(*B).lib $@
587 .ELIF "$(CCTYPE)" == "GCC"
588 $(LINK32) -o $@ $(BLINK_FLAGS) $< $(LIBFILES)
589 $(IMPLIB) --input-def $(*B).def --output-lib $(*B).a $@
591 $(LINK32) -dll -subsystem:windows -implib:$(*B).lib -def:$(*B).def \
592 -out:$@ $(BLINK_FLAGS) $(LIBFILES) $< $(LIBPERL)
596 .IF "$(CCTYPE)" == "GCC"
597 $(RSC) --use-temp-file -i $< -o $@
604 MINIPERL = ..\miniperl.exe
606 PERLEXE = ..\perl.exe
607 WPERLEXE = ..\wperl.exe
608 GLOBEXE = ..\perlglob.exe
609 CONFIGPM = ..\lib\Config.pm ..\lib\Config_heavy.pl
610 MINIMOD = ..\lib\ExtUtils\Miniperl.pm
613 # Unicode data files generated by mktables
614 UNIDATAFILES = ..\lib\unicore\Canonical.pl ..\lib\unicore\Exact.pl \
615 ..\lib\unicore\Properties ..\lib\unicore\Decomposition.pl \
616 ..\lib\unicore\CombiningClass.pl ..\lib\unicore\Name.pl \
617 ..\lib\unicore\PVA.pl
619 # Directories of Unicode data files generated by mktables
620 UNIDATADIR1 = ..\lib\unicore\To
621 UNIDATADIR2 = ..\lib\unicore\lib
623 PERLEXE_ICO = .\perlexe.ico
624 PERLEXE_RES = .\perlexe.res
627 # Nominate a target which causes extensions to be re-built
628 # This used to be $(PERLEXE), but at worst it is the .dll that they depend
629 # on and really only the interface - i.e. the .def file used to export symbols
631 PERLDEP = perldll.def
634 PL2BAT = bin\pl2bat.pl
635 GLOBBAT = bin\perlglob.bat
674 .IF "$(CCTYPE)" == "BORLAND"
676 CFGSH_TMPL = config.bc
677 CFGH_TMPL = config_H.bc
679 .ELIF "$(CCTYPE)" == "GCC"
681 CFGSH_TMPL = config.gc
682 CFGH_TMPL = config_H.gc
683 PERLIMPLIB = ..\libperl59$(a)
687 .IF "$(WIN64)" == "define"
688 CFGSH_TMPL = config.vc64
689 CFGH_TMPL = config_H.vc64
691 CFGSH_TMPL = config.vc
692 CFGH_TMPL = config_H.vc
697 # makedef.pl must be updated if this changes, and this should normally
698 # only change when there is an incompatible revision of the public API.
699 PERLIMPLIB *= ..\perl59$(a)
700 PERLDLL = ..\perl59.dll
702 XCOPY = xcopy /f /r /i /d
703 RCOPY = xcopy /f /r /i /e /d
707 # filenames given to xsubpp must have forward slashes (since it puts
708 # full pathnames in #line strings)
709 XSUBPP = ..\$(MINIPERL) -I..\..\lib ..\$(EXTUTILSDIR)\xsubpp \
748 EXTRACORE_SRC += perllib.c
750 .IF "$(PERL_MALLOC)" == "define"
751 EXTRACORE_SRC += ..\malloc.c
754 EXTRACORE_SRC += ..\perlio.c
761 # We need this for miniperl build unless we override canned
762 # config.h #define building mini\*
763 #.IF "$(USE_PERLIO)" == "define"
764 WIN32_SRC += .\win32io.c
767 .IF "$(CRYPT_SRC)" != ""
768 WIN32_SRC += .\$(CRYPT_SRC)
771 DLL_SRC = $(DYNALOADER).c
818 .\include\sys\socket.h \
821 CORE_H = $(CORE_NOCFG_H) .\config.h
823 MICROCORE_OBJ = $(MICROCORE_SRC:db:+$(o))
824 CORE_OBJ = $(MICROCORE_OBJ) $(EXTRACORE_SRC:db:+$(o))
825 WIN32_OBJ = $(WIN32_SRC:db:+$(o))
826 MINICORE_OBJ = $(MINIDIR)\{$(MICROCORE_OBJ:f) miniperlmain$(o) perlio$(o)}
827 MINIWIN32_OBJ = $(MINIDIR)\{$(WIN32_OBJ:f)}
828 MINI_OBJ = $(MINICORE_OBJ) $(MINIWIN32_OBJ)
829 DLL_OBJ = $(DLL_SRC:db:+$(o))
830 X2P_OBJ = $(X2P_SRC:db:+$(o))
832 PERLDLL_OBJ = $(CORE_OBJ)
833 PERLEXE_OBJ = perlmain$(o)
835 PERLDLL_OBJ += $(WIN32_OBJ) $(DLL_OBJ)
837 .IF "$(USE_SETARGV)" != ""
838 SETARGV_OBJ = setargv$(o)
841 DYNAMIC_EXT = Socket IO Fcntl Opcode SDBM_File POSIX attrs Thread B re \
842 Data/Dumper Devel/Peek ByteLoader Devel/DProf File/Glob \
843 Sys/Hostname Storable Filter/Util/Call Encode \
844 Digest/MD5 PerlIO/scalar MIME/Base64 Time/HiRes \
845 Unicode/Normalize Win32
849 DYNALOADER = $(EXTDIR)\DynaLoader\DynaLoader
851 POD2HTML = $(PODDIR)\pod2html
852 POD2MAN = $(PODDIR)\pod2man
853 POD2LATEX = $(PODDIR)\pod2latex
854 POD2TEXT = $(PODDIR)\pod2text
856 # vars must be separated by "\t+~\t+", since we're using the tempfile
857 # version of config_sh.pl (we were overflowing someone's buffer by
858 # trying to fit them all on the command line)
861 INST_DRV=$(INST_DRV) ~ \
862 INST_TOP=$(INST_TOP:s,\,$B,) ~ \
863 INST_VER=$(INST_VER:s,\,$B,) ~ \
864 INST_ARCH=$(INST_ARCH) ~ \
865 archname=$(ARCHNAME) ~ \
868 ccflags=$(OPTIMIZE) $(DEFINES) $(BUILDOPT) ~ \
869 cf_email=$(EMAIL) ~ \
870 d_crypt=$(D_CRYPT) ~ \
871 d_mymalloc=$(PERL_MALLOC) ~ \
872 libs=$(LIBFILES:f) ~ \
873 incpath=$(CCINCDIR:s,\,$B,) ~ \
874 libperl=$(PERLIMPLIB:f) ~ \
875 libpth=$(CCLIBDIR:s,\,$B,);$(EXTRALIBDIRS:s,\,$B,) ~ \
882 static_ext=$(STATIC_EXT) ~ \
883 usethreads=$(USE_ITHREADS) ~ \
884 useithreads=$(USE_ITHREADS) ~ \
885 usemultiplicity=$(USE_MULTI) ~ \
886 useperlio=$(USE_PERLIO) ~ \
887 uselargefiles=$(USE_LARGE_FILES) ~ \
888 LINK_FLAGS=$(LINK_FLAGS:s,\,$B,) ~ \
892 # set up targets varying between Win95 and WinNT builds
895 .IF "$(IS_WIN95)" == "define"
897 RIGHTMAKE = __switch_makefiles
907 all : .\config.h $(GLOBEXE) $(MINIPERL) $(MK2) \
908 $(RIGHTMAKE) $(MINIMOD) $(CONFIGPM) $(UNIDATAFILES) $(PERLEXE) \
911 $(DYNALOADER)$(o) : $(DYNALOADER).c $(CORE_H) $(EXTDIR)\DynaLoader\dlutils.c
913 #----------------------------------------------------------------
915 #-------------------- BEGIN Win95 SPECIFIC ----------------------
917 # this target is a jump-off point for Win95
918 # 1. it switches to the Win95-specific makefile if it exists
919 # (__do_switch_makefiles)
920 # 2. it prints a message when the Win95-specific one finishes (__done)
921 # 3. it then kills this makefile by trying to make __no_such_target
923 __switch_makefiles: __do_switch_makefiles __done __no_such_target
925 __do_switch_makefiles:
926 .IF "$(NOTFIRST)" != "true"
927 if exist $(MK2) $(MAKE:s/-S//) -f $(MK2) $(MAKETARGETS) NOTFIRST=true
932 .IF "$(NOTFIRST)" != "true"
934 @echo Build process complete. Ignore any errors after this message.
935 @echo Run "dmake test" to test and "dmake install" to install
938 # dummy targets for Win95-specific makefile
948 # This target is used to generate the new makefile (.\makefile.95) for Win95
950 .\makefile.95: .\makefile.mk
951 $(MINIPERL) genmk95.pl makefile.mk $(MK2)
953 #--------------------- END Win95 SPECIFIC ---------------------
955 # a blank target for when builds don't need to do certain things
956 # this target added for Win95 port but used to keep the WinNT port able to
961 $(GLOBEXE) : perlglob$(o)
962 .IF "$(CCTYPE)" == "BORLAND"
963 $(CC) -c -w -v -tWM -I"$(CCINCDIR)" perlglob.c
964 $(LINK32) -Tpe -ap $(BLINK_FLAGS) c0x32$(o) perlglob$(o) \
965 "$(CCLIBDIR)\32BIT\wildargs$(o)",$@,,import32.lib cw32mt.lib,
966 .ELIF "$(CCTYPE)" == "GCC"
967 $(LINK32) $(BLINK_FLAGS) -mconsole -o $@ perlglob$(o) $(LIBFILES)
969 $(LINK32) $(BLINK_FLAGS) $(LIBFILES) -out:$@ -subsystem:$(SUBSYS) \
970 perlglob$(o) setargv$(o)
973 perlglob$(o) : perlglob.c
975 config.w32 : $(CFGSH_TMPL)
976 copy $(CFGSH_TMPL) config.w32
978 .\config.h : $(CFGH_TMPL) $(CORE_NOCFG_H)
980 copy $(CFGH_TMPL) config.h
982 ..\config.sh : config.w32 $(MINIPERL) config_sh.PL FindExt.pm
983 $(MINIPERL) -I..\lib config_sh.PL --cfgsh-option-file \
984 $(mktmp $(CFG_VARS)) config.w32 > ..\config.sh
986 # this target is for when changes to the main config.sh happen
987 # edit config.{b,v,g}c and make this target once for each supported
988 # compiler (e.g. `dmake CCTYPE=BORLAND regen_config_h`)
990 perl config_sh.PL --cfgsh-option-file $(mktmp $(CFG_VARS)) \
991 $(CFGSH_TMPL) > ..\config.sh
992 -cd .. && del /f perl.exe
993 -cd .. && del /f perl*.dll
994 cd .. && perl configpm
997 -perl config_h.PL "INST_VER=$(INST_VER)"
998 rename config.h $(CFGH_TMPL)
1000 $(CONFIGPM) : $(MINIPERL) ..\config.sh config_h.PL ..\minimod.pl
1001 cd .. && miniperl configpm
1002 if exist lib\* $(RCOPY) lib\*.* ..\lib\$(NULL)
1003 $(XCOPY) ..\*.h $(COREDIR)\*.*
1004 $(XCOPY) *.h $(COREDIR)\*.*
1005 $(XCOPY) ..\ext\re\re.pm $(LIBDIR)\*.*
1006 $(RCOPY) include $(COREDIR)\*.*
1007 $(MINIPERL) -I..\lib config_h.PL "INST_VER=$(INST_VER)" \
1008 || $(MAKE) $(MAKEMACROS) $(CONFIGPM) $(MAKEFILE)
1010 $(MINIPERL) : $(MINIDIR) $(MINI_OBJ) $(CRTIPMLIBS)
1011 .IF "$(CCTYPE)" == "BORLAND"
1012 $(LINK32) -Tpe -ap $(BLINK_FLAGS) \
1013 @$(mktmp c0x32$(o) $(MINI_OBJ:s,\,$B,),$(@:s,\,$B,),,$(LIBFILES),)
1014 .ELIF "$(CCTYPE)" == "GCC"
1015 $(LINK32) -v -mconsole -o $@ $(BLINK_FLAGS) \
1016 $(mktmp $(LKPRE) $(MINI_OBJ:s,\,$B,) $(LIBFILES) $(LKPOST))
1018 $(LINK32) -subsystem:console -out:$@ \
1019 @$(mktmp $(BLINK_FLAGS) $(LIBFILES) $(MINI_OBJ:s,\,$B,))
1023 if not exist "$(MINIDIR)" mkdir "$(MINIDIR)"
1025 $(MINICORE_OBJ) : $(CORE_NOCFG_H)
1026 $(CC) -c $(CFLAGS) -DPERL_EXTERNAL_GLOB $(OBJOUT_FLAG)$@ ..\$(*B).c
1028 $(MINIWIN32_OBJ) : $(CORE_NOCFG_H)
1029 $(CC) -c $(CFLAGS) $(OBJOUT_FLAG)$@ $(*B).c
1031 # -DPERL_IMPLICIT_SYS needs C++ for perllib.c
1032 # rules wrapped in .IFs break Win9X build (we end up with unbalanced []s unless
1033 # unless the .IF is true), so instead we use a .ELSE with the default.
1034 # This is the only file that depends on perlhost.h, vmem.h, and vdir.h
1036 perllib$(o) : perllib.c .\perlhost.h .\vdir.h .\vmem.h
1037 .IF "$(USE_IMP_SYS)" == "define"
1038 $(CC) -c -I. -DWITH_STATIC $(CFLAGS_O) $(CXX_FLAG) $(OBJOUT_FLAG)$@ perllib.c
1040 $(CC) -c -I. -DWITH_STATIC $(CFLAGS_O) $(OBJOUT_FLAG)$@ perllib.c
1043 # 1. we don't want to rebuild miniperl.exe when config.h changes
1044 # 2. we don't want to rebuild miniperl.exe with non-default config.h
1045 $(MINI_OBJ) : $(CORE_NOCFG_H)
1047 $(WIN32_OBJ) : $(CORE_H)
1049 $(CORE_OBJ) : $(CORE_H)
1051 $(DLL_OBJ) : $(CORE_H)
1053 $(X2P_OBJ) : $(CORE_H)
1055 perldll.def : $(MINIPERL) $(CONFIGPM) ..\global.sym ..\pp.sym ..\makedef.pl
1056 $(MINIPERL) -I..\lib buildext.pl --create-perllibst-h
1057 $(MINIPERL) -w ..\makedef.pl PLATFORM=win32 $(OPTIMIZE) $(DEFINES) \
1058 $(BUILDOPT) CCTYPE=$(CCTYPE) > perldll.def
1060 $(PERLDLL): perldll.def $(PERLDLL_OBJ) $(PERLDLL_RES) Extensions_static
1061 .IF "$(CCTYPE)" == "BORLAND"
1062 $(LINK32) -Tpd -ap $(BLINK_FLAGS) \
1063 @$(mktmp c0d32$(o) $(PERLDLL_OBJ:s,\,$B,)\n \
1068 .ELIF "$(CCTYPE)" == "GCC"
1069 $(LINK32) -mdll -o $@ -Wl,--base-file -Wl,perl.base $(BLINK_FLAGS) \
1070 $(mktmp $(LKPRE) $(PERLDLL_OBJ:s,\,$B,) \
1071 $(shell $(MINIPERL) -I..\lib buildext.pl --list-static-libs|tr \\\\ /) \
1072 $(LIBFILES) $(LKPOST))
1073 dlltool --output-lib $(PERLIMPLIB) \
1074 --dllname $(PERLDLL:b).dll \
1076 --base-file perl.base \
1077 --output-exp perl.exp
1078 $(LINK32) -mdll -o $@ $(BLINK_FLAGS) \
1079 $(mktmp $(LKPRE) $(PERLDLL_OBJ:s,\,$B,) \
1080 $(shell $(MINIPERL) -I..\lib buildext.pl --list-static-libs|tr \\\\ /) \
1081 $(LIBFILES) perl.exp $(LKPOST))
1083 $(LINK32) -dll -def:perldll.def -out:$@ \
1084 $(shell $(MINIPERL) -I..\lib buildext.pl --list-static-libs) \
1085 @$(mktmp -base:0x28000000 $(BLINK_FLAGS) $(DELAYLOAD) $(LIBFILES) \
1086 $(PERLDLL_RES) $(PERLDLL_OBJ:s,\,$B,))
1088 $(XCOPY) $(PERLIMPLIB) $(COREDIR)
1091 $(PERLEXE_ICO): $(MINIPERL) makeico.pl
1092 $(MINIPERL) makeico.pl > $@
1094 $(PERLEXE_RES): perlexe.rc $(PERLEXE_ICO)
1096 $(MINIMOD) : $(MINIPERL) ..\minimod.pl
1097 cd .. && miniperl minimod.pl > lib\ExtUtils\Miniperl.pm
1099 ..\x2p\a2p$(o) : ..\x2p\a2p.c
1100 $(CC) -I..\x2p $(CFLAGS) $(OBJOUT_FLAG)$@ -c ..\x2p\a2p.c
1102 ..\x2p\hash$(o) : ..\x2p\hash.c
1103 $(CC) -I..\x2p $(CFLAGS) $(OBJOUT_FLAG)$@ -c ..\x2p\hash.c
1105 ..\x2p\str$(o) : ..\x2p\str.c
1106 $(CC) -I..\x2p $(CFLAGS) $(OBJOUT_FLAG)$@ -c ..\x2p\str.c
1108 ..\x2p\util$(o) : ..\x2p\util.c
1109 $(CC) -I..\x2p $(CFLAGS) $(OBJOUT_FLAG)$@ -c ..\x2p\util.c
1111 ..\x2p\walk$(o) : ..\x2p\walk.c
1112 $(CC) -I..\x2p $(CFLAGS) $(OBJOUT_FLAG)$@ -c ..\x2p\walk.c
1114 $(X2P) : $(MINIPERL) $(X2P_OBJ)
1115 $(MINIPERL) ..\x2p\find2perl.PL
1116 $(MINIPERL) ..\x2p\s2p.PL
1117 .IF "$(CCTYPE)" == "BORLAND"
1118 $(LINK32) -Tpe -ap $(BLINK_FLAGS) \
1119 @$(mktmp c0x32$(o) $(X2P_OBJ:s,\,$B,),$(@:s,\,$B,),,$(LIBFILES),)
1120 .ELIF "$(CCTYPE)" == "GCC"
1121 $(LINK32) -v -o $@ $(BLINK_FLAGS) \
1122 $(mktmp $(LKPRE) $(X2P_OBJ:s,\,$B,) $(LIBFILES) $(LKPOST))
1124 $(LINK32) -subsystem:console -out:$@ \
1125 @$(mktmp $(BLINK_FLAGS) $(LIBFILES) $(X2P_OBJ:s,\,$B,))
1128 perlmain.c : runperl.c
1129 copy runperl.c perlmain.c
1131 perlmain$(o) : perlmain.c
1132 $(CC) $(CFLAGS_O) -UPERLDLL $(OBJOUT_FLAG)$@ -c perlmain.c
1134 $(PERLEXE): $(PERLDLL) $(CONFIGPM) $(PERLEXE_OBJ) $(PERLEXE_RES)
1135 .IF "$(CCTYPE)" == "BORLAND"
1136 $(LINK32) -Tpe -ap $(BLINK_FLAGS) \
1137 @$(mktmp c0x32$(o) $(PERLEXE_OBJ:s,\,$B,)\n \
1139 $(PERLIMPLIB) $(LIBFILES)\n)
1140 .ELIF "$(CCTYPE)" == "GCC"
1141 $(LINK32) -mconsole -o $@ $(BLINK_FLAGS) \
1142 $(PERLEXE_OBJ) $(PERLIMPLIB) $(LIBFILES)
1144 $(LINK32) -subsystem:console -out:$@ -stack:0x1000000 $(BLINK_FLAGS) \
1145 $(LIBFILES) $(PERLEXE_OBJ) $(SETARGV_OBJ) $(PERLIMPLIB) $(PERLEXE_RES)
1147 copy $(PERLEXE) $(WPERLEXE)
1148 $(MINIPERL) -I..\lib bin\exetype.pl $(WPERLEXE) WINDOWS
1149 copy splittree.pl ..
1150 $(MINIPERL) -I..\lib ..\splittree.pl "../LIB" $(AUTODIR)
1152 $(DYNALOADER).c: $(MINIPERL) $(EXTDIR)\DynaLoader\dl_win32.xs $(CONFIGPM)
1153 if not exist $(AUTODIR) mkdir $(AUTODIR)
1154 cd $(EXTDIR)\$(*B) && ..\$(MINIPERL) -I..\..\lib $(*B)_pm.PL
1155 cd $(EXTDIR)\$(*B) && ..\$(MINIPERL) -I..\..\lib XSLoader_pm.PL
1156 $(XCOPY) $(EXTDIR)\$(*B)\$(*B).pm $(LIBDIR)\$(NULL)
1157 $(XCOPY) $(EXTDIR)\$(*B)\XSLoader.pm $(LIBDIR)\$(NULL)
1158 cd $(EXTDIR)\$(*B) && $(XSUBPP) dl_win32.xs > $(*B).c
1159 $(XCOPY) $(EXTDIR)\$(*B)\dlutils.c .
1161 $(EXTDIR)\DynaLoader\dl_win32.xs: dl_win32.xs
1162 copy dl_win32.xs $(EXTDIR)\DynaLoader\dl_win32.xs
1164 #----------------------------------------------------------------------------------
1165 Extensions : buildext.pl $(PERLDEP) $(CONFIGPM)
1166 $(MINIPERL) -I..\lib buildext.pl $(MAKE) $(PERLDEP) $(EXTDIR) --dynamic
1167 $(MINIPERL) -I..\lib buildext.pl $(MAKE) $(PERLDEP) ext --dynamic
1169 Extensions_static : buildext.pl
1170 $(MINIPERL) -I..\lib buildext.pl $(MAKE) $(PERLDEP) ext --static
1171 $(MINIPERL) -I..\lib buildext.pl $(MAKE) $(PERLDEP) $(EXTDIR) --static
1173 # Note: The next two targets explicitly remove a "blibdirs.exists" file that
1174 # currerntly gets left behind, until CPAN RT Ticket #5616 is resolved.
1177 -if exist $(MINIPERL) $(MINIPERL) -I..\lib buildext.pl $(MAKE) $(PERLDEP) $(EXTDIR) clean
1178 -if exist $(MINIPERL) $(MINIPERL) -I..\lib buildext.pl $(MAKE) $(PERLDEP) ext clean
1179 -if exist $(EXTDIR)\SDBM_File\sdbm\blibdirs.exists del /f $(EXTDIR)\SDBM_File\sdbm\blibdirs.exists
1181 Extensions_realclean :
1182 -if exist $(MINIPERL) $(MINIPERL) -I..\lib buildext.pl $(MAKE) $(PERLDEP) $(EXTDIR) realclean
1183 -if exist $(MINIPERL) $(MINIPERL) -I..\lib buildext.pl $(MAKE) $(PERLDEP) ext realclean
1184 -if exist $(EXTDIR)\SDBM_File\sdbm\blibdirs.exists del /f $(EXTDIR)\SDBM_File\sdbm\blibdirs.exists
1186 #----------------------------------------------------------------------------------
1190 $(PERLEXE) -I..\lib ..\installhtml --podroot=.. --htmldir=./html \
1191 --podpath=pod:lib:ext:utils --htmlroot="file://$(INST_HTML:s,:,|,)"\
1192 --libpod=perlfunc:perlguts:perlvar:perlrun:perlop --recurse
1194 # Note that this next section is parsed (and regenerated) by pod/buildtoc
1195 # so please check that script before making structural changes here
1196 utils: $(PERLEXE) $(X2P)
1197 cd ..\utils && $(MAKE) PERL=$(MINIPERL)
1198 copy ..\vms\perlvms.pod ..\pod\perlvms.pod
1199 copy ..\README.aix ..\pod\perlaix.pod
1200 copy ..\README.amiga ..\pod\perlamiga.pod
1201 copy ..\README.apollo ..\pod\perlapollo.pod
1202 copy ..\README.beos ..\pod\perlbeos.pod
1203 copy ..\README.bs2000 ..\pod\perlbs2000.pod
1204 copy ..\README.ce ..\pod\perlce.pod
1205 copy ..\README.cn ..\pod\perlcn.pod
1206 copy ..\README.cygwin ..\pod\perlcygwin.pod
1207 copy ..\README.dgux ..\pod\perldgux.pod
1208 copy ..\README.dos ..\pod\perldos.pod
1209 copy ..\README.epoc ..\pod\perlepoc.pod
1210 copy ..\README.freebsd ..\pod\perlfreebsd.pod
1211 copy ..\README.hpux ..\pod\perlhpux.pod
1212 copy ..\README.hurd ..\pod\perlhurd.pod
1213 copy ..\README.irix ..\pod\perlirix.pod
1214 copy ..\README.jp ..\pod\perljp.pod
1215 copy ..\README.ko ..\pod\perlko.pod
1216 copy ..\README.machten ..\pod\perlmachten.pod
1217 copy ..\README.macos ..\pod\perlmacos.pod
1218 copy ..\README.macosx ..\pod\perlmacosx.pod
1219 copy ..\README.mint ..\pod\perlmint.pod
1220 copy ..\README.mpeix ..\pod\perlmpeix.pod
1221 copy ..\README.netware ..\pod\perlnetware.pod
1222 copy ..\README.os2 ..\pod\perlos2.pod
1223 copy ..\README.os390 ..\pod\perlos390.pod
1224 copy ..\README.os400 ..\pod\perlos400.pod
1225 copy ..\README.plan9 ..\pod\perlplan9.pod
1226 copy ..\README.qnx ..\pod\perlqnx.pod
1227 copy ..\README.solaris ..\pod\perlsolaris.pod
1228 copy ..\README.tru64 ..\pod\perltru64.pod
1229 copy ..\README.tw ..\pod\perltw.pod
1230 copy ..\README.uts ..\pod\perluts.pod
1231 copy ..\README.vmesa ..\pod\perlvmesa.pod
1232 copy ..\README.vms ..\pod\perlvms.pod
1233 copy ..\README.vos ..\pod\perlvos.pod
1234 copy ..\README.win32 ..\pod\perlwin32.pod
1235 copy ..\pod\perl592delta.pod ..\pod\perldelta.pod
1236 cd ..\pod && $(MAKE) -f ..\win32\pod.mak converters
1237 cd ..\lib && $(PERLEXE) lib_pm.PL
1238 $(PERLEXE) $(PL2BAT) $(UTILS)
1240 # Note that the pod cleanup in this next section is parsed (and regenerated
1241 # by pod/buildtoc so please check that script before making changes here
1243 # the doubled rmdir calls are needed because older cmd shells
1244 # don't understand /q
1245 distclean: realclean
1246 -del /f $(MINIPERL) $(PERLEXE) $(PERLDLL) $(GLOBEXE) \
1247 $(PERLIMPLIB) ..\miniperl$(a) $(MINIMOD)
1249 -del /f $(DYNALOADER).c
1250 -del /f $(EXTDIR)\DynaLoader\dl_win32.xs
1251 -del /f $(EXTDIR)\DynaLoader\DynaLoader.pm
1252 -del /f $(EXTDIR)\DynaLoader\XSLoader.pm
1253 -del /f $(LIBDIR)\Encode.pm $(LIBDIR)\encoding.pm $(LIBDIR)\Errno.pm
1254 -del /f $(LIBDIR)\Config.pod $(LIBDIR)\POSIX.pod $(LIBDIR)\threads.pm
1255 -del /f $(LIBDIR)\.exists $(LIBDIR)\attrs.pm $(LIBDIR)\DynaLoader.pm
1256 -del /f $(LIBDIR)\XSLoader.pm $(LIBDIR)\lib.pm
1257 -del /f $(LIBDIR)\Fcntl.pm $(LIBDIR)\IO.pm $(LIBDIR)\Opcode.pm
1258 -del /f $(LIBDIR)\ops.pm $(LIBDIR)\Safe.pm
1259 -del /f $(LIBDIR)\SDBM_File.pm $(LIBDIR)\Socket.pm $(LIBDIR)\POSIX.pm
1260 -del /f $(LIBDIR)\B.pm $(LIBDIR)\O.pm $(LIBDIR)\re.pm
1261 -del /f $(LIBDIR)\ByteLoader.pm
1262 -del /f $(LIBDIR)\Devel\Peek.pm $(LIBDIR)\Devel\DProf.pm
1263 -del /f $(LIBDIR)\Devel\PPPort.pm
1264 -del /f $(LIBDIR)\File\Glob.pm
1265 -del /f $(LIBDIR)\Storable.pm
1266 -del /f $(LIBDIR)\Digest\MD5.pm
1267 -del /f $(LIBDIR)\PerlIO\encoding.pm
1268 -del /f $(LIBDIR)\PerlIO\scalar.pm
1269 -del /f $(LIBDIR)\PerlIO\via.pm
1270 -del /f $(LIBDIR)\Sys\Hostname.pm
1271 -del /f $(LIBDIR)\Thread\Signal.pm $(LIBDIR)\Thread\Specific.pm
1272 -del /f $(LIBDIR)\threads\shared.pm
1273 -del /f $(LIBDIR)\Time\HiRes.pm
1274 -del /f $(LIBDIR)\Unicode\Normalize.pm
1275 -del /f $(LIBDIR)\Win32.pm
1276 -if exist $(LIBDIR)\IO rmdir /s /q $(LIBDIR)\IO
1277 -if exist $(LIBDIR)\IO rmdir /s $(LIBDIR)\IO
1278 -if exist $(LIBDIR)\B rmdir /s /q $(LIBDIR)\B
1279 -if exist $(LIBDIR)\B rmdir /s $(LIBDIR)\B
1280 -if exist $(LIBDIR)\Data rmdir /s /q $(LIBDIR)\Data
1281 -if exist $(LIBDIR)\Data rmdir /s $(LIBDIR)\Data
1282 -if exist $(LIBDIR)\Encode rmdir /s /q $(LIBDIR)\Encode
1283 -if exist $(LIBDIR)\Encode rmdir /s $(LIBDIR)\Encode
1284 -if exist $(LIBDIR)\Filter\Util rmdir /s /q $(LIBDIR)\Filter\Util
1285 -if exist $(LIBDIR)\Filter\Util rmdir /s $(LIBDIR)\Filter\Util
1286 -if exist $(LIBDIR)\MIME rmdir /s /q $(LIBDIR)\MIME
1287 -if exist $(LIBDIR)\MIME rmdir /s $(LIBDIR)\MIME
1288 -if exist $(LIBDIR)\List rmdir /s /q $(LIBDIR)\List
1289 -if exist $(LIBDIR)\List rmdir /s $(LIBDIR)\List
1290 -if exist $(LIBDIR)\Scalar rmdir /s /q $(LIBDIR)\Scalar
1291 -if exist $(LIBDIR)\Scalar rmdir /s $(LIBDIR)\Scalar
1292 -if exist $(LIBDIR)\Sys rmdir /s /q $(LIBDIR)\Sys
1293 -if exist $(LIBDIR)\Sys rmdir /s $(LIBDIR)\Sys
1294 -if exist $(LIBDIR)\threads rmdir /s /q $(LIBDIR)\threads
1295 -if exist $(LIBDIR)\threads rmdir /s $(LIBDIR)\threads
1296 -if exist $(LIBDIR)\XS rmdir /s /q $(LIBDIR)\XS
1297 -if exist $(LIBDIR)\XS rmdir /s $(LIBDIR)\XS
1298 -cd $(PODDIR) && del /f *.html *.bat checkpods \
1299 perlaix.pod perlamiga.pod perlapollo.pod perlbeos.pod \
1300 perlbs2000.pod perlce.pod perlcn.pod perlcygwin.pod \
1301 perldelta.pod perldgux.pod perldos.pod perlepoc.pod \
1302 perlfreebsd.pod perlhpux.pod perlhurd.pod perlirix.pod \
1303 perljp.pod perlko.pod perlmachten.pod perlmacos.pod \
1304 perlmacosx.pod perlmint.pod perlmpeix.pod perlnetware.pod \
1305 perlos2.pod perlos390.pod perlos400.pod perlplan9.pod \
1306 perlqnx.pod perlsolaris.pod perltru64.pod perltw.pod \
1307 perluts.pod perlvmesa.pod perlvms.pod perlvms.pod perlvos.pod \
1309 pod2html pod2latex pod2man pod2text pod2usage \
1310 podchecker podselect
1311 -cd ..\utils && del /f h2ph splain perlbug pl2pm c2ph pstruct h2xs \
1312 perldoc perlivp dprofpp perlcc libnetcfg enc2xs piconv cpan *.bat \
1313 xsubpp instmodsh prove corelist
1314 -cd ..\x2p && del /f find2perl s2p psed *.bat
1315 -del /f ..\config.sh ..\splittree.pl perlmain.c dlutils.c config.h.new
1319 -del /f $(PERLEXE_ICO) perl.base
1320 -cd .. && del /s *$(a) *.map *.pdb *.ilk *.bs *$(o) .exists pm_to_blib
1321 -cd $(EXTDIR) && del /s *.def Makefile Makefile.old
1322 -if exist $(AUTODIR) rmdir /s /q $(AUTODIR)
1323 -if exist $(AUTODIR) rmdir /s $(AUTODIR)
1324 -if exist $(COREDIR) rmdir /s /q $(COREDIR)
1325 -if exist $(COREDIR) rmdir /s $(COREDIR)
1327 install : all installbare installhtml
1329 installbare : $(RIGHTMAKE) utils
1330 $(PERLEXE) ..\installperl
1331 if exist $(WPERLEXE) $(XCOPY) $(WPERLEXE) $(INST_BIN)\*.*
1332 $(XCOPY) $(GLOBEXE) $(INST_BIN)\*.*
1333 if exist ..\perl*.pdb $(XCOPY) ..\perl*.pdb $(INST_BIN)\*.*
1334 if exist ..\x2p\a2p.pdb $(XCOPY) ..\x2p\a2p.pdb $(INST_BIN)\*.*
1335 $(XCOPY) bin\*.bat $(INST_SCRIPT)\*.*
1338 $(RCOPY) html\*.* $(INST_HTML)\*.*
1340 inst_lib : $(CONFIGPM)
1341 copy splittree.pl ..
1342 $(MINIPERL) -I..\lib ..\splittree.pl "../LIB" $(AUTODIR)
1343 $(RCOPY) ..\lib $(INST_LIB)\*.*
1345 $(UNIDATAFILES) .UPDATEALL : $(MINIPERL) $(CONFIGPM) ..\lib\unicore\mktables
1346 cd ..\lib\unicore && \
1347 ..\$(MINIPERL) -I.. mktables
1349 minitest : $(MINIPERL) $(GLOBEXE) $(CONFIGPM) $(UNIDATAFILES) utils
1350 $(XCOPY) $(MINIPERL) ..\t\$(NULL)
1351 if exist ..\t\perl.exe del /f ..\t\perl.exe
1352 rename ..\t\miniperl.exe perl.exe
1353 .IF "$(CCTYPE)" == "BORLAND"
1354 $(XCOPY) $(GLOBBAT) ..\t\$(NULL)
1356 $(XCOPY) $(GLOBEXE) ..\t\$(NULL)
1360 $(MINIPERL) -I..\lib harness base/*.t comp/*.t cmd/*.t io/*.t op/*.t pragma/*.t
1362 test-prep : all utils
1363 $(XCOPY) $(PERLEXE) ..\t\$(NULL)
1364 $(XCOPY) $(PERLDLL) ..\t\$(NULL)
1365 .IF "$(CCTYPE)" == "BORLAND"
1366 $(XCOPY) $(GLOBBAT) ..\t\$(NULL)
1368 $(XCOPY) $(GLOBEXE) ..\t\$(NULL)
1371 test : $(RIGHTMAKE) test-prep
1372 cd ..\t && $(PERLEXE) -I..\lib harness $(TEST_SWITCHES) $(TEST_FILES)
1374 test-notty : test-prep
1375 set PERL_SKIP_TTY_TEST=1 && \
1376 cd ..\t && $(PERLEXE) -I.\lib harness $(TEST_SWITCHES) $(TEST_FILES)
1378 _test : $(RIGHTMAKE)
1379 $(XCOPY) $(PERLEXE) ..\t\$(NULL)
1380 $(XCOPY) $(PERLDLL) ..\t\$(NULL)
1381 .IF "$(CCTYPE)" == "BORLAND"
1382 $(XCOPY) $(GLOBBAT) ..\t\$(NULL)
1384 $(XCOPY) $(GLOBEXE) ..\t\$(NULL)
1386 cd ..\t && $(PERLEXE) -I..\lib harness $(TEST_SWITCHES) $(TEST_FILES)
1388 # the doubled rmdir calls are needed because older cmd shells
1389 # don't understand /q
1391 -@erase miniperlmain$(o)
1393 -@erase perlglob$(o)
1394 -@erase perlmain$(o)
1402 -if exist $(MINIDIR) rmdir /s /q $(MINIDIR)
1403 -if exist $(MINIDIR) rmdir /s $(MINIDIR)
1404 -if exist $(UNIDATADIR1) rmdir /s /q $(UNIDATADIR1)
1405 -if exist $(UNIDATADIR1) rmdir /s $(UNIDATADIR1)
1406 -if exist $(UNIDATADIR2) rmdir /s /q $(UNIDATADIR2)
1407 -if exist $(UNIDATADIR2) rmdir /s $(UNIDATADIR2)
1408 -@erase $(UNIDATAFILES)
1409 -@erase $(WIN32_OBJ)
1412 -@erase ..\*$(o) ..\*$(a) ..\*.exp *$(o) *$(a) *.exp *.res
1413 -@erase ..\t\*.exe ..\t\*.dll ..\t\*.bat
1414 -@erase ..\x2p\*.exe ..\x2p\*.bat
1418 clean : Extensions_clean _clean
1420 realclean : Extensions_realclean _clean
1422 # Handy way to run perlbug -ok without having to install and run the
1423 # installed perlbug. We don't re-run the tests here - we trust the user.
1424 # Please *don't* use this unless all tests pass.
1425 # If you want to report test failures, use "dmake nok" instead.
1427 $(PERLEXE) -I..\lib ..\utils\perlbug -ok -s "(UNINSTALLED)"
1430 $(PERLEXE) -I..\lib ..\utils\perlbug -ok -s "(UNINSTALLED)" -F perl.ok
1433 $(PERLEXE) -I..\lib ..\utils\perlbug -nok -s "(UNINSTALLED)"
1436 $(PERLEXE) -I..\lib ..\utils\perlbug -nok -s "(UNINSTALLED)" -F perl.nok