"Fossies" - the Fresh Open Source Software Archive

Member "perl-5.30.3/win32/Makefile" (14 May 2020, 49582 Bytes) of package /linux/misc/perl-5.30.3.tar.xz:


As a special service "Fossies" has tried to format the requested text file into HTML format (style: standard) with prefixed line numbers. Alternatively you can here view or download the uninterpreted source code file. See also the latest Fossies "Diffs" side-by-side code changes report for "Makefile": 5.30.2_vs_5.30.3.

    1 #
    2 # Makefile to build perl on Windows using Microsoft NMAKE.
    3 # Supported compilers:
    4 #	Microsoft Visual C++ 6.0 or later
    5 #	Windows SDK 64-bit compiler and tools
    6 #
    7 # This is set up to build a perl.exe that runs off a shared library
    8 # (perl530.dll).  Also makes individual DLLs for the XS extensions.
    9 #
   10 
   11 ##
   12 ## Make sure you read README.win32 *before* you mess with anything here!
   13 ##
   14 
   15 ##
   16 ## Build configuration.  Edit the values below to suit your needs.
   17 ##
   18 
   19 #
   20 # Set these to wherever you want "nmake install" to put your
   21 # newly built perl.
   22 #
   23 INST_DRV	= c:
   24 INST_TOP	= $(INST_DRV)\perl
   25 
   26 #
   27 # Uncomment if you want to build a 32-bit Perl using a 32-bit compiler
   28 # on a 64-bit version of Windows.
   29 #
   30 #WIN64		= undef
   31 
   32 #
   33 # Comment this out if you DON'T want your perl installation to be versioned.
   34 # This means that the new installation will overwrite any files from the
   35 # old installation at the same INST_TOP location.  Leaving it enabled is
   36 # the safest route, as perl adds the extra version directory to all the
   37 # locations it installs files to.  If you disable it, an alternative
   38 # versioned installation can be obtained by setting INST_TOP above to a
   39 # path that includes an arbitrary version string.
   40 #
   41 #INST_VER	= \5.30.3
   42 
   43 #
   44 # Comment this out if you DON'T want your perl installation to have
   45 # architecture specific components.  This means that architecture-
   46 # specific files will be installed along with the architecture-neutral
   47 # files.  Leaving it enabled is safer and more flexible, in case you
   48 # want to build multiple flavors of perl and install them together in
   49 # the same location.  Commenting it out gives you a simpler
   50 # installation that is easier to understand for beginners.
   51 #
   52 #INST_ARCH	= \$(ARCHNAME)
   53 
   54 #
   55 # Uncomment this if you want perl to run
   56 # 	$Config{sitelibexp}\sitecustomize.pl
   57 # before anything else.  This script can then be set up, for example,
   58 # to add additional entries to @INC.
   59 #
   60 #USE_SITECUST	= define
   61 
   62 #
   63 # uncomment to enable multiple interpreters.  This is needed for fork()
   64 # emulation and for thread support, and is auto-enabled by USE_IMP_SYS
   65 # and USE_ITHREADS below.
   66 #
   67 USE_MULTI	= define
   68 
   69 #
   70 # Interpreter cloning/threads; now reasonably complete.
   71 # This should be enabled to get the fork() emulation.  This needs (and
   72 # will auto-enable) USE_MULTI above.
   73 #
   74 USE_ITHREADS	= define
   75 
   76 #
   77 # uncomment to enable the implicit "host" layer for all system calls
   78 # made by perl.  This is also needed to get fork().  This needs (and
   79 # will auto-enable) USE_MULTI above.
   80 #
   81 USE_IMP_SYS	= define
   82 
   83 #
   84 # Comment this out if you don't want to enable large file support for
   85 # some reason.  Should normally only be changed to maintain compatibility
   86 # with an older release of perl.
   87 #
   88 USE_LARGE_FILES	= define
   89 
   90 #
   91 # Uncomment this if you're building a 32-bit perl and want 64-bit integers.
   92 # (If you're building a 64-bit perl then you will have 64-bit integers whether
   93 # or not this is uncommented.)
   94 # Note: This option is not supported in 32-bit MSVC60 builds.
   95 #
   96 #USE_64_BIT_INT	= define
   97 
   98 #
   99 # Comment this out if you want the legacy default behavior of including '.' at
  100 # the end of @INC.
  101 #
  102 DEFAULT_INC_EXCLUDES_DOT = define
  103 
  104 #
  105 # Uncomment this if you want to disable looking up values from
  106 # HKEY_CURRENT_USER\Software\Perl and HKEY_LOCAL_MACHINE\Software\Perl in
  107 # the Registry.
  108 #
  109 #USE_NO_REGISTRY = define
  110 
  111 #
  112 # uncomment exactly one of the following
  113 #
  114 # Visual C++ 6.0 (aka Visual C++ 98)
  115 #CCTYPE		= MSVC60
  116 # Visual C++ .NET 2002/2003 (aka Visual C++ 7.0/7.1) (full version)
  117 #CCTYPE		= MSVC70
  118 # Visual C++ Toolkit 2003 (aka Visual C++ 7.1) (free command-line tools)
  119 #CCTYPE		= MSVC70FREE
  120 # Windows Server 2003 SP1 Platform SDK (April 2005) (64-bit compiler and tools)
  121 #CCTYPE		= SDK2003SP1
  122 # Visual C++ 2005 (aka Visual C++ 8.0) (full version or Express Edition)
  123 #CCTYPE		= MSVC80
  124 # Visual C++ 2008 (aka Visual C++ 9.0) (full version or Express Edition)
  125 #CCTYPE		= MSVC90
  126 # Visual C++ 2010 (aka Visual C++ 10.0) (full version or Express Edition)
  127 #CCTYPE		= MSVC100
  128 # Visual C++ 2012 (aka Visual C++ 11.0) (full version or Express Edition)
  129 #CCTYPE		= MSVC110
  130 # Visual C++ 2013 (aka Visual C++ 12.0) (full version or Express Edition)
  131 #CCTYPE		= MSVC120
  132 # Visual C++ 2015 (aka Visual C++ 14.0) (full version or Express Edition)
  133 #CCTYPE		= MSVC140
  134 # Visual C++ 2017 (aka Visual C++ 14.1) (full version or Community Edition)
  135 #CCTYPE		= MSVC141
  136 # Visual C++ 2019 (aka Visual C++ 14.2) (full version or Community Edition)
  137 #CCTYPE		= MSVC142
  138 
  139 #
  140 # If you are using Intel C++ Compiler uncomment this
  141 #
  142 #__ICC		= define
  143 
  144 #
  145 # Uncomment this if you want to build everything in C++ mode
  146 #
  147 #USE_CPLUSPLUS	= define
  148 
  149 #
  150 # uncomment next line if you want debug version of perl (big/slow)
  151 # If not enabled, we automatically try to use maximum optimization
  152 # with all compilers that are known to have a working optimizer.
  153 #
  154 # You can also set CFG = DebugSymbols for a slightly smaller/faster
  155 # debug build without the special debugging code in perl which is
  156 # enabled via -DDEBUGGING;
  157 #
  158 # or you can set CFG = DebugFull for an even fuller (bigger/slower)
  159 # debug build using the debug version of the CRT, and enabling VC++
  160 # debug features such as extra assertions and invalid parameter warnings
  161 # in perl and CRT code via -D_DEBUG.  (Note that the invalid parameter
  162 # handler does get triggered from time to time in this configuration,
  163 # which causes warnings to be printed on STDERR, which in turn causes a
  164 # few tests to fail.)
  165 #
  166 #CFG		= Debug
  167 
  168 #
  169 # uncomment to enable linking with setargv.obj under the Visual C
  170 # compiler. Setting this options enables perl to expand wildcards in
  171 # arguments, but it may be harder to use alternate methods like
  172 # File::DosGlob that are more powerful.  This option is supported only with
  173 # Visual C.
  174 #
  175 #USE_SETARGV	= define
  176 
  177 #
  178 # set this if you wish to use perl's malloc
  179 # WARNING: Turning this on/off WILL break binary compatibility with extensions
  180 # you may have compiled with/without it.  Be prepared to recompile all
  181 # extensions if you change the default.  Currently, this cannot be enabled
  182 # if you ask for USE_IMP_SYS above.
  183 #
  184 #PERL_MALLOC	= define
  185 
  186 #
  187 # set this to enable debugging mstats
  188 # This must be enabled to use the Devel::Peek::mstat() function.  This cannot
  189 # be enabled without PERL_MALLOC as well.
  190 #
  191 #DEBUG_MSTATS	= define
  192 
  193 #
  194 # set this to additionally provide a statically linked perl-static.exe.
  195 # Note that dynamic loading will not work with this perl, so you must
  196 # include required modules statically using the STATIC_EXT or ALL_STATIC
  197 # variables below. A static library perl530s.lib will also be created.
  198 # Ordinary perl.exe is not affected by this option.
  199 #
  200 #BUILD_STATIC	= define
  201 
  202 #
  203 # in addition to BUILD_STATIC the option ALL_STATIC makes *every*
  204 # extension get statically built.
  205 # This will result in a very large perl executable, but the main purpose
  206 # is to have proper linking set so as to be able to create miscellaneous
  207 # executables with different built-in extensions.
  208 #
  209 #ALL_STATIC	= define
  210 
  211 #
  212 # set the install location of the compiler
  213 # Running VCVARS32.BAT, VCVARSALL.BAT or similar is *required* when using
  214 # Visual C++.
  215 # Versions of Visual C++ up to VC++ 7.1 define $(MSVCDir); versions since then
  216 # define $(VCINSTALLDIR) instead, but from VC++ 14.1 we need the subfolder given
  217 # by $(VCToolsInstallDir).
  218 #
  219 !IF "$(CCTYPE)" == "MSVC60" || \
  220     "$(CCTYPE)" == "MSVC70" || "$(CCTYPE)" == "MSVC70FREE"
  221 CCHOME		= $(MSVCDIR)
  222 !ELSEIF "$(CCTYPE)" == "MSVC141" || "$(CCTYPE)" == "MSVC142"
  223 CCHOME		= $(VCTOOLSINSTALLDIR)
  224 !ELSE
  225 CCHOME		= $(VCINSTALLDIR)
  226 !ENDIF
  227 
  228 #
  229 # Additional compiler flags can be specified here.
  230 #
  231 BUILDOPT	= $(BUILDOPTEXTRA)
  232 
  233 #
  234 # This should normally be disabled.  Enabling it will disable the File::Glob
  235 # implementation of CORE::glob.
  236 #
  237 #BUILDOPT	= $(BUILDOPT) -DPERL_EXTERNAL_GLOB
  238 
  239 #
  240 # Perl needs to read scripts in text mode so that the DATA filehandle
  241 # works correctly with seek() and tell(), or around auto-flushes of
  242 # all filehandles (e.g. by system(), backticks, fork(), etc).
  243 #
  244 # The current version on the ByteLoader module on CPAN however only
  245 # works if scripts are read in binary mode.  But before you disable text
  246 # mode script reading (and break some DATA filehandle functionality)
  247 # please check first if an updated ByteLoader isn't available on CPAN.
  248 #
  249 BUILDOPT	= $(BUILDOPT) -DPERL_TEXTMODE_SCRIPTS
  250 
  251 #
  252 # specify semicolon-separated list of extra directories that modules will
  253 # look for libraries (spaces in path names need not be quoted)
  254 #
  255 EXTRALIBDIRS	=
  256 
  257 #
  258 # set this to your email address (perl will guess a value from
  259 # from your loginname and your hostname, which may not be right)
  260 #
  261 #EMAIL		=
  262 
  263 ##
  264 ## Build configuration ends.
  265 ##
  266 
  267 ##################### CHANGE THESE ONLY IF YOU MUST #####################
  268 
  269 !IF "$(USE_IMP_SYS)" == "define"
  270 PERL_MALLOC	= undef
  271 DEBUG_MSTATS	= undef
  272 !ENDIF
  273 
  274 !IF "$(PERL_MALLOC)" == ""
  275 PERL_MALLOC	= undef
  276 DEBUG_MSTATS	= undef
  277 !ENDIF
  278 
  279 !IF "$(DEBUG_MSTATS)" == ""
  280 DEBUG_MSTATS	= undef
  281 !ENDIF
  282 
  283 !IF "$(DEBUG_MSTATS)" == "define"
  284 BUILDOPT	= $(BUILDOPT) -DPERL_DEBUGGING_MSTATS
  285 !ENDIF
  286 
  287 !IF "$(USE_SITECUST)" == ""
  288 USE_SITECUST	= undef
  289 !ENDIF
  290 
  291 !IF "$(USE_MULTI)" == ""
  292 USE_MULTI	= undef
  293 !ENDIF
  294 
  295 !IF "$(USE_ITHREADS)" == ""
  296 USE_ITHREADS	= undef
  297 !ENDIF
  298 
  299 !IF "$(USE_IMP_SYS)" == ""
  300 USE_IMP_SYS	= undef
  301 !ENDIF
  302 
  303 !IF "$(USE_LARGE_FILES)" == ""
  304 USE_LARGE_FILES	= undef
  305 !ENDIF
  306 
  307 !IF "$(USE_64_BIT_INT)" == ""
  308 USE_64_BIT_INT	= undef
  309 !ENDIF
  310 
  311 !IF "$(DEFAULT_INC_EXCLUDES_DOT)" == ""
  312 DEFAULT_INC_EXCLUDES_DOT = undef
  313 !ENDIF
  314 
  315 !IF "$(USE_NO_REGISTRY)" == ""
  316 USE_NO_REGISTRY	= undef
  317 !ENDIF
  318 
  319 !IF "$(USE_IMP_SYS)$(USE_MULTI)" == "defineundef"
  320 USE_MULTI	= define
  321 !ENDIF
  322 
  323 !IF "$(USE_ITHREADS)$(USE_MULTI)" == "defineundef"
  324 USE_MULTI	= define
  325 !ENDIF
  326 
  327 !IF "$(USE_SITECUST)" == "define"
  328 BUILDOPT	= $(BUILDOPT) -DUSE_SITECUSTOMIZE
  329 !ENDIF
  330 
  331 !IF "$(USE_MULTI)" != "undef"
  332 BUILDOPT	= $(BUILDOPT) -DPERL_IMPLICIT_CONTEXT
  333 !ENDIF
  334 
  335 !IF "$(USE_IMP_SYS)" != "undef"
  336 BUILDOPT	= $(BUILDOPT) -DPERL_IMPLICIT_SYS
  337 !ENDIF
  338 
  339 !IF "$(USE_NO_REGISTRY)" != "undef"
  340 BUILDOPT	= $(BUILDOPT) -DWIN32_NO_REGISTRY
  341 !ENDIF
  342 
  343 !IF "$(PROCESSOR_ARCHITECTURE)" == ""
  344 PROCESSOR_ARCHITECTURE	= x86
  345 !ENDIF
  346 
  347 !IF "$(WIN64)" == ""
  348 # When we are running from a 32bit cmd.exe on AMD64 then
  349 # PROCESSOR_ARCHITECTURE is set to x86 and PROCESSOR_ARCHITEW6432
  350 # is set to AMD64
  351 !  IF "$(PROCESSOR_ARCHITEW6432)" != ""
  352 PROCESSOR_ARCHITECTURE	= $(PROCESSOR_ARCHITEW6432)
  353 WIN64			= define
  354 !  ELSEIF "$(PROCESSOR_ARCHITECTURE)" == "AMD64" || "$(PROCESSOR_ARCHITECTURE)" == "IA64"
  355 WIN64			= define
  356 !  ELSE
  357 WIN64			= undef
  358 !  ENDIF
  359 !ENDIF
  360 
  361 !IF "$(WIN64)" == "define"
  362 USE_64_BIT_INT	= define
  363 !ENDIF
  364 
  365 # Treat 64-bit MSVC60 (doesn't really exist) as SDK2003SP1 because
  366 # both link against MSVCRT.dll (which is part of Windows itself) and
  367 # not against a compiler specific versioned runtime.
  368 !IF "$(WIN64)" == "define" && "$(CCTYPE)" == "MSVC60"
  369 CCTYPE		= SDK2003SP1
  370 !ENDIF
  371 
  372 # Disable the 64-bit-int option for (32-bit) MSVC60 builds since that compiler
  373 # does not support it.
  374 !IF "$(CCTYPE)" == "MSVC60"
  375 !UNDEF USE_64_BIT_INT
  376 USE_64_BIT_INT	= undef
  377 !ENDIF
  378 
  379 # Most relevant compiler-specific options fall into two groups:
  380 # either pre-MSVC80 or MSVC80 onwards, so define a macro for this.
  381 !IF "$(CCTYPE)" == "MSVC60" || \
  382     "$(CCTYPE)" == "MSVC70" || "$(CCTYPE)" == "MSVC70FREE"
  383 PREMSVC80	= define
  384 !ELSE
  385 PREMSVC80	= undef
  386 !ENDIF
  387 
  388 ARCHITECTURE = $(PROCESSOR_ARCHITECTURE)
  389 !IF "$(ARCHITECTURE)" == "AMD64"
  390 ARCHITECTURE	= x64
  391 !ELSEIF "$(ARCHITECTURE)" == "IA64"
  392 ARCHITECTURE	= ia64
  393 !ENDIF
  394 
  395 !IF "$(USE_MULTI)" == "define"
  396 ARCHNAME	= MSWin32-$(ARCHITECTURE)-multi
  397 !ELSE
  398 ARCHNAME	= MSWin32-$(ARCHITECTURE)-perlio
  399 !ENDIF
  400 
  401 !IF "$(USE_ITHREADS)" == "define"
  402 ARCHNAME	= $(ARCHNAME)-thread
  403 !ENDIF
  404 
  405 !IF "$(WIN64)" != "define" && "$(USE_64_BIT_INT)" == "define"
  406 ARCHNAME	= $(ARCHNAME)-64int
  407 !ENDIF
  408 
  409 # All but the free version of VC++ 7.1 can load DLLs on demand.  Makes the test
  410 # suite run in about 10% less time.
  411 !IF "$(CCTYPE)" != "MSVC70FREE"
  412 # If no registry, advapi32 is only used for Perl_pp_getlogin/getlogin/GetUserNameA
  413 # which is rare to execute
  414 !  IF "$(USE_NO_REGISTRY)" != "undef"
  415 DELAYLOAD	= -DELAYLOAD:ws2_32.dll -DELAYLOAD:advapi32.dll delayimp.lib
  416 MINIDELAYLOAD	=
  417 !  ELSE
  418 DELAYLOAD	= -DELAYLOAD:ws2_32.dll delayimp.lib
  419 #miniperl never does any registry lookups
  420 MINIDELAYLOAD	= -DELAYLOAD:advapi32.dll
  421 !  ENDIF
  422 !ENDIF
  423 
  424 # Visual C++ 2005 and 2008 (VC++ 8.0 and 9.0) create manifest files for EXEs and
  425 # DLLs. These either need copying everywhere with the binaries, or else need
  426 # embedding in them otherwise MSVCR80.dll or MSVCR90.dll won't be found. For
  427 # simplicity, embed them if they exist (and delete them afterwards so that they
  428 # don't get installed too).
  429 EMBED_EXE_MANI	= if exist $@.manifest mt -nologo -manifest $@.manifest -outputresource:$@;1 && \
  430 		  if exist $@.manifest del $@.manifest
  431 EMBED_DLL_MANI	= if exist $@.manifest mt -nologo -manifest $@.manifest -outputresource:$@;2 && \
  432 		  if exist $@.manifest del $@.manifest
  433 
  434 # Set the install location of the compiler headers/libraries.
  435 # These are saved into $Config{incpath} and $Config{libpth}.
  436 CCINCDIR	= $(CCHOME)\include
  437 !IF "$(CCTYPE)" == "MSVC141" || "$(CCTYPE)" == "MSVC142"
  438 !  IF "$(WIN64)" == "define"
  439 CCLIBDIR	= $(CCHOME)\lib\x64
  440 !  ELSE
  441 CCLIBDIR	= $(CCHOME)\lib\x86
  442 !  ENDIF
  443 !ELSE
  444 !  IF "$(WIN64)" == "define"
  445 CCLIBDIR	= $(CCHOME)\lib\amd64
  446 !  ELSE
  447 CCLIBDIR	= $(CCHOME)\lib
  448 !  ENDIF
  449 !ENDIF
  450 
  451 ARCHDIR		= ..\lib\$(ARCHNAME)
  452 COREDIR		= ..\lib\CORE
  453 AUTODIR		= ..\lib\auto
  454 LIBDIR		= ..\lib
  455 EXTDIR		= ..\ext
  456 DISTDIR		= ..\dist
  457 CPANDIR		= ..\cpan
  458 PODDIR		= ..\pod
  459 HTMLDIR		= .\html
  460 
  461 INST_SCRIPT	= $(INST_TOP)$(INST_VER)\bin
  462 INST_BIN	= $(INST_SCRIPT)$(INST_ARCH)
  463 INST_LIB	= $(INST_TOP)$(INST_VER)\lib
  464 INST_ARCHLIB	= $(INST_LIB)$(INST_ARCH)
  465 INST_COREDIR	= $(INST_ARCHLIB)\CORE
  466 INST_HTML	= $(INST_TOP)$(INST_VER)\html
  467 
  468 #
  469 # Programs to compile, build .lib files and link
  470 #
  471 
  472 # Poison the recipe if no CCTYPE is set, and delete mini\.exists so everything
  473 # is rebuilt next time to avoid reusing a mini config.h written with no sane CC
  474 # version set
  475 !IF "$(CCTYPE)" == ""
  476 CC		= @echo CCTYPE makefile variable not set && del mini\.exists && exit 1 &&
  477 LINK32		= @echo CCTYPE makefile variable not set && del mini\.exists && exit 1 &&
  478 !ELSEIF "$(__ICC)" != "define"
  479 CC		= cl
  480 LINK32		= link
  481 !ELSE
  482 CC		= icl
  483 LINK32		= xilink
  484 !ENDIF
  485 LIB32		= $(LINK32) -lib
  486 RSC		= rc
  487 
  488 #
  489 # Options
  490 #
  491 
  492 INCLUDES	= -I$(COREDIR) -I.\include -I. -I..
  493 #PCHFLAGS	= -Fpc:\temp\vcmoduls.pch -YX
  494 DEFINES		= -DWIN32 -D_CONSOLE -DNO_STRICT
  495 LOCDEFS		= -DPERLDLL -DPERL_CORE
  496 CXX_FLAG	= -TP -EHsc
  497 
  498 !IF "$(CCTYPE)" == "MSVC140" || "$(CCTYPE)" == "MSVC141" || "$(CCTYPE)" == "MSVC142"
  499 LIBC		= ucrt.lib
  500 !ELSE
  501 LIBC		= msvcrt.lib
  502 !ENDIF
  503 
  504 !IF  "$(CFG)" == "Debug"
  505 OPTIMIZE	= -Od -MD -Zi -DDEBUGGING
  506 LINK_DBG	= -debug
  507 !ELSEIF  "$(CFG)" == "DebugSymbols"
  508 OPTIMIZE	= -Od -MD -Zi
  509 LINK_DBG	= -debug
  510 !ELSEIF  "$(CFG)" == "DebugFull"
  511 !  IF "$(CCTYPE)" == "MSVC140" || "$(CCTYPE)" == "MSVC141" || "$(CCTYPE)" == "MSVC142"
  512 LIBC		= ucrtd.lib
  513 !  ELSE
  514 LIBC		= msvcrtd.lib
  515 !  ENDIF
  516 OPTIMIZE	= -Od -MDd -Zi -D_DEBUG -DDEBUGGING
  517 LINK_DBG	= -debug
  518 !ELSE
  519 # -O1 yields smaller code, which turns out to be faster than -O2 on x86 and x64
  520 OPTIMIZE	= -O1 -MD -Zi -DNDEBUG
  521 # we enable debug symbols in release builds also
  522 LINK_DBG	= -debug -opt:ref,icf
  523 # you may want to enable this if you want COFF symbols in the executables
  524 # in addition to the PDB symbols.  The default Dr. Watson that ships with
  525 # Windows can use the the former but not latter.  The free WinDbg can be
  526 # installed to get better stack traces from just the PDB symbols, so we
  527 # avoid the bloat of COFF symbols by default.
  528 #LINK_DBG	= $(LINK_DBG) -debugtype:both
  529 !  IF "$(CCTYPE)" != "MSVC60"
  530 # enable Whole Program Optimizations (WPO) and Link Time Code Generation (LTCG)
  531 OPTIMIZE	= $(OPTIMIZE) -GL
  532 LINK_DBG	= $(LINK_DBG) -ltcg
  533 LIB_FLAGS	= -ltcg
  534 !  ENDIF
  535 !ENDIF
  536 
  537 !IF "$(WIN64)" == "define"
  538 DEFINES		= $(DEFINES) -DWIN64 -DCONSERVATIVE
  539 OPTIMIZE	= $(OPTIMIZE) -fp:precise
  540 !ENDIF
  541 
  542 # For now, silence warnings from VC++ 8.0 onwards about "unsafe" CRT functions
  543 # and POSIX CRT function names being deprecated.
  544 !IF "$(PREMSVC80)" == "undef"
  545 DEFINES		= $(DEFINES) -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE
  546 !ENDIF
  547 
  548 # Likewise for deprecated Winsock APIs in VC++ 14.0 onwards for now.
  549 !IF "$(CCTYPE)" == "MSVC140" || "$(CCTYPE)" == "MSVC141" || "$(CCTYPE)" == "MSVC142"
  550 DEFINES		= $(DEFINES) -D_WINSOCK_DEPRECATED_NO_WARNINGS
  551 !ENDIF
  552 
  553 # The Windows Server 2003 SP1 SDK compiler only defines _configthreadlocale() if
  554 # _MT is defined, i.e. when using /MT (the LIBCMT.lib version of the CRT), which
  555 # the perl build doesn't use. We therefore specify NO_THREAD_SAFE_LOCALE so that
  556 # perl.h doesn't set USE_THREAD_SAFE_LOCALE, which it otherwise would do since
  557 # _MSC_VER is 1400 for this compiler (as per MSVC80).
  558 !IF "$(CCTYPE)" == "SDK2003SP1"
  559 DEFINES		= $(DEFINES) -DNO_THREAD_SAFE_LOCALE
  560 !ENDIF
  561 
  562 # In VS 2005 (VC++ 8.0) Microsoft changes time_t from 32-bit to
  563 # 64-bit, even in 32-bit mode.  It also provides the _USE_32BIT_TIME_T
  564 # preprocessor option to revert back to the old functionality for
  565 # backward compatibility.  We define this symbol here for older 32-bit
  566 # compilers only (which aren't using it at all) for the sole purpose
  567 # of getting it into $Config{ccflags}.  That way if someone builds
  568 # Perl itself with e.g. VC6 but later installs an XS module using VC8
  569 # the time_t types will still be compatible.
  570 !IF "$(WIN64)" == "undef" && "$(PREMSVC80)" == "define"
  571 BUILDOPT	= $(BUILDOPT) -D_USE_32BIT_TIME_T
  572 !ENDIF
  573 
  574 LIBBASEFILES	= \
  575 		oldnames.lib kernel32.lib user32.lib gdi32.lib winspool.lib \
  576 		comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib \
  577 		netapi32.lib uuid.lib ws2_32.lib mpr.lib winmm.lib \
  578 		version.lib odbc32.lib odbccp32.lib comctl32.lib
  579 
  580 !IF "$(CCTYPE)" == "MSVC140" || "$(CCTYPE)" == "MSVC141" || "$(CCTYPE)" == "MSVC142"
  581 !  IF  "$(CFG)" == "DebugFull"
  582 LIBBASEFILES	= $(LIBBASEFILES) msvcrtd.lib vcruntimed.lib
  583 !  ELSE
  584 LIBBASEFILES	= $(LIBBASEFILES) msvcrt.lib vcruntime.lib
  585 !  ENDIF
  586 !ENDIF
  587 
  588 # Avoid __intel_new_proc_init link error for libircmt.
  589 # libmmd is /MD equivelent, other variants exist.
  590 # libmmd is Intel C's math addon funcs to MS CRT, contains long doubles, C99,
  591 # and optimized C89 funcs
  592 !IF "$(__ICC)" == "define"
  593 LIBBASEFILES	= $(LIBBASEFILES) libircmt.lib libmmd.lib
  594 !ENDIF
  595 
  596 # The Windows Server 2003 SP1 SDK compiler links against MSVCRT.dll, which
  597 # doesn't include the buffer overrun verification code used by the /GS switch.
  598 # Since the code links against libraries that are compiled with /GS, this
  599 # "security cookie verification" code must be included via bufferoverflow.lib.
  600 !IF "$(CCTYPE)" == "SDK2003SP1"
  601 LIBBASEFILES    = $(LIBBASEFILES) bufferoverflowU.lib
  602 !ENDIF
  603 
  604 LIBFILES	= $(LIBBASEFILES) $(LIBC)
  605 
  606 #EXTRACFLAGS	= -nologo -GF -W4 -wd4127 -wd4706
  607 EXTRACFLAGS	= -nologo -GF -W3
  608 !IF "$(__ICC)" == "define"
  609 EXTRACFLAGS	= $(EXTRACFLAGS) -Qstd=c99
  610 !ENDIF
  611 !IF "$(USE_CPLUSPLUS)" == "define"
  612 EXTRACFLAGS	= $(EXTRACFLAGS) $(CXX_FLAG)
  613 !ENDIF
  614 CFLAGS		= $(EXTRACFLAGS) $(INCLUDES) $(DEFINES) $(LOCDEFS) \
  615 		$(PCHFLAGS) $(OPTIMIZE)
  616 LINK_FLAGS	= -nologo -nodefaultlib $(LINK_DBG) \
  617 		-libpath:"$(INST_COREDIR)" \
  618 		-machine:$(PROCESSOR_ARCHITECTURE)
  619 LIB_FLAGS	= $(LIB_FLAGS) -nologo
  620 OBJOUT_FLAG	= -Fo
  621 EXEOUT_FLAG	= -Fe
  622 
  623 CFLAGS_O	= $(CFLAGS) $(BUILDOPT)
  624 
  625 !IF "$(PREMSVC80)" == "undef"
  626 PRIV_LINK_FLAGS	= $(PRIV_LINK_FLAGS) "/manifestdependency:type='Win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'"
  627 !ELSE
  628 RSC_FLAGS	= -DINCLUDE_MANIFEST
  629 !ENDIF
  630 
  631 # VS 2017 (VC++ 14.1) requires at minimum Windows 7 SP1 (with latest Windows Updates)
  632 
  633 # For XP support in >= VS 2013 (VC++ 12.0), subsystem is always in Config.pm
  634 # LINK_FLAGS else subsystem is only needed for EXE building, not XS DLL building
  635 # Console vs GUI makes no difference for DLLs, so use default for cleaner
  636 # building cmd lines
  637 !IF "$(CCTYPE)" == "MSVC120" || "$(CCTYPE)" == "MSVC140" || "$(CCTYPE)" == "MSVC141" || "$(CCTYPE)" == "MSVC142"
  638 !  IF "$(WIN64)" == "define"
  639 LINK_FLAGS	= $(LINK_FLAGS) -subsystem:console,"5.02"
  640 !  ELSE
  641 LINK_FLAGS	= $(LINK_FLAGS) -subsystem:console,"5.01"
  642 !  ENDIF
  643 
  644 !ELSE
  645 PRIV_LINK_FLAGS	= $(PRIV_LINK_FLAGS) -subsystem:console
  646 !ENDIF
  647 
  648 BLINK_FLAGS	= $(PRIV_LINK_FLAGS) $(LINK_FLAGS)
  649 
  650 #################### do not edit below this line #######################
  651 ############# NO USER-SERVICEABLE PARTS BEYOND THIS POINT ##############
  652 
  653 o = .obj
  654 
  655 #
  656 # Rules
  657 #
  658 
  659 #clear the list, we dont support .cxx .bas .cbl .for .pas .f .f90
  660 # .asm .cpp are not currently used but they are included for completeness
  661 .SUFFIXES :
  662 .SUFFIXES : .c $(o) .cpp .asm .dll .lib .exe .rc .res
  663 
  664 .c$(o):
  665 	$(CC) -c -I$(<D) $(CFLAGS_O) $(OBJOUT_FLAG)$@ $<
  666 
  667 .c.i:
  668 	$(CC) -c -I$(<D) $(CFLAGS_O) -P $(OBJOUT_FLAG)$@ $<
  669 
  670 .y.c:
  671 	$(NOOP)
  672 
  673 $(o).dll:
  674 	$(LINK32) -dll -implib:$(*B).lib -def:$(*B).def \
  675 	    -out:$@ $(BLINK_FLAGS) $(LIBFILES) $< $(LIBPERL)
  676 	$(EMBED_DLL_MANI)
  677 
  678 .rc.res:
  679 	$(RSC) -i.. $(RSC_FLAGS) $<
  680 
  681 #
  682 # various targets
  683 
  684 # makedef.pl must be updated if this changes, and this should normally
  685 # only change when there is an incompatible revision of the public API.
  686 PERLIMPLIB	= ..\perl530.lib
  687 PERLSTATICLIB	= ..\perl530s.lib
  688 PERLDLL		= ..\perl530.dll
  689 
  690 MINIPERL	= ..\miniperl.exe
  691 MINIDIR		= .\mini
  692 PERLEXE		= ..\perl.exe
  693 WPERLEXE	= ..\wperl.exe
  694 PERLEXESTATIC	= ..\perl-static.exe
  695 GLOBEXE		= ..\perlglob.exe
  696 CONFIGPM	= ..\lib\Config.pm ..\lib\Config_heavy.pl
  697 GENUUDMAP	= ..\generate_uudmap.exe
  698 !IF "$(BUILD_STATIC)" == "define" || "$(ALL_STATIC)" == "define"
  699 PERLSTATIC	= static
  700 !ELSE
  701 PERLSTATIC	= 
  702 !ENDIF
  703 
  704 # Unicode data files generated by mktables
  705 FIRSTUNIFILE     = ..\lib\unicore\Decomposition.pl
  706 UNIDATAFILES	 = ..\lib\unicore\Decomposition.pl \
  707 		   ..\lib\unicore\CombiningClass.pl ..\lib\unicore\Name.pl \
  708 		   ..\lib\unicore\Heavy.pl ..\lib\unicore\mktables.lst     \
  709 		   ..\lib\unicore\UCD.pl ..\lib\unicore\Name.pm            \
  710 		   ..\lib\unicore\TestProp.pl
  711 
  712 # Directories of Unicode data files generated by mktables
  713 UNIDATADIR1	= ..\lib\unicore\To
  714 UNIDATADIR2	= ..\lib\unicore\lib
  715 
  716 PERLEXE_MANIFEST= .\perlexe.manifest
  717 PERLEXE_ICO	= .\perlexe.ico
  718 PERLEXE_RES	= .\perlexe.res
  719 PERLDLL_RES	=
  720 
  721 # Nominate a target which causes extensions to be re-built
  722 # This used to be $(PERLEXE), but at worst it is the .dll that they depend
  723 # on and really only the interface - i.e. the .def file used to export symbols
  724 # from the .dll
  725 PERLDEP		= perldll.def
  726 
  727 PL2BAT		= bin\pl2bat.pl
  728 GLOBBAT		= bin\perlglob.bat
  729 
  730 UTILS		=			\
  731 		..\utils\h2ph		\
  732 		..\utils\splain		\
  733 		..\utils\perlbug	\
  734 		..\utils\pl2pm 		\
  735 		..\utils\h2xs		\
  736 		..\utils\perldoc	\
  737 		..\utils\perlivp	\
  738 		..\utils\libnetcfg	\
  739 		..\utils\enc2xs		\
  740 		..\utils\encguess		\
  741 		..\utils\piconv		\
  742 		..\utils\corelist	\
  743 		..\utils\cpan		\
  744 		..\utils\xsubpp		\
  745 		..\utils\prove		\
  746 		..\utils\ptar		\
  747 		..\utils\ptardiff	\
  748 		..\utils\ptargrep	\
  749 		..\utils\zipdetails	\
  750 		..\utils\shasum		\
  751 		..\utils\instmodsh	\
  752 		..\utils\json_pp	\
  753 		..\utils\pod2html	\
  754 		bin\exetype.pl		\
  755 		bin\runperl.pl		\
  756 		bin\pl2bat.pl		\
  757 		bin\perlglob.pl		\
  758 		bin\search.pl
  759 
  760 MAKE		= nmake -nologo
  761 MAKE_BARE	= nmake
  762 
  763 CFGSH_TMPL	= config.vc
  764 CFGH_TMPL	= config_H.vc
  765 INT64		= __int64
  766 
  767 XCOPY		= xcopy /f /r /i /d /y
  768 RCOPY		= xcopy /f /r /i /e /d /y
  769 NOOP		= @rem
  770 NULL		=
  771 
  772 DEL		= del
  773 
  774 MICROCORE_SRC	=		\
  775 		..\av.c		\
  776 		..\caretx.c	\
  777 		..\deb.c	\
  778 		..\doio.c	\
  779 		..\doop.c	\
  780 		..\dquote.c	\
  781 		..\dump.c	\
  782 		..\globals.c	\
  783 		..\gv.c		\
  784 		..\mro_core.c	\
  785 		..\hv.c		\
  786 		..\locale.c	\
  787 		..\keywords.c	\
  788 		..\mathoms.c    \
  789 		..\mg.c		\
  790 		..\numeric.c	\
  791 		..\op.c		\
  792 		..\pad.c	\
  793 		..\perl.c	\
  794 		..\perlapi.c	\
  795 		..\perly.c	\
  796 		..\pp.c		\
  797 		..\pp_ctl.c	\
  798 		..\pp_hot.c	\
  799 		..\pp_pack.c	\
  800 		..\pp_sort.c	\
  801 		..\pp_sys.c	\
  802 		..\reentr.c	\
  803 		..\regcomp.c	\
  804 		..\regexec.c	\
  805 		..\run.c	\
  806 		..\scope.c	\
  807 		..\sv.c		\
  808 		..\taint.c	\
  809 		..\time64.c	\
  810 		..\toke.c	\
  811 		..\universal.c	\
  812 		..\utf8.c	\
  813 		..\util.c
  814 
  815 EXTRACORE_SRC	= $(EXTRACORE_SRC) perllib.c
  816 
  817 !IF "$(PERL_MALLOC)" == "define"
  818 EXTRACORE_SRC	= $(EXTRACORE_SRC) ..\malloc.c
  819 !ENDIF
  820 
  821 EXTRACORE_SRC	= $(EXTRACORE_SRC) ..\perlio.c
  822 
  823 WIN32_SRC	=		\
  824 		.\win32.c	\
  825 		.\win32io.c	\
  826 		.\win32sck.c	\
  827 		.\win32thread.c	\
  828 		.\fcrypt.c
  829 
  830 CORE_NOCFG_H	=		\
  831 		..\av.h		\
  832 		..\cop.h	\
  833 		..\cv.h		\
  834 		..\dosish.h	\
  835 		..\embed.h	\
  836 		..\form.h	\
  837 		..\gv.h		\
  838 		..\handy.h	\
  839 		..\hv.h		\
  840 		..\hv_func.h	\
  841 		..\iperlsys.h	\
  842 		..\mg.h		\
  843 		..\nostdio.h	\
  844 		..\op.h		\
  845 		..\opcode.h	\
  846 		..\perl.h	\
  847 		..\perlapi.h	\
  848 		..\perlsdio.h	\
  849 		..\perly.h	\
  850 		..\pp.h		\
  851 		..\proto.h	\
  852 		..\regcomp.h	\
  853 		..\regexp.h	\
  854 		..\scope.h	\
  855 		..\sv.h		\
  856 		..\thread.h	\
  857 		..\unixish.h	\
  858 		..\utf8.h	\
  859 		..\util.h	\
  860 		..\warnings.h	\
  861 		..\XSUB.h	\
  862 		..\EXTERN.h	\
  863 		..\perlvars.h	\
  864 		..\intrpvar.h	\
  865 		.\include\dirent.h	\
  866 		.\include\netdb.h	\
  867 		.\include\sys\errno2.h	\
  868 		.\include\sys\socket.h	\
  869 		.\win32.h
  870 
  871 CORE_H		= $(CORE_NOCFG_H) .\config.h ..\git_version.h
  872 
  873 UUDMAP_H	= ..\uudmap.h
  874 BITCOUNT_H	= ..\bitcount.h
  875 MG_DATA_H	= ..\mg_data.h
  876 GENERATED_HEADERS = $(UUDMAP_H) $(BITCOUNT_H) $(MG_DATA_H)
  877 
  878 MICROCORE_OBJ	= $(MICROCORE_SRC:.c=.obj)
  879 CORE_OBJ	= $(MICROCORE_OBJ) $(EXTRACORE_SRC:.c=.obj)
  880 WIN32_OBJ	= $(WIN32_SRC:.c=.obj)
  881 MINICORE_OBJ	= $(MICROCORE_OBJ:..\=.\mini\)	\
  882 		  $(MINIDIR)\miniperlmain$(o)	\
  883 		  $(MINIDIR)\perlio$(o)
  884 MINIWIN32_OBJ	= $(WIN32_OBJ:.\=.\mini\)
  885 MINI_OBJ	= $(MINICORE_OBJ) $(MINIWIN32_OBJ)
  886 DLL_OBJ		= $(DYNALOADER)
  887 GENUUDMAP_OBJ	= $(GENUUDMAP:.exe=.obj)
  888 
  889 PERLDLL_OBJ	= $(CORE_OBJ)
  890 PERLEXE_OBJ	= perlmain$(o)
  891 PERLEXEST_OBJ	= perlmainst$(o)
  892 
  893 PERLDLL_OBJ	= $(PERLDLL_OBJ) $(WIN32_OBJ) $(DLL_OBJ)
  894 
  895 !IF "$(USE_SETARGV)" != ""
  896 SETARGV_OBJ	= setargv$(o)
  897 !ENDIF
  898 
  899 !IF "$(ALL_STATIC)" == "define"
  900 # some exclusions, unfortunately, until fixed:
  901 #  - MakeMaker isn't capable enough for SDBM_File (small bug)
  902 STATIC_EXT	= * !SDBM_File
  903 !ELSE
  904 # specify static extensions here, for example:
  905 # (be sure to include Win32CORE to load Win32 on demand)
  906 #STATIC_EXT	= Win32CORE Cwd Compress/Raw/Zlib
  907 STATIC_EXT	= Win32CORE
  908 !ENDIF
  909 
  910 DYNALOADER	= ..\DynaLoader$(o)
  911 
  912 CFG_VARS	=					\
  913 		"INST_TOP=$(INST_TOP)"			\
  914 		"INST_VER=$(INST_VER)"			\
  915 		"INST_ARCH=$(INST_ARCH)"		\
  916 		"archname=$(ARCHNAME)"			\
  917 		"cc=$(CC)"				\
  918 		"ld=$(LINK32)"				\
  919 		"ccflags=$(EXTRACFLAGS) $(OPTIMIZE:"=\") $(DEFINES) $(BUILDOPT)"	\
  920 		"usecplusplus=$(USE_CPLUSPLUS)"		\
  921 		"cf_email=$(EMAIL)"	 		\
  922 		"d_mymalloc=$(PERL_MALLOC)"		\
  923 		"libs=$(LIBFILES)"			\
  924 		"incpath=$(CCINCDIR:"=\")"		\
  925 		"libperl=$(PERLIMPLIB:..\=)"		\
  926 		"libpth=$(CCLIBDIR:"=\");$(EXTRALIBDIRS:"=\")"	\
  927 		"libc=$(LIBC)"				\
  928 		"make=$(MAKE_BARE)"				\
  929 		"static_ext=$(STATIC_EXT)"		\
  930 		"usethreads=$(USE_ITHREADS)"		\
  931 		"useithreads=$(USE_ITHREADS)"		\
  932 		"usemultiplicity=$(USE_MULTI)"		\
  933 		"use64bitint=$(USE_64_BIT_INT)"		\
  934 		"uselongdouble=undef"			\
  935 		"uselargefiles=$(USE_LARGE_FILES)"	\
  936 		"usesitecustomize=$(USE_SITECUST)"	\
  937 		"default_inc_excludes_dot=$(DEFAULT_INC_EXCLUDES_DOT)"	\
  938 		"LINK_FLAGS=$(LINK_FLAGS:"=\")"		\
  939 		"optimize=$(OPTIMIZE:"=\")"		\
  940 		"WIN64=$(WIN64)"
  941 
  942 #
  943 # Top targets
  944 #
  945 
  946 all : ..\git_version.h $(GLOBEXE) $(CONFIGPM) \
  947 	$(UNIDATAFILES) MakePPPort $(PERLEXE) Extensions_nonxs Extensions \
  948 	$(PERLSTATIC)
  949 	@echo	Everything is up to date. '$(MAKE_BARE) test' to run test suite.
  950 
  951 regnodes : ..\regnodes.h
  952 
  953 ..\regcomp$(o) : ..\regnodes.h ..\regcharclass.h
  954 
  955 ..\regexec$(o) : ..\regnodes.h ..\regcharclass.h
  956 
  957 reonly : regnodes .\config.h ..\git_version.h $(GLOBEXE) $(CONFIGPM) \
  958 	$(UNIDATAFILES) $(PERLEXE) Extensions_reonly
  959 	@echo	Perl and 're' are up to date.
  960 
  961 static: $(PERLEXESTATIC)
  962 
  963 #------------------------------------------------------------
  964 
  965 $(GLOBEXE) : perlglob$(o)
  966 	$(LINK32) $(BLINK_FLAGS) $(LIBFILES) -out:$@ \
  967 	    perlglob$(o) setargv$(o)
  968 	$(EMBED_EXE_MANI)
  969 
  970 perlglob$(o)  : perlglob.c
  971 
  972 ..\git_version.h : $(MINIPERL) ..\make_patchnum.pl
  973 	cd .. && miniperl -Ilib make_patchnum.pl && cd win32
  974 
  975 # make sure that we recompile perl.c if the git version changes
  976 ..\perl$(o) : ..\git_version.h
  977 
  978 ..\config.sh : $(CFGSH_TMPL) config_sh.PL FindExt.pm $(MINIPERL)
  979 	$(MINIPERL) -I..\lib config_sh.PL $(CFG_VARS) $(CFGSH_TMPL) > ..\config.sh
  980 
  981 # This target is for when changes to the main config.sh happen.
  982 # Edit config.vc, then make perl in a minimal configuration (i.e. with MULTI,
  983 # ITHREADS, IMP_SYS and LARGE_FILES off), then make this target
  984 # to regenerate config_H.vc.
  985 regen_config_h:
  986 	$(MINIPERL) -I..\lib config_sh.PL $(CFG_VARS) $(CFGSH_TMPL) > ..\config.sh
  987 	$(MINIPERL) -I..\lib ..\configpm --chdir=..
  988 	-del /f $(CFGH_TMPL)
  989 	-$(MINIPERL) -I..\lib config_h.PL
  990 	rename config.h $(CFGH_TMPL)
  991 
  992 $(CONFIGPM) : $(MINIPERL) ..\config.sh config_h.PL
  993 	$(MINIPERL) -I..\lib ..\configpm --chdir=..
  994 	$(XCOPY) ..\*.h $(COREDIR)\*.*
  995 	$(XCOPY) *.h $(COREDIR)\*.*
  996 	$(RCOPY) include $(COREDIR)\*.*
  997 	-$(MINIPERL) -I..\lib config_h.PL
  998 	if errorlevel 1 $(MAKE) /$(MAKEFLAGS) $(CONFIGPM)
  999 
 1000 .\config.h : $(CONFIGPM)
 1001 
 1002 # See the comment in Makefile.SH explaining this seemingly cranky ordering
 1003 $(MINIPERL) : ..\lib\buildcustomize.pl
 1004 
 1005 ..\lib\buildcustomize.pl : $(MINI_OBJ) ..\write_buildcustomize.pl
 1006 	$(LINK32) -out:$(MINIPERL) @<<
 1007 	$(BLINK_FLAGS) $(DELAYLOAD) $(MINIDELAYLOAD) $(LIBFILES) $(MINI_OBJ)
 1008 <<
 1009 	$(EMBED_EXE_MANI:..\lib\buildcustomize.pl=..\miniperl.exe)
 1010 	$(MINIPERL) -I..\lib -f ..\write_buildcustomize.pl ..
 1011 
 1012 $(MINIDIR)\.exists : $(CFGH_TMPL)
 1013 	if not exist "$(MINIDIR)" mkdir "$(MINIDIR)"
 1014 #
 1015 # Copy the template config.h and set configurables at the end of it
 1016 # as per the options chosen and compiler used.
 1017 # Note: This config.h is only used to build miniperl.exe anyway, but
 1018 # it's as well to have its options correct to be sure that it builds
 1019 # and so that it's "-V" options are correct for use by makedef.pl. The
 1020 # real config.h used to build perl.exe is generated from the top-level
 1021 # config_h.SH by config_h.PL (run by miniperl.exe).
 1022 #
 1023 	copy $(CFGH_TMPL) config.h
 1024 	@(echo.&& \
 1025 	echo #ifndef _config_h_footer_&& \
 1026 	echo #define _config_h_footer_&& \
 1027 	echo #undef Off_t&& \
 1028 	echo #undef LSEEKSIZE&& \
 1029 	echo #undef Off_t_size&& \
 1030 	echo #undef PTRSIZE&& \
 1031 	echo #undef SSize_t&& \
 1032 	echo #undef HAS_ATOLL&& \
 1033 	echo #undef HAS_STRTOLL&& \
 1034 	echo #undef HAS_STRTOULL&& \
 1035 	echo #undef Size_t_size&& \
 1036 	echo #undef IVTYPE&& \
 1037 	echo #undef UVTYPE&& \
 1038 	echo #undef IVSIZE&& \
 1039 	echo #undef UVSIZE&& \
 1040 	echo #undef NV_PRESERVES_UV&& \
 1041 	echo #undef NV_PRESERVES_UV_BITS&& \
 1042 	echo #undef IVdf&& \
 1043 	echo #undef UVuf&& \
 1044 	echo #undef UVof&& \
 1045 	echo #undef UVxf&& \
 1046 	echo #undef UVXf&& \
 1047 	echo #undef USE_64_BIT_INT&& \
 1048 	echo #undef USE_LONG_DOUBLE&& \
 1049 	echo #undef USE_CPLUSPLUS)>> config.h
 1050 !IF "$(CCTYPE)" == "MSVC140" || "$(CCTYPE)" == "MSVC141" || "$(CCTYPE)" == "MSVC142"
 1051 	@(echo #undef FILE_ptr&& \
 1052 	echo #undef FILE_cnt&& \
 1053 	echo #undef FILE_base&& \
 1054 	echo #undef FILE_bufsiz&& \
 1055 	echo #define FILE_ptr^(fp^) PERLIO_FILE_ptr^(fp^)&& \
 1056 	echo #define FILE_cnt^(fp^) PERLIO_FILE_cnt^(fp^)&& \
 1057 	echo #define FILE_base^(fp^) PERLIO_FILE_base^(fp^)&& \
 1058 	echo #define FILE_bufsiz^(fp^) ^(PERLIO_FILE_cnt^(fp^) + PERLIO_FILE_ptr^(fp^) - PERLIO_FILE_base^(fp^)^)&& \
 1059 	echo #define I_STDBOOL)>> config.h
 1060 !ENDIF
 1061 !IF "$(USE_LARGE_FILES)"=="define"
 1062 	@(echo #define Off_t $(INT64)&& \
 1063 	echo #define LSEEKSIZE ^8&& \
 1064 	echo #define Off_t_size ^8)>> config.h
 1065 !ELSE
 1066 	@(echo #define Off_t long&& \
 1067 	echo #define LSEEKSIZE ^4&& \
 1068 	echo #define Off_t_size ^4)>> config.h
 1069 !ENDIF
 1070 !IF "$(WIN64)"=="define"
 1071 	@(echo #define PTRSIZE ^8&& \
 1072 	echo #define SSize_t $(INT64)&& \
 1073 	echo #define HAS_ATOLL&& \
 1074 	echo #define HAS_STRTOLL&& \
 1075 	echo #define HAS_STRTOULL&& \
 1076 	echo #define Size_t_size ^8)>> config.h
 1077 !ELSE
 1078 	@(echo #define PTRSIZE ^4&& \
 1079 	echo #define SSize_t int&& \
 1080 	echo #undef HAS_ATOLL&& \
 1081 	echo #undef HAS_STRTOLL&& \
 1082 	echo #undef HAS_STRTOULL&& \
 1083 	echo #define Size_t_size ^4)>> config.h
 1084 !ENDIF
 1085 !IF "$(USE_64_BIT_INT)"=="define"
 1086 	@(echo #define IVTYPE $(INT64)&& \
 1087 	echo #define UVTYPE unsigned $(INT64)&& \
 1088 	echo #define IVSIZE ^8&& \
 1089 	echo #define UVSIZE ^8&& \
 1090 	echo #undef NV_PRESERVES_UV&& \
 1091 	echo #define NV_PRESERVES_UV_BITS 53&& \
 1092 	echo #define IVdf "I64d"&& \
 1093 	echo #define UVuf "I64u"&& \
 1094 	echo #define UVof "I64o"&& \
 1095 	echo #define UVxf "I64x"&& \
 1096 	echo #define UVXf "I64X"&& \
 1097 	echo #define USE_64_BIT_INT)>> config.h
 1098 !ELSE
 1099 	@(echo #define IVTYPE long&& \
 1100 	echo #define UVTYPE unsigned long&& \
 1101 	echo #define IVSIZE ^4&& \
 1102 	echo #define UVSIZE ^4&& \
 1103 	echo #define NV_PRESERVES_UV&& \
 1104 	echo #define NV_PRESERVES_UV_BITS 32&& \
 1105 	echo #define IVdf "ld"&& \
 1106 	echo #define UVuf "lu"&& \
 1107 	echo #define UVof "lo"&& \
 1108 	echo #define UVxf "lx"&& \
 1109 	echo #define UVXf "lX"&& \
 1110 	echo #undef USE_64_BIT_INT)>> config.h
 1111 !ENDIF
 1112 !IF "$(USE_CPLUSPLUS)"=="define"
 1113 	@(echo #define USE_CPLUSPLUS&& \
 1114 	echo #endif)>> config.h
 1115 !ELSE
 1116 	@(echo #undef USE_CPLUSPLUS&& \
 1117 	echo #endif)>> config.h
 1118 !ENDIF
 1119 #separate line since this is sentinal that this target is done
 1120 	@rem. > $(MINIDIR)\.exists
 1121 
 1122 $(MINICORE_OBJ) : $(CORE_NOCFG_H)
 1123 	$(CC) -c $(CFLAGS) -DPERL_EXTERNAL_GLOB -DPERL_IS_MINIPERL $(OBJOUT_FLAG)$@ ..\$(*F).c
 1124 
 1125 $(MINIWIN32_OBJ) : $(CORE_NOCFG_H)
 1126 	$(CC) -c $(CFLAGS) -DPERL_IS_MINIPERL $(OBJOUT_FLAG)$@ $(*F).c
 1127 
 1128 # -DPERL_IMPLICIT_SYS needs C++ for perllib.c
 1129 # This is the only file that depends on perlhost.h, vmem.h, and vdir.h
 1130 !IF "$(USE_IMP_SYS)" == "define"
 1131 perllib$(o)	: perllib.c .\perlhost.h .\vdir.h .\vmem.h
 1132 	$(CC) -c -I. $(CFLAGS_O) $(CXX_FLAG) $(OBJOUT_FLAG)$@ perllib.c
 1133 !ENDIF
 1134 
 1135 # 1. we don't want to rebuild miniperl.exe when config.h changes
 1136 # 2. we don't want to rebuild miniperl.exe with non-default config.h
 1137 # 3. we can't have miniperl.exe depend on git_version.h, as miniperl creates it
 1138 $(MINI_OBJ)	: $(MINIDIR)\.exists $(CORE_NOCFG_H)
 1139 
 1140 $(WIN32_OBJ)	: $(CORE_H)
 1141 $(CORE_OBJ)	: $(CORE_H)
 1142 $(DLL_OBJ)	: $(CORE_H)
 1143 
 1144 perldll.def : $(MINIPERL) $(CONFIGPM) ..\embed.fnc ..\makedef.pl create_perllibst_h.pl
 1145 	$(MINIPERL) -I..\lib create_perllibst_h.pl
 1146 	$(MINIPERL) -I..\lib -w ..\makedef.pl PLATFORM=win32 $(OPTIMIZE) $(DEFINES) $(BUILDOPT) \
 1147 	    CCTYPE=$(CCTYPE) TARG_DIR=..\ > perldll.def
 1148 
 1149 $(PERLDLL): perldll.def $(PERLDLL_OBJ) $(PERLDLL_RES) Extensions_static
 1150 	$(LINK32) -dll -def:perldll.def -base:0x28000000 -out:$@ @Extensions_static @<<
 1151 		$(BLINK_FLAGS) $(DELAYLOAD) $(LIBFILES) $(PERLDLL_OBJ) $(PERLDLL_RES)
 1152 <<
 1153 	$(EMBED_DLL_MANI)
 1154 	$(XCOPY) $(PERLIMPLIB) $(COREDIR)
 1155 
 1156 $(PERLSTATICLIB): Extensions_static
 1157 	$(LIB32) $(LIB_FLAGS) -out:$@ @Extensions_static @<<
 1158 		$(PERLDLL_OBJ)
 1159 <<
 1160 	$(XCOPY) $(PERLSTATICLIB) $(COREDIR)
 1161 
 1162 $(PERLEXE_RES): perlexe.rc $(PERLEXE_MANIFEST) $(PERLEXE_ICO)
 1163 
 1164 $(MINIDIR)\globals$(o) : $(GENERATED_HEADERS)
 1165 
 1166 $(UUDMAP_H) $(MG_DATA_H) : $(BITCOUNT_H)
 1167 
 1168 $(BITCOUNT_H) : $(GENUUDMAP)
 1169 	$(GENUUDMAP) $(GENERATED_HEADERS)
 1170 
 1171 $(GENUUDMAP_OBJ) : ..\mg_raw.h
 1172 
 1173 $(GENUUDMAP) : $(GENUUDMAP_OBJ)
 1174 	$(LINK32) -out:$@ @<<
 1175 		$(BLINK_FLAGS) $(LIBFILES) $(GENUUDMAP_OBJ)
 1176 <<
 1177 	$(EMBED_EXE_MANI)
 1178 
 1179 perlmain.c : runperl.c
 1180 	copy runperl.c perlmain.c
 1181 
 1182 perlmain$(o) : perlmain.c
 1183 	$(CC) $(CFLAGS_O:-DPERLDLL=-UPERLDLL) $(OBJOUT_FLAG)$@ -c perlmain.c
 1184 
 1185 perlmainst.c : runperl.c
 1186 	copy runperl.c perlmainst.c
 1187 
 1188 perlmainst$(o) : perlmainst.c
 1189 	$(CC) $(CFLAGS_O) $(OBJOUT_FLAG)$@ -c perlmainst.c
 1190 
 1191 $(PERLEXE): $(PERLDLL) $(CONFIGPM) $(PERLEXE_OBJ) $(PERLEXE_RES)
 1192 	$(LINK32) -out:$@ $(BLINK_FLAGS) \
 1193 	    $(PERLEXE_OBJ) $(PERLEXE_RES) $(PERLIMPLIB) $(LIBFILES) $(SETARGV_OBJ)
 1194 	$(EMBED_EXE_MANI)
 1195 	copy $(PERLEXE) $(WPERLEXE)
 1196 	$(MINIPERL) -I..\lib bin\exetype.pl $(WPERLEXE) WINDOWS
 1197 
 1198 $(PERLEXESTATIC): $(PERLSTATICLIB) $(CONFIGPM) $(PERLEXEST_OBJ) $(PERLEXE_RES)
 1199 	$(LINK32) -out:$@ $(BLINK_FLAGS) \
 1200 	    $(PERLEXEST_OBJ) $(PERLEXE_RES) $(PERLSTATICLIB) $(LIBFILES) $(SETARGV_OBJ)
 1201 	$(EMBED_EXE_MANI)
 1202 
 1203 MakePPPort: $(MINIPERL) $(CONFIGPM) Extensions_nonxs
 1204 	$(MINIPERL) -I..\lib ..\mkppport
 1205 
 1206 #-------------------------------------------------------------------------------
 1207 # There's no direct way to mark a dependency on
 1208 # DynaLoader.pm, so this will have to do
 1209 Extensions: ..\make_ext.pl ..\lib\buildcustomize.pl $(PERLDEP) $(CONFIGPM) $(DYNALOADER)
 1210 	$(XCOPY) ..\*.h $(COREDIR)\*.*
 1211 	$(MINIPERL) -I..\lib ..\make_ext.pl "MAKE=$(MAKE)" --dir=$(CPANDIR) --dir=$(DISTDIR) --dir=$(EXTDIR) --dynamic
 1212 
 1213 Extensions_reonly: ..\make_ext.pl ..\lib\buildcustomize.pl $(PERLDEP) $(CONFIGPM) $(DYNALOADER)
 1214 	$(XCOPY) ..\*.h $(COREDIR)\*.*
 1215 	$(MINIPERL) -I..\lib ..\make_ext.pl "MAKE=$(MAKE)" --dir=$(CPANDIR) --dir=$(DISTDIR) --dir=$(EXTDIR) --dynamic +re
 1216 
 1217 Extensions_static : ..\make_ext.pl ..\lib\buildcustomize.pl list_static_libs.pl $(PERLDEP) $(CONFIGPM) Extensions_nonxs
 1218 	$(XCOPY) ..\*.h $(COREDIR)\*.*
 1219 	$(MINIPERL) -I..\lib ..\make_ext.pl "MAKE=$(MAKE)" --dir=$(CPANDIR) --dir=$(DISTDIR) --dir=$(EXTDIR) --static
 1220 	$(MINIPERL) -I..\lib list_static_libs.pl > Extensions_static
 1221 
 1222 Extensions_nonxs: ..\make_ext.pl ..\lib\buildcustomize.pl $(PERLDEP) $(CONFIGPM) ..\pod\perlfunc.pod
 1223 	$(XCOPY) ..\*.h $(COREDIR)\*.*
 1224 	$(MINIPERL) -I..\lib ..\make_ext.pl "MAKE=$(MAKE)" --dir=$(CPANDIR) --dir=$(DISTDIR) --dir=$(EXTDIR) --nonxs
 1225 
 1226 $(DYNALOADER) : ..\make_ext.pl ..\lib\buildcustomize.pl $(PERLDEP) $(CONFIGPM) Extensions_nonxs
 1227 	$(XCOPY) ..\*.h $(COREDIR)\*.*
 1228 	$(MINIPERL) -I..\lib ..\make_ext.pl "MAKE=$(MAKE)" --dir=$(EXTDIR) --dynaloader
 1229 
 1230 Extensions_clean: 
 1231 	-if exist $(MINIPERL) $(MINIPERL) -I..\lib ..\make_ext.pl "MAKE=$(MAKE)" --dir=$(CPANDIR) --dir=$(DISTDIR) --dir=$(EXTDIR) --all --target=clean
 1232 
 1233 Extensions_realclean: 
 1234 	-if exist $(MINIPERL) $(MINIPERL) -I..\lib ..\make_ext.pl "MAKE=$(MAKE)" --dir=$(CPANDIR) --dir=$(DISTDIR) --dir=$(EXTDIR) --all --target=realclean
 1235 
 1236 #-------------------------------------------------------------------------------
 1237 
 1238 doc: $(PERLEXE) ..\pod\perltoc.pod
 1239 	$(PERLEXE) ..\installhtml --podroot=.. --htmldir=$(HTMLDIR) \
 1240 	    --podpath=pod:lib:utils --htmlroot="file://$(INST_HTML::=|)" \
 1241 	    --recurse
 1242 
 1243 ..\utils\Makefile: $(CONFIGPM) ..\utils\Makefile.PL
 1244 	$(MINIPERL) -I..\lib ..\utils\Makefile.PL ..
 1245 
 1246 # Note that this next section is parsed (and regenerated) by pod/buildtoc
 1247 # so please check that script before making structural changes here
 1248 
 1249 utils: $(PERLEXE) ..\utils\Makefile
 1250 	cd ..\utils
 1251 	$(MAKE) PERL=$(MINIPERL)
 1252 	cd ..\pod
 1253 	copy ..\README.aix      ..\pod\perlaix.pod
 1254 	copy ..\README.amiga    ..\pod\perlamiga.pod
 1255 	copy ..\README.android  ..\pod\perlandroid.pod
 1256 	copy ..\README.bs2000   ..\pod\perlbs2000.pod
 1257 	copy ..\README.ce       ..\pod\perlce.pod
 1258 	copy ..\README.cn       ..\pod\perlcn.pod
 1259 	copy ..\README.cygwin   ..\pod\perlcygwin.pod
 1260 	copy ..\README.dos      ..\pod\perldos.pod
 1261 	copy ..\README.freebsd  ..\pod\perlfreebsd.pod
 1262 	copy ..\README.haiku    ..\pod\perlhaiku.pod
 1263 	copy ..\README.hpux     ..\pod\perlhpux.pod
 1264 	copy ..\README.hurd     ..\pod\perlhurd.pod
 1265 	copy ..\README.irix     ..\pod\perlirix.pod
 1266 	copy ..\README.jp       ..\pod\perljp.pod
 1267 	copy ..\README.ko       ..\pod\perlko.pod
 1268 	copy ..\README.linux    ..\pod\perllinux.pod
 1269 	copy ..\README.macos    ..\pod\perlmacos.pod
 1270 	copy ..\README.macosx   ..\pod\perlmacosx.pod
 1271 	copy ..\README.netware  ..\pod\perlnetware.pod
 1272 	copy ..\README.openbsd  ..\pod\perlopenbsd.pod
 1273 	copy ..\README.os2      ..\pod\perlos2.pod
 1274 	copy ..\README.os390    ..\pod\perlos390.pod
 1275 	copy ..\README.os400    ..\pod\perlos400.pod
 1276 	copy ..\README.plan9    ..\pod\perlplan9.pod
 1277 	copy ..\README.qnx      ..\pod\perlqnx.pod
 1278 	copy ..\README.riscos   ..\pod\perlriscos.pod
 1279 	copy ..\README.solaris  ..\pod\perlsolaris.pod
 1280 	copy ..\README.symbian  ..\pod\perlsymbian.pod
 1281 	copy ..\README.synology ..\pod\perlsynology.pod
 1282 	copy ..\README.tru64    ..\pod\perltru64.pod
 1283 	copy ..\README.tw       ..\pod\perltw.pod
 1284 	copy ..\README.vos      ..\pod\perlvos.pod
 1285 	copy ..\README.win32    ..\pod\perlwin32.pod
 1286 	copy ..\pod\perldelta.pod ..\pod\perl5303delta.pod
 1287 	cd ..\win32
 1288 	$(PERLEXE) $(PL2BAT) $(UTILS)
 1289 	$(MINIPERL) -I..\lib ..\autodoc.pl ..
 1290 	$(MINIPERL) -I..\lib ..\pod\perlmodlib.PL -q ..
 1291 
 1292 ..\pod\perltoc.pod: $(PERLEXE) Extensions Extensions_nonxs
 1293 	$(PERLEXE) -f ..\pod\buildtoc -q
 1294 
 1295 # Note that the pod cleanup in this next section is parsed (and regenerated
 1296 # by pod/buildtoc so please check that script before making changes here
 1297 
 1298 distclean: realclean
 1299 	-del /f $(MINIPERL) $(PERLEXE) $(PERLDLL) $(GLOBEXE) \
 1300 		$(PERLIMPLIB) ..\miniperl.lib $(PERLEXESTATIC) $(PERLSTATICLIB)
 1301 	-del /f $(LIBDIR)\Encode.pm $(LIBDIR)\encoding.pm $(LIBDIR)\Errno.pm
 1302 	-del /f $(LIBDIR)\Config.pod $(LIBDIR)\POSIX.pod $(LIBDIR)\threads.pm
 1303 	-del /f $(LIBDIR)\.exists $(LIBDIR)\attributes.pm $(LIBDIR)\DynaLoader.pm
 1304 	-del /f $(LIBDIR)\Fcntl.pm $(LIBDIR)\IO.pm $(LIBDIR)\Opcode.pm
 1305 	-del /f $(LIBDIR)\ops.pm $(LIBDIR)\Safe.pm
 1306 	-del /f $(LIBDIR)\SDBM_File.pm $(LIBDIR)\Socket.pm $(LIBDIR)\POSIX.pm
 1307 	-del /f $(LIBDIR)\B.pm $(LIBDIR)\O.pm $(LIBDIR)\re.pm
 1308 	-del /f $(LIBDIR)\File\Glob.pm
 1309 	-del /f $(LIBDIR)\Storable.pm
 1310 	-del /f $(LIBDIR)\Sys\Hostname.pm
 1311 	-del /f $(LIBDIR)\Time\HiRes.pm
 1312 	-del /f $(LIBDIR)\Unicode\Normalize.pm
 1313 	-del /f $(LIBDIR)\Math\BigInt\FastCalc.pm
 1314 	-del /f $(LIBDIR)\Win32.pm
 1315 	-del /f $(LIBDIR)\Win32CORE.pm
 1316 	-del /f $(LIBDIR)\Win32API\File.pm
 1317 	-del /f $(LIBDIR)\Win32API\File\cFile.pc
 1318 	-del /f $(LIBDIR)\buildcustomize.pl
 1319 	-del /f $(DISTDIR)\XSLoader\XSLoader.pm
 1320 	-del /f *.def *.map
 1321 	-if exist $(LIBDIR)\Amiga rmdir /s /q $(LIBDIR)\Amiga
 1322 	-if exist $(LIBDIR)\App rmdir /s /q $(LIBDIR)\App
 1323 	-if exist $(LIBDIR)\Archive rmdir /s /q $(LIBDIR)\Archive
 1324 	-if exist $(LIBDIR)\Attribute rmdir /s /q $(LIBDIR)\Attribute
 1325 	-if exist $(LIBDIR)\autodie rmdir /s /q $(LIBDIR)\autodie
 1326 	-if exist $(LIBDIR)\Carp rmdir /s /q $(LIBDIR)\Carp
 1327 	-if exist $(LIBDIR)\Compress rmdir /s /q $(LIBDIR)\Compress
 1328 	-if exist $(LIBDIR)\Config\Perl rmdir /s /q $(LIBDIR)\Config\Perl
 1329 	-if exist $(LIBDIR)\CPAN rmdir /s /q $(LIBDIR)\CPAN
 1330 	-if exist $(LIBDIR)\Data rmdir /s /q $(LIBDIR)\Data
 1331 	-if exist $(LIBDIR)\Devel rmdir /s /q $(LIBDIR)\Devel
 1332 	-if exist $(LIBDIR)\Digest rmdir /s /q $(LIBDIR)\Digest
 1333 	-if exist $(LIBDIR)\Encode rmdir /s /q $(LIBDIR)\Encode
 1334 	-if exist $(LIBDIR)\encoding rmdir /s /q $(LIBDIR)\encoding
 1335 	-if exist $(LIBDIR)\Exporter rmdir /s /q $(LIBDIR)\Exporter
 1336 	-if exist $(LIBDIR)\ExtUtils\CBuilder rmdir /s /q $(LIBDIR)\ExtUtils\CBuilder
 1337 	-if exist $(LIBDIR)\ExtUtils\Command rmdir /s /q $(LIBDIR)\ExtUtils\Command
 1338 	-if exist $(LIBDIR)\ExtUtils\Constant rmdir /s /q $(LIBDIR)\ExtUtils\Constant
 1339 	-if exist $(LIBDIR)\ExtUtils\Liblist rmdir /s /q $(LIBDIR)\ExtUtils\Liblist
 1340 	-if exist $(LIBDIR)\ExtUtils\MakeMaker rmdir /s /q $(LIBDIR)\ExtUtils\MakeMaker
 1341 	-if exist $(LIBDIR)\ExtUtils\ParseXS rmdir /s /q $(LIBDIR)\ExtUtils\ParseXS
 1342 	-if exist $(LIBDIR)\ExtUtils\Typemaps rmdir /s /q $(LIBDIR)\ExtUtils\Typemaps
 1343 	-if exist $(LIBDIR)\File\Spec rmdir /s /q $(LIBDIR)\File\Spec
 1344 	-if exist $(LIBDIR)\Filter rmdir /s /q $(LIBDIR)\Filter
 1345 	-if exist $(LIBDIR)\Hash rmdir /s /q $(LIBDIR)\Hash
 1346 	-if exist $(LIBDIR)\HTTP rmdir /s /q $(LIBDIR)\HTTP
 1347 	-if exist $(LIBDIR)\I18N rmdir /s /q $(LIBDIR)\I18N
 1348 	-if exist $(LIBDIR)\inc rmdir /s /q $(LIBDIR)\inc
 1349 	-if exist $(LIBDIR)\IO rmdir /s /q $(LIBDIR)\IO
 1350 	-if exist $(LIBDIR)\IPC rmdir /s /q $(LIBDIR)\IPC
 1351 	-if exist $(LIBDIR)\JSON rmdir /s /q $(LIBDIR)\JSON
 1352 	-if exist $(LIBDIR)\List rmdir /s /q $(LIBDIR)\List
 1353 	-if exist $(LIBDIR)\Locale rmdir /s /q $(LIBDIR)\Locale
 1354 	-if exist $(LIBDIR)\Math rmdir /s /q $(LIBDIR)\Math
 1355 	-if exist $(LIBDIR)\Memoize rmdir /s /q $(LIBDIR)\Memoize
 1356 	-if exist $(LIBDIR)\MIME rmdir /s /q $(LIBDIR)\MIME
 1357 	-if exist $(LIBDIR)\Module rmdir /s /q $(LIBDIR)\Module
 1358 	-if exist $(LIBDIR)\Net\FTP rmdir /s /q $(LIBDIR)\Net\FTP
 1359 	-if exist $(LIBDIR)\Params rmdir /s /q $(LIBDIR)\Params
 1360 	-if exist $(LIBDIR)\Parse rmdir /s /q $(LIBDIR)\Parse
 1361 	-if exist $(LIBDIR)\Perl rmdir /s /q $(LIBDIR)\Perl
 1362 	-if exist $(LIBDIR)\PerlIO rmdir /s /q $(LIBDIR)\PerlIO
 1363 	-if exist $(LIBDIR)\Pod\Perldoc rmdir /s /q $(LIBDIR)\Pod\Perldoc
 1364 	-if exist $(LIBDIR)\Pod\Simple rmdir /s /q $(LIBDIR)\Pod\Simple
 1365 	-if exist $(LIBDIR)\Pod\Text rmdir /s /q $(LIBDIR)\Pod\Text
 1366 	-if exist $(LIBDIR)\Scalar rmdir /s /q $(LIBDIR)\Scalar
 1367 	-if exist $(LIBDIR)\Search rmdir /s /q $(LIBDIR)\Search
 1368 	-if exist $(LIBDIR)\Sub rmdir /s /q $(LIBDIR)\Sub
 1369 	-if exist $(LIBDIR)\Sys rmdir /s /q $(LIBDIR)\Sys
 1370 	-if exist $(LIBDIR)\TAP rmdir /s /q $(LIBDIR)\TAP
 1371 	-if exist $(LIBDIR)\Term rmdir /s /q $(LIBDIR)\Term
 1372 	-if exist $(LIBDIR)\Test rmdir /s /q $(LIBDIR)\Test
 1373 	-if exist $(LIBDIR)\Test2 rmdir /s /q $(LIBDIR)\Test2
 1374 	-if exist $(LIBDIR)\Text rmdir /s /q $(LIBDIR)\Text
 1375 	-if exist $(LIBDIR)\Thread rmdir /s /q $(LIBDIR)\Thread
 1376 	-if exist $(LIBDIR)\threads rmdir /s /q $(LIBDIR)\threads
 1377 	-if exist $(LIBDIR)\Tie\Hash rmdir /s /q $(LIBDIR)\Tie\Hash
 1378 	-if exist $(LIBDIR)\Unicode\Collate rmdir /s /q $(LIBDIR)\Unicode\Collate
 1379 	-if exist $(LIBDIR)\Unicode\Collate\Locale rmdir /s /q $(LIBDIR)\Unicode\Collate\Locale
 1380 	-if exist $(LIBDIR)\version rmdir /s /q $(LIBDIR)\version
 1381 	-if exist $(LIBDIR)\VMS rmdir /s /q $(LIBDIR)\VMS
 1382 	-if exist $(LIBDIR)\Win32API rmdir /s /q $(LIBDIR)\Win32API
 1383 	-if exist $(LIBDIR)\XS rmdir /s /q $(LIBDIR)\XS
 1384 	-cd $(PODDIR) && del /f *.html *.bat roffitall \
 1385 	    perl5303delta.pod perlaix.pod perlamiga.pod perlandroid.pod \
 1386 	    perlapi.pod perlbs2000.pod perlce.pod perlcn.pod perlcygwin.pod \
 1387 	    perldos.pod perlfreebsd.pod perlhaiku.pod perlhpux.pod \
 1388 	    perlhurd.pod perlintern.pod perlirix.pod perljp.pod perlko.pod \
 1389 	    perllinux.pod perlmacos.pod perlmacosx.pod perlmodlib.pod \
 1390 	    perlnetware.pod perlopenbsd.pod perlos2.pod perlos390.pod \
 1391 	    perlos400.pod perlplan9.pod perlqnx.pod perlriscos.pod \
 1392 	    perlsolaris.pod perlsymbian.pod perlsynology.pod perltoc.pod \
 1393 	    perltru64.pod perltw.pod perluniprops.pod perlvos.pod \
 1394 	    perlwin32.pod
 1395 	-cd ..\utils && del /f h2ph splain perlbug pl2pm h2xs \
 1396 	    perldoc perlivp libnetcfg enc2xs encguess piconv cpan *.bat \
 1397 	    xsubpp pod2html instmodsh json_pp prove ptar ptardiff ptargrep shasum corelist zipdetails
 1398 	-del /f ..\config.sh perlmain.c dlutils.c config.h.new \
 1399 	        perlmainst.c
 1400 	-del /f $(CONFIGPM)
 1401 	-del /f ..\lib\Config_git.pl
 1402 	-del /f bin\*.bat
 1403 	-del /f perllibst.h
 1404 	-del /f $(PERLEXE_RES) perl.base
 1405 	-cd .. && del /s *.lib *.map *.pdb *.ilk *.bs *$(o) .exists pm_to_blib ppport.h
 1406 	-cd $(EXTDIR) && del /s *.def Makefile Makefile.old
 1407 	-cd $(DISTDIR) && del /s *.def Makefile Makefile.old
 1408 	-cd $(CPANDIR) && del /s *.def Makefile Makefile.old
 1409 	-del /s ..\utils\Makefile
 1410 	-if exist $(AUTODIR) rmdir /s /q $(AUTODIR)
 1411 	-if exist $(COREDIR) rmdir /s /q $(COREDIR)
 1412 	-if exist pod2htmd.tmp del pod2htmd.tmp
 1413 	-if exist $(HTMLDIR) rmdir /s /q $(HTMLDIR)
 1414 	-del /f ..\t\test_state
 1415 
 1416 install : all installbare installhtml
 1417 
 1418 installbare : utils ..\pod\perltoc.pod
 1419 	$(PERLEXE) ..\installperl
 1420 	if exist $(WPERLEXE) $(XCOPY) $(WPERLEXE) $(INST_BIN)\*.*
 1421 	if exist $(PERLEXESTATIC) $(XCOPY) $(PERLEXESTATIC) $(INST_BIN)\*.*
 1422 	$(XCOPY) $(GLOBEXE) $(INST_BIN)\*.*
 1423 	if exist ..\perl*.pdb $(XCOPY) ..\perl*.pdb $(INST_BIN)\*.*
 1424 	$(XCOPY) bin\*.bat $(INST_SCRIPT)\*.*
 1425 
 1426 installhtml : doc
 1427 	$(RCOPY) $(HTMLDIR)\*.* $(INST_HTML)\*.*
 1428 
 1429 inst_lib : $(CONFIGPM)
 1430 	$(RCOPY) ..\lib $(INST_LIB)\*.*
 1431 
 1432 $(UNIDATAFILES) ..\pod\perluniprops.pod : $(MINIPERL) $(CONFIGPM) ..\lib\unicore\mktables Extensions_nonxs
 1433 	cd ..\lib\unicore && \
 1434 	..\$(MINIPERL) -I.. mktables -P ..\..\pod -maketest -makelist -p -check $@ $(FIRSTUNIFILE)
 1435 
 1436 minitest : .\config.h $(MINIPERL) ..\git_version.h $(GLOBEXE) $(CONFIGPM) $(UNIDATAFILES)
 1437 	$(XCOPY) $(MINIPERL) ..\t\$(NULL)
 1438 	if exist ..\t\perl.exe del /f ..\t\perl.exe
 1439 	rename ..\t\miniperl.exe perl.exe
 1440 	$(XCOPY) $(GLOBEXE) ..\t\$(NULL)
 1441 # Note this perl.exe is miniperl
 1442 	cd ..\t && perl.exe TEST base/*.t comp/*.t cmd/*.t run/*.t io/*.t re/*.t opbasic/*.t op/*.t uni/*.t perf/*.t pragma/*.t
 1443 
 1444 test-prep : all utils ../pod/perltoc.pod
 1445 	$(XCOPY) $(PERLEXE) ..\t\$(NULL)
 1446 	$(XCOPY) $(PERLDLL) ..\t\$(NULL)
 1447 	$(XCOPY) $(GLOBEXE) ..\t\$(NULL)
 1448 	set PERL_STATIC_EXT=$(STATIC_EXT)
 1449 
 1450 test : test-prep
 1451 	cd ..\t
 1452 	perl.exe harness $(TEST_SWITCHES) $(TEST_FILES)
 1453 	cd ..\win32
 1454 
 1455 test_porting : test-prep
 1456 	cd ..\t
 1457 	perl.exe harness $(TEST_SWITCHES) porting\*.t ..\lib\diagnostics.t
 1458 	cd ..\win32
 1459 
 1460 test-reonly : reonly utils
 1461 	$(XCOPY) $(PERLEXE) ..\t\$(NULL)
 1462 	$(XCOPY) $(PERLDLL) ..\t\$(NULL)
 1463 	$(XCOPY) $(GLOBEXE) ..\t\$(NULL)
 1464 	cd ..\t
 1465 	perl.exe harness $(OPT) -re \bre\\/ $(EXTRA)
 1466 	cd ..\win32
 1467 
 1468 regen :
 1469 	cd ..
 1470 	regen.pl
 1471 	cd win32
 1472 
 1473 test-notty : test-prep
 1474 	set PERL_SKIP_TTY_TEST=1
 1475 	cd ..\t
 1476 	perl.exe harness $(TEST_SWITCHES) $(TEST_FILES)
 1477 	cd ..\win32
 1478 
 1479 _test : 
 1480        $(XCOPY) $(PERLEXE) ..\t\$(NULL)
 1481        $(XCOPY) $(PERLDLL) ..\t\$(NULL)
 1482        $(XCOPY) $(GLOBEXE) ..\t\$(NULL)
 1483        cd ..\t
 1484        perl.exe harness $(TEST_SWITCHES) $(TEST_FILES)
 1485        cd ..\win32
 1486 
 1487 _clean :
 1488 	-@$(DEL) miniperlmain$(o)
 1489 	-@$(DEL) $(MINIPERL)
 1490 	-@$(DEL) perlglob$(o)
 1491 	-@$(DEL) perlmain$(o)
 1492 	-@$(DEL) perlmainst$(o)
 1493 	-@$(DEL) config.h
 1494 	-@$(DEL) ..\git_version.h
 1495 	-@$(DEL) $(GLOBEXE)
 1496 	-@$(DEL) $(PERLEXE)
 1497 	-@$(DEL) $(WPERLEXE)
 1498 	-@$(DEL) $(PERLEXESTATIC)
 1499 	-@$(DEL) $(PERLSTATICLIB)
 1500 	-@$(DEL) $(PERLDLL)
 1501 	-@$(DEL) $(CORE_OBJ)
 1502 	-@$(DEL) $(GENUUDMAP) $(GENUUDMAP_OBJ) $(GENERATED_HEADERS)
 1503 	-if exist $(MINIDIR) rmdir /s /q $(MINIDIR)
 1504 	-if exist $(UNIDATADIR1) rmdir /s /q $(UNIDATADIR1)
 1505 	-if exist $(UNIDATADIR2) rmdir /s /q $(UNIDATADIR2)
 1506 	-@$(DEL) $(UNIDATAFILES)
 1507 	-@$(DEL) $(WIN32_OBJ)
 1508 	-@$(DEL) $(DLL_OBJ)
 1509 	-@$(DEL) ..\*$(o) ..\*.lib ..\*.exp *$(o) *.lib *.exp *.res
 1510 	-@$(DEL) ..\t\*.exe ..\t\*.dll ..\t\*.bat
 1511 	-@$(DEL) *.ilk
 1512 	-@$(DEL) *.pdb
 1513 	-@$(DEL) Extensions_static
 1514 
 1515 clean : Extensions_clean _clean
 1516 
 1517 realclean : Extensions_realclean _clean
 1518 
 1519 # Handy way to run perlbug -ok without having to install and run the
 1520 # installed perlbug. We don't re-run the tests here - we trust the user.
 1521 # Please *don't* use this unless all tests pass.
 1522 # If you want to report test failures, use "nmake nok" instead.
 1523 ok: utils
 1524 	$(PERLEXE) ..\utils\perlbug -ok -s "(UNINSTALLED)"
 1525 
 1526 okfile: utils
 1527 	$(PERLEXE) ..\utils\perlbug -ok -s "(UNINSTALLED)" -F perl.ok
 1528 
 1529 nok: utils
 1530 	$(PERLEXE) ..\utils\perlbug -nok -s "(UNINSTALLED)"
 1531 
 1532 nokfile: utils
 1533 	$(PERLEXE) ..\utils\perlbug -nok -s "(UNINSTALLED)" -F perl.nok