2 # Makefile to build perl on Windows using Microsoft NMAKE.
4 # Microsoft Visual C++ 6.0 or later
5 # Windows SDK 64-bit compiler and tools
7 # This is set up to build a perl.exe that runs off a shared library
8 # (perl513.dll). Also makes individual DLLs for the XS extensions.
12 ## Make sure you read README.win32 *before* you mess with anything here!
16 ## Build configuration. Edit the values below to suit your needs.
20 # Set these to wherever you want "nmake install" to put your
24 INST_TOP = $(INST_DRV)\perl
27 # Uncomment if you want to build a 32-bit Perl using a 32-bit compiler
28 # on a 64-bit version of Windows.
32 # Comment this out if you DON'T want your perl installation to be versioned.
33 # This means that the new installation will overwrite any files from the
34 # old installation at the same INST_TOP location. Leaving it enabled is
35 # the safest route, as perl adds the extra version directory to all the
36 # locations it installs files to. If you disable it, an alternative
37 # versioned installation can be obtained by setting INST_TOP above to a
38 # path that includes an arbitrary version string.
43 # Comment this out if you DON'T want your perl installation to have
44 # architecture specific components. This means that architecture-
45 # specific files will be installed along with the architecture-neutral
46 # files. Leaving it enabled is safer and more flexible, in case you
47 # want to build multiple flavors of perl and install them together in
48 # the same location. Commenting it out gives you a simpler
49 # installation that is easier to understand for beginners.
51 #INST_ARCH = \$(ARCHNAME)
54 # Uncomment this if you want perl to run
55 # $Config{sitelibexp}\sitecustomize.pl
56 # before anything else. This script can then be set up, for example,
57 # to add additional entries to @INC.
59 #USE_SITECUST = define
62 # uncomment to enable multiple interpreters. This is need for fork()
63 # emulation and for thread support.
68 # Beginnings of interpreter cloning/threads; now reasonably complete.
69 # This should be enabled to get the fork() emulation. This needs
75 # uncomment to enable the implicit "host" layer for all system calls
76 # made by perl. This needs USE_MULTI above. This is also needed to
82 # Comment out next assign to disable perl's I/O subsystem and use compiler's
83 # stdio for IO - depending on your compiler vendor and run time library you may
84 # then get a number of fails from make test i.e. bugs - complain to them not us ;-).
85 # You will also be unable to take full advantage of perl5.8's support for multiple
86 # encodings and may see lower IO performance. You have been warned.
90 # Comment this out if you don't want to enable large file support for
91 # some reason. Should normally only be changed to maintain compatibility
92 # with an older release of perl.
93 USE_LARGE_FILES = define
96 # uncomment exactly one of the following
98 # Visual C++ 6.x (aka Visual C++ 98)
100 # Visual C++ Toolkit 2003 (aka Visual C++ 7.x) (free command-line tools)
102 # Visual C++ .NET 2003 (aka Visual C++ 7.x) (full version)
104 # Windows Server 2003 SP1 Platform SDK (April 2005)
106 # Visual C++ 2005 Express Edition (aka Visual C++ 8.x) (free version)
108 # Visual C++ 2005 (aka Visual C++ 8.x) (full version)
110 # Visual C++ 2008 Express Edition (aka Visual C++ 9.x) (free version)
112 # Visual C++ 2008 (aka Visual C++ 9.x) (full version)
114 # Visual C++ 2010 Express Edition (aka Visual C++ 10.x) (free version)
115 #CCTYPE = MSVC100FREE
116 # Visual C++ 2010 (aka Visual C++ 10.x) (full version)
120 # uncomment next line if you want debug version of perl (big,slow)
121 # If not enabled, we automatically try to use maximum optimization
122 # with all compilers that are known to have a working optimizer.
127 # uncomment to enable linking with setargv.obj under the Visual C
128 # compiler. Setting this options enables perl to expand wildcards in
129 # arguments, but it may be harder to use alternate methods like
130 # File::DosGlob that are more powerful. This option is supported only with
133 #USE_SETARGV = define
136 # set this if you wish to use perl's malloc
137 # WARNING: Turning this on/off WILL break binary compatibility with extensions
138 # you may have compiled with/without it. Be prepared to recompile all
139 # extensions if you change the default. Currently, this cannot be enabled
140 # if you ask for USE_IMP_SYS above.
142 #PERL_MALLOC = define
145 # set this to enable debugging mstats
146 # This must be enabled to use the Devel::Peek::mstat() function. This cannot
147 # be enabled without PERL_MALLOC as well.
149 #DEBUG_MSTATS = define
152 # set this to additionally provide a statically linked perl-static.exe.
153 # Note that dynamic loading will not work with this perl, so you must
154 # include required modules statically using the STATIC_EXT or ALL_STATIC
155 # variables below. A static library perl513s.lib will also be created.
156 # Ordinary perl.exe is not affected by this option.
158 #BUILD_STATIC = define
161 # in addition to BUILD_STATIC the option ALL_STATIC makes *every*
162 # extension get statically built
163 # This will result in a very large perl executable, but the main purpose
164 # is to have proper linking set so as to be able to create miscellaneous
165 # executables with different built-in extensions
171 # set the install locations of the compiler include/libraries
172 # Running VCVARS32.BAT is *required* when using Visual C.
173 # Some versions of Visual C don't define MSVCDIR in the environment,
174 # so you may have to set CCHOME explicitly (spaces in the path name should
178 CCINCDIR = $(CCHOME)\include
179 CCLIBDIR = $(CCHOME)\lib
182 # Additional compiler flags can be specified here.
184 BUILDOPT = $(BUILDOPTEXTRA)
187 # This should normally be disabled. Enabling it will disable the File::Glob
188 # implementation of CORE::glob.
190 #BUILDOPT = $(BUILDOPT) -DPERL_EXTERNAL_GLOB
193 # This should normally be disabled. Enabling it causes perl to read scripts
194 # in text mode (which is the 5.005 behavior) and will break ByteLoader.
196 #BUILDOPT = $(BUILDOPT) -DPERL_TEXTMODE_SCRIPTS
199 # specify semicolon-separated list of extra directories that modules will
200 # look for libraries (spaces in path names need not be quoted)
205 # set this to your email address (perl will guess a value from
206 # from your loginname and your hostname, which may not be right)
211 ## Build configuration ends.
214 ##################### CHANGE THESE ONLY IF YOU MUST #####################
216 !IF "$(USE_IMP_SYS)" == "define"
221 !IF "$(PERL_MALLOC)" == ""
226 !IF "$(DEBUG_MSTATS)" == ""
230 !IF "$(DEBUG_MSTATS)" == "define"
231 BUILDOPT = $(BUILDOPT) -DPERL_DEBUGGING_MSTATS
234 !IF "$(USE_SITECUST)" == ""
238 !IF "$(USE_MULTI)" == ""
242 !IF "$(USE_ITHREADS)" == ""
246 !IF "$(USE_IMP_SYS)" == ""
250 !IF "$(USE_PERLIO)" == ""
254 !IF "$(USE_LARGE_FILES)" == ""
255 USE_LARGE_FILES = undef
258 !IF "$(USE_IMP_SYS)$(USE_MULTI)" == "defineundef"
262 !IF "$(USE_ITHREADS)$(USE_MULTI)" == "defineundef"
266 !IF "$(USE_SITECUST)" == "define"
267 BUILDOPT = $(BUILDOPT) -DUSE_SITECUSTOMIZE
270 !IF "$(USE_MULTI)" != "undef"
271 BUILDOPT = $(BUILDOPT) -DPERL_IMPLICIT_CONTEXT
274 !IF "$(USE_IMP_SYS)" != "undef"
275 BUILDOPT = $(BUILDOPT) -DPERL_IMPLICIT_SYS
278 !IF "$(PROCESSOR_ARCHITECTURE)" == ""
279 PROCESSOR_ARCHITECTURE = x86
283 # When we are running from a 32bit cmd.exe on AMD64 then
284 # PROCESSOR_ARCHITECTURE is set to x86 and PROCESSOR_ARCHITEW6432
286 !IF "$(PROCESSOR_ARCHITEW6432)" != ""
287 PROCESSOR_ARCHITECTURE = $(PROCESSOR_ARCHITEW6432)
290 !IF "$(PROCESSOR_ARCHITECTURE)" == "AMD64" || "$(PROCESSOR_ARCHITECTURE)" == "IA64"
298 # Treat 64-bit MSVC60 (doesn't really exist) as SDK2003SP1 because
299 # both link against MSVCRT.dll (which is part of Windows itself) and
300 # not against a compiler specific versioned runtime.
301 !IF "$(WIN64)" == "define" && "$(CCTYPE)" == "MSVC60"
305 ARCHITECTURE = $(PROCESSOR_ARCHITECTURE)
306 !IF "$(ARCHITECTURE)" == "AMD64"
309 !IF "$(ARCHITECTURE)" == "IA64"
313 !IF "$(USE_MULTI)" == "define"
314 ARCHNAME = MSWin32-$(ARCHITECTURE)-multi
316 !IF "$(USE_PERLIO)" == "define"
317 ARCHNAME = MSWin32-$(ARCHITECTURE)-perlio
319 ARCHNAME = MSWin32-$(ARCHITECTURE)
323 !IF "$(USE_PERLIO)" == "define"
324 BUILDOPT = $(BUILDOPT) -DUSE_PERLIO
327 !IF "$(USE_ITHREADS)" == "define"
328 ARCHNAME = $(ARCHNAME)-thread
331 # Visual C++ 98, .NET 2003, 2005/2008/2010 specific.
332 # VC++ 6/7/8/9/10.x can load DLLs on demand. Makes the test suite run
333 # in about 10% less time. (The free version of 7.x can't do this, but the free
334 # versions of 8/9/10.x can.)
335 !IF "$(CCTYPE)" == "MSVC60" || "$(CCTYPE)" == "MSVC70" || \
336 "$(CCTYPE)" == "MSVC80" || "$(CCTYPE)" == "MSVC80FREE" || \
337 "$(CCTYPE)" == "MSVC90" || "$(CCTYPE)" == "MSVC90FREE" || \
338 "$(CCTYPE)" == "MSVC100" || "$(CCTYPE)" == "MSVC100FREE"
339 DELAYLOAD = -DELAYLOAD:ws2_32.dll delayimp.lib
342 # Visual C++ 2005 and 2008 (VC++ 8.x and 9.x) create manifest files for EXEs and
343 # DLLs. These either need copying everywhere with the binaries, or else need
344 # embedding in them otherwise MSVCR80.dll or MSVCR90.dll won't be found. For
345 # simplicity, embed them if they exist (and delete them afterwards so that they
346 # don't get installed too).
347 EMBED_EXE_MANI = if exist $@.manifest mt -nologo -manifest $@.manifest -outputresource:$@;1 && \
348 if exist $@.manifest del $@.manifest
349 EMBED_DLL_MANI = if exist $@.manifest mt -nologo -manifest $@.manifest -outputresource:$@;2 && \
350 if exist $@.manifest del $@.manifest
352 ARCHDIR = ..\lib\$(ARCHNAME)
353 COREDIR = ..\lib\CORE
354 AUTODIR = ..\lib\auto
360 EXTUTILSDIR = $(LIBDIR)\ExtUtils
364 INST_SCRIPT = $(INST_TOP)$(INST_VER)\bin
365 INST_BIN = $(INST_SCRIPT)$(INST_ARCH)
366 INST_LIB = $(INST_TOP)$(INST_VER)\lib
367 INST_ARCHLIB = $(INST_LIB)$(INST_ARCH)
368 INST_COREDIR = $(INST_ARCHLIB)\CORE
369 INST_HTML = $(INST_TOP)$(INST_VER)\html
372 # Programs to compile, build .lib files and link
377 LIB32 = $(LINK32) -lib
384 INCLUDES = -I$(COREDIR) -I.\include -I. -I..
385 #PCHFLAGS = -Fpc:\temp\vcmoduls.pch -YX
386 DEFINES = -DWIN32 -D_CONSOLE -DNO_STRICT
387 LOCDEFS = -DPERLDLL -DPERL_CORE
393 !IF "$(CFG)" == "Debug"
394 OPTIMIZE = -Od -MD -Zi -DDEBUGGING
397 OPTIMIZE = -MD -Zi -DNDEBUG
398 # we enable debug symbols in release builds also
399 LINK_DBG = -debug -opt:ref,icf
400 # you may want to enable this if you want COFF symbols in the executables
401 # in addition to the PDB symbols. The default Dr. Watson that ships with
402 # Windows can use the the former but not latter. The free WinDbg can be
403 # installed to get better stack traces from just the PDB symbols, so we
404 # avoid the bloat of COFF symbols by default.
405 #LINK_DBG = $(LINK_DBG) -debugtype:both
406 ! IF "$(WIN64)" == "define"
407 # enable Whole Program Optimizations (WPO) and Link Time Code Generation (LTCG)
408 OPTIMIZE = $(OPTIMIZE) -Ox -GL
409 LINK_DBG = $(LINK_DBG) -ltcg
411 # -O1 yields smaller code, which turns out to be faster than -O2 on x86
412 OPTIMIZE = $(OPTIMIZE) -O1
413 #OPTIMIZE = $(OPTIMIZE) -O2
417 !IF "$(WIN64)" == "define"
418 DEFINES = $(DEFINES) -DWIN64 -DCONSERVATIVE
419 OPTIMIZE = $(OPTIMIZE) -fp:precise
422 # For now, silence VC++ 8/9/10.x's warnings about "unsafe" CRT functions
423 # and POSIX CRT function names being deprecated.
424 !IF "$(CCTYPE)" == "MSVC80" || "$(CCTYPE)" == "MSVC80FREE" || \
425 "$(CCTYPE)" == "MSVC90" || "$(CCTYPE)" == "MSVC90FREE" || \
426 "$(CCTYPE)" == "MSVC100" || "$(CCTYPE)" == "MSVC100FREE"
427 DEFINES = $(DEFINES) -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE
430 # In VS 2005 (VC++ 8.0) Microsoft changes time_t from 32-bit to
431 # 64-bit, even in 32-bit mode. It also provides the _USE_32BIT_TIME_T
432 # preprocessor option to revert back to the old functionality for
433 # backward compatibility. We define this symbol here for older 32-bit
434 # compilers only (which aren't using it at all) for the sole purpose
435 # of getting it into $Config{ccflags}. That way if someone builds
436 # Perl itself with e.g. VC6 but later installs an XS module using VC8
437 # the time_t types will still be compatible.
438 !IF "$(WIN64)" == "undef"
439 ! IF "$(CCTYPE)" == "MSVC60" || \
440 "$(CCTYPE)" == "MSVC70" || "$(CCTYPE)" == "MSVC70FREE"
441 BUILDOPT = $(BUILDOPT) -D_USE_32BIT_TIME_T
446 oldnames.lib kernel32.lib user32.lib gdi32.lib winspool.lib \
447 comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib \
448 netapi32.lib uuid.lib ws2_32.lib mpr.lib winmm.lib \
449 version.lib odbc32.lib odbccp32.lib comctl32.lib
451 # The 64 bit Windows Server 2003 SP1 SDK compilers link against MSVCRT.dll, which
452 # doesn't include the buffer overrun verification code used by the /GS switch.
453 # Since the code links against libraries that are compiled with /GS, this
454 # "security cookie verification" code must be included via bufferoverflow.lib.
455 !IF "$(WIN64)" == "define" && "$(CCTYPE)" == "SDK2003SP1"
456 LIBBASEFILES = $(LIBBASEFILES) bufferoverflowU.lib
459 LIBFILES = $(LIBBASEFILES) $(LIBC)
461 #EXTRACFLAGS = -nologo -GF -W4 -wd4127 -wd4706
462 EXTRACFLAGS = -nologo -GF -W3
463 CFLAGS = $(EXTRACFLAGS) $(INCLUDES) $(DEFINES) $(LOCDEFS) \
464 $(PCHFLAGS) $(OPTIMIZE)
465 LINK_FLAGS = -nologo -nodefaultlib $(LINK_DBG) \
466 -libpath:"$(INST_COREDIR)" \
467 -machine:$(PROCESSOR_ARCHITECTURE)
472 CFLAGS_O = $(CFLAGS) $(BUILDOPT)
474 !IF "$(CCTYPE)" == "MSVC80" || "$(CCTYPE)" == "MSVC80FREE" || \
475 "$(CCTYPE)" == "MSVC90" || "$(CCTYPE)" == "MSVC90FREE" || \
476 "$(CCTYPE)" == "MSVC100" || "$(CCTYPE)" == "MSVC100FREE"
477 LINK_FLAGS = $(LINK_FLAGS) "/manifestdependency:type='Win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'"
479 RSC_FLAGS = -DINCLUDE_MANIFEST
483 #################### do not edit below this line #######################
484 ############# NO USER-SERVICEABLE PARTS BEYOND THIS POINT ##############
492 .SUFFIXES : .c $(o) .dll .lib .exe .rc .res
495 $(CC) -c -I$(<D) $(CFLAGS_O) $(OBJOUT_FLAG)$@ $<
501 $(LINK32) -dll -subsystem:windows -implib:$(*B).lib -def:$(*B).def \
502 -out:$@ $(LINK_FLAGS) $(LIBFILES) $< $(LIBPERL)
506 $(RSC) -i.. $(RSC_FLAGS) $<
511 # makedef.pl must be updated if this changes, and this should normally
512 # only change when there is an incompatible revision of the public API.
513 PERLIMPLIB = ..\perl513.lib
514 PERLSTATICLIB = ..\perl513s.lib
515 PERLDLL = ..\perl513.dll
517 MINIPERL = ..\miniperl.exe
519 PERLEXE = ..\perl.exe
520 WPERLEXE = ..\wperl.exe
521 PERLEXESTATIC = ..\perl-static.exe
522 GLOBEXE = ..\perlglob.exe
523 CONFIGPM = ..\lib\Config.pm ..\lib\Config_heavy.pl
524 MINIMOD = ..\lib\ExtUtils\Miniperl.pm
526 GENUUDMAP = ..\generate_uudmap.exe
527 !IF "$(BUILD_STATIC)" == "define"
533 # Unicode data files generated by mktables
534 FIRSTUNIFILE = ..\lib\unicore\Decomposition.pl
535 UNIDATAFILES = ..\lib\unicore\Decomposition.pl \
536 ..\lib\unicore\CombiningClass.pl ..\lib\unicore\Name.pl \
537 ..\lib\unicore\Heavy.pl ..\lib\unicore\mktables.lst \
538 ..\lib\unicore\TestProp.pl
540 # Directories of Unicode data files generated by mktables
541 UNIDATADIR1 = ..\lib\unicore\To
542 UNIDATADIR2 = ..\lib\unicore\lib
544 PERLEXE_MANIFEST= .\perlexe.manifest
545 PERLEXE_ICO = .\perlexe.ico
546 PERLEXE_RES = .\perlexe.res
549 # Nominate a target which causes extensions to be re-built
550 # This used to be $(PERLEXE), but at worst it is the .dll that they depend
551 # on and really only the interface - i.e. the .def file used to export symbols
553 PERLDEP = perldll.def
555 PL2BAT = bin\pl2bat.pl
556 GLOBBAT = bin\perlglob.bat
572 ..\utils\config_data \
580 ..\utils\cpanp-run-perl \
597 !IF "$(WIN64)" == "define"
598 CFGSH_TMPL = config.vc64
599 CFGH_TMPL = config_H.vc64
601 CFGSH_TMPL = config.vc
602 CFGH_TMPL = config_H.vc
605 XCOPY = xcopy /f /r /i /d /y
606 RCOPY = xcopy /f /r /i /e /d /y
649 EXTRACORE_SRC = $(EXTRACORE_SRC) perllib.c
651 !IF "$(PERL_MALLOC)" == "define"
652 EXTRACORE_SRC = $(EXTRACORE_SRC) ..\malloc.c
655 EXTRACORE_SRC = $(EXTRACORE_SRC) ..\perlio.c
663 # We need this for miniperl build unless we override canned
664 # config.h #define building mini\*
665 #!IF "$(USE_PERLIO)" == "define"
666 WIN32_SRC = $(WIN32_SRC) .\win32io.c
714 .\include\sys\socket.h \
717 CORE_H = $(CORE_NOCFG_H) .\config.h ..\git_version.h
719 UUDMAP_H = ..\uudmap.h
720 BITCOUNT_H = ..\bitcount.h
722 MICROCORE_OBJ = $(MICROCORE_SRC:.c=.obj)
723 CORE_OBJ = $(MICROCORE_OBJ) $(EXTRACORE_SRC:.c=.obj)
724 WIN32_OBJ = $(WIN32_SRC:.c=.obj)
725 MINICORE_OBJ = $(MICROCORE_OBJ:..\=.\mini\) \
726 $(MINIDIR)\miniperlmain$(o) \
727 $(MINIDIR)\perlio$(o)
728 MINIWIN32_OBJ = $(WIN32_OBJ:.\=.\mini\)
729 MINI_OBJ = $(MINICORE_OBJ) $(MINIWIN32_OBJ)
730 DLL_OBJ = $(DYNALOADER)
731 X2P_OBJ = $(X2P_SRC:.c=.obj)
732 GENUUDMAP_OBJ = $(GENUUDMAP:.exe=.obj)
734 PERLDLL_OBJ = $(CORE_OBJ)
735 PERLEXE_OBJ = perlmain$(o)
736 PERLEXEST_OBJ = perlmainst$(o)
738 PERLDLL_OBJ = $(PERLDLL_OBJ) $(WIN32_OBJ) $(DLL_OBJ)
740 !IF "$(USE_SETARGV)" != ""
741 SETARGV_OBJ = setargv$(o)
744 !IF "$(ALL_STATIC)" == "define"
745 # some exclusions, unfortunately, until fixed:
746 # - Win32 extension contains overlapped symbols with win32.c (BUG!)
747 # - MakeMaker isn't capable enough for SDBM_File (smaller bug)
748 # - Encode (encoding search algorithm relies on shared library?)
749 STATIC_EXT = * !Win32 !SDBM_File !Encode
751 # specify static extensions here, for example:
752 #STATIC_EXT = Cwd Compress/Raw/Zlib
753 STATIC_EXT = Win32CORE
756 DYNALOADER = ..\DynaLoader$(o)
759 "INST_DRV=$(INST_DRV)" \
760 "INST_TOP=$(INST_TOP)" \
761 "INST_VER=$(INST_VER)" \
762 "INST_ARCH=$(INST_ARCH)" \
763 "archname=$(ARCHNAME)" \
766 "ccflags=$(EXTRACFLAGS) $(OPTIMIZE:"=\") $(DEFINES) $(BUILDOPT)" \
767 "cf_email=$(EMAIL)" \
768 "d_mymalloc=$(PERL_MALLOC)" \
770 "incpath=$(CCINCDIR:"=\")" \
771 "libperl=$(PERLIMPLIB:..\=)" \
772 "libpth=$(CCLIBDIR:"=\");$(EXTRALIBDIRS:"=\")" \
774 "make=$(MAKE_BARE)" \
775 "static_ext=$(STATIC_EXT)" \
776 "usethreads=$(USE_ITHREADS)" \
777 "useithreads=$(USE_ITHREADS)" \
778 "usemultiplicity=$(USE_MULTI)" \
779 "useperlio=$(USE_PERLIO)" \
780 "uselargefiles=$(USE_LARGE_FILES)" \
781 "usesitecustomize=$(USE_SITECUST)" \
782 "LINK_FLAGS=$(LINK_FLAGS:"=\")" \
783 "optimize=$(OPTIMIZE:"=\")"
785 ICWD = -I..\dist\Cwd -I..\dist\Cwd\lib
791 all : .\config.h ..\git_version.h $(GLOBEXE) $(MINIMOD) $(CONFIGPM) \
792 $(UNIDATAFILES) MakePPPort $(PERLEXE) $(X2P) Extensions_nonxs Extensions $(PERLSTATIC)
793 @echo Everything is up to date. '$(MAKE_BARE) test' to run test suite.
795 regnodes : ..\regnodes.h
797 ..\regcomp$(o) : ..\regnodes.h ..\regcharclass.h
799 ..\regexec$(o) : ..\regnodes.h ..\regcharclass.h
801 reonly : regnodes .\config.h ..\git_version.h $(GLOBEXE) $(MINIMOD) $(CONFIGPM) \
802 $(UNIDATAFILES) $(PERLEXE) $(X2P) Extensions_reonly
803 @echo Perl and 're' are up to date.
805 static: $(PERLEXESTATIC)
807 #------------------------------------------------------------
809 $(GLOBEXE) : perlglob$(o)
810 $(LINK32) $(LINK_FLAGS) $(LIBFILES) -out:$@ -subsystem:$(SUBSYS) \
811 perlglob$(o) setargv$(o)
814 perlglob$(o) : perlglob.c
816 config.w32 : $(CFGSH_TMPL)
817 copy $(CFGSH_TMPL) config.w32
819 .\config.h : $(CFGH_TMPL)
821 copy $(CFGH_TMPL) config.h
823 ..\git_version.h : $(MINIPERL) ..\make_patchnum.pl
825 miniperl -Ilib make_patchnum.pl
828 # make sure that we recompile perl.c if the git version changes
829 ..\perl$(o) : ..\git_version.h
831 ..\config.sh : config.w32 $(MINIPERL) config_sh.PL FindExt.pm
832 $(MINIPERL) -I..\lib config_sh.PL $(CFG_VARS) config.w32 > ..\config.sh
834 # this target is for when changes to the main config.sh happen.
835 # edit config.vc, then make perl in a minimal configuration (i.e. with MULTI,
836 # ITHREADS, IMP_SYS, LARGE_FILES, PERLIO and CRYPT off), then make this target
837 # to regenerate config_H.vc.
838 # repeat for config.vc64 and config_H.vc64 if you have a suitable build
839 # environment, otherwise hand-edit them to maintain the same differences with
840 # config.vc and config_H.vc as before.
841 # unfortunately, some further manual editing is also then required to restore all
842 # the special __GNUC__ handling that is otherwise lost.
844 $(MINIPERL) -I..\lib config_sh.PL $(CFG_VARS) $(CFGSH_TMPL) > ..\config.sh
845 $(MINIPERL) -I..\lib ..\configpm --chdir=..
847 -$(MINIPERL) -I..\lib $(ICWD) config_h.PL "INST_VER=$(INST_VER)"
848 rename config.h $(CFGH_TMPL)
850 $(CONFIGPM) : $(MINIPERL) ..\config.sh config_h.PL ..\minimod.pl
851 $(MINIPERL) -I..\lib ..\configpm --chdir=..
852 if exist lib\* $(RCOPY) lib\*.* ..\lib\$(NULL)
853 $(XCOPY) ..\*.h $(COREDIR)\*.*
854 $(XCOPY) *.h $(COREDIR)\*.*
855 $(XCOPY) ..\ext\re\re.pm $(LIBDIR)\*.*
856 $(RCOPY) include $(COREDIR)\*.*
857 -$(MINIPERL) -I..\lib $(ICWD) config_h.PL "INST_VER=$(INST_VER)"
858 if errorlevel 1 $(MAKE) /$(MAKEFLAGS) $(CONFIGPM)
860 $(MINIPERL) : $(MINIDIR) $(MINI_OBJ)
861 $(LINK32) -subsystem:console -out:$@ @<<
862 $(LINK_FLAGS) $(LIBFILES) $(MINI_OBJ)
867 if not exist "$(MINIDIR)" mkdir "$(MINIDIR)"
869 $(MINICORE_OBJ) : $(CORE_NOCFG_H)
870 $(CC) -c $(CFLAGS) -DPERL_EXTERNAL_GLOB -DPERL_IS_MINIPERL $(OBJOUT_FLAG)$@ ..\$(*F).c
872 $(MINIWIN32_OBJ) : $(CORE_NOCFG_H)
873 $(CC) -c $(CFLAGS) $(OBJOUT_FLAG)$@ $(*F).c
875 # -DPERL_IMPLICIT_SYS needs C++ for perllib.c
876 # This is the only file that depends on perlhost.h, vmem.h, and vdir.h
877 !IF "$(USE_IMP_SYS)" == "define"
878 perllib$(o) : perllib.c .\perlhost.h .\vdir.h .\vmem.h
879 $(CC) -c -I. $(CFLAGS_O) $(CXX_FLAG) $(OBJOUT_FLAG)$@ perllib.c
882 # 1. we don't want to rebuild miniperl.exe when config.h changes
883 # 2. we don't want to rebuild miniperl.exe with non-default config.h
884 # 3. we can't have miniperl.exe depend on git_version.h, as miniperl creates it
885 $(MINI_OBJ) : $(CORE_NOCFG_H)
887 $(WIN32_OBJ) : $(CORE_H)
888 $(CORE_OBJ) : $(CORE_H)
889 $(DLL_OBJ) : $(CORE_H)
890 $(X2P_OBJ) : $(CORE_H)
892 perldll.def : $(MINIPERL) $(CONFIGPM) ..\global.sym ..\makedef.pl create_perllibst_h.pl
893 $(MINIPERL) -I..\lib create_perllibst_h.pl
894 $(MINIPERL) -I..\lib -w ..\makedef.pl PLATFORM=win32 $(OPTIMIZE) $(DEFINES) $(BUILDOPT) \
895 CCTYPE=$(CCTYPE) > perldll.def
897 $(PERLDLL): perldll.def $(PERLDLL_OBJ) $(PERLDLL_RES) Extensions_static
898 $(LINK32) -dll -def:perldll.def -base:0x28000000 -out:$@ @Extensions_static @<<
899 $(LINK_FLAGS) $(DELAYLOAD) $(LIBFILES) $(PERLDLL_OBJ) $(PERLDLL_RES)
902 $(XCOPY) $(PERLIMPLIB) $(COREDIR)
904 $(PERLSTATICLIB): Extensions_static
905 $(LIB32) $(LIB_FLAGS) -out:$@ @Extensions_static @<<
908 $(XCOPY) $(PERLSTATICLIB) $(COREDIR)
910 $(PERLEXE_RES): perlexe.rc $(PERLEXE_MANIFEST) $(PERLEXE_ICO)
912 $(MINIMOD) : $(MINIPERL) ..\minimod.pl
914 miniperl minimod.pl > lib\ExtUtils\Miniperl.pm
917 ..\x2p\a2p$(o) : ..\x2p\a2p.c
918 $(CC) -I..\x2p $(CFLAGS) $(OBJOUT_FLAG)$@ -c ..\x2p\a2p.c
920 ..\x2p\hash$(o) : ..\x2p\hash.c
921 $(CC) -I..\x2p $(CFLAGS) $(OBJOUT_FLAG)$@ -c ..\x2p\hash.c
923 ..\x2p\str$(o) : ..\x2p\str.c
924 $(CC) -I..\x2p $(CFLAGS) $(OBJOUT_FLAG)$@ -c ..\x2p\str.c
926 ..\x2p\util$(o) : ..\x2p\util.c
927 $(CC) -I..\x2p $(CFLAGS) $(OBJOUT_FLAG)$@ -c ..\x2p\util.c
929 ..\x2p\walk$(o) : ..\x2p\walk.c
930 $(CC) -I..\x2p $(CFLAGS) $(OBJOUT_FLAG)$@ -c ..\x2p\walk.c
932 $(X2P) : $(MINIPERL) $(X2P_OBJ) Extensions
933 $(MINIPERL) -I..\lib ..\x2p\find2perl.PL
934 $(MINIPERL) -I..\lib ..\x2p\s2p.PL
935 $(LINK32) -subsystem:console -out:$@ @<<
936 $(LINK_FLAGS) $(LIBFILES) $(X2P_OBJ)
940 $(MINIDIR)\globals$(o) : $(UUDMAP_H) $(BITCOUNT_H)
942 $(UUDMAP_H) : $(BITCOUNT_H)
944 $(BITCOUNT_H) : $(GENUUDMAP)
945 $(GENUUDMAP) $(UUDMAP_H) $(BITCOUNT_H)
947 $(GENUUDMAP) : $(GENUUDMAP_OBJ)
948 $(LINK32) -subsystem:console -out:$@ @<<
949 $(LINK_FLAGS) $(LIBFILES) $(GENUUDMAP_OBJ)
953 perlmain.c : runperl.c
954 copy runperl.c perlmain.c
956 perlmain$(o) : perlmain.c
957 $(CC) $(CFLAGS_O:-DPERLDLL=-UPERLDLL) $(OBJOUT_FLAG)$@ -c perlmain.c
959 perlmainst.c : runperl.c
960 copy runperl.c perlmainst.c
962 perlmainst$(o) : perlmainst.c
963 $(CC) $(CFLAGS_O) $(OBJOUT_FLAG)$@ -c perlmainst.c
965 $(PERLEXE): $(PERLDLL) $(CONFIGPM) $(PERLEXE_OBJ) $(PERLEXE_RES)
966 $(LINK32) -subsystem:console -out:$@ $(LINK_FLAGS) \
967 $(LIBFILES) $(PERLEXE_OBJ) $(SETARGV_OBJ) $(PERLIMPLIB) $(PERLEXE_RES)
969 copy $(PERLEXE) $(WPERLEXE)
970 $(MINIPERL) -I..\lib bin\exetype.pl $(WPERLEXE) WINDOWS
972 $(PERLEXESTATIC): $(PERLSTATICLIB) $(CONFIGPM) $(PERLEXEST_OBJ) $(PERLEXE_RES)
973 $(LINK32) -subsystem:console -out:$@ $(LINK_FLAGS) \
974 @Extensions_static $(PERLSTATICLIB) /PDB:NONE \
975 $(LIBFILES) $(PERLEXEST_OBJ) $(SETARGV_OBJ) $(PERLEXE_RES)
978 MakePPPort: $(MINIPERL) $(CONFIGPM) Extensions_nonxs
979 $(MINIPERL) -I..\lib $(ICWD) ..\mkppport
981 #-------------------------------------------------------------------------------
982 # There's no direct way to mark a dependency on
983 # DynaLoader.pm, so this will have to do
984 Extensions: ..\make_ext.pl $(PERLDEP) $(CONFIGPM) $(DYNALOADER)
985 $(XCOPY) ..\*.h $(COREDIR)\*.*
986 $(MINIPERL) -I..\lib ..\make_ext.pl "MAKE=$(MAKE)" --dir=$(CPANDIR) --dir=$(DISTDIR) --dir=$(EXTDIR) --dynamic
988 Extensions_reonly: ..\make_ext.pl $(PERLDEP) $(CONFIGPM) $(DYNALOADER)
989 $(XCOPY) ..\*.h $(COREDIR)\*.*
990 $(MINIPERL) -I..\lib ..\make_ext.pl "MAKE=$(MAKE)" --dir=$(CPANDIR) --dir=$(DISTDIR) --dir=$(EXTDIR) --dynamic +re
992 Extensions_static : ..\make_ext.pl list_static_libs.pl $(PERLDEP) $(CONFIGPM)
993 $(XCOPY) ..\*.h $(COREDIR)\*.*
994 $(MINIPERL) -I..\lib ..\make_ext.pl "MAKE=$(MAKE)" --dir=$(CPANDIR) --dir=$(DISTDIR) --dir=$(EXTDIR) --static
995 $(MINIPERL) -I..\lib list_static_libs.pl > Extensions_static
997 Extensions_nonxs: ..\make_ext.pl $(PERLDEP) $(CONFIGPM)
998 $(XCOPY) ..\*.h $(COREDIR)\*.*
999 $(MINIPERL) -I..\lib ..\make_ext.pl "MAKE=$(MAKE)" --dir=$(CPANDIR) --dir=$(DISTDIR) --dir=$(EXTDIR) --nonxs
1001 $(DYNALOADER) : ..\make_ext.pl $(PERLDEP) $(CONFIGPM) Extensions_nonxs
1002 $(XCOPY) ..\*.h $(COREDIR)\*.*
1003 $(MINIPERL) -I..\lib ..\make_ext.pl "MAKE=$(MAKE)" --dir=$(EXTDIR) --dynaloader
1006 -if exist $(MINIPERL) $(MINIPERL) -I..\lib ..\make_ext.pl "MAKE=$(MAKE)" --dir=$(CPANDIR) --dir=$(DISTDIR) --dir=$(EXTDIR) --all --target=clean
1008 Extensions_realclean:
1009 -if exist $(MINIPERL) $(MINIPERL) -I..\lib ..\make_ext.pl "MAKE=$(MAKE)" --dir=$(CPANDIR) --dir=$(DISTDIR) --dir=$(EXTDIR) --all --target=realclean
1011 #-------------------------------------------------------------------------------
1013 doc: $(PERLEXE) ..\pod\perltoc.pod
1014 $(PERLEXE) -I..\lib ..\installhtml --podroot=.. --htmldir=$(HTMLDIR) \
1015 --podpath=pod:lib:ext:utils --htmlroot="file://$(INST_HTML::=|)" \
1016 --libpod=perlfunc:perlguts:perlvar:perlrun:perlop --recurse
1018 # Note that this next section is parsed (and regenerated) by pod/buildtoc
1019 # so please check that script before making structural changes here
1021 utils: $(PERLEXE) $(X2P)
1023 $(MAKE) PERL=$(MINIPERL)
1025 copy ..\README.aix ..\pod\perlaix.pod
1026 copy ..\README.amiga ..\pod\perlamiga.pod
1027 copy ..\README.beos ..\pod\perlbeos.pod
1028 copy ..\README.bs2000 ..\pod\perlbs2000.pod
1029 copy ..\README.ce ..\pod\perlce.pod
1030 copy ..\README.cn ..\pod\perlcn.pod
1031 copy ..\README.cygwin ..\pod\perlcygwin.pod
1032 copy ..\README.dgux ..\pod\perldgux.pod
1033 copy ..\README.dos ..\pod\perldos.pod
1034 copy ..\README.epoc ..\pod\perlepoc.pod
1035 copy ..\README.freebsd ..\pod\perlfreebsd.pod
1036 copy ..\README.haiku ..\pod\perlhaiku.pod
1037 copy ..\README.hpux ..\pod\perlhpux.pod
1038 copy ..\README.hurd ..\pod\perlhurd.pod
1039 copy ..\README.irix ..\pod\perlirix.pod
1040 copy ..\README.jp ..\pod\perljp.pod
1041 copy ..\README.ko ..\pod\perlko.pod
1042 copy ..\README.linux ..\pod\perllinux.pod
1043 copy ..\README.macos ..\pod\perlmacos.pod
1044 copy ..\README.macosx ..\pod\perlmacosx.pod
1045 copy ..\README.mpeix ..\pod\perlmpeix.pod
1046 copy ..\README.netware ..\pod\perlnetware.pod
1047 copy ..\README.openbsd ..\pod\perlopenbsd.pod
1048 copy ..\README.os2 ..\pod\perlos2.pod
1049 copy ..\README.os390 ..\pod\perlos390.pod
1050 copy ..\README.os400 ..\pod\perlos400.pod
1051 copy ..\README.plan9 ..\pod\perlplan9.pod
1052 copy ..\README.qnx ..\pod\perlqnx.pod
1053 copy ..\README.riscos ..\pod\perlriscos.pod
1054 copy ..\README.solaris ..\pod\perlsolaris.pod
1055 copy ..\README.symbian ..\pod\perlsymbian.pod
1056 copy ..\README.tru64 ..\pod\perltru64.pod
1057 copy ..\README.tw ..\pod\perltw.pod
1058 copy ..\README.uts ..\pod\perluts.pod
1059 copy ..\README.vmesa ..\pod\perlvmesa.pod
1060 copy ..\README.vos ..\pod\perlvos.pod
1061 copy ..\README.win32 ..\pod\perlwin32.pod
1062 copy ..\pod\perldelta.pod ..\pod\perl51310delta.pod
1064 $(PERLEXE) $(PL2BAT) $(UTILS)
1065 $(PERLEXE) $(ICWD) ..\autodoc.pl ..
1066 $(PERLEXE) $(ICWD) ..\pod\perlmodlib.pl -q
1068 ..\pod\perltoc.pod: $(PERLEXE) Extensions Extensions_nonxs
1069 $(PERLEXE) -f ..\pod\buildtoc --build-toc -q
1071 # Note that the pod cleanup in this next section is parsed (and regenerated
1072 # by pod/buildtoc so please check that script before making changes here
1074 distclean: realclean
1075 -del /f $(MINIPERL) $(PERLEXE) $(PERLDLL) $(GLOBEXE) \
1076 $(PERLIMPLIB) ..\miniperl.lib $(MINIMOD) \
1077 $(PERLEXESTATIC) $(PERLSTATICLIB)
1079 -del /f $(LIBDIR)\Encode.pm $(LIBDIR)\encoding.pm $(LIBDIR)\Errno.pm
1080 -del /f $(LIBDIR)\Config.pod $(LIBDIR)\POSIX.pod $(LIBDIR)\threads.pm
1081 -del /f $(LIBDIR)\.exists $(LIBDIR)\attributes.pm $(LIBDIR)\DynaLoader.pm
1082 -del /f $(LIBDIR)\Fcntl.pm $(LIBDIR)\IO.pm $(LIBDIR)\Opcode.pm
1083 -del /f $(LIBDIR)\ops.pm $(LIBDIR)\Safe.pm
1084 -del /f $(LIBDIR)\SDBM_File.pm $(LIBDIR)\Socket.pm $(LIBDIR)\POSIX.pm
1085 -del /f $(LIBDIR)\B.pm $(LIBDIR)\O.pm $(LIBDIR)\re.pm
1086 -del /f $(LIBDIR)\File\Glob.pm
1087 -del /f $(LIBDIR)\Storable.pm
1088 -del /f $(LIBDIR)\Sys\Hostname.pm
1089 -del /f $(LIBDIR)\Time\HiRes.pm
1090 -del /f $(LIBDIR)\Unicode\Normalize.pm
1091 -del /f $(LIBDIR)\Math\BigInt\FastCalc.pm
1092 -del /f $(LIBDIR)\Win32.pm
1093 -del /f $(LIBDIR)\Win32CORE.pm
1094 -del /f $(LIBDIR)\Win32API\File.pm
1095 -del /f $(LIBDIR)\Win32API\File\cFile.pc
1096 -del /f $(DISTDIR)\XSLoader\XSLoader.pm
1097 -if exist $(LIBDIR)\App rmdir /s /q $(LIBDIR)\App
1098 -if exist $(LIBDIR)\Archive rmdir /s /q $(LIBDIR)\Archive
1099 -if exist $(LIBDIR)\Attribute rmdir /s /q $(LIBDIR)\Attribute
1100 -if exist $(LIBDIR)\autodie rmdir /s /q $(LIBDIR)\autodie
1101 -if exist $(LIBDIR)\B rmdir /s /q $(LIBDIR)\B
1102 -if exist $(LIBDIR)\CGI rmdir /s /q $(LIBDIR)\CGI
1103 -if exist $(LIBDIR)\CPAN rmdir /s /q $(LIBDIR)\CPAN
1104 -if exist $(LIBDIR)\CPANPLUS rmdir /s /q $(LIBDIR)\CPANPLUS
1105 -if exist $(LIBDIR)\Compress rmdir /s /q $(LIBDIR)\Compress
1106 -if exist $(LIBDIR)\Data rmdir /s /q $(LIBDIR)\Data
1107 -if exist $(LIBDIR)\Devel rmdir /s /q $(LIBDIR)\Devel
1108 -if exist $(LIBDIR)\Digest rmdir /s /q $(LIBDIR)\Digest
1109 -if exist $(LIBDIR)\Encode rmdir /s /q $(LIBDIR)\Encode
1110 -if exist $(LIBDIR)\encoding rmdir /s /q $(LIBDIR)\encoding
1111 -if exist $(LIBDIR)\ExtUtils\CBuilder rmdir /s /q $(LIBDIR)\ExtUtils\CBuilder
1112 -if exist $(LIBDIR)\ExtUtils\Command rmdir /s /q $(LIBDIR)\ExtUtils\Command
1113 -if exist $(LIBDIR)\ExtUtils\Constant rmdir /s /q $(LIBDIR)\ExtUtils\Constant
1114 -if exist $(LIBDIR)\ExtUtils\Liblist rmdir /s /q $(LIBDIR)\ExtUtils\Liblist
1115 -if exist $(LIBDIR)\ExtUtils\MakeMaker rmdir /s /q $(LIBDIR)\ExtUtils\MakeMaker
1116 -if exist $(LIBDIR)\File\Spec rmdir /s /q $(LIBDIR)\File\Spec
1117 -if exist $(LIBDIR)\Filter rmdir /s /q $(LIBDIR)\Filter
1118 -if exist $(LIBDIR)\Hash rmdir /s /q $(LIBDIR)\Hash
1119 -if exist $(LIBDIR)\I18N\LangTags rmdir /s /q $(LIBDIR)\I18N\LangTags
1120 -if exist $(LIBDIR)\inc rmdir /s /q $(LIBDIR)\inc
1121 -if exist $(LIBDIR)\Module\Pluggable rmdir /s /q $(LIBDIR)\Module\Pluggable
1122 -if exist $(LIBDIR)\IO rmdir /s /q $(LIBDIR)\IO
1123 -if exist $(LIBDIR)\IPC rmdir /s /q $(LIBDIR)\IPC
1124 -if exist $(LIBDIR)\List rmdir /s /q $(LIBDIR)\List
1125 -if exist $(LIBDIR)\Locale rmdir /s /q $(LIBDIR)\Locale
1126 -if exist $(LIBDIR)\Log rmdir /s /q $(LIBDIR)\Log
1127 -if exist $(LIBDIR)\Math rmdir /s /q $(LIBDIR)\Math
1128 -if exist $(LIBDIR)\Memoize rmdir /s /q $(LIBDIR)\Memoize
1129 -if exist $(LIBDIR)\MIME rmdir /s /q $(LIBDIR)\MIME
1130 -if exist $(LIBDIR)\Module rmdir /s /q $(LIBDIR)\Module
1131 -if exist $(LIBDIR)\mro rmdir /s /q $(LIBDIR)\mro
1132 -if exist $(LIBDIR)\Net\FTP rmdir /s /q $(LIBDIR)\Net\FTP
1133 -if exist $(LIBDIR)\Object rmdir /s /q $(LIBDIR)\Object
1134 -if exist $(LIBDIR)\Package rmdir /s /q $(LIBDIR)\Package
1135 -if exist $(LIBDIR)\Params rmdir /s /q $(LIBDIR)\Params
1136 -if exist $(LIBDIR)\Parse rmdir /s /q $(LIBDIR)\Parse
1137 -if exist $(LIBDIR)\PerlIO rmdir /s /q $(LIBDIR)\PerlIO
1138 -if exist $(LIBDIR)\Pod\Perldoc rmdir /s /q $(LIBDIR)\Pod\Perldoc
1139 -if exist $(LIBDIR)\Pod\Simple rmdir /s /q $(LIBDIR)\Pod\Simple
1140 -if exist $(LIBDIR)\Pod\Text rmdir /s /q $(LIBDIR)\Pod\Text
1141 -if exist $(LIBDIR)\re rmdir /s /q $(LIBDIR)\re
1142 -if exist $(LIBDIR)\Scalar rmdir /s /q $(LIBDIR)\Scalar
1143 -if exist $(LIBDIR)\Sys rmdir /s /q $(LIBDIR)\Sys
1144 -if exist $(LIBDIR)\TAP rmdir /s /q $(LIBDIR)\TAP
1145 -if exist $(LIBDIR)\Term\UI rmdir /s /q $(LIBDIR)\Term\UI
1146 -if exist $(LIBDIR)\Test rmdir /s /q $(LIBDIR)\Test
1147 -if exist $(LIBDIR)\Thread rmdir /s /q $(LIBDIR)\Thread
1148 -if exist $(LIBDIR)\threads rmdir /s /q $(LIBDIR)\threads
1149 -if exist $(LIBDIR)\Tie\Hash rmdir /s /q $(LIBDIR)\Tie\Hash
1150 -if exist $(LIBDIR)\Unicode\Collate rmdir /s /q $(LIBDIR)\Unicode\Collate
1151 -if exist $(LIBDIR)\XS rmdir /s /q $(LIBDIR)\XS
1152 -if exist $(LIBDIR)\Win32API rmdir /s /q $(LIBDIR)\Win32API
1153 -cd $(PODDIR) && del /f *.html *.bat \
1154 perl51310delta.pod perlaix.pod perlamiga.pod perlapi.pod \
1155 perlbeos.pod perlbs2000.pod perlce.pod perlcn.pod \
1156 perlcygwin.pod perldgux.pod perldos.pod perlepoc.pod \
1157 perlfreebsd.pod perlhaiku.pod perlhpux.pod perlhurd.pod \
1158 perlintern.pod perlirix.pod perljp.pod perlko.pod perllinux.pod \
1159 perlmacos.pod perlmacosx.pod perlmodlib.pod perlmpeix.pod \
1160 perlnetware.pod perlopenbsd.pod perlos2.pod perlos390.pod \
1161 perlos400.pod perlplan9.pod perlqnx.pod perlriscos.pod \
1162 perlsolaris.pod perlsymbian.pod perltoc.pod perltru64.pod \
1163 perltw.pod perluniprops.pod perluts.pod perlvmesa.pod \
1164 perlvos.pod perlwin32.pod
1165 -cd ..\utils && del /f h2ph splain perlbug pl2pm c2ph pstruct h2xs \
1166 perldoc perlivp dprofpp libnetcfg enc2xs piconv cpan *.bat \
1167 xsubpp instmodsh prove ptar ptardiff ptargrep cpanp-run-perl cpanp cpan2dist shasum corelist config_data
1168 -cd ..\x2p && del /f find2perl s2p psed *.bat
1169 -del /f ..\config.sh perlmain.c dlutils.c config.h.new \
1172 -del /f ..\lib\Config_git.pl
1175 -del /f $(PERLEXE_RES) perl.base
1176 -cd .. && del /s *.lib *.map *.pdb *.ilk *.bs *$(o) .exists pm_to_blib ppport.h
1177 -cd $(EXTDIR) && del /s *.def Makefile Makefile.old
1178 -cd $(DISTDIR) && del /s *.def Makefile Makefile.old
1179 -cd $(CPANDIR) && del /s *.def Makefile Makefile.old
1180 -if exist $(AUTODIR) rmdir /s /q $(AUTODIR)
1181 -if exist $(COREDIR) rmdir /s /q $(COREDIR)
1182 -if exist pod2htmd.tmp del pod2htmd.tmp
1183 -if exist pod2htmi.tmp del pod2htmi.tmp
1184 -if exist $(HTMLDIR) rmdir /s /q $(HTMLDIR)
1185 -del /f ..\t\test_state
1187 install : all installbare installhtml
1189 installbare : utils ..\pod\perltoc.pod
1190 $(PERLEXE) ..\installperl
1191 if exist $(WPERLEXE) $(XCOPY) $(WPERLEXE) $(INST_BIN)\*.*
1192 if exist $(PERLEXESTATIC) $(XCOPY) $(PERLEXESTATIC) $(INST_BIN)\*.*
1193 $(XCOPY) $(GLOBEXE) $(INST_BIN)\*.*
1194 if exist ..\perl*.pdb $(XCOPY) ..\perl*.pdb $(INST_BIN)\*.*
1195 if exist ..\x2p\a2p.pdb $(XCOPY) ..\x2p\a2p.pdb $(INST_BIN)\*.*
1196 $(XCOPY) bin\*.bat $(INST_SCRIPT)\*.*
1199 $(RCOPY) $(HTMLDIR)\*.* $(INST_HTML)\*.*
1201 inst_lib : $(CONFIGPM)
1202 $(RCOPY) ..\lib $(INST_LIB)\*.*
1204 $(UNIDATAFILES) ..\pod\perluniprops.pod : $(MINIPERL) $(CONFIGPM) ..\lib\unicore\mktables Extensions_nonxs
1205 cd ..\lib\unicore && \
1206 ..\$(MINIPERL) -I.. -I..\..\dist\Cwd\lib -I..\..\dist\Cwd mktables -P ..\..\pod -maketest -makelist -p -check $@ $(FIRSTUNIFILE)
1208 minitest : $(MINIPERL) $(GLOBEXE) $(CONFIGPM) utils $(UNIDATAFILES)
1209 $(XCOPY) $(MINIPERL) ..\t\$(NULL)
1210 if exist ..\t\perl.exe del /f ..\t\perl.exe
1211 rename ..\t\miniperl.exe perl.exe
1212 $(XCOPY) $(GLOBEXE) ..\t\$(NULL)
1215 $(MINIPERL) -I..\lib harness base/*.t comp/*.t cmd/*.t io/*.t op/*.t pragma/*.t
1217 test-prep : all utils ../pod/perltoc.pod
1218 $(XCOPY) $(PERLEXE) ..\t\$(NULL)
1219 $(XCOPY) $(PERLDLL) ..\t\$(NULL)
1220 $(XCOPY) $(GLOBEXE) ..\t\$(NULL)
1221 set PERL_STATIC_EXT=$(STATIC_EXT)
1225 $(PERLEXE) -I..\lib harness $(TEST_SWITCHES) $(TEST_FILES)
1228 test-reonly : reonly utils
1229 $(XCOPY) $(PERLEXE) ..\t\$(NULL)
1230 $(XCOPY) $(PERLDLL) ..\t\$(NULL)
1231 $(XCOPY) $(GLOBEXE) ..\t\$(NULL)
1233 $(PERLEXE) -I..\lib harness $(OPT) -re \bre\\/ $(EXTRA)
1241 test-notty : test-prep
1242 set PERL_SKIP_TTY_TEST=1
1244 $(PERLEXE) -I..\lib harness $(TEST_SWITCHES) $(TEST_FILES)
1248 $(XCOPY) $(PERLEXE) ..\t\$(NULL)
1249 $(XCOPY) $(PERLDLL) ..\t\$(NULL)
1250 $(XCOPY) $(GLOBEXE) ..\t\$(NULL)
1252 $(PERLEXE) -I..\lib harness $(TEST_SWITCHES) $(TEST_FILES)
1256 -@$(DEL) miniperlmain$(o)
1257 -@$(DEL) $(MINIPERL)
1258 -@$(DEL) perlglob$(o)
1259 -@$(DEL) perlmain$(o)
1260 -@$(DEL) perlmainst$(o)
1263 -@$(DEL) ..\git_version.h
1266 -@$(DEL) $(WPERLEXE)
1267 -@$(DEL) $(PERLEXESTATIC)
1268 -@$(DEL) $(PERLSTATICLIB)
1270 -@$(DEL) $(CORE_OBJ)
1271 -@$(DEL) $(GENUUDMAP) $(GENUUDMAP_OBJ) $(UUDMAP_H) $(BITCOUNT_H)
1272 -if exist $(MINIDIR) rmdir /s /q $(MINIDIR)
1273 -if exist $(UNIDATADIR1) rmdir /s /q $(UNIDATADIR1)
1274 -if exist $(UNIDATADIR2) rmdir /s /q $(UNIDATADIR2)
1275 -@$(DEL) $(UNIDATAFILES)
1276 -@$(DEL) $(WIN32_OBJ)
1279 -@$(DEL) ..\*$(o) ..\*.lib ..\*.exp *$(o) *.lib *.exp *.res
1280 -@$(DEL) ..\t\*.exe ..\t\*.dll ..\t\*.bat
1281 -@$(DEL) ..\x2p\*.exe ..\x2p\*.bat
1284 -@$(DEL) Extensions_static
1286 clean : Extensions_clean _clean
1288 realclean : Extensions_realclean _clean
1290 # Handy way to run perlbug -ok without having to install and run the
1291 # installed perlbug. We don't re-run the tests here - we trust the user.
1292 # Please *don't* use this unless all tests pass.
1293 # If you want to report test failures, use "nmake nok" instead.
1295 $(PERLEXE) -I..\lib ..\utils\perlbug -ok -s "(UNINSTALLED)"
1298 $(PERLEXE) -I..\lib ..\utils\perlbug -ok -s "(UNINSTALLED)" -F perl.ok
1301 $(PERLEXE) -I..\lib ..\utils\perlbug -nok -s "(UNINSTALLED)"
1304 $(PERLEXE) -I..\lib ..\utils\perlbug -nok -s "(UNINSTALLED)" -F perl.nok