OLD | NEW |
(Empty) | |
| 1 #------------------------------------------------------------------------------ |
| 2 # rules.vc -- |
| 3 # |
| 4 # Microsoft Visual C++ makefile include for decoding the commandline |
| 5 # macros. This file does not need editing to build Tcl. |
| 6 # |
| 7 # See the file "license.terms" for information on usage and redistribution |
| 8 # of this file, and for a DISCLAIMER OF ALL WARRANTIES. |
| 9 # |
| 10 # Copyright (c) 2001-2003 David Gravereaux. |
| 11 # Copyright (c) 2003-2008 Patrick Thoyts |
| 12 #------------------------------------------------------------------------------ |
| 13 |
| 14 !ifndef _RULES_VC |
| 15 _RULES_VC = 1 |
| 16 |
| 17 cc32 = $(CC) # built-in default. |
| 18 link32 = link |
| 19 lib32 = lib |
| 20 rc32 = $(RC) # built-in default. |
| 21 |
| 22 !ifndef INSTALLDIR |
| 23 ### Assume the normal default. |
| 24 _INSTALLDIR = C:\Program Files\Tcl |
| 25 !else |
| 26 ### Fix the path separators. |
| 27 _INSTALLDIR = $(INSTALLDIR:/=\) |
| 28 !endif |
| 29 |
| 30 #---------------------------------------------------------- |
| 31 # Set the proper copy method to avoid overwrite questions |
| 32 # to the user when copying files and selecting the right |
| 33 # "delete all" method. |
| 34 #---------------------------------------------------------- |
| 35 |
| 36 !if "$(OS)" == "Windows_NT" |
| 37 RMDIR = rmdir /S /Q |
| 38 ERRNULL = 2>NUL |
| 39 !if ![ver | find "4.0" > nul] |
| 40 CPY = echo y | xcopy /i >NUL |
| 41 COPY = copy >NUL |
| 42 !else |
| 43 CPY = xcopy /i /y >NUL |
| 44 COPY = copy /y >NUL |
| 45 !endif |
| 46 !else # "$(OS)" != "Windows_NT" |
| 47 CPY = xcopy /i >_JUNK.OUT # On Win98 NUL does not work here. |
| 48 COPY = copy >_JUNK.OUT # On Win98 NUL does not work here. |
| 49 RMDIR = deltree /Y |
| 50 NULL = \NUL # Used in testing directory existence |
| 51 ERRNULL = >NUL # Win9x shell cannot redirect stderr |
| 52 !endif |
| 53 MKDIR = mkdir |
| 54 |
| 55 #------------------------------------------------------------------------------ |
| 56 # Determine the host and target architectures and compiler version. |
| 57 #------------------------------------------------------------------------------ |
| 58 |
| 59 _HASH=^# |
| 60 _VC_MANIFEST_EMBED_EXE= |
| 61 _VC_MANIFEST_EMBED_DLL= |
| 62 VCVER=0 |
| 63 !if ![echo VCVERSION=_MSC_VER > vercl.x] \ |
| 64 && ![echo $(_HASH)if defined(_M_IX86) >> vercl.x] \ |
| 65 && ![echo ARCH=IX86 >> vercl.x] \ |
| 66 && ![echo $(_HASH)elif defined(_M_AMD64) >> vercl.x] \ |
| 67 && ![echo ARCH=AMD64 >> vercl.x] \ |
| 68 && ![echo $(_HASH)endif >> vercl.x] \ |
| 69 && ![cl -nologo -TC -P vercl.x $(ERRNULL)] |
| 70 !include vercl.i |
| 71 !if ![echo VCVER= ^\> vercl.vc] \ |
| 72 && ![set /a $(VCVERSION) / 100 - 6 >> vercl.vc] |
| 73 !include vercl.vc |
| 74 !endif |
| 75 !endif |
| 76 !if ![del $(ERRNUL) /q/f vercl.x vercl.i vercl.vc] |
| 77 !endif |
| 78 |
| 79 !if ![reg query HKLM\Hardware\Description\System\CentralProcessor\0 /v Identifie
r | findstr /i x86] |
| 80 NATIVE_ARCH=IX86 |
| 81 !else |
| 82 NATIVE_ARCH=AMD64 |
| 83 !endif |
| 84 |
| 85 # Since MSVC8 we must deal with manifest resources. |
| 86 !if $(VCVERSION) >= 1400 |
| 87 _VC_MANIFEST_EMBED_EXE=if exist $@.manifest mt -nologo -manifest $@.manifest -ou
tputresource:$@;1 |
| 88 _VC_MANIFEST_EMBED_DLL=if exist $@.manifest mt -nologo -manifest $@.manifest -ou
tputresource:$@;2 |
| 89 !endif |
| 90 |
| 91 !ifndef MACHINE |
| 92 MACHINE=$(ARCH) |
| 93 !endif |
| 94 |
| 95 !ifndef CFG_ENCODING |
| 96 CFG_ENCODING = \"cp1252\" |
| 97 !endif |
| 98 |
| 99 !message =======================================================================
======== |
| 100 |
| 101 #---------------------------------------------------------- |
| 102 # build the helper app we need to overcome nmake's limiting |
| 103 # environment. |
| 104 #---------------------------------------------------------- |
| 105 |
| 106 !if !exist(nmakehlp.exe) |
| 107 !if [$(cc32) -nologo nmakehlp.c -link -subsystem:console > nul] |
| 108 !endif |
| 109 !endif |
| 110 |
| 111 #---------------------------------------------------------- |
| 112 # Test for compiler features |
| 113 #---------------------------------------------------------- |
| 114 |
| 115 ### test for optimizations |
| 116 !if [nmakehlp -c -Ot] |
| 117 !message *** Compiler has 'Optimizations' |
| 118 OPTIMIZING = 1 |
| 119 !else |
| 120 !message *** Compiler does not have 'Optimizations' |
| 121 OPTIMIZING = 0 |
| 122 !endif |
| 123 |
| 124 OPTIMIZATIONS = |
| 125 |
| 126 !if [nmakehlp -c -Ot] |
| 127 OPTIMIZATIONS = $(OPTIMIZATIONS) -Ot |
| 128 !endif |
| 129 |
| 130 !if [nmakehlp -c -Oi] |
| 131 OPTIMIZATIONS = $(OPTIMIZATIONS) -Oi |
| 132 !endif |
| 133 |
| 134 !if [nmakehlp -c -Op] |
| 135 OPTIMIZATIONS = $(OPTIMIZATIONS) -Op |
| 136 !endif |
| 137 |
| 138 !if [nmakehlp -c -fp:strict] |
| 139 OPTIMIZATIONS = $(OPTIMIZATIONS) -fp:strict |
| 140 !endif |
| 141 |
| 142 !if [nmakehlp -c -Gs] |
| 143 OPTIMIZATIONS = $(OPTIMIZATIONS) -Gs |
| 144 !endif |
| 145 |
| 146 !if [nmakehlp -c -GS] |
| 147 OPTIMIZATIONS = $(OPTIMIZATIONS) -GS |
| 148 !endif |
| 149 |
| 150 !if [nmakehlp -c -GL] |
| 151 OPTIMIZATIONS = $(OPTIMIZATIONS) -GL |
| 152 !endif |
| 153 |
| 154 DEBUGFLAGS = |
| 155 |
| 156 !if [nmakehlp -c -RTC1] |
| 157 DEBUGFLAGS = $(DEBUGFLAGS) -RTC1 |
| 158 !elseif [nmakehlp -c -GZ] |
| 159 DEBUGFLAGS = $(DEBUGFLAGS) -GZ |
| 160 !endif |
| 161 |
| 162 COMPILERFLAGS =-W3 -DUNICODE -D_UNICODE |
| 163 |
| 164 # In v13 -GL and -YX are incompatible. |
| 165 !if [nmakehlp -c -YX] |
| 166 !if ![nmakehlp -c -GL] |
| 167 OPTIMIZATIONS = $(OPTIMIZATIONS) -YX |
| 168 !endif |
| 169 !endif |
| 170 |
| 171 !if "$(MACHINE)" == "IX86" |
| 172 ### test for pentium errata |
| 173 !if [nmakehlp -c -QI0f] |
| 174 !message *** Compiler has 'Pentium 0x0f fix' |
| 175 COMPILERFLAGS = $(COMPILERFLAGS) -QI0f |
| 176 !else |
| 177 !message *** Compiler does not have 'Pentium 0x0f fix' |
| 178 !endif |
| 179 !endif |
| 180 |
| 181 !if "$(MACHINE)" == "IA64" |
| 182 ### test for Itanium errata |
| 183 !if [nmakehlp -c -QIA64_Bx] |
| 184 !message *** Compiler has 'B-stepping errata workarounds' |
| 185 COMPILERFLAGS = $(COMPILERFLAGS) -QIA64_Bx |
| 186 !else |
| 187 !message *** Compiler does not have 'B-stepping errata workarounds' |
| 188 !endif |
| 189 !endif |
| 190 |
| 191 !if "$(MACHINE)" == "IX86" |
| 192 ### test for -align:4096, when align:512 will do. |
| 193 !if [nmakehlp -l -opt:nowin98] |
| 194 !message *** Linker has 'Win98 alignment problem' |
| 195 ALIGN98_HACK = 1 |
| 196 !else |
| 197 !message *** Linker does not have 'Win98 alignment problem' |
| 198 ALIGN98_HACK = 0 |
| 199 !endif |
| 200 !else |
| 201 ALIGN98_HACK = 0 |
| 202 !endif |
| 203 |
| 204 LINKERFLAGS = |
| 205 |
| 206 !if [nmakehlp -l -ltcg] |
| 207 LINKERFLAGS =-ltcg |
| 208 !endif |
| 209 |
| 210 #---------------------------------------------------------- |
| 211 # Decode the options requested. |
| 212 #---------------------------------------------------------- |
| 213 |
| 214 !if "$(OPTS)" == "" || [nmakehlp -f "$(OPTS)" "none"] |
| 215 STATIC_BUILD = 0 |
| 216 TCL_THREADS = 1 |
| 217 DEBUG = 0 |
| 218 SYMBOLS = 0 |
| 219 PROFILE = 0 |
| 220 PGO = 0 |
| 221 MSVCRT = 0 |
| 222 LOIMPACT = 0 |
| 223 TCL_USE_STATIC_PACKAGES = 0 |
| 224 USE_THREAD_ALLOC = 1 |
| 225 UNCHECKED = 0 |
| 226 !else |
| 227 !if [nmakehlp -f $(OPTS) "static"] |
| 228 !message *** Doing static |
| 229 STATIC_BUILD = 1 |
| 230 !else |
| 231 STATIC_BUILD = 0 |
| 232 !endif |
| 233 !if [nmakehlp -f $(OPTS) "msvcrt"] |
| 234 !message *** Doing msvcrt |
| 235 MSVCRT = 1 |
| 236 !else |
| 237 MSVCRT = 0 |
| 238 !endif |
| 239 !if [nmakehlp -f $(OPTS) "staticpkg"] |
| 240 !message *** Doing staticpkg |
| 241 TCL_USE_STATIC_PACKAGES = 1 |
| 242 !else |
| 243 TCL_USE_STATIC_PACKAGES = 0 |
| 244 !endif |
| 245 !if [nmakehlp -f $(OPTS) "nothreads"] |
| 246 !message *** Compile explicitly for non-threaded tcl |
| 247 TCL_THREADS = 0 |
| 248 !else |
| 249 TCL_THREADS = 1 |
| 250 USE_THREAD_ALLOC= 1 |
| 251 !endif |
| 252 !if [nmakehlp -f $(OPTS) "symbols"] |
| 253 !message *** Doing symbols |
| 254 DEBUG = 1 |
| 255 !else |
| 256 DEBUG = 0 |
| 257 !endif |
| 258 !if [nmakehlp -f $(OPTS) "pdbs"] |
| 259 !message *** Doing pdbs |
| 260 SYMBOLS = 1 |
| 261 !else |
| 262 SYMBOLS = 0 |
| 263 !endif |
| 264 !if [nmakehlp -f $(OPTS) "profile"] |
| 265 !message *** Doing profile |
| 266 PROFILE = 1 |
| 267 !else |
| 268 PROFILE = 0 |
| 269 !endif |
| 270 !if [nmakehlp -f $(OPTS) "pgi"] |
| 271 !message *** Doing profile guided optimization instrumentation |
| 272 PGO = 1 |
| 273 !elseif [nmakehlp -f $(OPTS) "pgo"] |
| 274 !message *** Doing profile guided optimization |
| 275 PGO = 2 |
| 276 !else |
| 277 PGO = 0 |
| 278 !endif |
| 279 !if [nmakehlp -f $(OPTS) "loimpact"] |
| 280 !message *** Doing loimpact |
| 281 LOIMPACT = 1 |
| 282 !else |
| 283 LOIMPACT = 0 |
| 284 !endif |
| 285 !if [nmakehlp -f $(OPTS) "thrdalloc"] |
| 286 !message *** Doing thrdalloc |
| 287 USE_THREAD_ALLOC = 1 |
| 288 !endif |
| 289 !if [nmakehlp -f $(OPTS) "tclalloc"] |
| 290 !message *** Doing tclalloc |
| 291 USE_THREAD_ALLOC = 0 |
| 292 !endif |
| 293 !if [nmakehlp -f $(OPTS) "unchecked"] |
| 294 !message *** Doing unchecked |
| 295 UNCHECKED = 1 |
| 296 !else |
| 297 UNCHECKED = 0 |
| 298 !endif |
| 299 !endif |
| 300 |
| 301 |
| 302 !if !$(STATIC_BUILD) |
| 303 # Make sure we don't build overly fat DLLs. |
| 304 MSVCRT = 1 |
| 305 # We shouldn't statically put the extensions inside the shell when dynamic. |
| 306 TCL_USE_STATIC_PACKAGES = 0 |
| 307 !endif |
| 308 |
| 309 |
| 310 #---------------------------------------------------------- |
| 311 # Figure-out how to name our intermediate and output directories. |
| 312 # We wouldn't want different builds to use the same .obj files |
| 313 # by accident. |
| 314 #---------------------------------------------------------- |
| 315 |
| 316 #---------------------------------------- |
| 317 # Naming convention: |
| 318 # t = full thread support. |
| 319 # s = static library (as opposed to an |
| 320 # import library) |
| 321 # g = linked to the debug enabled C |
| 322 # run-time. |
| 323 # x = special static build when it |
| 324 # links to the dynamic C run-time. |
| 325 #---------------------------------------- |
| 326 SUFX = tsgx |
| 327 |
| 328 !if $(DEBUG) |
| 329 BUILDDIRTOP = Debug |
| 330 !else |
| 331 BUILDDIRTOP = Release |
| 332 !endif |
| 333 |
| 334 !if "$(MACHINE)" != "IX86" |
| 335 BUILDDIRTOP =$(BUILDDIRTOP)_$(MACHINE) |
| 336 !endif |
| 337 !if $(VCVER) > 6 |
| 338 BUILDDIRTOP =$(BUILDDIRTOP)_VC$(VCVER) |
| 339 !endif |
| 340 |
| 341 !if !$(DEBUG) || $(DEBUG) && $(UNCHECKED) |
| 342 SUFX = $(SUFX:g=) |
| 343 !endif |
| 344 |
| 345 TMP_DIRFULL = .\$(BUILDDIRTOP)\$(PROJECT)_ThreadedDynamicStaticX |
| 346 |
| 347 !if !$(STATIC_BUILD) |
| 348 TMP_DIRFULL = $(TMP_DIRFULL:Static=) |
| 349 SUFX = $(SUFX:s=) |
| 350 EXT = dll |
| 351 !if $(MSVCRT) |
| 352 TMP_DIRFULL = $(TMP_DIRFULL:X=) |
| 353 SUFX = $(SUFX:x=) |
| 354 !endif |
| 355 !else |
| 356 TMP_DIRFULL = $(TMP_DIRFULL:Dynamic=) |
| 357 EXT = lib |
| 358 !if !$(MSVCRT) |
| 359 TMP_DIRFULL = $(TMP_DIRFULL:X=) |
| 360 SUFX = $(SUFX:x=) |
| 361 !endif |
| 362 !endif |
| 363 |
| 364 !if !$(TCL_THREADS) |
| 365 TMP_DIRFULL = $(TMP_DIRFULL:Threaded=) |
| 366 SUFX = $(SUFX:t=) |
| 367 !endif |
| 368 |
| 369 !ifndef TMP_DIR |
| 370 TMP_DIR = $(TMP_DIRFULL) |
| 371 !ifndef OUT_DIR |
| 372 OUT_DIR = .\$(BUILDDIRTOP) |
| 373 !endif |
| 374 !else |
| 375 !ifndef OUT_DIR |
| 376 OUT_DIR = $(TMP_DIR) |
| 377 !endif |
| 378 !endif |
| 379 |
| 380 |
| 381 #---------------------------------------------------------- |
| 382 # Decode the statistics requested. |
| 383 #---------------------------------------------------------- |
| 384 |
| 385 !if "$(STATS)" == "" || [nmakehlp -f "$(STATS)" "none"] |
| 386 TCL_MEM_DEBUG = 0 |
| 387 TCL_COMPILE_DEBUG = 0 |
| 388 !else |
| 389 !if [nmakehlp -f $(STATS) "memdbg"] |
| 390 !message *** Doing memdbg |
| 391 TCL_MEM_DEBUG = 1 |
| 392 !else |
| 393 TCL_MEM_DEBUG = 0 |
| 394 !endif |
| 395 !if [nmakehlp -f $(STATS) "compdbg"] |
| 396 !message *** Doing compdbg |
| 397 TCL_COMPILE_DEBUG = 1 |
| 398 !else |
| 399 TCL_COMPILE_DEBUG = 0 |
| 400 !endif |
| 401 !endif |
| 402 |
| 403 |
| 404 #---------------------------------------------------------- |
| 405 # Decode the checks requested. |
| 406 #---------------------------------------------------------- |
| 407 |
| 408 !if "$(CHECKS)" == "" || [nmakehlp -f "$(CHECKS)" "none"] |
| 409 TCL_NO_DEPRECATED = 0 |
| 410 WARNINGS = -W3 |
| 411 !else |
| 412 !if [nmakehlp -f $(CHECKS) "nodep"] |
| 413 !message *** Doing nodep check |
| 414 TCL_NO_DEPRECATED = 1 |
| 415 !else |
| 416 TCL_NO_DEPRECATED = 0 |
| 417 !endif |
| 418 !if [nmakehlp -f $(CHECKS) "fullwarn"] |
| 419 !message *** Doing full warnings check |
| 420 WARNINGS = -W4 |
| 421 !if [nmakehlp -l -warn:3] |
| 422 LINKERFLAGS = $(LINKERFLAGS) -warn:3 |
| 423 !endif |
| 424 !else |
| 425 WARNINGS = -W3 |
| 426 !endif |
| 427 !if [nmakehlp -f $(CHECKS) "64bit"] && [nmakehlp -c -Wp64] |
| 428 !message *** Doing 64bit portability warnings |
| 429 WARNINGS = $(WARNINGS) -Wp64 |
| 430 !endif |
| 431 !endif |
| 432 |
| 433 !if $(PGO) > 1 |
| 434 !if [nmakehlp -l -ltcg:pgoptimize] |
| 435 LINKERFLAGS = $(LINKERFLAGS:-ltcg=) -ltcg:pgoptimize |
| 436 !else |
| 437 MSG=^ |
| 438 This compiler does not support profile guided optimization. |
| 439 !error $(MSG) |
| 440 !endif |
| 441 !elseif $(PGO) > 0 |
| 442 !if [nmakehlp -l -ltcg:pginstrument] |
| 443 LINKERFLAGS = $(LINKERFLAGS:-ltcg=) -ltcg:pginstrument |
| 444 !else |
| 445 MSG=^ |
| 446 This compiler does not support profile guided optimization. |
| 447 !error $(MSG) |
| 448 !endif |
| 449 !endif |
| 450 |
| 451 #---------------------------------------------------------- |
| 452 # Set our defines now armed with our options. |
| 453 #---------------------------------------------------------- |
| 454 |
| 455 OPTDEFINES = -DTCL_CFGVAL_ENCODING=$(CFG_ENCODING) -DSTDC_HEADERS |
| 456 |
| 457 !if $(TCL_MEM_DEBUG) |
| 458 OPTDEFINES = $(OPTDEFINES) -DTCL_MEM_DEBUG |
| 459 !endif |
| 460 !if $(TCL_COMPILE_DEBUG) |
| 461 OPTDEFINES = $(OPTDEFINES) -DTCL_COMPILE_DEBUG -DTCL_COMPILE_STATS |
| 462 !endif |
| 463 !if $(TCL_THREADS) |
| 464 OPTDEFINES = $(OPTDEFINES) -DTCL_THREADS=1 |
| 465 !if $(USE_THREAD_ALLOC) |
| 466 OPTDEFINES = $(OPTDEFINES) -DUSE_THREAD_ALLOC=1 |
| 467 !endif |
| 468 !endif |
| 469 !if $(STATIC_BUILD) |
| 470 OPTDEFINES = $(OPTDEFINES) -DSTATIC_BUILD |
| 471 !endif |
| 472 !if $(TCL_NO_DEPRECATED) |
| 473 OPTDEFINES = $(OPTDEFINES) -DTCL_NO_DEPRECATED |
| 474 !endif |
| 475 |
| 476 !if !$(DEBUG) |
| 477 OPTDEFINES = $(OPTDEFINES) -DNDEBUG |
| 478 !if $(OPTIMIZING) |
| 479 OPTDEFINES = $(OPTDEFINES) -DTCL_CFG_OPTIMIZED |
| 480 !endif |
| 481 !endif |
| 482 !if $(PROFILE) |
| 483 OPTDEFINES = $(OPTDEFINES) -DTCL_CFG_PROFILED |
| 484 !endif |
| 485 !if "$(MACHINE)" == "IA64" || "$(MACHINE)" == "AMD64" |
| 486 OPTDEFINES = $(OPTDEFINES) -DTCL_CFG_DO64BIT |
| 487 !endif |
| 488 !if $(VCVERSION) < 1300 |
| 489 OPTDEFINES = $(OPTDEFINES) -DNO_STRTOI64 |
| 490 !endif |
| 491 |
| 492 #---------------------------------------------------------- |
| 493 # Locate the Tcl headers to build against |
| 494 #---------------------------------------------------------- |
| 495 |
| 496 !if "$(PROJECT)" == "tcl" |
| 497 |
| 498 _TCL_H = ..\generic\tcl.h |
| 499 |
| 500 !else |
| 501 |
| 502 # If INSTALLDIR set to tcl root dir then reset to the lib dir. |
| 503 !if exist("$(_INSTALLDIR)\include\tcl.h") |
| 504 _INSTALLDIR=$(_INSTALLDIR)\lib |
| 505 !endif |
| 506 |
| 507 !if !defined(TCLDIR) |
| 508 !if exist("$(_INSTALLDIR)\..\include\tcl.h") |
| 509 TCLINSTALL = 1 |
| 510 _TCLDIR = $(_INSTALLDIR)\.. |
| 511 _TCL_H = $(_INSTALLDIR)\..\include\tcl.h |
| 512 TCLDIR = $(_INSTALLDIR)\.. |
| 513 !else |
| 514 MSG=^ |
| 515 Failed to find tcl.h. Set the TCLDIR macro. |
| 516 !error $(MSG) |
| 517 !endif |
| 518 !else |
| 519 _TCLDIR = $(TCLDIR:/=\) |
| 520 !if exist("$(_TCLDIR)\include\tcl.h") |
| 521 TCLINSTALL = 1 |
| 522 _TCL_H = $(_TCLDIR)\include\tcl.h |
| 523 !elseif exist("$(_TCLDIR)\generic\tcl.h") |
| 524 TCLINSTALL = 0 |
| 525 _TCL_H = $(_TCLDIR)\generic\tcl.h |
| 526 !else |
| 527 MSG =^ |
| 528 Failed to find tcl.h. The TCLDIR macro does not appear correct. |
| 529 !error $(MSG) |
| 530 !endif |
| 531 !endif |
| 532 !endif |
| 533 |
| 534 #-------------------------------------------------------------- |
| 535 # Extract various version numbers from tcl headers |
| 536 # The generated file is then included in the makefile. |
| 537 #-------------------------------------------------------------- |
| 538 |
| 539 !if [echo REM = This file is generated from rules.vc > versions.vc] |
| 540 !endif |
| 541 !if [echo TCL_MAJOR_VERSION = \>> versions.vc] \ |
| 542 && [nmakehlp -V "$(_TCL_H)" TCL_MAJOR_VERSION >> versions.vc] |
| 543 !endif |
| 544 !if [echo TCL_MINOR_VERSION = \>> versions.vc] \ |
| 545 && [nmakehlp -V "$(_TCL_H)" TCL_MINOR_VERSION >> versions.vc] |
| 546 !endif |
| 547 !if [echo TCL_PATCH_LEVEL = \>> versions.vc] \ |
| 548 && [nmakehlp -V "$(_TCL_H)" TCL_PATCH_LEVEL >> versions.vc] |
| 549 !endif |
| 550 |
| 551 # If building the tcl core then we need additional package versions |
| 552 !if "$(PROJECT)" == "tcl" |
| 553 !if [echo PKG_HTTP_VER = \>> versions.vc] \ |
| 554 && [nmakehlp -V ..\library\http\pkgIndex.tcl http >> versions.vc] |
| 555 !endif |
| 556 !if [echo PKG_TCLTEST_VER = \>> versions.vc] \ |
| 557 && [nmakehlp -V ..\library\tcltest\pkgIndex.tcl tcltest >> versions.vc] |
| 558 !endif |
| 559 !if [echo PKG_MSGCAT_VER = \>> versions.vc] \ |
| 560 && [nmakehlp -V ..\library\msgcat\pkgIndex.tcl msgcat >> versions.vc] |
| 561 !endif |
| 562 !if [echo PKG_PLATFORM_VER = \>> versions.vc] \ |
| 563 && [nmakehlp -V ..\library\platform\pkgIndex.tcl "platform " >> versions.vc] |
| 564 !endif |
| 565 !if [echo PKG_SHELL_VER = \>> versions.vc] \ |
| 566 && [nmakehlp -V ..\library\platform\pkgIndex.tcl "platform::shell" >> version
s.vc] |
| 567 !endif |
| 568 !if [echo PKG_DDE_VER = \>> versions.vc] \ |
| 569 && [nmakehlp -V ..\library\dde\pkgIndex.tcl "dde " >> versions.vc] |
| 570 !endif |
| 571 !if [echo PKG_REG_VER =\>> versions.vc] \ |
| 572 && [nmakehlp -V ..\library\reg\pkgIndex.tcl registry >> versions.vc] |
| 573 !endif |
| 574 !endif |
| 575 |
| 576 !include versions.vc |
| 577 |
| 578 #-------------------------------------------------------------- |
| 579 # Setup tcl version dependent stuff headers |
| 580 #-------------------------------------------------------------- |
| 581 |
| 582 !if "$(PROJECT)" != "tcl" |
| 583 |
| 584 TCL_VERSION = $(TCL_MAJOR_VERSION)$(TCL_MINOR_VERSION) |
| 585 |
| 586 !if $(TCL_VERSION) < 81 |
| 587 TCL_DOES_STUBS = 0 |
| 588 !else |
| 589 TCL_DOES_STUBS = 1 |
| 590 !endif |
| 591 |
| 592 !if $(TCLINSTALL) |
| 593 TCLSH = "$(_TCLDIR)\bin\tclsh$(TCL_VERSION)$(SUFX).exe" |
| 594 !if !exist($(TCLSH)) && $(TCL_THREADS) |
| 595 TCLSH = "$(_TCLDIR)\bin\tclsh$(TCL_VERSION)t$(SUFX).exe" |
| 596 !endif |
| 597 TCLSTUBLIB = "$(_TCLDIR)\lib\tclstub$(TCL_VERSION).lib" |
| 598 TCLIMPLIB = "$(_TCLDIR)\lib\tcl$(TCL_VERSION)$(SUFX).lib" |
| 599 TCL_LIBRARY = $(_TCLDIR)\lib |
| 600 TCLREGLIB = "$(_TCLDIR)\lib\tclreg13$(SUFX:t=).lib" |
| 601 TCLDDELIB = "$(_TCLDIR)\lib\tcldde14$(SUFX:t=).lib" |
| 602 COFFBASE = \must\have\tcl\sources\to\build\this\target |
| 603 TCLTOOLSDIR = \must\have\tcl\sources\to\build\this\target |
| 604 TCL_INCLUDES = -I"$(_TCLDIR)\include" |
| 605 !else |
| 606 TCLSH = "$(_TCLDIR)\win\$(BUILDDIRTOP)\tclsh$(TCL_VERSION)$(SUFX).exe" |
| 607 !if !exist($(TCLSH)) && $(TCL_THREADS) |
| 608 TCLSH = "$(_TCLDIR)\win\$(BUILDDIRTOP)\tclsh$(TCL_VERSION)t$(SUFX).exe
" |
| 609 !endif |
| 610 TCLSTUBLIB = "$(_TCLDIR)\win\$(BUILDDIRTOP)\tclstub$(TCL_VERSION).lib" |
| 611 TCLIMPLIB = "$(_TCLDIR)\win\$(BUILDDIRTOP)\tcl$(TCL_VERSION)$(SUFX).lib" |
| 612 TCL_LIBRARY = $(_TCLDIR)\library |
| 613 TCLREGLIB = "$(_TCLDIR)\win\$(BUILDDIRTOP)\tclreg13$(SUFX:t=).lib" |
| 614 TCLDDELIB = "$(_TCLDIR)\win\$(BUILDDIRTOP)\tcldde14$(SUFX:t=).lib" |
| 615 COFFBASE = "$(_TCLDIR)\win\coffbase.txt" |
| 616 TCLTOOLSDIR = $(_TCLDIR)\tools |
| 617 TCL_INCLUDES = -I"$(_TCLDIR)\generic" -I"$(_TCLDIR)\win" |
| 618 !endif |
| 619 |
| 620 !endif |
| 621 |
| 622 #------------------------------------------------------------------------- |
| 623 # Locate the Tk headers to build against |
| 624 #------------------------------------------------------------------------- |
| 625 |
| 626 !if "$(PROJECT)" == "tk" |
| 627 _TK_H = ..\generic\tk.h |
| 628 _INSTALLDIR = $(_INSTALLDIR)\.. |
| 629 !endif |
| 630 |
| 631 !ifdef PROJECT_REQUIRES_TK |
| 632 !if !defined(TKDIR) |
| 633 !if exist("$(_INSTALLDIR)\..\include\tk.h") |
| 634 TKINSTALL = 1 |
| 635 _TKDIR = $(_INSTALLDIR)\.. |
| 636 _TK_H = $(_TKDIR)\include\tk.h |
| 637 TKDIR = $(_TKDIR) |
| 638 !elseif exist("$(_TCLDIR)\include\tk.h") |
| 639 TKINSTALL = 1 |
| 640 _TKDIR = $(_TCLDIR) |
| 641 _TK_H = $(_TKDIR)\include\tk.h |
| 642 TKDIR = $(_TKDIR) |
| 643 !endif |
| 644 !else |
| 645 _TKDIR = $(TKDIR:/=\) |
| 646 !if exist("$(_TKDIR)\include\tk.h") |
| 647 TKINSTALL = 1 |
| 648 _TK_H = $(_TKDIR)\include\tk.h |
| 649 !elseif exist("$(_TKDIR)\generic\tk.h") |
| 650 TKINSTALL = 0 |
| 651 _TK_H = $(_TKDIR)\generic\tk.h |
| 652 !else |
| 653 MSG =^ |
| 654 Failed to find tk.h. The TKDIR macro does not appear correct. |
| 655 !error $(MSG) |
| 656 !endif |
| 657 !endif |
| 658 !endif |
| 659 |
| 660 #------------------------------------------------------------------------- |
| 661 # Extract Tk version numbers |
| 662 #------------------------------------------------------------------------- |
| 663 |
| 664 !if defined(PROJECT_REQUIRES_TK) || "$(PROJECT)" == "tk" |
| 665 |
| 666 !if [echo TK_MAJOR_VERSION = \>> versions.vc] \ |
| 667 && [nmakehlp -V $(_TK_H) TK_MAJOR_VERSION >> versions.vc] |
| 668 !endif |
| 669 !if [echo TK_MINOR_VERSION = \>> versions.vc] \ |
| 670 && [nmakehlp -V $(_TK_H) TK_MINOR_VERSION >> versions.vc] |
| 671 !endif |
| 672 !if [echo TK_PATCH_LEVEL = \>> versions.vc] \ |
| 673 && [nmakehlp -V $(_TK_H) TK_PATCH_LEVEL >> versions.vc] |
| 674 !endif |
| 675 |
| 676 !include versions.vc |
| 677 |
| 678 TK_DOTVERSION = $(TK_MAJOR_VERSION).$(TK_MINOR_VERSION) |
| 679 TK_VERSION = $(TK_MAJOR_VERSION)$(TK_MINOR_VERSION) |
| 680 |
| 681 !if "$(PROJECT)" != "tk" |
| 682 !if $(TKINSTALL) |
| 683 WISH = "$(_TKDIR)\bin\wish$(TK_VERSION)$(SUFX).exe" |
| 684 TKSTUBLIB = "$(_TKDIR)\lib\tkstub$(TK_VERSION).lib" |
| 685 TKIMPLIB = "$(_TKDIR)\lib\tk$(TK_VERSION)$(SUFX).lib" |
| 686 TK_INCLUDES = -I"$(_TKDIR)\include" |
| 687 !else |
| 688 WISH = "$(_TKDIR)\win\$(BUILDDIRTOP)\wish$(TCL_VERSION)$(SUFX).exe" |
| 689 TKSTUBLIB = "$(_TKDIR)\win\$(BUILDDIRTOP)\tkstub$(TCL_VERSION).lib" |
| 690 TKIMPLIB = "$(_TKDIR)\win\$(BUILDDIRTOP)\tk$(TCL_VERSION)$(SUFX).lib" |
| 691 TK_INCLUDES = -I"$(_TKDIR)\generic" -I"$(_TKDIR)\win" -I"$(_TKDIR)\xlib" |
| 692 !endif |
| 693 !endif |
| 694 |
| 695 !endif |
| 696 |
| 697 #---------------------------------------------------------- |
| 698 # Display stats being used. |
| 699 #---------------------------------------------------------- |
| 700 |
| 701 !message *** Intermediate directory will be '$(TMP_DIR)' |
| 702 !message *** Output directory will be '$(OUT_DIR)' |
| 703 !message *** Suffix for binaries will be '$(SUFX)' |
| 704 !message *** Optional defines are '$(OPTDEFINES)' |
| 705 !message *** Compiler version $(VCVER). Target machine is $(MACHINE) |
| 706 !message *** Host architecture is $(NATIVE_ARCH) |
| 707 !message *** Compiler options '$(COMPILERFLAGS) $(OPTIMIZATIONS) $(DEBUGFLAGS) $
(WARNINGS)' |
| 708 !message *** Link options '$(LINKERFLAGS)' |
| 709 |
| 710 !endif |
| 711 |
OLD | NEW |