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