| 1 | # makefile.vc --                                               -*- Makefile -*- | 
|---|
| 2 | # | 
|---|
| 3 | # Microsoft Visual C++ makefile for use with nmake.exe v1.62+ (VC++ 5.0+) | 
|---|
| 4 | # | 
|---|
| 5 | # This makefile is based upon the Tcl 8.4 Makefile.vc and modified to | 
|---|
| 6 | # make it suitable as a general package makefile. Look for the word EDIT | 
|---|
| 7 | # which marks sections that may need modification. As a minumum you will | 
|---|
| 8 | # need to change the PROJECT, DOTVERSION and DLLOBJS variables to values | 
|---|
| 9 | # relevant to your package. | 
|---|
| 10 | # | 
|---|
| 11 | # See the file "license.terms" for information on usage and redistribution | 
|---|
| 12 | # of this file, and for a DISCLAIMER OF ALL WARRANTIES. | 
|---|
| 13 | # | 
|---|
| 14 | # Copyright (c) 1995-1996 Sun Microsystems, Inc. | 
|---|
| 15 | # Copyright (c) 1998-2000 Ajuba Solutions. | 
|---|
| 16 | # Copyright (c) 2001 ActiveState Corporation. | 
|---|
| 17 | # Copyright (c) 2001-2002 David Gravereaux. | 
|---|
| 18 | # Copyright (c) 2003-2006 Pat Thoyts | 
|---|
| 19 | # | 
|---|
| 20 | #------------------------------------------------------------------------- | 
|---|
| 21 | # RCS: @(#)$Id: makefile.vc,v 1.10 2008/06/18 11:01:39 patthoyts Exp $ | 
|---|
| 22 | #------------------------------------------------------------------------- | 
|---|
| 23 |  | 
|---|
| 24 | # Check to see we are configured to build with MSVC (MSDEVDIR or MSVCDIR) | 
|---|
| 25 | # or with the MS Platform SDK (MSSDK). Visual Studio .NET 2003 and 2005 define | 
|---|
| 26 | # VCINSTALLDIR instead. The MSVC Toolkit release defines yet another. | 
|---|
| 27 | !if !defined(MSDEVDIR) && !defined(MSVCDIR) && !defined(MSSDK) && !defined(VCINSTALLDIR) && !defined(VCToolkitInstallDir) | 
|---|
| 28 | MSG = ^ | 
|---|
| 29 | You need to run vcvars32.bat from Developer Studio or setenv.bat from the^ | 
|---|
| 30 | Platform SDK first to setup the environment.  Jump to this line to read^ | 
|---|
| 31 | the build instructions. | 
|---|
| 32 | !error $(MSG) | 
|---|
| 33 | !endif | 
|---|
| 34 |  | 
|---|
| 35 | #------------------------------------------------------------------------------ | 
|---|
| 36 | # HOW TO USE this makefile: | 
|---|
| 37 | # | 
|---|
| 38 | # 1)  It is now necessary to have %MSVCDir% set in the environment.  This is | 
|---|
| 39 | #     used  as a check to see if vcvars32.bat had been run prior to running | 
|---|
| 40 | #     nmake or during the installation of Microsoft Visual C++, MSVCDir had | 
|---|
| 41 | #     been set globally and the PATH adjusted.  Either way is valid. | 
|---|
| 42 | # | 
|---|
| 43 | #     You'll need to run vcvars32.bat contained in the MsDev's vc(98)/bin | 
|---|
| 44 | #     directory to setup the proper environment, if needed, for your current | 
|---|
| 45 | #     setup.  This is a needed bootstrap requirement and allows the swapping of | 
|---|
| 46 | #     different environments to be easier. | 
|---|
| 47 | # | 
|---|
| 48 | # 2)  To use the Platform SDK (not expressly needed), run setenv.bat after | 
|---|
| 49 | #     vcvars32.bat according to the instructions for it.  This can also turn on | 
|---|
| 50 | #     the 64-bit compiler, if your SDK has it. | 
|---|
| 51 | # | 
|---|
| 52 | # 3)  Targets are: | 
|---|
| 53 | #       all       -- Builds everything. | 
|---|
| 54 | #       <project> -- Builds the project (eg: nmake sample) | 
|---|
| 55 | #       test      -- Builds and runs the test suite. | 
|---|
| 56 | #       install   -- Installs the built binaries and libraries to $(INSTALLDIR) | 
|---|
| 57 | #                    in an appropriate subdirectory. | 
|---|
| 58 | #       clean/realclean/distclean -- varying levels of cleaning. | 
|---|
| 59 | # | 
|---|
| 60 | # 4)  Macros usable on the commandline: | 
|---|
| 61 | #       INSTALLDIR=<path> | 
|---|
| 62 | #               Sets where to install Tcl from the built binaries. | 
|---|
| 63 | #               C:\Progra~1\Tcl is assumed when not specified. | 
|---|
| 64 | # | 
|---|
| 65 | #       OPTS=static,msvcrt,staticpkg,threads,symbols,profile,loimpact,none | 
|---|
| 66 | #               Sets special options for the core.  The default is for none. | 
|---|
| 67 | #               Any combination of the above may be used (comma separated). | 
|---|
| 68 | #               'none' will over-ride everything to nothing. | 
|---|
| 69 | # | 
|---|
| 70 | #               static  =  Builds a static library of the core instead of a | 
|---|
| 71 | #                          dll.  The shell will be static (and large), as well. | 
|---|
| 72 | #               msvcrt  =  Effects the static option only to switch it from | 
|---|
| 73 | #                          using libcmt(d) as the C runtime [by default] to | 
|---|
| 74 | #                          msvcrt(d). This is useful for static embedding | 
|---|
| 75 | #                          support. | 
|---|
| 76 | #               staticpkg = Effects the static option only to switch | 
|---|
| 77 | #                          tclshXX.exe to have the dde and reg extension linked | 
|---|
| 78 | #                          inside it. | 
|---|
| 79 | #               nothreads = Turns off multithreading support (not recommended) | 
|---|
| 80 | #               thrdalloc = Use the thread allocator (shared global free pool). | 
|---|
| 81 | #               symbols =  Adds symbols for step debugging. | 
|---|
| 82 | #               profile =  Adds profiling hooks.  Map file is assumed. | 
|---|
| 83 | #               loimpact =  Adds a flag for how NT treats the heap to keep memory | 
|---|
| 84 | #                          in use, low.  This is said to impact alloc performance. | 
|---|
| 85 | # | 
|---|
| 86 | #       STATS=memdbg,compdbg,none | 
|---|
| 87 | #               Sets optional memory and bytecode compiler debugging code added | 
|---|
| 88 | #               to the core.  The default is for none.  Any combination of the | 
|---|
| 89 | #               above may be used (comma separated).  'none' will over-ride | 
|---|
| 90 | #               everything to nothing. | 
|---|
| 91 | # | 
|---|
| 92 | #               memdbg   = Enables the debugging memory allocator. | 
|---|
| 93 | #               compdbg  = Enables byte compilation logging. | 
|---|
| 94 | # | 
|---|
| 95 | #       MACHINE=(IX86|IA64|ALPHA|AMD64) | 
|---|
| 96 | #               Set the machine type used for the compiler, linker, and | 
|---|
| 97 | #               resource compiler.  This hook is needed to tell the tools | 
|---|
| 98 | #               when alternate platforms are requested.  IX86 is the default | 
|---|
| 99 | #               when not specified. If the CPU environment variable has been | 
|---|
| 100 | #               set (ie: recent Platform SDK) then MACHINE is set from CPU. | 
|---|
| 101 | # | 
|---|
| 102 | #       TMP_DIR=<path> | 
|---|
| 103 | #       OUT_DIR=<path> | 
|---|
| 104 | #               Hooks to allow the intermediate and output directories to be | 
|---|
| 105 | #               changed.  $(OUT_DIR) is assumed to be | 
|---|
| 106 | #               $(BINROOT)\(Release|Debug) based on if symbols are requested. | 
|---|
| 107 | #               $(TMP_DIR) will de $(OUT_DIR)\<buildtype> by default. | 
|---|
| 108 | # | 
|---|
| 109 | #       TESTPAT=<file> | 
|---|
| 110 | #               Reads the tests requested to be run from this file. | 
|---|
| 111 | # | 
|---|
| 112 | #       CFG_ENCODING=encoding | 
|---|
| 113 | #               name of encoding for configuration information. Defaults | 
|---|
| 114 | #               to cp1252 | 
|---|
| 115 | # | 
|---|
| 116 | # 5)  Examples: | 
|---|
| 117 | # | 
|---|
| 118 | #       Basic syntax of calling nmake looks like this: | 
|---|
| 119 | #       nmake [-nologo] -f makefile.vc [target|macrodef [target|macrodef] [...]] | 
|---|
| 120 | # | 
|---|
| 121 | #                        Standard (no frills) | 
|---|
| 122 | #       c:\tcl_src\win\>c:\progra~1\micros~1\vc98\bin\vcvars32.bat | 
|---|
| 123 | #       Setting environment for using Microsoft Visual C++ tools. | 
|---|
| 124 | #       c:\tcl_src\win\>nmake -f makefile.vc all | 
|---|
| 125 | #       c:\tcl_src\win\>nmake -f makefile.vc install INSTALLDIR=c:\progra~1\tcl | 
|---|
| 126 | # | 
|---|
| 127 | #                         Building for Win64 | 
|---|
| 128 | #       c:\tcl_src\win\>c:\progra~1\micros~1\vc98\bin\vcvars32.bat | 
|---|
| 129 | #       Setting environment for using Microsoft Visual C++ tools. | 
|---|
| 130 | #       c:\tcl_src\win\>c:\progra~1\platfo~1\setenv.bat /pre64 /RETAIL | 
|---|
| 131 | #       Targeting Windows pre64 RETAIL | 
|---|
| 132 | #       c:\tcl_src\win\>nmake -f makefile.vc MACHINE=IA64 | 
|---|
| 133 | # | 
|---|
| 134 | #------------------------------------------------------------------------------ | 
|---|
| 135 | #============================================================================== | 
|---|
| 136 | ############################################################################### | 
|---|
| 137 | #------------------------------------------------------------------------------ | 
|---|
| 138 |  | 
|---|
| 139 | !if !exist("makefile.vc") | 
|---|
| 140 | MSG = ^ | 
|---|
| 141 | You must run this makefile only from the directory it is in.^ | 
|---|
| 142 | Please `cd` to its location first. | 
|---|
| 143 | !error $(MSG) | 
|---|
| 144 | !endif | 
|---|
| 145 |  | 
|---|
| 146 | #------------------------------------------------------------------------- | 
|---|
| 147 | # Project specific information (EDIT) | 
|---|
| 148 | # | 
|---|
| 149 | # You should edit this with the name and version of your project. This | 
|---|
| 150 | # information is used to generate the name of the package library and | 
|---|
| 151 | # it's install location. | 
|---|
| 152 | # | 
|---|
| 153 | # For example, the sample extension is  going to build sample04.dll and | 
|---|
| 154 | # would install it into $(INSTALLDIR)\lib\sample04 | 
|---|
| 155 | # | 
|---|
| 156 | # You need to specify the object files that need to be linked into your | 
|---|
| 157 | # binary here. | 
|---|
| 158 | # | 
|---|
| 159 | #------------------------------------------------------------------------- | 
|---|
| 160 |  | 
|---|
| 161 | PROJECT = sample | 
|---|
| 162 |  | 
|---|
| 163 | # Uncomment the following line if this is a Tk extension. | 
|---|
| 164 | #PROJECT_REQUIRES_TK=1 | 
|---|
| 165 | !include "rules.vc" | 
|---|
| 166 |  | 
|---|
| 167 | DOTVERSION      = 0.5 | 
|---|
| 168 | VERSION         = $(DOTVERSION:.=) | 
|---|
| 169 | STUBPREFIX      = $(PROJECT)stub | 
|---|
| 170 |  | 
|---|
| 171 | DLLOBJS = \ | 
|---|
| 172 | $(TMP_DIR)\tclsample.obj \ | 
|---|
| 173 | $(TMP_DIR)\sample.obj \ | 
|---|
| 174 | !if !$(STATIC_BUILD) | 
|---|
| 175 | $(TMP_DIR)\sample.res | 
|---|
| 176 | !endif | 
|---|
| 177 |  | 
|---|
| 178 | #------------------------------------------------------------------------- | 
|---|
| 179 | # Target names and paths ( shouldn't need changing ) | 
|---|
| 180 | #------------------------------------------------------------------------- | 
|---|
| 181 |  | 
|---|
| 182 | BINROOT         = . | 
|---|
| 183 | ROOT            = .. | 
|---|
| 184 |  | 
|---|
| 185 | PRJIMPLIB       = $(OUT_DIR)\$(PROJECT)$(VERSION)$(SUFX).lib | 
|---|
| 186 | PRJLIBNAME      = $(PROJECT)$(VERSION)$(SUFX).$(EXT) | 
|---|
| 187 | PRJLIB          = $(OUT_DIR)\$(PRJLIBNAME) | 
|---|
| 188 |  | 
|---|
| 189 | PRJSTUBLIBNAME  = $(STUBPREFIX)$(VERSION).lib | 
|---|
| 190 | PRJSTUBLIB      = $(OUT_DIR)\$(PRJSTUBLIBNAME) | 
|---|
| 191 |  | 
|---|
| 192 | ### Make sure we use backslash only. | 
|---|
| 193 | PRJ_INSTALL_DIR         = $(_INSTALLDIR)\$(PROJECT)$(DOTVERSION) | 
|---|
| 194 | LIB_INSTALL_DIR         = $(PRJ_INSTALL_DIR) | 
|---|
| 195 | BIN_INSTALL_DIR         = $(PRJ_INSTALL_DIR) | 
|---|
| 196 | DOC_INSTALL_DIR         = $(PRJ_INSTALL_DIR) | 
|---|
| 197 | SCRIPT_INSTALL_DIR      = $(PRJ_INSTALL_DIR) | 
|---|
| 198 | INCLUDE_INSTALL_DIR     = $(_TCLDIR)\include | 
|---|
| 199 |  | 
|---|
| 200 | ### The following paths CANNOT have spaces in them. | 
|---|
| 201 | GENERICDIR      = $(ROOT)\generic | 
|---|
| 202 | WINDIR          = $(ROOT)\win | 
|---|
| 203 | LIBDIR          = $(ROOT)\library | 
|---|
| 204 | DOCDIR          = $(ROOT)\doc | 
|---|
| 205 | TOOLSDIR        = $(ROOT)\tools | 
|---|
| 206 | COMPATDIR       = $(ROOT)\compat | 
|---|
| 207 |  | 
|---|
| 208 | #--------------------------------------------------------------------- | 
|---|
| 209 | # Compile flags | 
|---|
| 210 | #--------------------------------------------------------------------- | 
|---|
| 211 |  | 
|---|
| 212 | !if !$(DEBUG) | 
|---|
| 213 | !if $(OPTIMIZING) | 
|---|
| 214 | ### This cranks the optimization level to maximize speed | 
|---|
| 215 | cdebug  = $(OPTIMIZATIONS) | 
|---|
| 216 | !else | 
|---|
| 217 | cdebug  = | 
|---|
| 218 | !endif | 
|---|
| 219 | !else if "$(MACHINE)" == "IA64" || "$(MACHINE)" == "AMD64" | 
|---|
| 220 | ### Warnings are too many, can't support warnings into errors. | 
|---|
| 221 | cdebug  = -Zi -Od $(DEBUGFLAGS) | 
|---|
| 222 | !else | 
|---|
| 223 | cdebug  = -Zi -WX $(DEBUGFLAGS) | 
|---|
| 224 | !endif | 
|---|
| 225 |  | 
|---|
| 226 | ### Declarations common to all compiler options | 
|---|
| 227 | cwarn = $(WARNINGS) -D _CRT_SECURE_NO_DEPRECATE -D _CRT_NONSTDC_NO_DEPRECATE | 
|---|
| 228 | cflags = -nologo -c $(COMPILERFLAGS) $(cwarn) -Fp$(TMP_DIR)^\ | 
|---|
| 229 |  | 
|---|
| 230 | !if $(MSVCRT) | 
|---|
| 231 | !if $(DEBUG) && !$(UNCHECKED) | 
|---|
| 232 | crt = -MDd | 
|---|
| 233 | !else | 
|---|
| 234 | crt = -MD | 
|---|
| 235 | !endif | 
|---|
| 236 | !else | 
|---|
| 237 | !if $(DEBUG) && !$(UNCHECKED) | 
|---|
| 238 | crt = -MTd | 
|---|
| 239 | !else | 
|---|
| 240 | crt = -MT | 
|---|
| 241 | !endif | 
|---|
| 242 | !endif | 
|---|
| 243 |  | 
|---|
| 244 | !if !$(STATIC_BUILD) | 
|---|
| 245 | cflags = $(cflags) -DUSE_TCL_STUBS | 
|---|
| 246 | !if defined(TKSTUBLIB) | 
|---|
| 247 | cflags = $(cflags) -DUSE_TK_STUBS | 
|---|
| 248 | !endif | 
|---|
| 249 | !endif | 
|---|
| 250 |  | 
|---|
| 251 | INCLUDES        = $(TCL_INCLUDES) -I"$(WINDIR)" -I"$(GENERICDIR)" | 
|---|
| 252 | BASE_CFLAGS     = $(cflags) $(cdebug) $(crt) $(INCLUDES) | 
|---|
| 253 | CON_CFLAGS      = $(cflags) $(cdebug) $(crt) -DCONSOLE | 
|---|
| 254 | TCL_CFLAGS      = -DPACKAGE_NAME="\"$(PROJECT)\"" \ | 
|---|
| 255 | -DPACKAGE_VERSION="\"$(DOTVERSION)\"" \ | 
|---|
| 256 | -DBUILD_$(PROJECT) \ | 
|---|
| 257 | $(BASE_CFLAGS) $(OPTDEFINES) | 
|---|
| 258 |  | 
|---|
| 259 | #--------------------------------------------------------------------- | 
|---|
| 260 | # Link flags | 
|---|
| 261 | #--------------------------------------------------------------------- | 
|---|
| 262 |  | 
|---|
| 263 | !if $(DEBUG) | 
|---|
| 264 | ldebug  = -debug:full -debugtype:cv | 
|---|
| 265 | !if $(MSVCRT) | 
|---|
| 266 | ldebug = $(ldebug) -nodefaultlib:msvcrt | 
|---|
| 267 | !endif | 
|---|
| 268 | !else | 
|---|
| 269 | ldebug  = -release -opt:ref -opt:icf,3 | 
|---|
| 270 | !endif | 
|---|
| 271 |  | 
|---|
| 272 | ### Declarations common to all linker options | 
|---|
| 273 | lflags  = -nologo -machine:$(MACHINE) $(LINKERFLAGS) $(ldebug) | 
|---|
| 274 |  | 
|---|
| 275 | !if $(PROFILE) | 
|---|
| 276 | lflags  = $(lflags) -profile | 
|---|
| 277 | !endif | 
|---|
| 278 |  | 
|---|
| 279 | !if $(ALIGN98_HACK) && !$(STATIC_BUILD) | 
|---|
| 280 | ### Align sections for PE size savings. | 
|---|
| 281 | lflags  = $(lflags) -opt:nowin98 | 
|---|
| 282 | !else if !$(ALIGN98_HACK) && $(STATIC_BUILD) | 
|---|
| 283 | ### Align sections for speed in loading by choosing the virtual page size. | 
|---|
| 284 | lflags  = $(lflags) -align:4096 | 
|---|
| 285 | !endif | 
|---|
| 286 |  | 
|---|
| 287 | !if $(LOIMPACT) | 
|---|
| 288 | lflags  = $(lflags) -ws:aggressive | 
|---|
| 289 | !endif | 
|---|
| 290 |  | 
|---|
| 291 | dlllflags = $(lflags) -dll | 
|---|
| 292 | conlflags = $(lflags) -subsystem:console | 
|---|
| 293 | guilflags = $(lflags) -subsystem:windows | 
|---|
| 294 | !if !$(STATIC_BUILD) | 
|---|
| 295 | baselibs  = $(TCLSTUBLIB) | 
|---|
| 296 | !if defined(TKSTUBLIB) | 
|---|
| 297 | baselibs  = $(baselibs) $(TKSTUBLIB) | 
|---|
| 298 | !endif | 
|---|
| 299 | !endif | 
|---|
| 300 |  | 
|---|
| 301 | # Avoid 'unresolved external symbol __security_cookie' errors. | 
|---|
| 302 | # c.f. http://support.microsoft.com/?id=894573 | 
|---|
| 303 | !if "$(MACHINE)" == "IA64" || "$(MACHINE)" == "AMD64" | 
|---|
| 304 | !if $(VCVERSION) >= 1400 && $(VCVERSION) < 1500 | 
|---|
| 305 | baselibs   = $(baselibs) bufferoverflowU.lib | 
|---|
| 306 | !endif | 
|---|
| 307 | !endif | 
|---|
| 308 |  | 
|---|
| 309 | baselibs   = $(baselibs) user32.lib gdi32.lib | 
|---|
| 310 |  | 
|---|
| 311 | #--------------------------------------------------------------------- | 
|---|
| 312 | # TclTest flags | 
|---|
| 313 | #--------------------------------------------------------------------- | 
|---|
| 314 |  | 
|---|
| 315 | !IF "$(TESTPAT)" != "" | 
|---|
| 316 | TESTFLAGS = $(TESTFLAGS) -file $(TESTPAT) | 
|---|
| 317 | !ENDIF | 
|---|
| 318 |  | 
|---|
| 319 | #--------------------------------------------------------------------- | 
|---|
| 320 | # Project specific targets (EDIT) | 
|---|
| 321 | #--------------------------------------------------------------------- | 
|---|
| 322 |  | 
|---|
| 323 | all:        setup $(PROJECT) | 
|---|
| 324 | $(PROJECT): setup pkgIndex $(PRJLIB) | 
|---|
| 325 | install:    install-binaries install-libraries install-docs | 
|---|
| 326 | pkgIndex:   $(OUT_DIR)\pkgIndex.tcl | 
|---|
| 327 |  | 
|---|
| 328 | test: setup $(PROJECT) | 
|---|
| 329 | @set TCL_LIBRARY=$(TCL_LIBRARY:\=/) | 
|---|
| 330 | @set TCLLIBPATH=$(OUT_DIR_PATH:\=/) | 
|---|
| 331 | !if $(TCLINSTALL) | 
|---|
| 332 | @set PATH=$(_TCLDIR)\bin;$(PATH) | 
|---|
| 333 | !else | 
|---|
| 334 | @set PATH=$(_TCLDIR)\win\$(BUILDDIRTOP);$(PATH) | 
|---|
| 335 | !endif | 
|---|
| 336 | !if "$(OS)" == "Windows_NT"  || "$(MSVCDIR)" == "IDE" | 
|---|
| 337 | $(DEBUGGER) $(TCLSH) "$(ROOT)/tests/all.tcl" $(TESTFLAGS) | 
|---|
| 338 | !else | 
|---|
| 339 | @echo Please wait while the tests are collected... | 
|---|
| 340 | $(DEBUGGER) $(TCLSH) "$(ROOT)/tests/all.tcl" $(TESTFLAGS) > tests.log | 
|---|
| 341 | type tests.log | more | 
|---|
| 342 | !endif | 
|---|
| 343 |  | 
|---|
| 344 | shell: setup $(PROJECT) | 
|---|
| 345 | @set VLERQ_LIBRARY=$(LIBDIR:\=/) | 
|---|
| 346 | @set TCL_LIBRARY=$(TCL_LIBRARY:\=/) | 
|---|
| 347 | @set TCLLIBPATH=$(OUT_DIR_PATH:\=/) | 
|---|
| 348 | !if $(TCLINSTALL) | 
|---|
| 349 | @set PATH=$(_TCLDIR)\bin;$(PATH) | 
|---|
| 350 | !else | 
|---|
| 351 | @set PATH=$(_TCLDIR)\win\$(BUILDDIRTOP);$(PATH) | 
|---|
| 352 | !endif | 
|---|
| 353 | $(DEBUGGER) $(TCLSH) $(SCRIPT) | 
|---|
| 354 |  | 
|---|
| 355 | setup: | 
|---|
| 356 | @if not exist $(OUT_DIR)\nul mkdir $(OUT_DIR) | 
|---|
| 357 | @if not exist $(TMP_DIR)\nul mkdir $(TMP_DIR) | 
|---|
| 358 |  | 
|---|
| 359 | # See <tcl>/win/coffbase.txt for extension base addresses. | 
|---|
| 360 | $(PRJLIB): $(DLLOBJS) | 
|---|
| 361 | !if $(STATIC_BUILD) | 
|---|
| 362 | $(lib32) -nologo -out:$@ @<< | 
|---|
| 363 | $** | 
|---|
| 364 | << | 
|---|
| 365 | !else | 
|---|
| 366 | $(link32) $(dlllflags) -base:0x10000000 -out:$@ $(baselibs) @<< | 
|---|
| 367 | $** | 
|---|
| 368 | << | 
|---|
| 369 | $(_VC_MANIFEST_EMBED_DLL) | 
|---|
| 370 | -@del $*.exp | 
|---|
| 371 | !endif | 
|---|
| 372 |  | 
|---|
| 373 | $(PRJSTUBLIB): $(PRJSTUBOBJS) | 
|---|
| 374 | $(lib32) -nologo -out:$@ $(PRJSTUBOBJS) | 
|---|
| 375 |  | 
|---|
| 376 | #--------------------------------------------------------------------- | 
|---|
| 377 | # Implicit rules | 
|---|
| 378 | #--------------------------------------------------------------------- | 
|---|
| 379 |  | 
|---|
| 380 | {$(WINDIR)}.c{$(TMP_DIR)}.obj:: | 
|---|
| 381 | $(cc32) $(TCL_CFLAGS) -DBUILD_$(PROJECT) -Fo$(TMP_DIR)\ @<< | 
|---|
| 382 | $< | 
|---|
| 383 | << | 
|---|
| 384 |  | 
|---|
| 385 | {$(GENERICDIR)}.c{$(TMP_DIR)}.obj:: | 
|---|
| 386 | $(cc32) $(TCL_CFLAGS) -DBUILD_$(PROJECT) -Fo$(TMP_DIR)\ @<< | 
|---|
| 387 | $< | 
|---|
| 388 | << | 
|---|
| 389 |  | 
|---|
| 390 | {$(COMPATDIR)}.c{$(TMP_DIR)}.obj:: | 
|---|
| 391 | $(cc32) $(TCL_CFLAGS) -DBUILD_$(PROJECT) -Fo$(TMP_DIR)\ @<< | 
|---|
| 392 | $< | 
|---|
| 393 | << | 
|---|
| 394 |  | 
|---|
| 395 | {$(WINDIR)}.rc{$(TMP_DIR)}.res: | 
|---|
| 396 | $(rc32) -fo $@ -r -i "$(GENERICDIR)" -D__WIN32__ \ | 
|---|
| 397 | -DCOMMAVERSION=$(DOTVERSION:.=,),0,0 \ | 
|---|
| 398 | -DDOTVERSION=\"$(DOTVERSION)\" \ | 
|---|
| 399 | -DVERSION=\"$(VERSION)$(SUFX)\" \ | 
|---|
| 400 | !if $(DEBUG) | 
|---|
| 401 | -d DEBUG \ | 
|---|
| 402 | !endif | 
|---|
| 403 | !if $(TCL_THREADS) | 
|---|
| 404 | -d TCL_THREADS \ | 
|---|
| 405 | !endif | 
|---|
| 406 | !if $(STATIC_BUILD) | 
|---|
| 407 | -d STATIC_BUILD \ | 
|---|
| 408 | !endif | 
|---|
| 409 | $< | 
|---|
| 410 |  | 
|---|
| 411 | .SUFFIXES: | 
|---|
| 412 | .SUFFIXES:.c .rc | 
|---|
| 413 |  | 
|---|
| 414 | #------------------------------------------------------------------------- | 
|---|
| 415 | # Explicit dependency rules | 
|---|
| 416 | # | 
|---|
| 417 | #------------------------------------------------------------------------- | 
|---|
| 418 |  | 
|---|
| 419 | $(OUT_DIR)\pkgIndex.tcl: $(ROOT)\pkgIndex.tcl.in | 
|---|
| 420 | @nmakehlp -s << $** > $@ | 
|---|
| 421 | @PACKAGE_VERSION@    $(DOTVERSION) | 
|---|
| 422 | @PACKAGE_NAME@       $(PROJECT) | 
|---|
| 423 | @PKG_LIB_FILE@       $(PRJLIBNAME) | 
|---|
| 424 | << | 
|---|
| 425 |  | 
|---|
| 426 | #--------------------------------------------------------------------- | 
|---|
| 427 | # Installation. (EDIT) | 
|---|
| 428 | # | 
|---|
| 429 | # You may need to modify this section to reflect the final distribution | 
|---|
| 430 | # of your files and possibly to generate documentation. | 
|---|
| 431 | # | 
|---|
| 432 | #--------------------------------------------------------------------- | 
|---|
| 433 |  | 
|---|
| 434 | install-binaries: | 
|---|
| 435 | @echo Installing binaries to '$(SCRIPT_INSTALL_DIR)' | 
|---|
| 436 | @if not exist "$(SCRIPT_INSTALL_DIR)" mkdir "$(SCRIPT_INSTALL_DIR)" | 
|---|
| 437 | @$(CPY) $(PRJLIB) "$(SCRIPT_INSTALL_DIR)" >NUL | 
|---|
| 438 |  | 
|---|
| 439 | install-libraries: $(OUT_DIR)\pkgIndex.tcl | 
|---|
| 440 | @echo Installing libraries to '$(SCRIPT_INSTALL_DIR)' | 
|---|
| 441 | @if exist $(LIBDIR) $(CPY) $(LIBDIR)\*.tcl "$(SCRIPT_INSTALL_DIR)" | 
|---|
| 442 | @echo Installing package index in '$(SCRIPT_INSTALL_DIR)' | 
|---|
| 443 | @$(CPY) $(OUT_DIR)\pkgIndex.tcl $(SCRIPT_INSTALL_DIR) | 
|---|
| 444 |  | 
|---|
| 445 | install-docs: | 
|---|
| 446 | @echo Installing documentation files to '$(DOC_INSTALL_DIR)' | 
|---|
| 447 | @if exist $(DOCDIR) $(CPY) $(DOCDIR)\*.n "$(DOC_INSTALL_DIR)" | 
|---|
| 448 |  | 
|---|
| 449 | #--------------------------------------------------------------------- | 
|---|
| 450 | # Clean up | 
|---|
| 451 | #--------------------------------------------------------------------- | 
|---|
| 452 |  | 
|---|
| 453 | clean: | 
|---|
| 454 | @if exist $(TMP_DIR)\nul $(RMDIR) $(TMP_DIR) | 
|---|
| 455 | @if exist $(WINDIR)\version.vc del $(WINDIR)\version.vc | 
|---|
| 456 | @if exist $(WINDIR)\vercl.i del $(WINDIR)\vercl.i | 
|---|
| 457 | @if exist $(WINDIR)\vercl.x del $(WINDIR)\vercl.x | 
|---|
| 458 | @if exist $(WINDIR)\_junk.pch del $(WINDIR)\_junk.pch | 
|---|
| 459 |  | 
|---|
| 460 | realclean: clean | 
|---|
| 461 | @if exist $(OUT_DIR)\nul $(RMDIR) $(OUT_DIR) | 
|---|
| 462 |  | 
|---|
| 463 | distclean: realclean | 
|---|
| 464 | @if exist $(WINDIR)\nmakehlp.exe del $(WINDIR)\nmakehlp.exe | 
|---|
| 465 | @if exist $(WINDIR)\nmakehlp.obj del $(WINDIR)\nmakehlp.obj | 
|---|