From 4d34483032bd741ce8176da8741a9043f108c557 Mon Sep 17 00:00:00 2001 From: davygrvy Date: Tue, 13 Nov 2001 02:46:23 +0000 Subject: * win/mkd.bat: * win/rmd.bat: Removed -kb CVS attribute and added changes from Llyod Lim for better stability. [Patch #456761] * win/rules.vc(new): * win/buildall.vc.bat(new): * win/makefile.vc: large rewrite following Tcl's makefile.vc as a guide and Patch #456761. Appears BugFree(tm). --- win/buildall.vc.bat | 13 + win/makefile.vc | 939 +++++++++++++++++++++++++++++++--------------------- win/mkd.bat | 35 +- win/rmd.bat | 47 ++- win/rules.vc | 185 +++++++++++ 5 files changed, 799 insertions(+), 420 deletions(-) create mode 100755 win/buildall.vc.bat create mode 100644 win/rules.vc diff --git a/win/buildall.vc.bat b/win/buildall.vc.bat new file mode 100755 index 0000000..279ea45 --- /dev/null +++ b/win/buildall.vc.bat @@ -0,0 +1,13 @@ +@echo off +if "%MSVCDir%" == "" call c:\dev\devstudio60\vc98\bin\vcvars32.bat + +set INSTALLDIR=C:\tclTestArea +set TCLDIR=..\..\tcl_head + +nmake -nologo -f makefile.vc release +nmake -nologo -f makefile.vc release OPTS=static +nmake -nologo -f makefile.vc core OPTS=static,msvcrt +nmake -nologo -f makefile.vc release OPTS=static,threads +nmake -nologo -f makefile.vc core OPTS=static,msvcrt,threads +nmake -nologo -f makefile.vc release OPTS=threads +pause diff --git a/win/makefile.vc b/win/makefile.vc index a41d609..1fd358e 100644 --- a/win/makefile.vc +++ b/win/makefile.vc @@ -1,494 +1,643 @@ -# Visual C++ makefile +#------------------------------------------------------------------------------ +# makefile.vc -- +# +# Microsoft Visual C++ makefile for use with nmake.exe v1.62+ (VC++ 5.0+) # # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# Copyright (c) 1995-1997 Sun Microsystems, Inc. +# Copyright (c) 1995-1996 Sun Microsystems, Inc. # Copyright (c) 1998-2000 Ajuba Solutions. # Copyright (c) 2001 ActiveState Corporation. +# Copyright (c) 2001 Tomasoft Engineering. # -# RCS: @(#) $Id: makefile.vc,v 1.43 2001/11/10 00:58:16 hobbs Exp $ - -# Does not depend on the presence of any environment variables in -# order to compile tcl; all needed information is derived from -# location of the compiler directories. +#------------------------------------------------------------------------------ +# RCS: @(#) $Id: makefile.vc,v 1.44 2001/11/13 02:46:23 davygrvy Exp $ +#------------------------------------------------------------------------------ + +!if "$(MSVCDIR)" == "" +MSG = ^ +You'll need to run vcvars32.bat from Developer Studio, first, to setup^ +the environment. Jump to this line to read the new instructions. +!error $(MSG) +!endif +#------------------------------------------------------------------------------ +# HOW TO USE this makefile: # -# Project directories +# 1) It is now necessary to have MSVCDir set in the environment. This is used +# as a check to see if vcvars32.bat had been run prior to running nmake or +# during the install of Microsoft Developer Studio, MSVCDir had been set +# globally and the PATH adjusted. Either way is valid. # -# ROOT = top of source tree +# You'll need to run vcvars32.bat contained in the MsDev's vc(98)/bin +# directory to setup the proper environment, if needed, for your current +# setup. This is a needed bootstrap requirement and allows the swapping of +# different environments to be easier. # -# TMPDIR = location where .obj files should be stored during build +# 2) To use the Platform SDK (not expressly needed), run setenv.bat after +# vcvars32.bat according to the instructions for it. This can also turn on +# the 64-bit compiler, if your SDK has it. # -# TOOLS32 = location of VC++ 32-bit development tools. Note that the -# VC++ 2.0 header files are broken, so you need to use the -# ones that come with the developer network CD's, or later -# versions of VC++. +# 3) Targets are: +# release -- builds the core, the shell and the dlls. (default) +# dlls -- just builds the windows extensions and the 16-bit DOS +# pipe/thunk driver. +# shell -- Just builds the shell and the core. +# core -- Only builds the core. +# all -- builds everything. +# test -- builds and runs the test suite. +# tcltest -- just builds the binaries for the test suite. +# install -- installs the built binaries and libraries to $(INSTALLDIR) +# as the root of the install tree. +# plugin -- [currently out-dated]. +# clean -- removes the contents of $(TMP_DIR) +# hose -- removes the contents of $(TMP_DIR) and $(OUT_DIR) +# genstubs -- rebuilds the Stubs table and support files (dev only). +# winhelp -- builds the windows .hlp file for Tcl from the troff man +# files. # -# TCLDIR = location of top of Tcl source heirarchy +# 4) Macros usable on the commandline: +# TCLDIR= +# Sets the location for where to find the Tcl headers and +# libraries. The install point is assumed when not +# specified. This can be the source tree or an installation. # +# INSTALLDIR= +# Sets where to install Tcl from the built binaries. +# C:\Progra~1\Tcl is assumed when not specified. +# +# OPTS=static,msvcrt,threads,symbols,profile,none +# Sets special options for the core. The default is for none. +# Any combination of the above may be used (comma separated). +# 'none' will over-ride everything to nothing. +# +# static = Builds a static library of the core instead of a +# dll. The shell will be static (and large), as well. +# msvcrt = Effects the static option only to switch it from +# using libcmt(d) as the C runtime [by default] to +# msvcrt(d). This is useful for static embedding +# support. +# linkexten = Effects the static option only to switch +# tclshXX.exe to have the dde and reg extension linked +# inside it. +# threads = Turns on full multithreading support. +# symbols = Adds symbols for step debugging. +# profile = Adds profiling hooks. Map file is assumed. +# +# STATS=memdbg,compdbg,none +# Sets optional memory and bytecode compiler debugging code added +# to the core. The default is for none. Any combination of the +# above may be used (comma separated). 'none' will over-ride +# everything to nothing. +# +# memdbg = Enables the debugging memory allocator. +# compdbg = Enables byte compilation logging. +# +# MACHINE=(IX86|IA64|ALPHA) +# Set the machine type used for the compiler, linker, and +# resource compiler. This hook is needed to tell the tools +# when alternate platforms are requested. IX86 is the default +# when not specified. +# +# TMP_DIR= +# OUT_DIR= +# Hooks to allow the intermediate and output directories to be +# changed. $(OUT_DIR) is assumed to be +# $(BINROOT)\(Release|Debug) based on if symbols are requested. +# $(TMP_DIR) will de $(OUT_DIR)\ by default. +# +# TESTPAT= +# Reads the tests requested to be run from this file. +# +# 5) Examples: +# +# Basic syntax of calling nmake looks like this: +# nmake [-nologo] -f makefile.vc [target|macrodef [target|macrodef] [...]] +# +# Standard (no frills) +# c:\tk_src\win\>c:\progra~1\micros~1\vc98\bin\vcvars32.bat +# Setting environment for using Microsoft Visual C++ tools. +# c:\tk_src\win\>nmake -f makefile.vc release +# c:\tk_src\win\>nmake -f makefile.vc install INSTALLDIR=c:\progra~1\tcl +# +# Building for Win64 +# c:\tk_src\win\>c:\progra~1\micros~1\vc98\bin\vcvars32.bat +# Setting environment for using Microsoft Visual C++ tools. +# c:\tk_src\win\>c:\progra~1\platfo~1\setenv.bat /pre64 /RETAIL +# Targeting Windows pre64 RETAIL +# c:\tk_src\win\>nmake -f makefile.vc MACHINE=IA64 +# +# I've found the following batchfile useful for building everything: +# +# if "%MSVCDir%" == "" call c:\progra~1\micros~1\vc98\bin\vcvars32.bat +# set INSTALLDIR=C:\tclTestArea +# nmake -nologo -f makefile.vc release winhelp +# nmake -nologo -f makefile.vc release OPTS=static,linkexten TCLDIR=%1 +# nmake -nologo -f makefile.vc core dlls OPTS=static,msvcrt TCLDIR=%1 +# nmake -nologo -f makefile.vc core OPTS=static,threads TCLDIR=%1 +# nmake -nologo -f makefile.vc core OPTS=static,msvcrt,threads TCLDIR=%1 +# nmake -nologo -f makefile.vc shell OPTS=threads TCLDIR=%1 +# pause +# +# +#------------------------------------------------------------------------------ +#============================================================================== +############################################################################### -ROOT = .. -TCLDIR = ..\..\tcl8.4 -INSTALLDIR = C:\Progra~1\tcl - -# Set this to the appropriate value of /MACHINE: for your platform -# Choices: IX86, IA64, ALPHA -MACHINE = IX86 - -!IF "$(MACHINE)" == "IA64" - -# IA64 support is based on the standard setup with v2 of the -# Microsoft SDK for XP, RC1 - -TOOLS32 = C:\Progra~1\Microsoft SDK -TOOLS32_rc = C:\Progra~1\Microsoft SDK - -cc32 = "$(TOOLS32)\bin\Win64\cl.exe" -link32 = "$(TOOLS32)\bin\Win64\link.exe" -libpath32 = /LIBPATH:"$(TOOLS32)\lib\IA64" -lib32 = "$(TOOLS32)\bin\Win64\lib.exe" - -!ELSE -# Visual Studio 5 default -TOOLS32 = C:\Progra~1\devstudio\vc -TOOLS32_rc = C:\Progra~1\devstudio\sharedide +# //==================================================================\\ +# >>[ -> Do not modify below this line. <- ]<< +# >>[ Please, use the commandline macros to modify how Tcl is built. ]<< +# >>[ If you need more features, send us a patch for more macros. ]<< +# \\==================================================================// -# Visual Studio 6 default -#TOOLS32 = C:\Progra~1\Microsoft Visual Studio\VC98 -#TOOLS32_rc = C:\Progra~1\Microsoft Visual Studio\common\MSDev98 -cc32 = "$(TOOLS32)\bin\cl.exe" -link32 = "$(TOOLS32)\bin\link.exe" -libpath32 = /LIBPATH:"$(TOOLS32)\lib" -lib32 = "$(TOOLS32)\bin\lib.exe" +############################################################################### +#============================================================================== +#------------------------------------------------------------------------------ -!ENDIF +!if !exist("makefile.vc") +MSG = ^ +You must run this makefile only from the directory it is in.^ +Please `cd` to its location first. +!error $(MSG) +!endif -rc32 = "$(TOOLS32_rc)\bin\rc.exe" -include32 = -I"$(TOOLS32)\include" +PROJECT = tk +!include "rules.vc" -# Uncomment the following line to compile with thread support -#THREADDEFINES = -DTCL_THREADS=1 +!if !defined(TCLDIR) +!if exist($(INSTALLDIR)\include\tcl.h) +TCLINSTALL = 1 +TCLDIR = $(INSTALLDIR) +!else +!error Don't know where tcl.h is. Set the TCLDIR macro. +!endif +!else +!if exist($(TCLDIR)\include\tcl.h) +TCLINSTALL = 1 +!elseif exist($(TCLDIR)\generic\tcl.h) +TCLINSTALL = 0 +!else +!error Don't know where tcl.h is. Set the TCLDIR macro. +!endif +!endif -# Set NODEBUG to 0 to compile with symbols -NODEBUG = 1 +STUBPREFIX = $(PROJECT)stub +DOTVERSION = 8.4 +VERSION = $(DOTVERSION:.=) +WISHNAMEPREFIX = wish -# uncomment the following two lines to compile with TCL_MEM_DEBUG -#DEBUGDEFINES =-DTCL_MEM_DEBUG -#DEBUGDEFINES = -DTCL_MEM_DEBUG -DUSE_TCLALLOC=0 -DPURIFY +BINROOT = . +ROOT = .. -###################################################################### -# Do not modify below this line -###################################################################### +TCLIMPLIBNAME = tcl$(VERSION)$(SUFX).lib +TCLLIBNAME = tcl$(VERSION)$(SUFX).$(EXT) +TCLSTUBLIBNAME = tclstub$(VERSION).lib + +TKIMPLIB = $(OUT_DIR)\$(PROJECT)$(VERSION)$(SUFX).lib +TKLIBNAME = $(PROJECT)$(VERSION)$(SUFX).$(EXT) +TKLIB = $(OUT_DIR)\$(TKLIBNAME) + +TKSTUBLIBNAME = $(STUBPREFIX)$(VERSION).lib +TKSTUBLIB = $(OUT_DIR)\$(TKSTUBLIBNAME) + +!if $(TCLINSTALL) +TCLSH = $(INSTALLDIR)\bin\$(TCLNAMEPREFIX)sh$(VERSION)$(SUFX).exe +TCLSTUBLIB = $(INSTALLDIR)\lib\$(TCLSTUBLIBNAME) +TCLIMPLIB = $(INSTALLDIR)\lib\$(TCLIMPLIBNAME) +TCL_LIBRARY = $(INSTALLDIR)\lib +!else +TCLSH = $(TCLDIR)\win\$(BUILDDIRTOP)\$(TCLNAMEPREFIX)sh$(VERSION)$(SUFX).exe +TCLSTUBLIB = $(TCLDIR)\win\$(BUILDDIRTOP)\$(TCLSTUBLIBNAME) +TCLIMPLIB = $(TCLDIR)\win\$(BUILDDIRTOP)\$(TCLIMPLIBNAME) +TCL_LIBRARY = $(TCLDIR)\library +!endif -TCLNAMEPREFIX = tcl -TKNAMEPREFIX = tk -WISHNAMEPREFIX = wish -VERSION = 84 -DOTVERSION = 8.4 +WISH = $(OUT_DIR)\$(WISHNAMEPREFIX)$(VERSION)$(SUFX).exe +WISHC = $(OUT_DIR)\$(WISHNAMEPREFIX)c$(VERSION)$(SUFX).exe -TCLSTUBPREFIX = $(TCLNAMEPREFIX)stub -TKSTUBPREFIX = $(TKNAMEPREFIX)stub +#TKHLPBASE = $(PROJECT)$(VERSION) +#TKHLP = $(OUT_DIR)\$(TKHLPBASE).hlp +#TKHLPCNT = $(OUT_DIR)\$(TKHLPBASE).cnt +TKTEST = $(OUT_DIR)\$(PROJECT)test.exe +CAT32 = $(OUT_DIR)\cat32.exe +RMDIR = .\rmd.bat +MKDIR = .\mkd.bat +RM = del -BINROOT = . -!IF "$(NODEBUG)" == "1" -TMPDIRNAME = Release -DBGX = -!ELSE -TMPDIRNAME = Debug -DBGX = d -!ENDIF -TMPDIR = $(BINROOT)\$(TMPDIRNAME) -OUTDIRNAME = $(TMPDIRNAME) -OUTDIR = $(TMPDIR) - -TCLLIB = $(TCLNAMEPREFIX)$(VERSION)$(DBGX).lib -TCLPLUGINLIB = $(TCLNAMEPREFIX)$(VERSION)p.lib -TCLSTUBLIB = $(TCLSTUBPREFIX)$(VERSION)$(DBGX).lib -TKDLLNAME = $(TKNAMEPREFIX)$(VERSION)$(DBGX).dll -TKDLL = $(OUTDIR)\$(TKDLLNAME) -TKLIB = $(OUTDIR)\$(TKNAMEPREFIX)$(VERSION)$(DBGX).lib -TKSTUBLIBNAME = $(TKSTUBPREFIX)$(VERSION)$(DBGX).lib -TKSTUBLIB = $(OUTDIR)\$(TKSTUBLIBNAME) -TKPLUGINDLLNAME = $(TKNAMEPREFIX)$(VERSION)p$(DBG).dll -TKPLUGINDLL = $(OUTDIR)\$(TKPLUGINDLLNAME) -TKPLUGINLIB = $(OUTDIR)\$(TKNAMEPREFIX)$(VERSION)p$(DBGX).lib - -WISH = $(OUTDIR)\$(WISHNAMEPREFIX)$(VERSION)$(DBGX).exe -WISHC = $(OUTDIR)\$(WISHNAMEPREFIX)c$(VERSION)$(DBGX).exe -WISHP = $(OUTDIR)\$(WISHNAMEPREFIX)p$(VERSION)$(DBGX).exe -TKTEST = $(OUTDIR)\$(TKNAMEPREFIX)test.exe -CAT32 = $(TMPDIR)\cat32.exe - -BIN_INSTALL_DIR = $(INSTALLDIR)\bin -INCLUDE_INSTALL_DIR = $(INSTALLDIR)\include -LIB_INSTALL_DIR = $(INSTALLDIR)\lib -SCRIPT_INSTALL_DIR = $(LIB_INSTALL_DIR)\tk$(DOTVERSION) +LIB_INSTALL_DIR = $(INSTALLDIR)\lib +BIN_INSTALL_DIR = $(INSTALLDIR)\bin +DOC_INSTALL_DIR = $(INSTALLDIR)\doc +SCRIPT_INSTALL_DIR = $(INSTALLDIR)\lib\tcl$(DOTVERSION) +INCLUDE_INSTALL_DIR = $(INSTALLDIR)\include WISHOBJS = \ - $(TMPDIR)\winMain.obj + $(TMP_DIR)\winMain.obj \ + $(TMP_DIR)\wish.res TKTESTOBJS = \ - $(TMPDIR)\tkTest.obj \ - $(TMPDIR)\tkSquare.obj \ - $(TMPDIR)\testMain.obj \ - $(TMPDIR)\tkWinTest.obj \ + $(TMP_DIR)\tkTest.obj \ + $(TMP_DIR)\tkSquare.obj \ + $(TMP_DIR)\testMain.obj \ + $(TMP_DIR)\tkWinTest.obj \ $(TCLLIBDIR)\tclThreadTest.obj XLIBOBJS = \ - $(TMPDIR)\xcolors.obj \ - $(TMPDIR)\xdraw.obj \ - $(TMPDIR)\xgc.obj \ - $(TMPDIR)\ximage.obj \ - $(TMPDIR)\xutil.obj + $(TMP_DIR)\xcolors.obj \ + $(TMP_DIR)\xdraw.obj \ + $(TMP_DIR)\xgc.obj \ + $(TMP_DIR)\ximage.obj \ + $(TMP_DIR)\xutil.obj TKOBJS = \ - $(TMPDIR)\tkConsole.obj \ - $(TMPDIR)\tkUnixMenubu.obj \ - $(TMPDIR)\tkUnixScale.obj \ + $(TMP_DIR)\tkConsole.obj \ + $(TMP_DIR)\tkUnixMenubu.obj \ + $(TMP_DIR)\tkUnixScale.obj \ $(XLIBOBJS) \ - $(TMPDIR)\tkWin3d.obj \ - $(TMPDIR)\tkWin32Dll.obj \ - $(TMPDIR)\tkWinButton.obj \ - $(TMPDIR)\tkWinClipboard.obj \ - $(TMPDIR)\tkWinColor.obj \ - $(TMPDIR)\tkWinConfig.obj \ - $(TMPDIR)\tkWinCursor.obj \ - $(TMPDIR)\tkWinDialog.obj \ - $(TMPDIR)\tkWinDraw.obj \ - $(TMPDIR)\tkWinEmbed.obj \ - $(TMPDIR)\tkWinFont.obj \ - $(TMPDIR)\tkWinImage.obj \ - $(TMPDIR)\tkWinInit.obj \ - $(TMPDIR)\tkWinKey.obj \ - $(TMPDIR)\tkWinMenu.obj \ - $(TMPDIR)\tkWinPixmap.obj \ - $(TMPDIR)\tkWinPointer.obj \ - $(TMPDIR)\tkWinRegion.obj \ - $(TMPDIR)\tkWinScrlbr.obj \ - $(TMPDIR)\tkWinSend.obj \ - $(TMPDIR)\tkWinWindow.obj \ - $(TMPDIR)\tkWinWm.obj \ - $(TMPDIR)\tkWinX.obj \ - $(TMPDIR)\stubs.obj \ - $(TMPDIR)\tk3d.obj \ - $(TMPDIR)\tkArgv.obj \ - $(TMPDIR)\tkAtom.obj \ - $(TMPDIR)\tkBind.obj \ - $(TMPDIR)\tkBitmap.obj \ - $(TMPDIR)\tkButton.obj \ - $(TMPDIR)\tkCanvArc.obj \ - $(TMPDIR)\tkCanvBmap.obj \ - $(TMPDIR)\tkCanvImg.obj \ - $(TMPDIR)\tkCanvLine.obj \ - $(TMPDIR)\tkCanvPoly.obj \ - $(TMPDIR)\tkCanvPs.obj \ - $(TMPDIR)\tkCanvText.obj \ - $(TMPDIR)\tkCanvUtil.obj \ - $(TMPDIR)\tkCanvWind.obj \ - $(TMPDIR)\tkCanvas.obj \ - $(TMPDIR)\tkClipboard.obj \ - $(TMPDIR)\tkCmds.obj \ - $(TMPDIR)\tkColor.obj \ - $(TMPDIR)\tkConfig.obj \ - $(TMPDIR)\tkCursor.obj \ - $(TMPDIR)\tkEntry.obj \ - $(TMPDIR)\tkError.obj \ - $(TMPDIR)\tkEvent.obj \ - $(TMPDIR)\tkFileFilter.obj \ - $(TMPDIR)\tkFocus.obj \ - $(TMPDIR)\tkFont.obj \ - $(TMPDIR)\tkFrame.obj \ - $(TMPDIR)\tkGC.obj \ - $(TMPDIR)\tkGeometry.obj \ - $(TMPDIR)\tkGet.obj \ - $(TMPDIR)\tkGrab.obj \ - $(TMPDIR)\tkGrid.obj \ - $(TMPDIR)\tkImage.obj \ - $(TMPDIR)\tkImgBmap.obj \ - $(TMPDIR)\tkImgGIF.obj \ - $(TMPDIR)\tkImgPPM.obj \ - $(TMPDIR)\tkImgPhoto.obj \ - $(TMPDIR)\tkImgUtil.obj \ - $(TMPDIR)\tkListbox.obj \ - $(TMPDIR)\tkMacWinMenu.obj \ - $(TMPDIR)\tkMain.obj \ - $(TMPDIR)\tkMenu.obj \ - $(TMPDIR)\tkMenubutton.obj \ - $(TMPDIR)\tkMenuDraw.obj \ - $(TMPDIR)\tkMessage.obj \ - $(TMPDIR)\tkObj.obj \ - $(TMPDIR)\tkOldConfig.obj \ - $(TMPDIR)\tkOption.obj \ - $(TMPDIR)\tkPack.obj \ - $(TMPDIR)\tkPlace.obj \ - $(TMPDIR)\tkPointer.obj \ - $(TMPDIR)\tkRectOval.obj \ - $(TMPDIR)\tkScale.obj \ - $(TMPDIR)\tkScrollbar.obj \ - $(TMPDIR)\tkSelect.obj \ - $(TMPDIR)\tkText.obj \ - $(TMPDIR)\tkTextBTree.obj \ - $(TMPDIR)\tkTextDisp.obj \ - $(TMPDIR)\tkTextImage.obj \ - $(TMPDIR)\tkTextIndex.obj \ - $(TMPDIR)\tkTextMark.obj \ - $(TMPDIR)\tkTextTag.obj \ - $(TMPDIR)\tkTextWind.obj \ - $(TMPDIR)\tkTrig.obj \ - $(TMPDIR)\tkUtil.obj \ - $(TMPDIR)\tkVisual.obj \ - $(TMPDIR)\tkStubInit.obj \ - $(TMPDIR)\tkStubLib.obj \ - $(TMPDIR)\tkWindow.obj - -TKSTUBOBJS = $(TMPDIR)\tkStubLib.obj \ - $(TMPDIR)\tkStubImg.obj + $(TMP_DIR)\tkWin3d.obj \ + $(TMP_DIR)\tkWin32Dll.obj \ + $(TMP_DIR)\tkWinButton.obj \ + $(TMP_DIR)\tkWinClipboard.obj \ + $(TMP_DIR)\tkWinColor.obj \ + $(TMP_DIR)\tkWinConfig.obj \ + $(TMP_DIR)\tkWinCursor.obj \ + $(TMP_DIR)\tkWinDialog.obj \ + $(TMP_DIR)\tkWinDraw.obj \ + $(TMP_DIR)\tkWinEmbed.obj \ + $(TMP_DIR)\tkWinFont.obj \ + $(TMP_DIR)\tkWinImage.obj \ + $(TMP_DIR)\tkWinInit.obj \ + $(TMP_DIR)\tkWinKey.obj \ + $(TMP_DIR)\tkWinMenu.obj \ + $(TMP_DIR)\tkWinPixmap.obj \ + $(TMP_DIR)\tkWinPointer.obj \ + $(TMP_DIR)\tkWinRegion.obj \ + $(TMP_DIR)\tkWinScrlbr.obj \ + $(TMP_DIR)\tkWinSend.obj \ + $(TMP_DIR)\tkWinWindow.obj \ + $(TMP_DIR)\tkWinWm.obj \ + $(TMP_DIR)\tkWinX.obj \ + $(TMP_DIR)\stubs.obj \ + $(TMP_DIR)\tk3d.obj \ + $(TMP_DIR)\tkArgv.obj \ + $(TMP_DIR)\tkAtom.obj \ + $(TMP_DIR)\tkBind.obj \ + $(TMP_DIR)\tkBitmap.obj \ + $(TMP_DIR)\tkButton.obj \ + $(TMP_DIR)\tkCanvArc.obj \ + $(TMP_DIR)\tkCanvBmap.obj \ + $(TMP_DIR)\tkCanvImg.obj \ + $(TMP_DIR)\tkCanvLine.obj \ + $(TMP_DIR)\tkCanvPoly.obj \ + $(TMP_DIR)\tkCanvPs.obj \ + $(TMP_DIR)\tkCanvText.obj \ + $(TMP_DIR)\tkCanvUtil.obj \ + $(TMP_DIR)\tkCanvWind.obj \ + $(TMP_DIR)\tkCanvas.obj \ + $(TMP_DIR)\tkClipboard.obj \ + $(TMP_DIR)\tkCmds.obj \ + $(TMP_DIR)\tkColor.obj \ + $(TMP_DIR)\tkConfig.obj \ + $(TMP_DIR)\tkCursor.obj \ + $(TMP_DIR)\tkEntry.obj \ + $(TMP_DIR)\tkError.obj \ + $(TMP_DIR)\tkEvent.obj \ + $(TMP_DIR)\tkFileFilter.obj \ + $(TMP_DIR)\tkFocus.obj \ + $(TMP_DIR)\tkFont.obj \ + $(TMP_DIR)\tkFrame.obj \ + $(TMP_DIR)\tkGC.obj \ + $(TMP_DIR)\tkGeometry.obj \ + $(TMP_DIR)\tkGet.obj \ + $(TMP_DIR)\tkGrab.obj \ + $(TMP_DIR)\tkGrid.obj \ + $(TMP_DIR)\tkImage.obj \ + $(TMP_DIR)\tkImgBmap.obj \ + $(TMP_DIR)\tkImgGIF.obj \ + $(TMP_DIR)\tkImgPPM.obj \ + $(TMP_DIR)\tkImgPhoto.obj \ + $(TMP_DIR)\tkImgUtil.obj \ + $(TMP_DIR)\tkListbox.obj \ + $(TMP_DIR)\tkMacWinMenu.obj \ + $(TMP_DIR)\tkMain.obj \ + $(TMP_DIR)\tkMenu.obj \ + $(TMP_DIR)\tkMenubutton.obj \ + $(TMP_DIR)\tkMenuDraw.obj \ + $(TMP_DIR)\tkMessage.obj \ + $(TMP_DIR)\tkObj.obj \ + $(TMP_DIR)\tkOldConfig.obj \ + $(TMP_DIR)\tkOption.obj \ + $(TMP_DIR)\tkPack.obj \ + $(TMP_DIR)\tkPlace.obj \ + $(TMP_DIR)\tkPointer.obj \ + $(TMP_DIR)\tkRectOval.obj \ + $(TMP_DIR)\tkScale.obj \ + $(TMP_DIR)\tkScrollbar.obj \ + $(TMP_DIR)\tkSelect.obj \ + $(TMP_DIR)\tkText.obj \ + $(TMP_DIR)\tkTextBTree.obj \ + $(TMP_DIR)\tkTextDisp.obj \ + $(TMP_DIR)\tkTextImage.obj \ + $(TMP_DIR)\tkTextIndex.obj \ + $(TMP_DIR)\tkTextMark.obj \ + $(TMP_DIR)\tkTextTag.obj \ + $(TMP_DIR)\tkTextWind.obj \ + $(TMP_DIR)\tkTrig.obj \ + $(TMP_DIR)\tkUtil.obj \ + $(TMP_DIR)\tkVisual.obj \ + $(TMP_DIR)\tkStubInit.obj \ + $(TMP_DIR)\tkStubLib.obj \ + $(TMP_DIR)\tkWindow.obj \ +!if !$(STATIC_BUILD) + $(TMP_DIR)\tk.res +!endif + +TKSTUBOBJS = \ + $(TMP_DIR)\tkStubLib.obj \ + $(TMP_DIR)\tkStubImg.obj + WINDIR = $(ROOT)\win GENERICDIR = $(ROOT)\generic XLIBDIR = $(ROOT)\xlib BITMAPDIR = $(ROOT)\bitmaps -TCLLIBDIR = $(TCLDIR)\win\$(OUTDIRNAME) RCDIR = $(WINDIR)\rc -TK_INCLUDES = -I$(WINDIR) -I$(GENERICDIR) -I$(BITMAPDIR) -I$(XLIBDIR) \ - -I$(TCLDIR)\generic -TK_DEFINES = $(DEBUGDEFINES) $(THREADDEFINES) +!if $(TCLINSTALL) +TCL_INCLUDES = -I "$(TCLDIR)\include" +!else +TCL_INCLUDES = -I "$(TCLDIR)\win" -I "$(TCLDIR)\generic" +!endif +TK_INCLUDES = -I"$(WINDIR)" -I"$(GENERICDIR)" -I"$(BITMAPDIR)" -I"$(XLIBDIR)" \ + $(TCL_INCLUDES) + +TK_DEFINES = $(OPTDEFINES) -###################################################################### + +#--------------------------------------------------------------------- # Compile flags -###################################################################### +#--------------------------------------------------------------------- -!IF "$(NODEBUG)" == "1" -!IF "$(MACHINE)" == "IA64" -cdebug = -O2i -Gs -!ELSE -# NOTE: Due to a bug in MSVC, we cannot use -O2 here or Tk starts to misbehave. -cdebug = -Oti -Gs -GD -!ENDIF -!ELSE IF "$(MACHINE)" == "IA64" -cdebug = -Od -Zi -!ELSE -cdebug = -Z7 -Od -WX -!ENDIF +!if $(DEBUG) +!if "$(MACHINE)" == "IA64" +cdebug = -Od -Zi +!else +cdebug = -Z7 -Od -WX +!endif +!else +# This cranks the optimization level to maximize speed +cdebug = -O2 +!endif # declarations common to all compiler options -cflags = -c -W3 -nologo -Fp$(TMPDIR)\ -YX -cvarsdll = -MD$(DBGX) +cflags = -nologo -c -W3 -Fp$(TMP_DIR)^\ -YX + +!if $(MSVCRT) +crt = -MD$(DBGX) +!else +crt = -MT$(DBGX) +!endif + +BASE_CLFAGS = $(cdebug) $(cflags) $(crt) $(TK_INCLUDES) +TK_CFLAGS = $(BASE_CLFAGS) $(TK_DEFINES) -DUSE_TCL_STUBS +CON_CFLAGS = $(cdebug) $(cflags) $(crt) -DCONSOLE +WISH_CFLAGS = $(BASE_CLFAGS) $(TK_DEFINES) -CON_CFLAGS = $(cdebug) $(cflags) $(include32) -DCONSOLE -TK_CFLAGS = $(cdebug) $(cflags) $(cvarsdll) $(include32) \ - $(TK_INCLUDES) $(TK_DEFINES) -DUSE_TCL_STUBS -WISH_CFLAGS = $(cdebug) $(cflags) $(cvarsdll) $(include32) \ - $(TK_INCLUDES) $(TK_DEFINES) -###################################################################### +#--------------------------------------------------------------------- # Link flags -###################################################################### +#--------------------------------------------------------------------- -!IF "$(NODEBUG)" == "1" -ldebug = /RELEASE -!ELSE +!if $(DEBUG) ldebug = -debug:full -debugtype:cv -!ENDIF +!else +ldebug = -release +!endif # declarations common to all linker options -lcommon = /NODEFAULTLIB /RELEASE /NOLOGO -lflags = $(lcommon) /MACHINE:$(MACHINE) $(libpath32) +lflags = -nologo -machine:$(MACHINE) # declarations for use on Intel i386, i486, and Pentium systems !IF "$(MACHINE)" == "IX86" DLLENTRY = @12 +dlllflags = $(lflags) -entry:_DllMainCRTStartup$(DLLENTRY) -dll +!ELSE IF "$(MACHINE)" == "IA64" +DLLENTRY = @12 +dlllflags = $(lflags) -dll +!ELSE +dlllflags = $(lflags) -entry:_DllMainCRTStartup$(DLLENTRY) -dll !ENDIF -conlflags = $(lflags) -subsystem:console -entry:mainCRTStartup -guilflags = $(lflags) -subsystem:windows -entry:WinMainCRTStartup -dlllflags = $(lflags) -entry:_DllMainCRTStartup$(DLLENTRY) -dll +conlflags = $(lflags) -subsystem:console -entry:mainCRTStartup +guilflags = $(lflags) -subsystem:windows -entry:WinMainCRTStartup -!IF "$(MACHINE)" == "PPC" -libc = libc$(DBGX).lib -libcdll = crtdll$(DBGX).lib -!ELSE -libc = libc$(DBGX).lib oldnames.lib -libcdll = msvcrt$(DBGX).lib oldnames.lib -!ENDIF +baselibs = kernel32.lib advapi32.lib user32.lib +guilibs = $(baselibs) gdi32.lib comdlg32.lib winspool.lib imm32.lib comctl32.lib + + +#--------------------------------------------------------------------- +# TkTest flags +#--------------------------------------------------------------------- + +!if "$(TESTPAT)" != "" +TESTFLAGS = -file $(TESTPAT) +!endif -baselibs = kernel32.lib $(optlibs) advapi32.lib -winlibs = $(baselibs) user32.lib gdi32.lib comdlg32.lib winspool.lib \ - imm32.lib comctl32.lib -guilibs = $(libc) $(winlibs) -conlibs = $(libc) $(baselibs) -guilibsdll = $(libcdll) $(winlibs) -###################################################################### +#--------------------------------------------------------------------- # Project specific targets -###################################################################### +#--------------------------------------------------------------------- -all: setup $(WISH) $(CAT32) -install: install-binaries install-libraries -plugin: setup $(TKPLUGINDLL) $(WISHP) -tktest: setup $(TKTEST) $(CAT32) -test: setup $(TKTEST) $(TKLIB) $(CAT32) - set TCL_LIBRARY=$(TCLDIR)/library - set PATH=$(TCLDIR)\win\$(TMPDIRNAME);$(PATH) - $(TKTEST) $(ROOT)/tests/all.tcl | $(CAT32) +release: setup $(WISH) +all: release $(CAT32) +core: setup $(TKLIB) +install: install-binaries install-libraries +tktest: setup $(TKTEST) $(CAT32) + + +test: setup $(TKTEST) $(TKLIB) $(CAT32) + set TCL_LIBRARY=$(TCL_LIBRARY) +!if $(TCLINSTALL) + set PATH=$(TCLDIR)\bin;$(PATH) +!else + set PATH=$(TCLDIR)\win\$(BUILDDIRTOP);$(PATH) +!endif +!if "$(OS)" == "Windows_NT" || "$(MSVCDIR)" == "IDE" + $(TKTEST) $(ROOT)/tests/all.tcl $(TESTFLAGS) | $(CAT32) +!else + $(TKTEST) $(ROOT)/tests/all.tcl $(TESTFLAGS) | $(CAT32) +!endif runtest: setup $(TKTEST) $(TKLIB) $(CAT32) - set TCL_LIBRARY=$(TCLDIR)/library - set PATH=$(TCLDIR)\win\$(TMPDIRNAME);$(PATH) + set TCL_LIBRARY=$(TCL_LIBRARY) +!if $(TCLINSTALL) + set PATH=$(TCLDIR)\bin;$(PATH) +!else + set PATH=$(TCLDIR)\win\$(BUILDDIRTOP);$(PATH) +!endif $(TKTEST) -console-wish : all $(WISHC) - -stubs: - $(TCLDIR)\win\$(TMPDIRNAME)\tclsh$(VERSION)$(DBGX) \ - $(TCLDIR)\tools\genStubs.tcl $(GENERICDIR) \ - $(GENERICDIR)\tk.decls $(GENERICDIR)\tkInt.decls +rundemo: setup $(TKTEST) $(TKLIB) $(CAT32) + set TCL_LIBRARY=$(TCL_LIBRARY) +!if $(TCLINSTALL) + set PATH=$(TCLDIR)\bin;$(PATH) +!else + set PATH=$(TCLDIR)\win\$(BUILDDIRTOP);$(PATH) +!endif + $(TKTEST) $(ROOT)\library\demos\widget setup: - @mkd $(TMPDIR) - @mkd $(OUTDIR) + @$(MKDIR) $(TMP_DIR) + @$(MKDIR) $(OUT_DIR) + +console-wish : $(WISHC) + +!if !$(STATIC_BUILD) +$(TKIMPLIB): $(TKLIB) +!endif + +$(TKLIB): $(TKOBJS) +!if $(STATIC_BUILD) + $(lib32) -nologo -out:$@ @<< +$** +<< +!else + $(link32) $(ldebug) $(dlllflags) -out:$@ $(guilibs) $(TCLSTUBLIB) @<< +$** +<< + -@del $*.exp +!endif + + +$(TKSTUBLIB): $(TKSTUBOBJS) + $(lib32) -nologo -out:$@ $** + + +$(WISH): $(WISHOBJS) $(TKIMPLIB) + $(link32) $(ldebug) $(guilflags) -out:$@ $(guilibs) $(TCLIMPLIB) $** + +$(WISHC): $(WISHOBJS) $(TKIMPLIB) + $(link32) $(ldebug) $(conlflags) -out:$@ $(guilibs) $(TCLIMPLIB) $** + +$(TKTEST): $(TKTESTOBJS) $(TKIMPLIB) + $(link32) $(ldebug) $(guilflags) -out:$@ $(guilibs) $(TCLIMPLIB) $** + + +$(CAT32): $(WINDIR)\cat.c + $(cc32) $(CON_CFLAGS) -Fo$(TMP_DIR)\ $? + $(link32) $(conlflags) -out:$@ -stack:16384 $(TMP_DIR)\cat.obj $(baselibs) install-binaries: - @mkd "$(BIN_INSTALL_DIR)" + @$(MKDIR) "$(BIN_INSTALL_DIR)" copy $(TKDLL) "$(BIN_INSTALL_DIR)" copy $(WISH) "$(BIN_INSTALL_DIR)" - @mkd "$(LIB_INSTALL_DIR)" - copy $(TKLIB) "$(LIB_INSTALL_DIR)" + @$(MKDIR) "$(LIB_INSTALL_DIR)" +!if "$(TKLIB)" != "$(TKIMPLIB)" + @copy "$(TKLIB)" "$(BIN_INSTALL_DIR)" +!endif + @copy $(TKIMPLIB) "$(LIB_INSTALL_DIR)" + @if exist $(TKHLP) $(MKDIR) "$(DOC_INSTALL_DIR)" + @if exist $(TKHLP) copy "$(TKHLP)" "$(DOC_INSTALL_DIR)" + @if exist $(TKHLPCNT) copy "$(TKHLPCNT)" "$(DOC_INSTALL_DIR)" install-libraries: - @mkd "$(INCLUDE_INSTALL_DIR)" - @mkd "$(INCLUDE_INSTALL_DIR)\X11" + @$(MKDIR) "$(INCLUDE_INSTALL_DIR)" + @$(MKDIR) "$(INCLUDE_INSTALL_DIR)\X11" copy "$(GENERICDIR)\tk.h" "$(INCLUDE_INSTALL_DIR)" copy "$(GENERICDIR)\tkDecls.h" "$(INCLUDE_INSTALL_DIR)" copy "$(GENERICDIR)\tkPlatDecls.h" "$(INCLUDE_INSTALL_DIR)" copy "$(GENERICDIR)\tkIntXlibDecls.h" "$(INCLUDE_INSTALL_DIR)" xcopy "$(XLIBDIR)\X11\*.h" "$(INCLUDE_INSTALL_DIR)\X11" - @mkd "$(SCRIPT_INSTALL_DIR)" - @mkd "$(SCRIPT_INSTALL_DIR)\images" - @mkd "$(SCRIPT_INSTALL_DIR)\demos" - @mkd "$(SCRIPT_INSTALL_DIR)\demos\images" + @$(MKDIR) "$(SCRIPT_INSTALL_DIR)" + @$(MKDIR) "$(SCRIPT_INSTALL_DIR)\images" + @$(MKDIR) "$(SCRIPT_INSTALL_DIR)\demos" + @$(MKDIR) "$(SCRIPT_INSTALL_DIR)\demos\images" xcopy "$(ROOT)\library" "$(SCRIPT_INSTALL_DIR)" xcopy "$(ROOT)\library\images" "$(SCRIPT_INSTALL_DIR)\images" xcopy "$(ROOT)\library\demos" "$(SCRIPT_INSTALL_DIR)\demos" xcopy "$(ROOT)\library\demos\images" "$(SCRIPT_INSTALL_DIR)\demos\images" -$(TKLIB): $(TKDLL) $(TKSTUBLIB) -$(TKSTUBLIB): $(TKSTUBOBJS) - $(lib32) /out:$@ $(TKSTUBOBJS) +#--------------------------------------------------------------------- +# Regenerate the stubs files. +#--------------------------------------------------------------------- -$(TKDLL): $(TKOBJS) $(TMPDIR)\tk.res - $(link32) $(ldebug) $(dlllflags) \ - -out:$@ $(TMPDIR)\tk.res $(TCLLIBDIR)\$(TCLSTUBLIB) \ - $(guilibsdll) @<< - $(TKOBJS) -<< +genstubs: + $(TCLSH) $(TCLDIR)\tools\genStubs.tcl $(GENERICDIR) \ + $(GENERICDIR)\tk.decls $(GENERICDIR)\tkInt.decls -$(TKPLUGINLIB): $(TKPLUGINDLL) -$(TKPLUGINDLL): $(TKOBJS) $(TMPDIR)\tk.res - $(link32) $(ldebug) $(dlllflags) \ - -out:$@ $(TMPDIR)\tk.res $(TCLLIBDIR)\$(TCLPLUGINLIB) \ - $(guilibsdll) @<< - $(TKOBJS) -<< +#--------------------------------------------------------------------- +# Regenerate the windows help files. +#--------------------------------------------------------------------- -$(WISH): $(WISHOBJS) $(TKLIB) $(TMPDIR)\wish.res - $(link32) $(ldebug) $(guilflags) $(TMPDIR)\wish.res -out:$@ \ - $(guilibsdll) $(TCLLIBDIR)\$(TCLLIB) $(TKLIB) $(WISHOBJS) +#MAN2TCL = $(TOOLSDIR)\man2tcl +#TCLRTF = $(TOOLSDIR)\tcl.rtf +#MAN2HELP = $(TOOLSDIR)\man2help.tcl +#TCLHPJ = $(TOOLSDIR)\tcl.hpj -$(WISHC): $(WISHOBJS) $(TKLIB) $(TMPDIR)\wish.res - $(link32) $(ldebug) $(conlflags) $(TMPDIR)\wish.res -out:$@ \ - $(guilibsdll) $(TCLLIBDIR)\$(TCLLIB) $(TKLIB) $(WISHOBJS) +#winhelp: $(TCLHLP) -$(WISHP): $(WISHOBJS) $(TKPLUGINLIB) $(TMPDIR)\wish.res - $(link32) $(ldebug) $(guilflags) $(TMPDIR)\wish.res -out:$@ \ - $(guilibsdll) $(TCLLIBDIR)\$(TCLPLUGINLIB) \ - $(TKPLUGINLIB) $(WISHOBJS) +#$(TCLHLP): $(TCLRTF) +# cd $(TOOLSDIR) +# start /wait hcrtf.exe -x tcl.hpj +# cd $(MAKEDIR) +# copy $(TOOLSDIR)\$(TCLHLPBASE).hlp $(OUT_DIR) +# copy $(TOOLSDIR)\$(TCLHLPBASE).cnt $(OUT_DIR) -$(TKTEST): $(TKTESTOBJS) $(TKLIB) $(TMPDIR)\wish.res - $(link32) $(ldebug) $(guilflags) $(TMPDIR)\wish.res -out:$@ \ - $(guilibsdll) $(TCLLIBDIR)\$(TCLLIB) $(TKLIB) $(TKTESTOBJS) +#$(TCLHPJ): $(TCLHPJ).in +# copy $(TCLHPJ).in $(TCLHPJ) -$(CAT32): $(TCLDIR)\win\cat.c - $(cc32) $(CON_CFLAGS) -Fo$(TMPDIR)\ $? - $(link32) $(conlflags) -out:$@ -stack:16384 $(TMPDIR)\cat.obj $(conlibs) +#$(MAN2TCL).exe: $(MAN2TCL).obj +# cd $(TOOLSDIR) +# $(cc32) -nologo -G4 -ML -O2 $(MAN2TCL).c +# cd $(MAKEDIR) -# -# Regenerate the stubs files. -# +#$(TCLRTF): $(MAN2TCL).exe $(TCLSH) +# cd $(TOOLSDIR) +# ..\win\$(TCLSH) $(MAN2HELP) $(PROJECT) $(VERSION) $(ROOT)/doc \ +# ../../tk$(DOTVERSION)/doc +# cd $(MAKEDIR) -genstubs: - tclsh$(VERSION) $(TCLDIR)\tools\genStubs.tcl $(GENERICDIR) \ - $(GENERICDIR)\tk.decls $(GENERICDIR)\tkInt.decls -# +#--------------------------------------------------------------------- # Special case object file targets -# +#--------------------------------------------------------------------- -$(TMPDIR)\testMain.obj: $(WINDIR)\winMain.c +$(TMP_DIR)\testMain.obj: $(WINDIR)\winMain.c $(cc32) $(WISH_CFLAGS) -DTK_TEST -Fo$@ $? -$(TMPDIR)\tkTest.obj: $(GENERICDIR)\tkTest.c +$(TMP_DIR)\tkTest.obj: $(GENERICDIR)\tkTest.c $(cc32) $(WISH_CFLAGS) -Fo$@ $? -$(TMPDIR)\tkWinTest.obj: $(WINDIR)\tkWinTest.c +$(TMP_DIR)\tkWinTest.obj: $(WINDIR)\tkWinTest.c $(cc32) $(WISH_CFLAGS) -Fo$@ $? -$(TMPDIR)\tkSquare.obj: $(GENERICDIR)\tkSquare.c +$(TMP_DIR)\tkSquare.obj: $(GENERICDIR)\tkSquare.c $(cc32) $(WISH_CFLAGS) -Fo$@ $? -$(TMPDIR)\winMain.obj: $(WINDIR)\winMain.c +$(TMP_DIR)\winMain.obj: $(WINDIR)\winMain.c $(cc32) $(WISH_CFLAGS) -Fo$@ $? -$(TMPDIR)\tkStubLib.obj : $(GENERICDIR)\tkStubLib.c - $(cc32) $(TK_CFLAGS) -DSTATIC_BUILD -Fo$@ $? +# The following objects are part of the stub library and should not +# be built as DLL objects but none of the symbols should be exported +# and no reference made to a C runtime. -# -# Implicit rules -# +$(TMP_DIR)\tkStubLib.obj : $(GENERICDIR)\tkStubLib.c + $(cc32) $(cdebug) $(cflags) $(TK_INCLUDES) -Zl -DSTATIC_BUILD -Fo$@ $? -{$(XLIBDIR)}.c{$(TMPDIR)}.obj: - $(cc32) -DDLL_BUILD -DBUILD_tk $(TK_CFLAGS) -Fo$(TMPDIR)\ $< +$(TMP_DIR)\tkStubImg.obj : $(GENERICDIR)\tkStubImg.c + $(cc32) $(cdebug) $(cflags) $(TK_INCLUDES) -Zl -DSTATIC_BUILD -Fo$@ $? -{$(GENERICDIR)}.c{$(TMPDIR)}.obj: - $(cc32) -DDLL_BUILD -DBUILD_tk $(TK_CFLAGS) -Fo$(TMPDIR)\ $< -{$(WINDIR)}.c{$(TMPDIR)}.obj: - $(cc32) -DDLL_BUILD -DBUILD_tk $(TK_CFLAGS) -Fo$(TMPDIR)\ $< +#--------------------------------------------------------------------- +# Dedependency rules +#--------------------------------------------------------------------- -{$(ROOT)\unix}.c{$(TMPDIR)}.obj: - $(cc32) -DDLL_BUILD -DBUILD_tk $(TK_CFLAGS) -Fo$(TMPDIR)\ $< - -{$(RCDIR)}.rc{$(TMPDIR)}.res: - $(rc32) -fo $@ -r -i "$(GENERICDIR)" -i "$(TOOLS32)\include" \ - -i "$(TCLDIR)\generic" \ -!if "$(NODEBUG)" == "0" - -d DEBUG \ -!endif - $< - -clean: - -@del $(OUTDIR)\*.exp - -@del $(OUTDIR)\*.lib - -@del $(OUTDIR)\*.dll - -@del $(OUTDIR)\*.exe - -@del $(OUTDIR)\*.pdb - -@del $(TMPDIR)\*.pch - -@del $(TMPDIR)\*.obj - -@del $(TMPDIR)\*.res - -@del $(TMPDIR)\*.exe - -@rmd $(OUTDIR) - -@rmd $(TMPDIR) - -# dependencies - -$(TMPDIR)\tk.res: \ +$(TMP_DIR)\tk.res: \ $(RCDIR)\buttons.bmp \ $(RCDIR)\cursor*.cur \ $(RCDIR)\tk.ico @@ -523,3 +672,49 @@ $(GENERICDIR)/tkMenu.c: $(GENERICDIR)/tkMenu.h $(GENERICDIR)/tkMenuDraw.c: $(GENERICDIR)/tkMenu.h $(WINDIR)/tkWinMenu.c: $(GENERICDIR)/tkMenu.h + + +#--------------------------------------------------------------------- +# Implicit rules +#--------------------------------------------------------------------- + +{$(XLIBDIR)}.c{$(TMP_DIR)}.obj:: + $(cc32) -DBUILD_tk $(TK_CFLAGS) -Fo$(TMP_DIR)\ @<< +$< +<< + +{$(GENERICDIR)}.c{$(TMP_DIR)}.obj:: + $(cc32) -DBUILD_tk $(TK_CFLAGS) -Fo$(TMP_DIR)\ @<< +$< +<< + +{$(WINDIR)}.c{$(TMP_DIR)}.obj:: + $(cc32) -DBUILD_tk $(TK_CFLAGS) -Fo$(TMP_DIR)\ @<< +$< +<< + +{$(ROOT)\unix}.c{$(TMP_DIR)}.obj:: + $(cc32) -DBUILD_tk $(TK_CFLAGS) -Fo$(TMP_DIR)\ @<< +$< +<< + +{$(RCDIR)}.rc{$(TMP_DIR)}.res: + $(rc32) -fo $@ -r -i "$(GENERICDIR)" $(TCL_INCLUDES) \ +!if $(DEBUG) + -d DEBUG \ +!endif + $< + +#--------------------------------------------------------------------- +# Clean up +#--------------------------------------------------------------------- + +clean: + -@$(RMDIR) $(TMP_DIR) + +hose: clean + -@$(RMDIR) $(OUT_DIR) + + +.SUFFIXES: +.SUFFIXES:.c .rc diff --git a/win/mkd.bat b/win/mkd.bat index f9f3eaf..7d86b13 100644 --- a/win/mkd.bat +++ b/win/mkd.bat @@ -1,22 +1,13 @@ -@echo off -rem RCS: @(#) $Id: mkd.bat,v 1.4 2001/09/08 22:34:42 mdejong Exp $ - -if exist %1\tag.txt goto end - -if "%OS%" == "Windows_NT" goto winnt - -md %1 -if errorlevel 1 goto end - -goto success - -:winnt -md %1 -if errorlevel 1 goto end - -:success -echo TAG >%1\tag.txt -echo created directory %1 - -:end - +@echo off +rem RCS: @(#) $Id: mkd.bat,v 1.5 2001/11/13 02:46:23 davygrvy Exp $ + +if exist %1\nul goto end + +md %1 +if errorlevel 1 goto end + +echo Created directory %1 + +:end + + diff --git a/win/rmd.bat b/win/rmd.bat index 2669f37..6811b9e 100644 --- a/win/rmd.bat +++ b/win/rmd.bat @@ -1,26 +1,21 @@ -@echo off -rem RCS: @(#) $Id: rmd.bat,v 1.4 2001/09/08 22:34:42 mdejong Exp $ - -if not exist %1\tag.txt goto end - -echo Removing directory %1 - -if "%OS%" == "Windows_NT" goto winnt - -cd %1 -if errorlevel 1 goto end -del *.* -cd .. -rmdir %1 -if errorlevel 1 goto end -goto success - -:winnt -rmdir %1 /s /q -if errorlevel 1 goto end - -:success -echo deleted directory %1 - -:end - +@echo off +rem RCS: @(#) $Id: rmd.bat,v 1.5 2001/11/13 02:46:23 davygrvy Exp $ + +if not exist %1\nul goto end + +echo Removing directory %1 + +if "%OS%" == "Windows_NT" goto winnt + +deltree /y %1 +if errorlevel 1 goto end +goto success + +:winnt +rmdir /s /q %1 +if errorlevel 1 goto end + +:success +echo Deleted directory %1 + +:end diff --git a/win/rules.vc b/win/rules.vc new file mode 100644 index 0000000..95f33fe --- /dev/null +++ b/win/rules.vc @@ -0,0 +1,185 @@ +#------------------------------------------------------------------------------ +# rules.vc -- +# +# Microsoft Visual C++ makefile include for decoding the commandline +# macros. This file does not need editing to build Tcl. +# +# See the file "license.terms" for information on usage and redistribution +# of this file, and for a DISCLAIMER OF ALL WARRANTIES. +# +# Copyright (c) 2001 Tomasoft Engineering. +# +#------------------------------------------------------------------------------ +# RCS: @(#) $Id: rules.vc,v 1.1 2001/11/13 02:46:23 davygrvy Exp $ +#------------------------------------------------------------------------------ + +!ifndef _RULES_VC +_RULES_VC = 1 + +cc32 = $(CC) # built-in default. +link32 = link +lib32 = lib +rc32 = $(RC) # built-in default. + +!ifndef INSTALLDIR +INSTALLDIR = C:\Progra~1\Tcl +!endif + +!ifndef MACHINE +MACHINE = IX86 +!endif + + +#---------------------------------------------------------- +# Decode the options requested. +#---------------------------------------------------------- +!if "$(OPTS)" == "" || ![echo $(OPTS) | find /i "none" > nul] +STATIC_BUILD = 0 +TCL_THREADS = 0 +DEBUG = 0 +PROFILE = 0 +MSVCRT = 0 +TCL_LINKWITHEXTENSIONS = 0 +!else +!if ![echo $(OPTS) | find /i "static" > nul] +!message *** Doing static +STATIC_BUILD = 1 +!else +STATIC_BUILD = 0 +!endif +!if ![echo $(OPTS) | find /i "msvcrt" > nul] +!message *** Doing msvcrt +MSVCRT = 1 +!else +MSVCRT = 0 +!endif +!if ![echo $(OPTS) | find /i "linkexten" > nul] +!message *** Doing linkexten +TCL_LINKWITHEXTENSIONS = 1 +!else +TCL_LINKWITHEXTENSIONS = 0 +!endif +!if ![echo $(OPTS) | find /i "threads" > nul] +!message *** Doing threads +TCL_THREADS = 1 +!else +TCL_THREADS = 0 +!endif +!if ![echo $(OPTS) | find /i "symbols" > nul] +!message *** Doing symbols +DEBUG = 1 +!else +DEBUG = 0 +!endif +!if ![echo $(OPTS) | find /i "profile" > nul] +!message *** Doing profile +PROFILE = 1 +!else +PROFILE = 0 +!endif +!endif + + +!if !$(STATIC_BUILD) +# Make sure we don't build overly fat DLLs. +MSVCRT = 1 +# Shouldn't statically put the extensions inside the shell when dynamic. +TCL_LINKWITHEXTENSIONS = 0 +!endif + + +#---------------------------------------------------------- +# Figure-out how to name our intermediate and output directories. +# We wouldn't want different builds to use the same .obj files +# by accident. +#---------------------------------------------------------- + +SUFX = tsdx + +!if $(DEBUG) +BUILDDIRTOP = Debug +DBGX = d +!else +BUILDDIRTOP = Release +DBGX = +SUFX = $(SUFX:d=) +!endif + +TMP_DIRFULL = .\$(BUILDDIRTOP)\$(PROJECT)_ThreadedDynamicStaticX + +!if !$(STATIC_BUILD) +TMP_DIRFULL = $(TMP_DIRFULL:Static=) +SUFX = $(SUFX:s=) +EXT = dll +!if $(MSVCRT) +TMP_DIRFULL = $(TMP_DIRFULL:X=) +SUFX = $(SUFX:x=) +!endif +!else +TMP_DIRFULL = $(TMP_DIRFULL:Dynamic=) +EXT = lib +!if !$(MSVCRT) +TMP_DIRFULL = $(TMP_DIRFULL:X=) +SUFX = $(SUFX:x=) +!endif +!endif + +!if !$(TCL_THREADS) +TMP_DIRFULL = $(TMP_DIRFULL:Threaded=) +SUFX = $(SUFX:t=) +!endif + +!ifndef TMP_DIR +TMP_DIR = $(TMP_DIRFULL) +!ifndef OUT_DIR +OUT_DIR = .\$(BUILDDIRTOP) +!endif +!else +!ifndef OUT_DIR +OUT_DIR = $(TMP_DIR) +!endif +!endif + +!message *** Intermediate directory will be '$(TMP_DIR)' +!message *** Output directory will be '$(OUT_DIR)' +!message *** Suffix for binaries will be '$(SUFX)' + + +#---------------------------------------------------------- +# Decode the statistics requested. +#---------------------------------------------------------- +!if "$(STATS)" == "" || ![echo $(STATS) | find /i "none" > nul] +TCL_MEM_DEBUG = 0 +TCL_COMPILE_DEBUG = 0 +!else +!if ![echo $(STATS) | find /i "memdbg" > nul] +!message *** Doing memdbg +TCL_MEM_DEBUG = 1 +!else +TCL_MEM_DEBUG = 0 +!endif +!if ![echo $(STATS) | find /i "compdbg" > nul] +!message *** Doing compdbg +TCL_COMPILE_DEBUG = 1 +!else +TCL_COMPILE_DEBUG = 0 +!endif +!endif + +OPTDEFINES = +!if $(TCL_MEM_DEBUG) +OPTDEFINES = -DTCL_MEM_DEBUG +!endif +!if $(TCL_COMPILE_DEBUG) +OPTDEFINES = $(OPTDEFINES) -DTCL_COMPILE_DEBUG -DTCL_COMPILE_STATS +!endif +!if $(TCL_THREADS) +OPTDEFINES = $(OPTDEFINES) -DTCL_THREADS=1 +!endif +!if $(STATIC_BUILD) +OPTDEFINES = $(OPTDEFINES) -DSTATIC_BUILD +!endif + +!message *** Optional defines are '$(OPTDEFINES)' + +!endif -- cgit v0.12