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 |