OSDN Git Service

Updated to tcl 8.4.1
[pf3gnuchains/sourceware.git] / tcl / win / makefile.vc
index 3fc7e2c..6fb9df0 100644 (file)
-# Visual C++ 2.x and 4.0 makefile
-#
-# See the file "license.terms" for information on usage and redistribution
-# of this file, and for a DISCLAIMER OF ALL WARRANTIES.
-# 
-# Copyright (c) 1995-1996 Sun Microsystems, Inc.
-# Copyright (c) 1998-1999 by Scriptics Corporation.
-#
-# RCS: @(#) $Id$
-
-# 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.
-
-#
-# Project directories
-#
-# ROOT   = top of source tree
-#
-# 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++.
-#
-# INSTALLDIR = where the install- targets should copy the binaries and
-#          support files
-#
-
-# Set this to the appropriate value of /MACHINE: for your platform
-MACHINE                = IX86
-
-ROOT           = ..
-INSTALLDIR     = c:\Progra~1\Tcl
-
-!IF "$(MACHINE)" == "IA64"
-TOOLS32                = c:\ia64sdk17
-TOOLS32_rc     = c:\ia64sdk17
-!ELSE
-TOOLS32                = c:\Progra~1\devstudio\vc
-TOOLS32_rc     = c:\Progra~1\devstudio\sharedide
-!ENDIF
-
-# Uncomment the following line to compile with thread support
-#THREADDEFINES = -DTCL_THREADS=1
-
-# Set NODEBUG to 0 to compile with symbols
-NODEBUG = 1
-
-# The following defines can be used to control the amount of debugging
-# code that is added to the compilation.
-#
-#      -DTCL_MEM_DEBUG         Enables the debugging memory allocator.
-#      -DTCL_COMPILE_DEBUG     Enables byte compilation logging.
-#      -DTCL_COMPILE_STATS     Enables byte compilation statistics gathering.
-#      -DUSE_TCLALLOC=0        Disables the Tcl memory allocator in favor
-#                              of the native malloc implementation.  This is
-#                              needed when using Purify.
-#
-#DEBUGDEFINES = -DTCL_MEM_DEBUG -DTCL_COMPILE_DEBUG -DTCL_COMPILE_STATS
-#DEBUGDEFINES = -DUSE_TCLALLOC=0
-
-######################################################################
-# Do not modify below this line
-######################################################################
-
-NAMEPREFIX = tcl
-STUBPREFIX = $(NAMEPREFIX)stub
-DOTVERSION = 8.3
-VERSION = 83
-
-BINROOT                = .
-!IF "$(NODEBUG)" == "1"
-TMPDIRNAME     = Release
-DBGX           =
-!ELSE
-TMPDIRNAME     = Debug
-DBGX           = d
-!ENDIF
-TMPDIR         = $(BINROOT)\$(TMPDIRNAME)
-OUTDIRNAME     = $(TMPDIRNAME)
-OUTDIR         = $(TMPDIR)
-
-TCLLIB         = $(OUTDIR)\$(NAMEPREFIX)$(VERSION)$(DBGX).lib
-TCLDLLNAME     = $(NAMEPREFIX)$(VERSION)$(DBGX).dll
-TCLDLL         = $(OUTDIR)\$(TCLDLLNAME)
-
-TCLSTUBLIBNAME = $(STUBPREFIX)$(VERSION)$(DBGX).lib
-TCLSTUBLIB     = $(OUTDIR)\$(TCLSTUBLIBNAME)
-
-TCLPLUGINLIB   = $(OUTDIR)\$(NAMEPREFIX)$(VERSION)p$(DBGX).lib
-TCLPLUGINDLLNAME= $(NAMEPREFIX)$(VERSION)p$(DBGX).dll
-TCLPLUGINDLL   = $(OUTDIR)\$(TCLPLUGINDLLNAME)
-TCLSH          = $(OUTDIR)\$(NAMEPREFIX)sh$(VERSION)$(DBGX).exe
-TCLSHP         = $(OUTDIR)\$(NAMEPREFIX)shp$(VERSION)$(DBGX).exe
-TCLPIPEDLLNAME = $(NAMEPREFIX)pip$(VERSION)$(DBGX).dll
-TCLPIPEDLL     = $(OUTDIR)\$(TCLPIPEDLLNAME)
-TCLREGDLLNAME  = $(NAMEPREFIX)reg$(VERSION)$(DBGX).dll
-TCLREGDLL      = $(OUTDIR)\$(TCLREGDLLNAME)
-TCLDDEDLLNAME  = $(NAMEPREFIX)dde$(VERSION)$(DBGX).dll
-TCLDDEDLL      = $(OUTDIR)\$(TCLDDEDLLNAME)
-TCLTEST                = $(OUTDIR)\$(NAMEPREFIX)test.exe
-CAT32          = $(TMPDIR)\cat32.exe
-RMDIR          = .\rmd.bat
-MKDIR          = .\mkd.bat
-RM             = del
-
-LIB_INSTALL_DIR        = $(INSTALLDIR)\lib
-BIN_INSTALL_DIR        = $(INSTALLDIR)\bin
-SCRIPT_INSTALL_DIR     = $(INSTALLDIR)\lib\tcl$(DOTVERSION)
-INCLUDE_INSTALL_DIR    = $(INSTALLDIR)\include
-
-TCLSHOBJS = \
-       $(TMPDIR)\tclAppInit.obj
-
-TCLTESTOBJS = \
-       $(TMPDIR)\tclTest.obj \
-       $(TMPDIR)\tclTestObj.obj \
-       $(TMPDIR)\tclTestProcBodyObj.obj \
-       $(TMPDIR)\tclThreadTest.obj \
-       $(TMPDIR)\tclWinTest.obj \
-       $(TMPDIR)\testMain.obj
-
-TCLOBJS = \
-       $(TMPDIR)\regcomp.obj \
-       $(TMPDIR)\regexec.obj \
-       $(TMPDIR)\regfree.obj \
-       $(TMPDIR)\regerror.obj \
-       $(TMPDIR)\strftime.obj \
-       $(TMPDIR)\tclAlloc.obj \
-       $(TMPDIR)\tclAsync.obj \
-       $(TMPDIR)\tclBasic.obj \
-       $(TMPDIR)\tclBinary.obj \
-       $(TMPDIR)\tclCkalloc.obj \
-       $(TMPDIR)\tclClock.obj \
-       $(TMPDIR)\tclCmdAH.obj \
-       $(TMPDIR)\tclCmdIL.obj \
-       $(TMPDIR)\tclCmdMZ.obj \
-       $(TMPDIR)\tclCompCmds.obj \
-       $(TMPDIR)\tclCompExpr.obj \
-       $(TMPDIR)\tclCompile.obj \
-       $(TMPDIR)\tclDate.obj \
-       $(TMPDIR)\tclEncoding.obj \
-       $(TMPDIR)\tclEnv.obj \
-       $(TMPDIR)\tclEvent.obj \
-       $(TMPDIR)\tclExecute.obj \
-       $(TMPDIR)\tclFCmd.obj \
-       $(TMPDIR)\tclFileName.obj \
-       $(TMPDIR)\tclGet.obj \
-       $(TMPDIR)\tclHash.obj \
-       $(TMPDIR)\tclHistory.obj \
-       $(TMPDIR)\tclIndexObj.obj \
-       $(TMPDIR)\tclInterp.obj \
-       $(TMPDIR)\tclIO.obj \
-       $(TMPDIR)\tclIOCmd.obj \
-       $(TMPDIR)\tclIOGT.obj \
-       $(TMPDIR)\tclIOSock.obj \
-       $(TMPDIR)\tclIOUtil.obj \
-       $(TMPDIR)\tclLink.obj \
-       $(TMPDIR)\tclLiteral.obj \
-       $(TMPDIR)\tclListObj.obj \
-       $(TMPDIR)\tclLoad.obj \
-       $(TMPDIR)\tclMain.obj \
-       $(TMPDIR)\tclNamesp.obj \
-       $(TMPDIR)\tclNotify.obj \
-       $(TMPDIR)\tclObj.obj \
-       $(TMPDIR)\tclPanic.obj \
-       $(TMPDIR)\tclParse.obj \
-       $(TMPDIR)\tclParseExpr.obj \
-       $(TMPDIR)\tclPipe.obj \
-       $(TMPDIR)\tclPkg.obj \
-       $(TMPDIR)\tclPosixStr.obj \
-       $(TMPDIR)\tclPreserve.obj \
-       $(TMPDIR)\tclProc.obj \
-       $(TMPDIR)\tclRegexp.obj \
-       $(TMPDIR)\tclResolve.obj \
-       $(TMPDIR)\tclResult.obj \
-       $(TMPDIR)\tclScan.obj \
-       $(TMPDIR)\tclStringObj.obj \
-       $(TMPDIR)\tclStubInit.obj \
-       $(TMPDIR)\tclStubLib.obj \
-       $(TMPDIR)\tclThread.obj \
-       $(TMPDIR)\tclTimer.obj \
-       $(TMPDIR)\tclUtf.obj \
-       $(TMPDIR)\tclUtil.obj \
-       $(TMPDIR)\tclVar.obj \
-       $(TMPDIR)\tclWin32Dll.obj \
-       $(TMPDIR)\tclWinChan.obj \
-       $(TMPDIR)\tclWinConsole.obj \
-       $(TMPDIR)\tclWinSerial.obj \
-       $(TMPDIR)\tclWinError.obj \
-       $(TMPDIR)\tclWinFCmd.obj \
-       $(TMPDIR)\tclWinFile.obj \
-       $(TMPDIR)\tclWinInit.obj \
-       $(TMPDIR)\tclWinLoad.obj \
-       $(TMPDIR)\tclWinMtherr.obj \
-       $(TMPDIR)\tclWinNotify.obj \
-       $(TMPDIR)\tclWinPipe.obj \
-       $(TMPDIR)\tclWinSock.obj \
-       $(TMPDIR)\tclWinThrd.obj \
-       $(TMPDIR)\tclWinTime.obj 
-
-TCLSTUBOBJS = $(TMPDIR)\tclStubLib.obj \
-
-cc32           = "$(TOOLS32)\bin\cl.exe"
-link32         = "$(TOOLS32)\bin\link.exe"
-rc32           = "$(TOOLS32_rc)\bin\rc.exe"
-include32      = -I"$(TOOLS32)\include"
-libpath32      = /LIBPATH:"$(TOOLS32)\lib"
-lib32          = "$(TOOLS32)\bin\lib.exe"
-
-WINDIR         = $(ROOT)\win
-GENERICDIR     = $(ROOT)\generic
-
-TCL_INCLUDES   = -I"$(WINDIR)" -I"$(GENERICDIR)"
-TCL_DEFINES    = $(DEBUGDEFINES) $(THREADDEFINES)
-
-######################################################################
-# Compile flags
-######################################################################
-
-!IF "$(NODEBUG)" == "1"
-# This cranks the optimization level to maximize speed
-cdebug = -O2 -Gs -GD
-!ELSE
-!IF "$(MACHINE)" == "IA64"
-cdebug = -Od -Zi
-!ELSE
-cdebug = -Z7 -Od -WX
-!ENDIF
-!ENDIF
-
-# declarations common to all compiler options
-cflags = -c -W3 -nologo -Fp$(TMPDIR)\ -YX
-cvarsdll = -MD$(DBGX)
-
-TCL_CFLAGS     = $(cdebug) $(cflags) $(cvarsdll) $(include32) \
-                       $(TCL_INCLUDES) $(TCL_DEFINES)
-CON_CFLAGS     = $(cdebug) $(cflags) $(include32) -DCONSOLE
-
-######################################################################
-# Link flags
-######################################################################
-
-!IF "$(NODEBUG)" == "1"
-ldebug = /RELEASE
-!ELSE
-ldebug = -debug:full -debugtype:cv
-!ENDIF
-
-# declarations common to all linker options
-lflags = /NODEFAULTLIB /NOLOGO /MACHINE:$(MACHINE) $(libpath32)
-
-# 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
-!ENDIF
-
-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 $(optlibs) advapi32.lib user32.lib
-winlibs           = $(baselibs) gdi32.lib comdlg32.lib winspool.lib
-
-guilibs           = $(libc) $(winlibs)
-conlibs           = $(libc) $(baselibs)
-guilibsdll = $(libcdll) $(winlibs)
-conlibsdll = $(libcdll) $(baselibs)
-
-######################################################################
-# Project specific targets
-######################################################################
-
-release:    setup $(TCLSH) dlls
-dlls:      setup $(TCLPIPEDLL) $(TCLREGDLL) $(TCLDDEDLL)
-all:       setup $(TCLSH) dlls $(CAT32) 
-tcltest:    setup $(TCLTEST) dlls $(CAT32)
-plugin:            setup $(TCLPLUGINDLL) $(TCLSHP)
-install:    install-binaries install-libraries
-test:      setup $(TCLTEST) dlls $(CAT32)
-       set TCL_LIBRARY=$(ROOT)/library
-       $(TCLTEST) $(ROOT)/tests/all.tcl
-
-setup:
-       @$(MKDIR) $(TMPDIR)
-       @$(MKDIR) $(OUTDIR)
-
-$(TCLLIB): $(TCLDLL)
-
-$(TCLDLL): $(TCLOBJS) $(TMPDIR)\tcl.res
-       $(link32) $(ldebug) $(dlllflags) \
-               -out:$@ $(TMPDIR)\tcl.res $(guilibsdll) @<<
-$(TCLOBJS)
-<<
-
-$(TCLSTUBLIB): $(TCLSTUBOBJS)
-       $(lib32) /out:$@ $(TCLSTUBOBJS)
-
-$(TCLPLUGINLIB): $(TCLPLUGINDLL)
-
-$(TCLPLUGINDLL): $(TCLOBJS) $(TMPDIR)\tcl.res
-       $(link32) $(ldebug) $(dlllflags) \
-               -out:$@ $(TMPDIR)\tcl.res $(guilibsdll) @<<
-$(TCLOBJS)
-<<
-
-$(TCLSH): $(TCLSHOBJS) $(TCLLIB) $(TMPDIR)\tclsh.res
-       $(link32) $(ldebug) $(conlflags) $(TMPDIR)\tclsh.res -stack:2300000 \
-               -out:$@ $(conlibsdll) $(TCLLIB) $(TCLSHOBJS) 
-
-$(TCLSHP): $(TCLSHOBJS) $(TCLPLUGINLIB) $(TMPDIR)\tclsh.res
-       $(link32) $(ldebug) $(conlflags) $(TMPDIR)\tclsh.res -stack:2300000 \
-               -out:$@ $(conlibsdll) $(TCLPLUGINLIB) $(TCLSHOBJS) 
-
-$(TCLTEST): $(TCLTESTOBJS) $(TCLLIB) $(TMPDIR)\tclsh.res
-       $(link32) $(ldebug) $(conlflags) $(TMPDIR)\tclsh.res -stack:2300000 \
-                -out:$@ $(conlibsdll) $(TCLLIB) $(TCLTESTOBJS)
-
-$(TCLPIPEDLL): $(WINDIR)\stub16.c
-       $(cc32) $(CON_CFLAGS) -Fo$(TMPDIR)\ $(WINDIR)\stub16.c
-       $(link32) $(ldebug) $(conlflags) -out:$@ $(TMPDIR)\stub16.obj $(guilibs)
-
-$(TCLDDEDLL): $(TMPDIR)\tclWinDde.obj $(TCLSTUBLIB)
-       $(link32) $(ldebug) $(dlllflags) -out:$@ $(TMPDIR)\tclWinDde.obj \
-               $(conlibsdll) $(TCLSTUBLIB)
-
-$(TCLREGDLL): $(TMPDIR)\tclWinReg.obj $(TCLSTUBLIB)
-       $(link32) $(ldebug) $(dlllflags) -out:$@ $(TMPDIR)\tclWinReg.obj \
-               $(conlibsdll) $(TCLSTUBLIB)
-
-$(CAT32): $(WINDIR)\cat.c
-       $(cc32) $(CON_CFLAGS) -Fo$(TMPDIR)\ $?
-       $(link32) $(conlflags) -out:$@ -stack:16384 $(TMPDIR)\cat.obj $(conlibs)
-
-install-binaries: $(TCLSH)
-       $(MKDIR) "$(BIN_INSTALL_DIR)"
-       $(MKDIR) "$(LIB_INSTALL_DIR)"
-       @echo installing $(TCLDLLNAME)
-       @copy "$(TCLDLL)" "$(BIN_INSTALL_DIR)"
-       @copy "$(TCLLIB)" "$(LIB_INSTALL_DIR)"
-       @echo installing "$(TCLSH)"
-       @copy "$(TCLSH)" "$(BIN_INSTALL_DIR)"
-       @echo installing $(TCLPIPEDLLNAME)
-       @copy "$(TCLPIPEDLL)" "$(BIN_INSTALL_DIR)"
-       @echo installing $(TCLSTUBLIBNAME)
-       @copy "$(TCLSTUBLIB)" "$(LIB_INSTALL_DIR)"
-
-install-libraries:
-       -@$(MKDIR) "$(LIB_INSTALL_DIR)"
-       -@$(MKDIR) "$(INCLUDE_INSTALL_DIR)"
-       -@$(MKDIR) "$(SCRIPT_INSTALL_DIR)"
-       @echo installing http1.0
-       -@$(MKDIR) "$(SCRIPT_INSTALL_DIR)\http1.0"
-       -@copy "$(ROOT)\library\http1.0\http.tcl"     "$(SCRIPT_INSTALL_DIR)\http1.0"
-       -@copy "$(ROOT)\library\http1.0\pkgIndex.tcl" "$(SCRIPT_INSTALL_DIR)\http1.0"
-       @echo installing http2.3
-       -@$(MKDIR) "$(SCRIPT_INSTALL_DIR)\http2.3"
-       -@copy "$(ROOT)\library\http2.3\http.tcl"     "$(SCRIPT_INSTALL_DIR)\http2.3"
-       -@copy "$(ROOT)\library\http2.3\pkgIndex.tcl" "$(SCRIPT_INSTALL_DIR)\http2.3"
-       @echo installing opt0.4
-       -@$(MKDIR) "$(SCRIPT_INSTALL_DIR)\opt0.4"
-       -@copy "$(ROOT)\library\opt0.4\optparse.tcl" "$(SCRIPT_INSTALL_DIR)\opt0.4"
-       -@copy "$(ROOT)\library\opt0.4\pkgIndex.tcl" "$(SCRIPT_INSTALL_DIR)\opt0.4"
-       @echo installing msgcat1.0
-       -@$(MKDIR) "$(SCRIPT_INSTALL_DIR)\msgcat1.0"
-       -@copy "$(ROOT)\library\msgcat1.0\msgcat.tcl"   "$(SCRIPT_INSTALL_DIR)\msgcat1.0"
-       -@copy "$(ROOT)\library\msgcat1.0\pkgIndex.tcl" "$(SCRIPT_INSTALL_DIR)\msgcat1.0"
-       @echo installing $(TCLDDEDLLNAME)
-       -@$(MKDIR) "$(SCRIPT_INSTALL_DIR)\dde1.1"
-       -@copy "$(TCLDDEDLL)" "$(SCRIPT_INSTALL_DIR)\dde1.1"
-       -@copy "$(ROOT)\library\dde1.1\pkgIndex.tcl" "$(SCRIPT_INSTALL_DIR)\dde1.1"
-       @echo installing $(TCLREGDLLNAME)
-       -@$(MKDIR) "$(SCRIPT_INSTALL_DIR)\reg1.0"
-       -@copy "$(TCLREGDLL)" "$(SCRIPT_INSTALL_DIR)\reg1.0"
-       -@copy "$(ROOT)\library\reg1.0\pkgIndex.tcl" "$(SCRIPT_INSTALL_DIR)\reg1.0"
-       @echo installing encoding files
-       -@$(MKDIR) "$(SCRIPT_INSTALL_DIR)\encoding"
-       -@copy "$(ROOT)\library\encoding\*.enc" "$(SCRIPT_INSTALL_DIR)\encoding"
-       @echo installing library files
-       -@copy "$(GENERICDIR)\tcl.h"         "$(INCLUDE_INSTALL_DIR)"
-       -@copy "$(GENERICDIR)\tclDecls.h"    "$(INCLUDE_INSTALL_DIR)"
-       -@copy "$(ROOT)\library\history.tcl" "$(SCRIPT_INSTALL_DIR)"
-       -@copy "$(ROOT)\library\init.tcl"    "$(SCRIPT_INSTALL_DIR)"
-       -@copy "$(ROOT)\library\ldAout.tcl"  "$(SCRIPT_INSTALL_DIR)"
-       -@copy "$(ROOT)\library\parray.tcl"  "$(SCRIPT_INSTALL_DIR)"
-       -@copy "$(ROOT)\library\safe.tcl"    "$(SCRIPT_INSTALL_DIR)"
-       -@copy "$(ROOT)\library\tclIndex"    "$(SCRIPT_INSTALL_DIR)"
-       -@copy "$(ROOT)\library\package.tcl" "$(SCRIPT_INSTALL_DIR)"
-       -@copy "$(ROOT)\library\word.tcl"    "$(SCRIPT_INSTALL_DIR)"
-       -@copy "$(ROOT)\library\auto.tcl"    "$(SCRIPT_INSTALL_DIR)"
-
-#
-# Regenerate the stubs files.
-#
-
-genstubs:
-       tclsh$(VERSION) $(ROOT)\tools\genStubs.tcl $(GENERICDIR) \
-               $(GENERICDIR)\tcl.decls $(GENERICDIR)\tclInt.decls
-
-#
-# Regenerate the windows help files.
-#
-
-TCLTOOLS       = $(ROOT)/tools
-MAN2TCL                = $(TCLTOOLS)/man2tcl
-TCLRTF         = $(TCLTOOLS)/tcl.rtf
-TCLHPJ         = $(TCLTOOLS)/tcl.hpj
-MAN2HELP       = $(TCLTOOLS)/man2help.tcl
-HCRTF          = $(TOOLS32)/bin/hcrtf.exe
-
-winhelp: $(TCLRTF)
-       cd $(TCLTOOLS)
-       start /wait $(HCRTF) -xn $(TCLHPJ)
-
-$(MAN2TCL).exe: $(MAN2TCL).obj 
-       cd $(TCLTOOLS)
-       $(cc32) /nologo /G4 /ML /O2 $(MAN2TCL).c
-
-$(TCLRTF): $(MAN2TCL).exe $(TCLSH)
-       cd $(TCLTOOLS)
-       ..\win\$(TCLSH) $(MAN2HELP) $(NAMEPREFIX) $(VERSION) $(ROOT)/doc ../../tk$(DOTVERSION)/doc
-
-#
-# Special case object file targets
-#
-
-$(TMPDIR)\tclWinInit.obj: $(WINDIR)\tclWinInit.c
-       $(cc32) -DBUILD_tcl $(TCL_CFLAGS) $(EXTFLAGS) -Fo$(TMPDIR)\ $?
-
-$(TMPDIR)\testMain.obj: $(WINDIR)\tclAppInit.c
-       $(cc32) $(TCL_CFLAGS) -DTCL_TEST -Fo$(TMPDIR)\testMain.obj $?
-
-$(TMPDIR)\tclTest.obj: $(GENERICDIR)\tclTest.c
-       $(cc32) $(TCL_CFLAGS) -Fo$@ $?
-
-$(TMPDIR)\tclTestObj.obj: $(GENERICDIR)\tclTestObj.c
-       $(cc32) $(TCL_CFLAGS) -Fo$@ $?
-
-$(TMPDIR)\tclWinTest.obj: $(WINDIR)\tclWinTest.c
-       $(cc32) $(TCL_CFLAGS) -Fo$@ $?
-
-$(TMPDIR)\tclAppInit.obj : $(WINDIR)\tclAppInit.c
-       $(cc32) $(TCL_CFLAGS) -Fo$@ $?
-
-# The following objects should be built using the stub interfaces
-
-$(TMPDIR)\tclWinReg.obj : $(WINDIR)\tclWinReg.c
-       $(cc32) $(TCL_CFLAGS) -DUSE_TCL_STUBS -Fo$@ $?
-
-$(TMPDIR)\tclWinDde.obj : $(WINDIR)\tclWinDde.c
-       $(cc32) $(TCL_CFLAGS) -DUSE_TCL_STUBS -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
-
-$(TMPDIR)\tclStubLib.obj : $(GENERICDIR)\tclStubLib.c
-       $(cc32) $(TCL_CFLAGS) -DSTATIC_BUILD -Fo$@ $?
-
-
-# Dedependency rules
-
-$(GENERICDIR)\regcomp.c: \
-       $(GENERICDIR)\regguts.h \
-       $(GENERICDIR)\regc_lex.c \
-       $(GENERICDIR)\regc_color.c \
-       $(GENERICDIR)\regc_nfa.c \
-       $(GENERICDIR)\regc_cvec.c \
-       $(GENERICDIR)\regc_locale.c
-$(GENERICDIR)\regcustom.h: \
-       $(GENERICDIR)\tclInt.h \
-       $(GENERICDIR)\tclPort.h \
-       $(GENERICDIR)\regex.h
-$(GENERICDIR)\regexec.c: \
-       $(GENERICDIR)\rege_dfa.c \
-       $(GENERICDIR)\regguts.h
-$(GENERICDIR)\regerror.c: $(GENERICDIR)\regguts.h
-$(GENERICDIR)\regfree.c: $(GENERICDIR)\regguts.h
-$(GENERICDIR)\regfronts.c: $(GENERICDIR)\regguts.h
-$(GENERICDIR)\regguts.h: $(GENERICDIR)\regcustom.h
-
-#
-# Implicit rules
-#
-
-{$(WINDIR)}.c{$(TMPDIR)}.obj:
-    $(cc32) -DBUILD_tcl $(TCL_CFLAGS) -Fo$(TMPDIR)\ $<
-
-{$(GENERICDIR)}.c{$(TMPDIR)}.obj:
-    $(cc32) -DBUILD_tcl $(TCL_CFLAGS) -Fo$(TMPDIR)\ $<
-
-{$(ROOT)\compat}.c{$(TMPDIR)}.obj:
-    $(cc32) -DBUILD_tcl $(TCL_CFLAGS) -Fo$(TMPDIR)\ $<
-
-{$(WINDIR)}.rc{$(TMPDIR)}.res:
-       $(rc32) -fo $@ -r -i $(GENERICDIR) -i $(WINDIR) -D__WIN32__ \
-               $(TCL_DEFINES) $<
-
-clean:
-       -@$(RM) $(OUTDIR)\*.exp 
-       -@$(RM) $(OUTDIR)\*.lib 
-       -@$(RM) $(OUTDIR)\*.dll 
-       -@$(RM) $(OUTDIR)\*.exe
-       -@$(RM) $(OUTDIR)\*.pdb
-       -@$(RM) $(TMPDIR)\*.pch
-       -@$(RM) $(TMPDIR)\*.obj
-       -@$(RM) $(TMPDIR)\*.res
-       -@$(RM) $(TMPDIR)\*.exe
-       -@$(RMDIR) $(OUTDIR)
-       -@$(RMDIR) $(TMPDIR)
-
-
-
+#------------------------------------------------------------------------------\r
+# makefile.vc --\r
+#\r
+#      Microsoft Visual C++ makefile for use with nmake.exe v1.62+ (VC++ 5.0+)\r
+#\r
+# See the file "license.terms" for information on usage and redistribution\r
+# of this file, and for a DISCLAIMER OF ALL WARRANTIES.\r
+# \r
+# Copyright (c) 1995-1996 Sun Microsystems, Inc.\r
+# Copyright (c) 1998-2000 Ajuba Solutions.\r
+# Copyright (c) 2001 ActiveState Corporation.\r
+# Copyright (c) 2001-2002 David Gravereaux.\r
+#\r
+#------------------------------------------------------------------------------\r
+# RCS: @(#) $Id$\r
+#------------------------------------------------------------------------------\r
+\r
+!if "$(MSVCDIR)" == ""\r
+MSG = ^\r
+You'll need to run vcvars32.bat from Developer Studio, first, to setup^\r
+the environment.  Jump to this line to read the new instructions.\r
+!error $(MSG)\r
+!endif\r
+\r
+#------------------------------------------------------------------------------\r
+# HOW TO USE this makefile:\r
+#\r
+# 1)  It is now necessary to have MSVCDir set in the environment.  This is used\r
+#     as a check to see if vcvars32.bat had been run prior to running nmake or\r
+#     during the installation of Microsoft Visual C++, MSVCDir had been set\r
+#     globally and the PATH adjusted.  Either way is valid.\r
+#\r
+#     You'll need to run vcvars32.bat contained in the MsDev's vc(98)/bin\r
+#     directory to setup the proper environment, if needed, for your current\r
+#     setup.  This is a needed bootstrap requirement and allows the swapping of\r
+#     different environments to be easier.\r
+#\r
+# 2)  To use the Platform SDK (not expressly needed), run setenv.bat after\r
+#     vcvars32.bat according to the instructions for it.  This can also turn on\r
+#     the 64-bit compiler, if your SDK has it.\r
+#\r
+# 3)  Targets are:\r
+#      release  -- Builds the core, the shell and the dlls. (default)\r
+#      dlls     -- Just builds the windows extensions and the 16-bit DOS\r
+#                  pipe/thunk helper app.\r
+#      shell    -- Just builds the shell and the core.\r
+#      core     -- Only builds the core [tclXX.(dll|lib)].\r
+#      all      -- Builds everything.\r
+#      test     -- Builds and runs the test suite.\r
+#      tcltest  -- Just builds the test shell.\r
+#      install  -- Installs the built binaries and libraries to $(INSTALLDIR)\r
+#                  as the root of the install tree.\r
+#      tidy/clean/hose -- varying levels of cleaning.\r
+#      genstubs -- Rebuilds the Stubs table and support files (dev only).\r
+#      depend   -- Generates an accurate set of source dependancies for this\r
+#                  makefile.  Helpful to avoid problems when the sources are\r
+#                  refreshed and you rebuild, but can "overbuild" when common\r
+#                  headers like tclInt.h just get small changes.\r
+#      winhelp  -- Builds the windows .hlp file for Tcl from the troff man\r
+#                  files found in $(ROOT)\doc .\r
+#\r
+# 4)  Macros usable on the commandline:\r
+#      INSTALLDIR=<path>\r
+#              Sets where to install Tcl from the built binaries.\r
+#              C:\Progra~1\Tcl is assumed when not specified.\r
+#\r
+#      OPTS=static,msvcrt,linkexten,threads,symbols,profile,loimpact,none\r
+#              Sets special options for the core.  The default is for none.\r
+#              Any combination of the above may be used (comma separated).\r
+#              'none' will over-ride everything to nothing.\r
+#\r
+#              static  =  Builds a static library of the core instead of a\r
+#                         dll.  The shell will be static (and large), as well.\r
+#              msvcrt  =  Effects the static option only to switch it from\r
+#                         using libcmt(d) as the C runtime [by default] to\r
+#                         msvcrt(d). This is useful for static embedding\r
+#                         support.\r
+#              linkexten = Effects the static option only to switch\r
+#                         tclshXX.exe to have the dde and reg extension linked\r
+#                         inside it.\r
+#              threads =  Turns on full multithreading support.\r
+#              symbols =  Adds symbols for step debugging.\r
+#              profile =  Adds profiling hooks.  Map file is assumed.\r
+#              loimpact =  Adds a flag for how NT treats the heap to keep memory\r
+#                         in use, low.  This is said to impact alloc performance.\r
+#\r
+#      STATS=memdbg,compdbg,none\r
+#              Sets optional memory and bytecode compiler debugging code added\r
+#              to the core.  The default is for none.  Any combination of the\r
+#              above may be used (comma separated).  'none' will over-ride\r
+#              everything to nothing.\r
+#\r
+#              memdbg   = Enables the debugging memory allocator.\r
+#              compdbg  = Enables byte compilation logging.\r
+#\r
+#      MACHINE=(IX86|IA64|ALPHA)\r
+#              Set the machine type used for the compiler, linker, and\r
+#              resource compiler.  This hook is needed to tell the tools\r
+#              when alternate platforms are requested.  IX86 is the default\r
+#              when not specified.\r
+#\r
+#      TMP_DIR=<path>\r
+#      OUT_DIR=<path>\r
+#              Hooks to allow the intermediate and output directories to be\r
+#              changed.  $(OUT_DIR) is assumed to be \r
+#              $(BINROOT)\(Release|Debug) based on if symbols are requested.\r
+#              $(TMP_DIR) will de $(OUT_DIR)\<buildtype> by default.\r
+#\r
+#      TESTPAT=<file>\r
+#              Reads the tests requested to be run from this file.\r
+#\r
+# 5)  Examples:\r
+#\r
+#      Basic syntax of calling nmake looks like this:\r
+#      nmake [-nologo] -f makefile.vc [target|macrodef [target|macrodef] [...]]\r
+#\r
+#                        Standard (no frills)\r
+#       c:\tcl_src\win\>c:\progra~1\micros~1\vc98\bin\vcvars32.bat\r
+#       Setting environment for using Microsoft Visual C++ tools.\r
+#       c:\tcl_src\win\>nmake -f makefile.vc release\r
+#       c:\tcl_src\win\>nmake -f makefile.vc install INSTALLDIR=c:\progra~1\tcl\r
+#\r
+#                         Building for Win64\r
+#       c:\tcl_src\win\>c:\progra~1\micros~1\vc98\bin\vcvars32.bat\r
+#       Setting environment for using Microsoft Visual C++ tools.\r
+#       c:\tcl_src\win\>c:\progra~1\platfo~1\setenv.bat /pre64 /RETAIL\r
+#       Targeting Windows pre64 RETAIL\r
+#       c:\tcl_src\win\>nmake -f makefile.vc MACHINE=IA64\r
+#\r
+#------------------------------------------------------------------------------\r
+#==============================================================================\r
+###############################################################################\r
+\r
+\r
+#    //==================================================================\\\r
+#   >>[               -> Do not modify below this line. <-               ]<<\r
+#   >>[  Please, use the commandline macros to modify how Tcl is built.  ]<<\r
+#   >>[  If you need more features, send us a patch for more macros.     ]<<\r
+#    \\==================================================================//\r
+\r
+\r
+###############################################################################\r
+#==============================================================================\r
+#------------------------------------------------------------------------------\r
+\r
+!if !exist("makefile.vc")\r
+MSG = ^\r
+You must run this makefile only from the directory it is in.^\r
+Please `cd` to its location first.\r
+!error $(MSG)\r
+!endif\r
+\r
+PROJECT        = tcl\r
+!include "rules.vc"\r
+\r
+STUBPREFIX = $(PROJECT)stub\r
+DOTVERSION = 8.4\r
+VERSION = $(DOTVERSION:.=)\r
+\r
+DDEDOTVERSION = 1.2\r
+DDEVERSION = $(DDEDOTVERSION:.=)\r
+\r
+REGDOTVERSION = 1.1\r
+REGVERSION = $(REGDOTVERSION:.=)\r
+\r
+BINROOT                = .\r
+ROOT           = ..\r
+\r
+TCLIMPLIB      = $(OUT_DIR)\$(PROJECT)$(VERSION)$(SUFX).lib\r
+TCLLIBNAME     = $(PROJECT)$(VERSION)$(SUFX).$(EXT)\r
+TCLLIB         = $(OUT_DIR)\$(TCLLIBNAME)\r
+\r
+TCLSTUBLIBNAME = $(STUBPREFIX)$(VERSION).lib\r
+TCLSTUBLIB     = $(OUT_DIR)\$(TCLSTUBLIBNAME)\r
+\r
+TCLSHNAME      = $(PROJECT)sh$(VERSION)$(SUFX).exe\r
+TCLSH          = $(OUT_DIR)\$(TCLSHNAME)\r
+TCLPIPEDLLNAME = $(PROJECT)pip$(VERSION).dll\r
+TCLPIPEDLL     = $(OUT_DIR)\$(TCLPIPEDLLNAME)\r
+\r
+TCLREGLIBNAME  = $(PROJECT)reg$(REGVERSION)$(SUFX:t=).$(EXT)\r
+TCLREGLIB      = $(OUT_DIR)\$(TCLREGLIBNAME)\r
+\r
+TCLDDELIBNAME  = $(PROJECT)dde$(DDEVERSION)$(SUFX:t=).$(EXT)\r
+TCLDDELIB      = $(OUT_DIR)\$(TCLDDELIBNAME)\r
+\r
+TCLTEST                = $(OUT_DIR)\$(PROJECT)test.exe\r
+CAT32          = $(OUT_DIR)\cat32.exe\r
+\r
+### Make sure we use backslash only.\r
+_INSTALLDIR            = $(INSTALLDIR:/=\)\r
+LIB_INSTALL_DIR                = $(_INSTALLDIR)\lib\r
+BIN_INSTALL_DIR                = $(_INSTALLDIR)\bin\r
+DOC_INSTALL_DIR                = $(_INSTALLDIR)\doc\r
+SCRIPT_INSTALL_DIR     = $(_INSTALLDIR)\lib\tcl$(DOTVERSION)\r
+INCLUDE_INSTALL_DIR    = $(_INSTALLDIR)\include\r
+\r
+TCLSHOBJS = \\r
+       $(TMP_DIR)\tclAppInit.obj \\r
+!if $(TCL_LINKWITHEXTENSIONS)\r
+       $(TMP_DIR)\tclWinReg.obj \\r
+       $(TMP_DIR)\tclWinDde.obj \\r
+!endif\r
+       $(TMP_DIR)\tclsh.res\r
+\r
+TCLTESTOBJS = \\r
+       $(TMP_DIR)\tclTest.obj \\r
+       $(TMP_DIR)\tclTestObj.obj \\r
+       $(TMP_DIR)\tclTestProcBodyObj.obj \\r
+       $(TMP_DIR)\tclThreadTest.obj \\r
+       $(TMP_DIR)\tclWinTest.obj \\r
+!if $(TCL_LINKWITHEXTENSIONS)\r
+       $(TMP_DIR)\tclWinReg.obj \\r
+       $(TMP_DIR)\tclWinDde.obj \\r
+!endif\r
+       $(TMP_DIR)\testMain.obj\r
+\r
+TCLOBJS = \\r
+       $(TMP_DIR)\regcomp.obj \\r
+       $(TMP_DIR)\regerror.obj \\r
+       $(TMP_DIR)\regexec.obj \\r
+       $(TMP_DIR)\regfree.obj \\r
+       $(TMP_DIR)\strftime.obj \\r
+       $(TMP_DIR)\strtoll.obj \\r
+       $(TMP_DIR)\strtoull.obj \\r
+       $(TMP_DIR)\tclAlloc.obj \\r
+       $(TMP_DIR)\tclAsync.obj \\r
+       $(TMP_DIR)\tclBasic.obj \\r
+       $(TMP_DIR)\tclBinary.obj \\r
+       $(TMP_DIR)\tclCkalloc.obj \\r
+       $(TMP_DIR)\tclClock.obj \\r
+       $(TMP_DIR)\tclCmdAH.obj \\r
+       $(TMP_DIR)\tclCmdIL.obj \\r
+       $(TMP_DIR)\tclCmdMZ.obj \\r
+       $(TMP_DIR)\tclCompCmds.obj \\r
+       $(TMP_DIR)\tclCompExpr.obj \\r
+       $(TMP_DIR)\tclCompile.obj \\r
+       $(TMP_DIR)\tclDate.obj \\r
+       $(TMP_DIR)\tclEncoding.obj \\r
+       $(TMP_DIR)\tclEnv.obj \\r
+       $(TMP_DIR)\tclEvent.obj \\r
+       $(TMP_DIR)\tclExecute.obj \\r
+       $(TMP_DIR)\tclFCmd.obj \\r
+       $(TMP_DIR)\tclFileName.obj \\r
+       $(TMP_DIR)\tclGet.obj \\r
+       $(TMP_DIR)\tclHash.obj \\r
+       $(TMP_DIR)\tclHistory.obj \\r
+       $(TMP_DIR)\tclIndexObj.obj \\r
+       $(TMP_DIR)\tclInterp.obj \\r
+       $(TMP_DIR)\tclIO.obj \\r
+       $(TMP_DIR)\tclIOCmd.obj \\r
+       $(TMP_DIR)\tclIOGT.obj \\r
+       $(TMP_DIR)\tclIOSock.obj \\r
+       $(TMP_DIR)\tclIOUtil.obj \\r
+       $(TMP_DIR)\tclLink.obj \\r
+       $(TMP_DIR)\tclListObj.obj \\r
+       $(TMP_DIR)\tclLiteral.obj \\r
+       $(TMP_DIR)\tclLoad.obj \\r
+       $(TMP_DIR)\tclMain.obj \\r
+       $(TMP_DIR)\tclNamesp.obj \\r
+       $(TMP_DIR)\tclNotify.obj \\r
+       $(TMP_DIR)\tclObj.obj \\r
+       $(TMP_DIR)\tclPanic.obj \\r
+       $(TMP_DIR)\tclParse.obj \\r
+       $(TMP_DIR)\tclParseExpr.obj \\r
+       $(TMP_DIR)\tclPipe.obj \\r
+       $(TMP_DIR)\tclPkg.obj \\r
+       $(TMP_DIR)\tclPosixStr.obj \\r
+       $(TMP_DIR)\tclPreserve.obj \\r
+       $(TMP_DIR)\tclProc.obj \\r
+       $(TMP_DIR)\tclRegexp.obj \\r
+       $(TMP_DIR)\tclResolve.obj \\r
+       $(TMP_DIR)\tclResult.obj \\r
+       $(TMP_DIR)\tclScan.obj \\r
+       $(TMP_DIR)\tclStringObj.obj \\r
+       $(TMP_DIR)\tclStubInit.obj \\r
+       $(TMP_DIR)\tclStubLib.obj \\r
+       $(TMP_DIR)\tclThread.obj \\r
+       $(TMP_DIR)\tclThreadAlloc.obj \\r
+       $(TMP_DIR)\tclThreadJoin.obj \\r
+       $(TMP_DIR)\tclTimer.obj \\r
+       $(TMP_DIR)\tclUtf.obj \\r
+       $(TMP_DIR)\tclUtil.obj \\r
+       $(TMP_DIR)\tclVar.obj \\r
+       $(TMP_DIR)\tclWin32Dll.obj \\r
+       $(TMP_DIR)\tclWinChan.obj \\r
+       $(TMP_DIR)\tclWinConsole.obj \\r
+       $(TMP_DIR)\tclWinSerial.obj \\r
+       $(TMP_DIR)\tclWinError.obj \\r
+       $(TMP_DIR)\tclWinFCmd.obj \\r
+       $(TMP_DIR)\tclWinFile.obj \\r
+       $(TMP_DIR)\tclWinInit.obj \\r
+       $(TMP_DIR)\tclWinLoad.obj \\r
+       $(TMP_DIR)\tclWinMtherr.obj \\r
+       $(TMP_DIR)\tclWinNotify.obj \\r
+       $(TMP_DIR)\tclWinPipe.obj \\r
+       $(TMP_DIR)\tclWinSock.obj \\r
+       $(TMP_DIR)\tclWinThrd.obj \\r
+       $(TMP_DIR)\tclWinTime.obj \\r
+!if !$(STATIC_BUILD)\r
+       $(TMP_DIR)\tcl.res\r
+!endif\r
+\r
+TCLSTUBOBJS = $(TMP_DIR)\tclStubLib.obj\r
+\r
+### The following paths CANNOT have spaces in them.\r
+COMPATDIR      = $(ROOT)\compat\r
+DOCDIR         = $(ROOT)\doc\r
+GENERICDIR     = $(ROOT)\generic\r
+TOOLSDIR       = $(ROOT)\tools\r
+WINDIR         = $(ROOT)\win\r
+\r
+\r
+#---------------------------------------------------------------------\r
+# Compile flags\r
+#---------------------------------------------------------------------\r
+\r
+!if !$(DEBUG)\r
+!if $(OPTIMIZING)\r
+### This cranks the optimization level to maximize speed\r
+cdebug = -O2 -Op -Gs\r
+!else\r
+cdebug =\r
+!endif\r
+!else if "$(MACHINE)" == "IA64"\r
+### Warnings are too many, can't support warnings into errors.\r
+cdebug = -Z7 -Od\r
+!else\r
+cdebug = -Z7 -WX -Od\r
+!endif\r
+\r
+### Declarations common to all compiler options\r
+cflags = -nologo -c -W3 -YX -Fp$(TMP_DIR)^\\r
+\r
+!if $(PENT_0F_ERRATA)\r
+cflags = $(cflags) -QI0f\r
+!endif\r
+\r
+!if $(ITAN_B_ERRATA)\r
+cflags = $(cflags) -QIA64_Bx\r
+!endif\r
+\r
+### Turn on the thread allocator, too.\r
+!if $(TCL_THREADS)\r
+cflags = $(cflags) -DUSE_THREAD_ALLOC=1\r
+!endif\r
+\r
+!if $(MSVCRT)\r
+crt = -MD$(DBGX)\r
+!else\r
+crt = -MT$(DBGX)\r
+!endif\r
+\r
+TCL_INCLUDES   = -I"$(WINDIR)" -I"$(GENERICDIR)"\r
+BASE_CLFAGS    = $(cflags) $(cdebug) $(crt) $(TCL_INCLUDES)\r
+CON_CFLAGS     = $(cflags) $(cdebug) $(crt) -DCONSOLE\r
+TCL_CFLAGS     = $(BASE_CLFAGS) $(OPTDEFINES)\r
+\r
+\r
+#---------------------------------------------------------------------\r
+# Link flags\r
+#---------------------------------------------------------------------\r
+\r
+!if $(DEBUG)\r
+ldebug = -debug:full -debugtype:cv\r
+!else\r
+ldebug = -release -opt:ref -opt:icf,3\r
+!endif\r
+\r
+### Declarations common to all linker options\r
+lflags = -nologo -machine:$(MACHINE) $(ldebug)\r
+\r
+!if $(PROFILE)\r
+lflags = $(lflags) -profile\r
+!endif\r
+\r
+!if $(ALIGN98_HACK) && !$(STATIC_BUILD)\r
+### Align sections for PE size savings.\r
+lflags = $(lflags) -opt:nowin98\r
+!else if !$(ALIGN98_HACK) && $(STATIC_BUILD)\r
+### Align sections for speed in loading by choosing the virtual page size.\r
+lflags = $(lflags) -align:4096\r
+!endif\r
+\r
+!if $(LOIMPACT)\r
+lflags = $(lflags) -ws:aggressive\r
+!endif\r
+\r
+dlllflags = $(lflags) -dll\r
+conlflags = $(lflags) -subsystem:console\r
+guilflags = $(lflags) -subsystem:windows\r
+\r
+baselibs   = kernel32.lib advapi32.lib user32.lib\r
+\r
+\r
+#---------------------------------------------------------------------\r
+# TclTest flags\r
+#---------------------------------------------------------------------\r
+\r
+!IF "$(TESTPAT)" != ""\r
+TESTFLAGS = -file $(TESTPAT)\r
+!ENDIF\r
+\r
+\r
+#---------------------------------------------------------------------\r
+# Project specific targets\r
+#---------------------------------------------------------------------\r
+\r
+release:    setup $(TCLSH) $(TCLSTUBLIB) dlls\r
+core:      setup $(TCLLIB) $(TCLSTUBLIB)\r
+shell:     setup $(TCLSH)\r
+dlls:      setup $(TCLPIPEDLL) $(TCLREGLIB) $(TCLDDELIB)\r
+all:       setup $(TCLSH) $(TCLSTUBLIB) dlls $(CAT32) \r
+tcltest:    setup $(TCLTEST) dlls $(CAT32)\r
+install:    install-binaries install-libraries install-docs\r
+\r
+\r
+test: setup $(TCLTEST) dlls $(CAT32)\r
+       set TCL_LIBRARY=$(ROOT)/library\r
+!if "$(OS)" == "Windows_NT"  || "$(MSVCDIR)" == "IDE"\r
+       $(TCLTEST) $(ROOT)/tests/all.tcl $(TESTFLAGS)\r
+!else\r
+       $(TCLTEST) $(ROOT)/tests/all.tcl $(TESTFLAGS) > tests.log\r
+       type tests.log | more\r
+!endif\r
+\r
+runtest: setup $(TCLTEST) dlls $(CAT32)\r
+       set TCL_LIBRARY=$(ROOT)/library\r
+       $(TCLTEST)\r
+\r
+setup:\r
+       @if not exist $(OUT_DIR)\nul mkdir $(OUT_DIR)\r
+       @if not exist $(TMP_DIR)\nul mkdir $(TMP_DIR)\r
+\r
+!if !$(STATIC_BUILD)\r
+$(TCLIMPLIB): $(TCLLIB)\r
+!endif\r
+\r
+$(TCLLIB): $(TCLOBJS)\r
+!if $(STATIC_BUILD)\r
+       $(lib32) -nologo -out:$@ @<<\r
+$**\r
+<<\r
+!else\r
+       $(link32) $(dlllflags) -base:@$(WINDIR)\coffbase.txt,tcl -out:$@ \\r
+               $(baselibs) @<<\r
+$**\r
+<<\r
+       -@del $*.exp\r
+!endif\r
+\r
+$(TCLSTUBLIB): $(TCLSTUBOBJS)\r
+       $(lib32) -nologo -out:$@ $(TCLSTUBOBJS)\r
+\r
+$(TCLSH): $(TCLSHOBJS) $(TCLIMPLIB)\r
+       $(link32) $(conlflags) -stack:2300000 -out:$@ $(baselibs) $**\r
+\r
+$(TCLTEST): $(TCLTESTOBJS) $(TCLIMPLIB)\r
+       $(link32) $(conlflags) -stack:2300000 -out:$@ $(baselibs) $**\r
+\r
+$(TCLPIPEDLL): $(WINDIR)\stub16.c\r
+       $(cc32) $(CON_CFLAGS) -Fo$(TMP_DIR)\ $(WINDIR)\stub16.c\r
+       $(link32) $(conlflags) -out:$@ $(TMP_DIR)\stub16.obj $(baselibs)\r
+\r
+!if $(STATIC_BUILD)\r
+$(TCLDDELIB): $(TMP_DIR)\tclWinDde.obj\r
+       $(lib32) -nologo -out:$@ $(TMP_DIR)\tclWinDde.obj\r
+!else\r
+$(TCLDDELIB): $(TMP_DIR)\tclWinDde.obj $(TCLSTUBLIB)\r
+       $(link32) $(dlllflags) -base:@$(WINDIR)\coffbase.txt,tcldde -out:$@ \\r
+               $** $(baselibs)\r
+       -@del $*.exp\r
+       -@del $*.lib\r
+!endif\r
+\r
+!if $(STATIC_BUILD)\r
+$(TCLREGLIB): $(TMP_DIR)\tclWinReg.obj\r
+       $(lib32) -nologo -out:$@ $(TMP_DIR)\tclWinReg.obj\r
+!else\r
+$(TCLREGLIB): $(TMP_DIR)\tclWinReg.obj $(TCLSTUBLIB)\r
+       $(link32) $(dlllflags) -base:@$(WINDIR)\coffbase.txt,tclreg -out:$@ \\r
+               $** $(baselibs)\r
+       -@del $*.exp\r
+       -@del $*.lib\r
+!endif\r
+\r
+$(CAT32): $(WINDIR)\cat.c\r
+       $(cc32) $(CON_CFLAGS) -Fo$(TMP_DIR)\ $?\r
+       $(link32) $(conlflags) -out:$@ -stack:16384 $(TMP_DIR)\cat.obj \\r
+               $(baselibs)\r
+\r
+\r
+#---------------------------------------------------------------------\r
+# Regenerate the stubs files.  [Development use only]\r
+#---------------------------------------------------------------------\r
+\r
+genstubs:\r
+!if !exist($(TCLSH))\r
+       @echo Build tclsh first!\r
+!else\r
+       $(TCLSH) $(TOOLSDIR:\=/)\genStubs.tcl $(GENERICDIR:\=/) \\r
+               $(GENERICDIR:\=/)/tcl.decls $(GENERICDIR:\=/)/tclInt.decls\r
+!endif\r
+\r
+\r
+#---------------------------------------------------------------------\r
+# Generate the makefile depedancies.\r
+#---------------------------------------------------------------------\r
+\r
+depend:\r
+!if !exist($(TCLSH))\r
+       @echo Build tclsh first!\r
+!else\r
+       $(TCLSH) $(TOOLSDIR:\=/)/mkdepend.tcl -vc32 -out:"$(OUT_DIR)\depend.mk" \\r
+               -passthru:"-DBUILD_tcl $(TCL_INCLUDES:"="")" $(GENERICDIR) \\r
+               $(COMPATDIR) $(WINDIR) @<<\r
+$(TCLOBJS)\r
+<<\r
+!endif\r
+\r
+\r
+#---------------------------------------------------------------------\r
+# Build the windows help file.\r
+#---------------------------------------------------------------------\r
+\r
+TCLHLPBASE     = $(PROJECT)$(VERSION)\r
+HELPFILE       = $(OUT_DIR)\$(TCLHLPBASE).hlp\r
+HELPCNT                = $(OUT_DIR)\$(TCLHLPBASE).cnt\r
+DOCTMP_DIR     = $(OUT_DIR)\$(PROJECT)_docs\r
+HELPRTF                = $(DOCTMP_DIR)\$(PROJECT).rtf\r
+MAN2HELP       = $(DOCTMP_DIR)\man2help.tcl\r
+MAN2HELP2      = $(DOCTMP_DIR)\man2help2.tcl\r
+INDEX          = $(DOCTMP_DIR)\index.tcl\r
+BMP            = $(DOCTMP_DIR)\feather.bmp\r
+BMP_NOPATH     = feather.bmp\r
+MAN2TCL                = $(DOCTMP_DIR)\man2tcl.exe\r
+\r
+winhelp: docsetup $(HELPFILE)\r
+\r
+docsetup:\r
+       @if not exist $(DOCTMP_DIR)\nul mkdir $(DOCTMP_DIR)\r
+\r
+$(MAN2HELP) $(MAN2HELP2) $(INDEX) $(BMP): $(TOOLSDIR)\$$(@F)\r
+       copy $(TOOLSDIR)\$(@F) $(@D)\r
+\r
+$(HELPFILE): $(HELPRTF) $(BMP)\r
+       cd $(DOCTMP_DIR)\r
+       start /wait hcrtf.exe -x <<$(PROJECT).hpj\r
+[OPTIONS]\r
+COMPRESS=12 Hall Zeck\r
+LCID=0x409 0x0 0x0 ; English (United States)\r
+TITLE=Tcl/Tk Reference Manual\r
+BMROOT=.\r
+CNT=$(@B).cnt\r
+HLP=$(@B).hlp\r
+\r
+[FILES]\r
+$(PROJECT).rtf\r
+\r
+[WINDOWS]\r
+main="Tcl/Tk Reference Manual",,27648,(r15263976),(r65535)\r
+\r
+[CONFIG]\r
+BrowseButtons()\r
+CreateButton(1, "Web", ExecFile("http://www.tcl.tk"))\r
+CreateButton(2, "SF", ExecFile("http://sf.net/projects/tcl"))\r
+CreateButton(3, "Wiki", ExecFile("http://wiki.tcl.tk"))\r
+CreateButton(4, "FAQ", ExecFile("http://www.purl.org/NET/Tcl-FAQ/"))\r
+<<\r
+       cd $(MAKEDIR)\r
+       copy "$(DOCTMP_DIR)\$(@B).hlp" "$(OUT_DIR)"\r
+       copy "$(DOCTMP_DIR)\$(@B).cnt" "$(OUT_DIR)"\r
+\r
+$(MAN2TCL): $(TOOLSDIR)\$$(@B).c\r
+       $(cc32) -nologo -G4 -ML -O2 -Fo$(@D)\ $(TOOLSDIR)\$(@B).c -link -out:$@\r
+\r
+$(HELPRTF): $(MAN2TCL) $(MAN2HELP) $(MAN2HELP2) $(INDEX) $(DOCDIR)\*\r
+       $(TCLSH) $(MAN2HELP:\=/) -bitmap $(BMP_NOPATH) $(PROJECT) $(VERSION) $(DOCDIR:\=/)\r
+\r
+install-docs:\r
+!if exist($(HELPFILE))\r
+       @xcopy /i /y "$(HELPFILE)" "$(DOC_INSTALL_DIR)\"\r
+       @xcopy /i /y "$(HELPCNT)" "$(DOC_INSTALL_DIR)\"\r
+!endif\r
+\r
+\r
+#---------------------------------------------------------------------\r
+# Special case object file targets\r
+#---------------------------------------------------------------------\r
+\r
+$(TMP_DIR)\testMain.obj: $(WINDIR)\tclAppInit.c\r
+!if $(TCL_LINKWITHEXTENSIONS)\r
+       $(cc32) $(TCL_CFLAGS) -DTCL_TEST -DTCL_LINKWITHEXTENSIONS -Fo$@ $?\r
+!else\r
+       $(cc32) $(TCL_CFLAGS) -DTCL_TEST -Fo$@ $?\r
+!endif\r
+\r
+$(TMP_DIR)\tclTest.obj: $(GENERICDIR)\tclTest.c\r
+       $(cc32) $(TCL_CFLAGS) -Fo$@ $?\r
+\r
+$(TMP_DIR)\tclTestObj.obj: $(GENERICDIR)\tclTestObj.c\r
+       $(cc32) $(TCL_CFLAGS) -Fo$@ $?\r
+\r
+$(TMP_DIR)\tclWinTest.obj: $(WINDIR)\tclWinTest.c\r
+       $(cc32) $(TCL_CFLAGS) -Fo$@ $?\r
+\r
+$(TMP_DIR)\tclAppInit.obj: $(WINDIR)\tclAppInit.c\r
+!if $(TCL_LINKWITHEXTENSIONS)\r
+       $(cc32) $(TCL_CFLAGS) -DTCL_LINKWITHEXTENSIONS -Fo$@ $?\r
+!else\r
+       $(cc32) $(TCL_CFLAGS) -Fo$@ $?\r
+!endif\r
+\r
+### The following objects should be built using the stub interfaces\r
+\r
+$(TMP_DIR)\tclWinReg.obj: $(WINDIR)\tclWinReg.c\r
+!if $(STATIC_BUILD)\r
+       $(cc32) $(BASE_CLFAGS) -DTCL_THREADS=1 -DSTATIC_BUILD -Fo$@ $?\r
+!else\r
+       $(cc32) $(BASE_CLFAGS) -DTCL_THREADS=1 -DUSE_TCL_STUBS -Fo$@ $?\r
+!endif\r
+\r
+\r
+$(TMP_DIR)\tclWinDde.obj: $(WINDIR)\tclWinDde.c\r
+!if $(STATIC_BUILD)\r
+       $(cc32) $(BASE_CLFAGS) -DTCL_THREADS=1 -DSTATIC_BUILD -Fo$@ $?\r
+!else\r
+       $(cc32) $(BASE_CLFAGS) -DTCL_THREADS=1 -DUSE_TCL_STUBS -Fo$@ $?\r
+!endif\r
+\r
+\r
+### The following objects are part of the stub library and should not\r
+### be built as DLL objects but none of the symbols should be exported\r
+\r
+$(TMP_DIR)\tclStubLib.obj: $(GENERICDIR)\tclStubLib.c\r
+       $(cc32) $(cdebug) $(cflags) -Zl -DSTATIC_BUILD $(TCL_INCLUDES) -Fo$@ $?\r
+\r
+\r
+#---------------------------------------------------------------------\r
+# Dedependency rules\r
+#---------------------------------------------------------------------\r
+\r
+$(GENERICDIR)\regcomp.c: \\r
+       $(GENERICDIR)\regguts.h \\r
+       $(GENERICDIR)\regc_lex.c \\r
+       $(GENERICDIR)\regc_color.c \\r
+       $(GENERICDIR)\regc_nfa.c \\r
+       $(GENERICDIR)\regc_cvec.c \\r
+       $(GENERICDIR)\regc_locale.c\r
+$(GENERICDIR)\regcustom.h: \\r
+       $(GENERICDIR)\tclInt.h \\r
+       $(GENERICDIR)\tclPort.h \\r
+       $(GENERICDIR)\regex.h\r
+$(GENERICDIR)\regexec.c: \\r
+       $(GENERICDIR)\rege_dfa.c \\r
+       $(GENERICDIR)\regguts.h\r
+$(GENERICDIR)\regerror.c: $(GENERICDIR)\regguts.h\r
+$(GENERICDIR)\regfree.c: $(GENERICDIR)\regguts.h\r
+$(GENERICDIR)\regfronts.c: $(GENERICDIR)\regguts.h\r
+$(GENERICDIR)\regguts.h: $(GENERICDIR)\regcustom.h\r
+\r
+!if exist("$(OUT_DIR)\depend.mk")\r
+!include "$(OUT_DIR)\depend.mk"\r
+!message *** Dependency rules in effect.\r
+!else\r
+!message *** Dependency rules are not being used.\r
+!endif\r
+\r
+### add a spacer in the output\r
+!message\r
+\r
+\r
+#---------------------------------------------------------------------\r
+# Implicit rules\r
+#---------------------------------------------------------------------\r
+\r
+{$(WINDIR)}.c{$(TMP_DIR)}.obj::\r
+    $(cc32) $(TCL_CFLAGS) -DBUILD_tcl -Fo$(TMP_DIR)\ @<<\r
+$<\r
+<<\r
+\r
+{$(GENERICDIR)}.c{$(TMP_DIR)}.obj::\r
+    $(cc32) $(TCL_CFLAGS) -DBUILD_tcl -Fo$(TMP_DIR)\ @<<\r
+$<\r
+<<\r
+\r
+{$(COMPATDIR)}.c{$(TMP_DIR)}.obj::\r
+    $(cc32) $(TCL_CFLAGS) -DBUILD_tcl -Fo$(TMP_DIR)\ @<<\r
+$<\r
+<<\r
+\r
+{$(WINDIR)}.rc{$(TMP_DIR)}.res:\r
+       $(rc32) -fo $@ -r -i "$(GENERICDIR)" -D__WIN32__ \\r
+!if $(DEBUG)\r
+       -d DEBUG \\r
+!endif\r
+!if $(TCL_THREADS)\r
+       -d TCL_THREADS \\r
+!endif\r
+!if $(STATIC_BUILD)\r
+       -d STATIC_BUILD \\r
+!endif\r
+       $<\r
+\r
+.SUFFIXES:\r
+.SUFFIXES:.c .rc\r
+\r
+\r
+#---------------------------------------------------------------------\r
+# Installation.\r
+#---------------------------------------------------------------------\r
+\r
+install-binaries:\r
+       @echo installing $(TCLLIBNAME)\r
+!if "$(TCLLIB)" != "$(TCLIMPLIB)"\r
+       @xcopy /i /y "$(TCLLIB)" "$(BIN_INSTALL_DIR)\"\r
+!endif\r
+       @xcopy /i /y "$(TCLIMPLIB)" "$(LIB_INSTALL_DIR)\"\r
+!if exist($(TCLSH))\r
+       @echo installing $(TCLSHNAME)\r
+       @xcopy /i /y "$(TCLSH)" "$(BIN_INSTALL_DIR)\"\r
+!endif\r
+!if exist($(TCLPIPEDLL))\r
+       @echo installing $(TCLPIPEDLLNAME)\r
+       @xcopy /i /y "$(TCLPIPEDLL)" "$(BIN_INSTALL_DIR)\"\r
+!endif\r
+       @echo installing $(TCLSTUBLIBNAME)\r
+       @xcopy /i /y "$(TCLSTUBLIB)" "$(LIB_INSTALL_DIR)\"\r
+\r
+install-libraries:\r
+       @echo installing http1.0\r
+       @xcopy /i /y "$(ROOT)\library\http1.0\*.tcl" \\r
+               "$(SCRIPT_INSTALL_DIR)\http1.0\"\r
+       @echo installing http2.4\r
+       @xcopy /i /y "$(ROOT)\library\http\*.tcl" \\r
+               "$(SCRIPT_INSTALL_DIR)\http2.4\"\r
+       @echo installing opt0.4\r
+       @xcopy /i /y "$(ROOT)\library\opt\*.tcl" \\r
+               "$(SCRIPT_INSTALL_DIR)\opt0.4\"\r
+       @echo installing msgcat1.3\r
+       @xcopy /i /y "$(ROOT)\library\msgcat\*.tcl" \\r
+           "$(SCRIPT_INSTALL_DIR)\msgcat1.3\"\r
+       @echo installing tcltest2.2 \r
+       @xcopy /i /y "$(ROOT)\library\tcltest\*.tcl" \\r
+           "$(SCRIPT_INSTALL_DIR)\tcltest2.2\"\r
+       @echo installing $(TCLDDELIBNAME)\r
+!if $(STATIC_BUILD)\r
+       @xcopy /i /y "$(TCLDDELIB)" "$(LIB_INSTALL_DIR)\"\r
+!else\r
+       @xcopy /i /y "$(TCLDDELIB)" "$(LIB_INSTALL_DIR)\dde$(DDEDOTVERSION)\"\r
+       @xcopy /i /y "$(ROOT)\library\dde\pkgIndex.tcl" \\r
+           "$(LIB_INSTALL_DIR)\dde$(DDEDOTVERSION)\"\r
+!endif\r
+       @echo installing $(TCLREGLIBNAME)\r
+!if $(STATIC_BUILD)\r
+       @xcopy /i /y "$(TCLREGLIB)" "$(LIB_INSTALL_DIR)\"\r
+!else\r
+       @xcopy /i /y "$(TCLREGLIB)" "$(LIB_INSTALL_DIR)\reg$(REGDOTVERSION)\"\r
+       @xcopy /i /y "$(ROOT)\library\reg\pkgIndex.tcl" \\r
+           "$(LIB_INSTALL_DIR)\reg$(REGDOTVERSION)\"\r
+!endif\r
+       @echo installing encoding files\r
+       @xcopy /i /y "$(ROOT)\library\encoding\*.enc" \\r
+               "$(SCRIPT_INSTALL_DIR)\encoding\"\r
+       @echo installing library files\r
+       @xcopy /i /y "$(GENERICDIR)\tcl.h"          "$(INCLUDE_INSTALL_DIR)\"\r
+       @xcopy /i /y "$(GENERICDIR)\tclDecls.h"     "$(INCLUDE_INSTALL_DIR)\"\r
+       @xcopy /i /y "$(GENERICDIR)\tclPlatDecls.h" "$(INCLUDE_INSTALL_DIR)\"\r
+       @xcopy /i /y "$(ROOT)\library\history.tcl"  "$(SCRIPT_INSTALL_DIR)\"\r
+       @xcopy /i /y "$(ROOT)\library\init.tcl"     "$(SCRIPT_INSTALL_DIR)\"\r
+       @xcopy /i /y "$(ROOT)\library\ldAout.tcl"   "$(SCRIPT_INSTALL_DIR)\"\r
+       @xcopy /i /y "$(ROOT)\library\parray.tcl"   "$(SCRIPT_INSTALL_DIR)\"\r
+       @xcopy /i /y "$(ROOT)\library\safe.tcl"     "$(SCRIPT_INSTALL_DIR)\"\r
+       @xcopy /i /y "$(ROOT)\library\tclIndex"     "$(SCRIPT_INSTALL_DIR)\"\r
+       @xcopy /i /y "$(ROOT)\library\package.tcl"  "$(SCRIPT_INSTALL_DIR)\"\r
+       @xcopy /i /y "$(ROOT)\library\word.tcl"     "$(SCRIPT_INSTALL_DIR)\"\r
+       @xcopy /i /y "$(ROOT)\library\auto.tcl"     "$(SCRIPT_INSTALL_DIR)\"\r
+\r
+\r
+#---------------------------------------------------------------------\r
+# Clean up\r
+#---------------------------------------------------------------------\r
+\r
+!if "$(OS)" == "Windows_NT"\r
+RMDIR  = rmdir /S /Q\r
+!else\r
+RMDIR  = deltree /Y\r
+!endif\r
+\r
+tidy:\r
+       if exist $(TCLLIB) del $(TCLLIB)\r
+       if exist $(TCLSH) del $(TCLSH)\r
+       if exist $(TCLTEST) del $(TCLTEST)\r
+       if exist $(TCLDDELIB) del $(TCLDDELIB)\r
+       if exist $(TCLREGLIB) del $(TCLREGLIB)\r
+\r
+clean:\r
+       if exist $(TMP_DIR)\nul $(RMDIR) $(TMP_DIR)\r
+\r
+hose:\r
+       if exist $(OUT_DIR)\nul $(RMDIR) $(OUT_DIR)\r
+\r