Attachment "patch.txt" to
ticket [533862ffff]
added by
davygrvy
2002-03-27 17:22:31.
*** win/nmakehlp.c Wed Dec 31 14:00:00 1969
--- win/nmakehlp.c Tue Mar 26 20:13:46 2002
***************
*** 0 ****
--- 1,297 ----
+ /* ----------------------------------------------------------------------------
+ * nmakehlp.c --
+ *
+ * This is used to fix limitations within nmake and the environment.
+ *
+ * Copyright (c) 2002 by David Gravereaux.
+ *
+ * See the file "license.terms" for information on usage and redistribution
+ * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ *
+ * ----------------------------------------------------------------------------
+ * RCS: @(#) $Id: $
+ * ----------------------------------------------------------------------------
+ */
+ #include <windows.h>
+ #pragma comment (lib, "user32.lib")
+ #pragma comment (lib, "kernel32.lib")
+
+ /* protos */
+ int CheckForCompilerFeature (const char *option);
+ int CheckForLinkerFeature (const char *option);
+ int IsIn (const char *string, const char *substring);
+ DWORD WINAPI ReadFromPipe (LPVOID args);
+
+ /* globals */
+ typedef struct {
+ HANDLE pipe;
+ char buffer[1000];
+ } pipeinfo;
+
+ pipeinfo Out = {INVALID_HANDLE_VALUE, '\0'};
+ pipeinfo Err = {INVALID_HANDLE_VALUE, '\0'};
+
+
+
+ /* exitcodes: 0 == no, 1 == yes, 2 == error */
+ int
+ main (int argc, char *argv[])
+ {
+ char msg[300];
+ DWORD dwWritten;
+ int chars;
+
+ if (argc > 1 && *argv[1] == '-') {
+ switch (*(argv[1]+1)) {
+ case 'c':
+ if (argc != 3) {
+ chars = wsprintf(msg, "usage: %s -c <compiler option>\n"
+ "Tests for whether cl.exe supports an option\n"
+ "exitcodes: 0 == no, 1 == yes, 2 == error\n", argv[0]);
+ WriteFile(GetStdHandle(STD_ERROR_HANDLE), msg, chars, &dwWritten, NULL);
+ return 2;
+ }
+ return CheckForCompilerFeature(argv[2]);
+ case 'l':
+ if (argc != 3) {
+ chars = wsprintf(msg, "usage: %s -l <linker option>\n"
+ "Tests for whether link.exe supports an option\n"
+ "exitcodes: 0 == no, 1 == yes, 2 == error\n", argv[0]);
+ WriteFile(GetStdHandle(STD_ERROR_HANDLE), msg, chars, &dwWritten, NULL);
+ return 2;
+ }
+ return CheckForLinkerFeature(argv[2]);
+ case 'f':
+ if (argc == 2) {
+ chars = wsprintf(msg, "usage: %s -f <string> <substring>\n"
+ "Find a substring within another\n"
+ "exitcodes: 0 == no, 1 == yes, 2 == error\n", argv[0]);
+ WriteFile(GetStdHandle(STD_ERROR_HANDLE), msg, chars, &dwWritten, NULL);
+ return 2;
+ } else if (argc == 3) {
+ /* if the string is blank, there is no match */
+ return 0;
+ } else {
+ return IsIn(argv[2], argv[3]);
+ }
+ }
+ }
+ chars = wsprintf(msg, "usage: %s -c|-l|-f ...\n"
+ "This is a little helper app to equalize shell differences between WinNT and\n"
+ "Win9x and get nmake.exe to accomplish its job.\n",
+ argv[0]);
+ WriteFile(GetStdHandle(STD_ERROR_HANDLE), msg, chars, &dwWritten, NULL);
+ return 2;
+ }
+
+ int
+ CheckForCompilerFeature (const char *option)
+ {
+ STARTUPINFO si;
+ PROCESS_INFORMATION pi;
+ SECURITY_ATTRIBUTES sa;
+ DWORD threadID;
+ char msg[300];
+ BOOL ok;
+ HANDLE hProcess, h, pipeThreads[2];
+ char cmdline[100];
+
+ hProcess = GetCurrentProcess();
+
+ ZeroMemory(&pi, sizeof(PROCESS_INFORMATION));
+ ZeroMemory(&si, sizeof(STARTUPINFO));
+ si.cb = sizeof(STARTUPINFO);
+ si.dwFlags = STARTF_USESTDHANDLES;
+ si.hStdInput = INVALID_HANDLE_VALUE;
+
+ ZeroMemory(&sa, sizeof(SECURITY_ATTRIBUTES));
+ sa.nLength = sizeof(SECURITY_ATTRIBUTES);
+ sa.lpSecurityDescriptor = NULL;
+ sa.bInheritHandle = FALSE;
+
+ /* create a non-inheritible pipe. */
+ CreatePipe(&Out.pipe, &h, &sa, 0);
+
+ /* dupe the write side, make it inheritible, and close the original. */
+ DuplicateHandle(hProcess, h, hProcess, &si.hStdOutput,
+ 0, TRUE, DUPLICATE_SAME_ACCESS | DUPLICATE_CLOSE_SOURCE);
+
+ /* Same as above, but for the error side. */
+ CreatePipe(&Err.pipe, &h, &sa, 0);
+ DuplicateHandle(hProcess, h, hProcess, &si.hStdError,
+ 0, TRUE, DUPLICATE_SAME_ACCESS | DUPLICATE_CLOSE_SOURCE);
+
+ /* base command line */
+ strcpy(cmdline, "cl.exe -nologo -c -TC -Fdtemp ");
+ /* append our option for testing */
+ strcat(cmdline, option);
+ /* filename to compile, which exists, but is nothing and empty. */
+ strcat(cmdline, " nul");
+
+ ok = CreateProcess(
+ NULL, /* Module name. */
+ cmdline, /* Command line. */
+ NULL, /* Process handle not inheritable. */
+ NULL, /* Thread handle not inheritable. */
+ TRUE, /* yes, inherit handles. */
+ DETACHED_PROCESS, /* No console for you. */
+ NULL, /* Use parent's environment block. */
+ NULL, /* Use parent's starting directory. */
+ &si, /* Pointer to STARTUPINFO structure. */
+ &pi); /* Pointer to PROCESS_INFORMATION structure. */
+
+ if (!ok) {
+ DWORD err = GetLastError();
+ int chars = wsprintf(msg, "Tried to launch: \"%s\", but got error [%u]: ", cmdline, err);
+
+ FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS |
+ FORMAT_MESSAGE_MAX_WIDTH_MASK, 0L, err, 0, (LPVOID) &msg[chars],
+ (300-chars), 0);
+ WriteFile(GetStdHandle(STD_ERROR_HANDLE), msg, strlen(msg), &err, NULL);
+ return 2;
+ }
+
+ /* close our references to the write handles that have now been inherited. */
+ CloseHandle(si.hStdOutput);
+ CloseHandle(si.hStdError);
+
+ WaitForInputIdle(pi.hProcess, 5000);
+ CloseHandle(pi.hThread);
+
+ /* start the pipe reader threads. */
+ pipeThreads[0] = CreateThread(NULL, 0, ReadFromPipe, &Out, 0, &threadID);
+ pipeThreads[1] = CreateThread(NULL, 0, ReadFromPipe, &Err, 0, &threadID);
+
+ /* block waiting for the process to end. */
+ WaitForSingleObject(pi.hProcess, INFINITE);
+ CloseHandle(pi.hProcess);
+
+ /* clean up temporary files before returning */
+ DeleteFile("temp.idb");
+ DeleteFile("temp.pdb");
+
+ /* wait for our pipe to get done reading, should it be a little slow. */
+ WaitForMultipleObjects(2, pipeThreads, TRUE, 500);
+ CloseHandle(pipeThreads[0]);
+ CloseHandle(pipeThreads[1]);
+
+ /* look for the commandline warning code in both streams. */
+ return !(strstr(Out.buffer, "D4002") != NULL || strstr(Err.buffer, "D4002") != NULL);
+ }
+
+ int
+ CheckForLinkerFeature (const char *option)
+ {
+ STARTUPINFO si;
+ PROCESS_INFORMATION pi;
+ SECURITY_ATTRIBUTES sa;
+ DWORD threadID;
+ char msg[300];
+ BOOL ok;
+ HANDLE hProcess, h, pipeThreads[2];
+ char cmdline[100];
+
+ hProcess = GetCurrentProcess();
+
+ ZeroMemory(&pi, sizeof(PROCESS_INFORMATION));
+ ZeroMemory(&si, sizeof(STARTUPINFO));
+ si.cb = sizeof(STARTUPINFO);
+ si.dwFlags = STARTF_USESTDHANDLES;
+ si.hStdInput = INVALID_HANDLE_VALUE;
+
+ ZeroMemory(&sa, sizeof(SECURITY_ATTRIBUTES));
+ sa.nLength = sizeof(SECURITY_ATTRIBUTES);
+ sa.lpSecurityDescriptor = NULL;
+ sa.bInheritHandle = TRUE;
+
+ /* create a non-inheritible pipe. */
+ CreatePipe(&Out.pipe, &h, &sa, 0);
+
+ /* dupe the write side, make it inheritible, and close the original. */
+ DuplicateHandle(hProcess, h, hProcess, &si.hStdOutput,
+ 0, TRUE, DUPLICATE_SAME_ACCESS | DUPLICATE_CLOSE_SOURCE);
+
+ /* Same as above, but for the error side. */
+ CreatePipe(&Err.pipe, &h, &sa, 0);
+ DuplicateHandle(hProcess, h, hProcess, &si.hStdError,
+ 0, TRUE, DUPLICATE_SAME_ACCESS | DUPLICATE_CLOSE_SOURCE);
+
+ /* base command line */
+ strcpy(cmdline, "link.exe -nologo ");
+ /* append our option for testing */
+ strcat(cmdline, option);
+ /* filename to compile, which exists, but is nothing and empty. */
+ // strcat(cmdline, " nul");
+
+ ok = CreateProcess(
+ NULL, /* Module name. */
+ cmdline, /* Command line. */
+ NULL, /* Process handle not inheritable. */
+ NULL, /* Thread handle not inheritable. */
+ TRUE, /* yes, inherit handles. */
+ DETACHED_PROCESS, /* No console for you. */
+ NULL, /* Use parent's environment block. */
+ NULL, /* Use parent's starting directory. */
+ &si, /* Pointer to STARTUPINFO structure. */
+ &pi); /* Pointer to PROCESS_INFORMATION structure. */
+
+ if (!ok) {
+ DWORD err = GetLastError();
+ int chars = wsprintf(msg, "Tried to launch: \"%s\", but got error [%u]: ", cmdline, err);
+
+ FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS |
+ FORMAT_MESSAGE_MAX_WIDTH_MASK, 0L, err, 0, (LPVOID) &msg[chars],
+ (300-chars), 0);
+ WriteFile(GetStdHandle(STD_ERROR_HANDLE), msg, strlen(msg), &err, NULL);
+ return 2;
+ }
+
+ /* close our references to the write handles that have now been inherited. */
+ CloseHandle(si.hStdOutput);
+ CloseHandle(si.hStdError);
+
+ WaitForInputIdle(pi.hProcess, 5000);
+ CloseHandle(pi.hThread);
+
+ /* start the pipe reader threads. */
+ pipeThreads[0] = CreateThread(NULL, 0, ReadFromPipe, &Out, 0, &threadID);
+ pipeThreads[1] = CreateThread(NULL, 0, ReadFromPipe, &Err, 0, &threadID);
+
+ /* block waiting for the process to end. */
+ WaitForSingleObject(pi.hProcess, INFINITE);
+ CloseHandle(pi.hProcess);
+
+ /* wait for our pipe to get done reading, should it be a little slow. */
+ WaitForMultipleObjects(2, pipeThreads, TRUE, 500);
+ CloseHandle(pipeThreads[0]);
+ CloseHandle(pipeThreads[1]);
+
+ /* look for the commandline warning code in the stderr stream. */
+ return !(strstr(Out.buffer, "LNK1117") != NULL || strstr(Err.buffer, "LNK1117") != NULL);
+ }
+
+ DWORD WINAPI
+ ReadFromPipe (LPVOID args)
+ {
+ pipeinfo *pi = (pipeinfo *) args;
+ char *lastBuf = pi->buffer;
+ DWORD dwRead;
+ BOOL ok;
+
+ again:
+ ok = ReadFile(pi->pipe, lastBuf, 25, &dwRead, 0L);
+ if (!ok || dwRead == 0) {
+ CloseHandle(pi->pipe);
+ return 0;
+ }
+ lastBuf += dwRead;
+ goto again;
+
+ return 0; /* makes the compiler happy */
+ }
+
+ int
+ IsIn (const char *string, const char *substring)
+ {
+ return (strstr(string, substring) != NULL);
+ }
*** win/buildall.vc.bat 20 Feb 2002 19:06:53 -0000 1.3
--- win/buildall.vc.bat 27 Mar 2002 10:15:18 -0000
***************
*** 6,16 ****
::
:: RCS: @(#) $Id: buildall.vc.bat,v 1.3 2002/02/20 19:06:53 davygrvy Exp $
! echo Sit back and have a couple cups of coffee while this grinds through ;)
echo You asked for *everything*, remember?
echo.
! if "%MSVCDir%" == "" call C:\progra~1\micros~4\vc98\bin\vcvars32.bat
set INSTALLDIR=C:\progra~1\tcl
nmake -nologo -f makefile.vc release winhelp OPTS=none
--- 6,16 ----
::
:: RCS: @(#) $Id: buildall.vc.bat,v 1.3 2002/02/20 19:06:53 davygrvy Exp $
! echo Sit back and have a cup of coffee while this grinds through ;)
echo You asked for *everything*, remember?
echo.
! if "%MSVCDir%" == "" call C:\dev\devstudio60\vc98\bin\vcvars32.bat
set INSTALLDIR=C:\progra~1\tcl
nmake -nologo -f makefile.vc release winhelp OPTS=none
***************
*** 28,34 ****
goto end
:error
! echo **BOOM!**
:end
pause
--- 28,35 ----
goto end
:error
! echo *** BOOM! ***
:end
+ echo done!
pause
*** win/coffbase.txt 22 Feb 2002 03:29:05 -0000 1.3
--- win/coffbase.txt 27 Mar 2002 10:15:19 -0000
***************
*** 10,16 ****
; the /headers option to get the "size of image" data (already in hex). If the
; maximum size is too small a linker warning will occur. Modules can overlap when
; they're mutually exclusive. This info is placed in the DLL's PE header by the
! ; linker when the `-base:@$(TCLDIR)\win\coffbase.txt,XXX` option is used.
;
; RCS: @(#) $Id: coffbase.txt,v 1.3 2002/02/22 03:29:05 davygrvy Exp $
--- 10,16 ----
; the /headers option to get the "size of image" data (already in hex). If the
; maximum size is too small a linker warning will occur. Modules can overlap when
; they're mutually exclusive. This info is placed in the DLL's PE header by the
! ; linker with the `-base:@$(TCLDIR)\win\coffbase.txt,<key>` option.
;
; RCS: @(#) $Id: coffbase.txt,v 1.3 2002/02/22 03:29:05 davygrvy Exp $
*** win/makefile.vc 21 Feb 2002 22:00:58 -0000 1.83
--- win/makefile.vc 27 Mar 2002 10:15:22 -0000
***************
*** 9,15 ****
# 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.83 2002/02/21 22:00:58 davygrvy Exp $
--- 9,15 ----
# Copyright (c) 1995-1996 Sun Microsystems, Inc.
# Copyright (c) 1998-2000 Ajuba Solutions.
# Copyright (c) 2001 ActiveState Corporation.
! # Copyright (c) 2001-2002 David Gravereaux.
#
#------------------------------------------------------------------------------
# RCS: @(#) $Id: makefile.vc,v 1.83 2002/02/21 22:00:58 davygrvy Exp $
***************
*** 40,67 ****
# the 64-bit compiler, if your SDK has it.
#
# 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) 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.
#
# 4) Macros usable on the commandline:
# INSTALLDIR=<path>
# Sets where to install Tcl from the built binaries.
# C:\Progra~1\Tcl is assumed when not specified.
#
! # OPTS=static,msvcrt,linkexten,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.
--- 40,70 ----
# the 64-bit compiler, if your SDK has it.
#
# 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 helper app.
# shell -- Just builds the shell and the core.
! # core -- Only builds the core [tclXX.(dll|lib)].
! # all -- Builds everything.
! # test -- Builds and runs the test suite.
! # tcltest -- Just builds the test shell.
! # install -- Installs the built binaries and libraries to $(INSTALLDIR)
# as the root of the install tree.
! # tidy/clean/hose -- varying levels of cleaning.
! # genstubs -- Rebuilds the Stubs table and support files (dev only).
! # depend -- Generates an accurate set of source dependancies for this
! # makefile. Helpful to avoid problems when the sources are
! # refreshed and you rebuild, but can "overbuild" when common
! # headers like tclInt.h just get small changes.
! # winhelp -- Builds the windows .hlp file for Tcl from the troff man
! # files found in $(ROOT)\doc .
#
# 4) Macros usable on the commandline:
# INSTALLDIR=<path>
# Sets where to install Tcl from the built binaries.
# C:\Progra~1\Tcl is assumed when not specified.
#
! # OPTS=static,msvcrt,linkexten,threads,symbols,profile,loimpact,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.
***************
*** 144,150 ****
MSG = ^
You must run this makefile only from the directory it is in.^
Please `cd` to its location first.
! !error $(MSG)
!endif
PROJECT = tcl
--- 147,153 ----
MSG = ^
You must run this makefile only from the directory it is in.^
Please `cd` to its location first.
! !error $(MSG)
!endif
PROJECT = tcl
***************
*** 176,186 ****
TCLPIPEDLLNAME = $(PROJECT)pip$(VERSION).dll
TCLPIPEDLL = $(OUT_DIR)\$(TCLPIPEDLLNAME)
! TCLREGDLLNAME = $(PROJECT)reg$(REGVERSION)$(SUFX:t=).$(EXT)
! TCLREGDLL = $(OUT_DIR)\$(TCLREGDLLNAME)
! TCLDDEDLLNAME = $(PROJECT)dde$(DDEVERSION)$(SUFX:t=).$(EXT)
! TCLDDEDLL = $(OUT_DIR)\$(TCLDDEDLLNAME)
TCLHLPBASE = $(PROJECT)$(VERSION)
TCLHLP = $(OUT_DIR)\$(TCLHLPBASE).hlp
--- 179,189 ----
TCLPIPEDLLNAME = $(PROJECT)pip$(VERSION).dll
TCLPIPEDLL = $(OUT_DIR)\$(TCLPIPEDLLNAME)
! TCLREGLIBNAME = $(PROJECT)reg$(REGVERSION)$(SUFX:t=).$(EXT)
! TCLREGLIB = $(OUT_DIR)\$(TCLREGLIBNAME)
! TCLDDELIBNAME = $(PROJECT)dde$(DDEVERSION)$(SUFX:t=).$(EXT)
! TCLDDELIB = $(OUT_DIR)\$(TCLDDELIBNAME)
TCLHLPBASE = $(PROJECT)$(VERSION)
TCLHLP = $(OUT_DIR)\$(TCLHLPBASE).hlp
***************
*** 211,216 ****
--- 214,223 ----
$(TMP_DIR)\tclTestProcBodyObj.obj \
$(TMP_DIR)\tclThreadTest.obj \
$(TMP_DIR)\tclWinTest.obj \
+ !if $(TCL_LINKWITHEXTENSIONS)
+ $(TMP_DIR)\tclWinReg.obj \
+ $(TMP_DIR)\tclWinDde.obj \
+ !endif
$(TMP_DIR)\testMain.obj
TCLOBJS = \
***************
*** 300,305 ****
--- 307,313 ----
TCLSTUBOBJS = $(TMP_DIR)\tclStubLib.obj
+ ### The following paths CANNOT have spaces in them.
COMPATDIR = $(ROOT)\compat
GENERICDIR = $(ROOT)\generic
TOOLSDIR = $(ROOT)\tools
***************
*** 321,327 ****
cdebug =
!endif
!else if "$(MACHINE)" == "IA64"
! # Warnings are too many to support warnings into errors.
cdebug = -Z7 -Od
!else
cdebug = -Z7 -WX -Od
--- 329,335 ----
cdebug =
!endif
!else if "$(MACHINE)" == "IA64"
! # Warnings are too many, can't support warnings into errors.
cdebug = -Z7 -Od
!else
cdebug = -Z7 -WX -Od
***************
*** 433,591 ****
$**
<<
!else
! $(link32) $(dlllflags) -base:@$(WINDIR)\coffbase.txt,tcl -out:$@ $(baselibs) @<<
$**
<<
-@del $*.exp
!endif
-
$(TCLSTUBLIB): $(TCLSTUBOBJS)
$(lib32) -nologo -out:$@ $(TCLSTUBOBJS)
$(TCLSH): $(TCLSHOBJS) $(TCLIMPLIB)
! $(link32) $(conlflags) -stack:2300000 -out:$@ $(baselibs) @<<
! $**
! <<
!
$(TCLTEST): $(TCLTESTOBJS) $(TCLIMPLIB)
! $(link32) $(conlflags) -stack:2300000 -out:$@ $(baselibs) @<<
! $**
! <<
!
$(TCLPIPEDLL): $(WINDIR)\stub16.c
$(cc32) $(CON_CFLAGS) -Fo$(TMP_DIR)\ $(WINDIR)\stub16.c
$(link32) $(conlflags) -out:$@ $(TMP_DIR)\stub16.obj $(baselibs)
-
!if $(STATIC_BUILD)
! $(TCLDDEDLL): $(TMP_DIR)\tclWinDde.obj
$(lib32) -nologo -out:$@ $(TMP_DIR)\tclWinDde.obj
!else
! $(TCLDDEDLL): $(TMP_DIR)\tclWinDde.obj $(TCLSTUBLIB)
! $(link32) $(dlllflags) -base:@$(WINDIR)\coffbase.txt,tcldde -out:$@ $** $(baselibs)
-@del $*.exp
-@del $*.lib
!endif
-
!if $(STATIC_BUILD)
! $(TCLREGDLL): $(TMP_DIR)\tclWinReg.obj
$(lib32) -nologo -out:$@ $(TMP_DIR)\tclWinReg.obj
!else
! $(TCLREGDLL): $(TMP_DIR)\tclWinReg.obj $(TCLSTUBLIB)
! $(link32) $(dlllflags) -base:@$(WINDIR)\coffbase.txt,tclreg -out:$@ $** $(baselibs)
-@del $*.exp
-@del $*.lib
!endif
-
$(CAT32): $(WINDIR)\cat.c
$(cc32) $(CON_CFLAGS) -Fo$(TMP_DIR)\ $?
$(link32) $(conlflags) -out:$@ -stack:16384 $(TMP_DIR)\cat.obj \
$(baselibs)
- install-binaries:
- @echo installing $(TCLLIBNAME)
- !if "$(TCLLIB)" != "$(TCLIMPLIB)"
- @xcopy /i /y "$(TCLLIB)" "$(BIN_INSTALL_DIR)\"
- !endif
- @xcopy /i /y "$(TCLIMPLIB)" "$(LIB_INSTALL_DIR)\"
- !if exist($(TCLSH))
- @echo installing $(TCLSHNAME)
- @xcopy /i /y "$(TCLSH)" "$(BIN_INSTALL_DIR)\"
- !endif
- !if exist($(TCLPIPEDLL))
- @echo installing $(TCLPIPEDLLNAME)
- @xcopy /i /y "$(TCLPIPEDLL)" "$(BIN_INSTALL_DIR)\"
- !endif
- @echo installing $(TCLSTUBLIBNAME)
- @xcopy /i /y "$(TCLSTUBLIB)" "$(LIB_INSTALL_DIR)\"
- !if exist($(TCLHLP))
- @xcopy /i /y "$(TCLHLP)" "$(DOC_INSTALL_DIR)\"
- @xcopy /i /y "$(TCLHLPCNT)" "$(DOC_INSTALL_DIR)\"
- !endif
! install-libraries:
! @echo installing http1.0
! @xcopy /i /y "$(ROOT)\library\http1.0\*.tcl" \
! "$(SCRIPT_INSTALL_DIR)\http1.0\"
! @echo installing http2.4
! @xcopy /i /y "$(ROOT)\library\http\*.tcl" \
! "$(SCRIPT_INSTALL_DIR)\http2.4\"
! @echo installing opt0.4
! @xcopy /i /y "$(ROOT)\library\opt\*.tcl" \
! "$(SCRIPT_INSTALL_DIR)\opt0.4\"
! @echo installing msgcat1.2
! @xcopy /i /y "$(ROOT)\library\msgcat\*.tcl" \
! "$(SCRIPT_INSTALL_DIR)\msgcat1.2\"
! @echo installing $(TCLDDEDLLNAME)
! !if $(STATIC_BUILD)
! @xcopy /i /y "$(TCLDDEDLL)" "$(LIB_INSTALL_DIR)\"
! !else
! @xcopy /i /y "$(TCLDDEDLL)" "$(LIB_INSTALL_DIR)\dde$(DDEDOTVERSION)\"
! @xcopy /i /y "$(ROOT)\library\dde\pkgIndex.tcl" \
! "$(LIB_INSTALL_DIR)\dde$(DDEDOTVERSION)\"
! !endif
! @echo installing $(TCLREGDLLNAME)
! !if $(STATIC_BUILD)
! @xcopy /i /y "$(TCLREGDLL)" "$(LIB_INSTALL_DIR)\"
!else
! @xcopy /i /y "$(TCLREGDLL)" "$(LIB_INSTALL_DIR)\reg$(REGDOTVERSION)\"
! @xcopy /i /y "$(ROOT)\library\reg\pkgIndex.tcl" \
! "$(LIB_INSTALL_DIR)\reg$(REGDOTVERSION)\"
!endif
- @echo installing encoding files
- @xcopy /i /y "$(ROOT)\library\encoding\*.enc" \
- "$(SCRIPT_INSTALL_DIR)\encoding\"
- @echo installing library files
- @xcopy /i /y "$(GENERICDIR)\tcl.h" "$(INCLUDE_INSTALL_DIR)\"
- @xcopy /i /y "$(GENERICDIR)\tclDecls.h" "$(INCLUDE_INSTALL_DIR)\"
- @xcopy /i /y "$(GENERICDIR)\tclPlatDecls.h" "$(INCLUDE_INSTALL_DIR)\"
- @xcopy /i /y "$(ROOT)\library\history.tcl" "$(SCRIPT_INSTALL_DIR)\"
- @xcopy /i /y "$(ROOT)\library\init.tcl" "$(SCRIPT_INSTALL_DIR)\"
- @xcopy /i /y "$(ROOT)\library\ldAout.tcl" "$(SCRIPT_INSTALL_DIR)\"
- @xcopy /i /y "$(ROOT)\library\parray.tcl" "$(SCRIPT_INSTALL_DIR)\"
- @xcopy /i /y "$(ROOT)\library\safe.tcl" "$(SCRIPT_INSTALL_DIR)\"
- @xcopy /i /y "$(ROOT)\library\tclIndex" "$(SCRIPT_INSTALL_DIR)\"
- @xcopy /i /y "$(ROOT)\library\package.tcl" "$(SCRIPT_INSTALL_DIR)\"
- @xcopy /i /y "$(ROOT)\library\word.tcl" "$(SCRIPT_INSTALL_DIR)\"
- @xcopy /i /y "$(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.
#---------------------------------------------------------------------
MAN2TCL = $(TOOLSDIR)\man2tcl
! TCLRTF = $(TOOLSDIR)\tcl.rtf
MAN2HELP = $(TOOLSDIR)\man2help.tcl
- TCLHPJ = $(TOOLSDIR)\tcl.hpj
winhelp: $(TCLHLP)
$(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)
! $(TCLHPJ): $(TCLHPJ).in
! copy $(TCLHPJ).in $(TCLHPJ)
!
! $(MAN2TCL).exe: $(MAN2TCL).obj
cd $(TOOLSDIR)
$(cc32) -nologo -G4 -ML -O2 $(MAN2TCL).c
cd $(MAKEDIR)
--- 441,561 ----
$**
<<
!else
! $(link32) $(dlllflags) -base:@$(WINDIR)\coffbase.txt,tcl -out:$@ \
! $(baselibs) @<<
$**
<<
-@del $*.exp
!endif
$(TCLSTUBLIB): $(TCLSTUBOBJS)
$(lib32) -nologo -out:$@ $(TCLSTUBOBJS)
$(TCLSH): $(TCLSHOBJS) $(TCLIMPLIB)
! $(link32) $(conlflags) -stack:2300000 -out:$@ $(baselibs) $**
$(TCLTEST): $(TCLTESTOBJS) $(TCLIMPLIB)
! $(link32) $(conlflags) -stack:2300000 -out:$@ $(baselibs) $**
$(TCLPIPEDLL): $(WINDIR)\stub16.c
$(cc32) $(CON_CFLAGS) -Fo$(TMP_DIR)\ $(WINDIR)\stub16.c
$(link32) $(conlflags) -out:$@ $(TMP_DIR)\stub16.obj $(baselibs)
!if $(STATIC_BUILD)
! $(TCLDDELIB): $(TMP_DIR)\tclWinDde.obj
$(lib32) -nologo -out:$@ $(TMP_DIR)\tclWinDde.obj
!else
! $(TCLDDELIB): $(TMP_DIR)\tclWinDde.obj $(TCLSTUBLIB)
! $(link32) $(dlllflags) -base:@$(WINDIR)\coffbase.txt,tcldde -out:$@ \
! $** $(baselibs)
-@del $*.exp
-@del $*.lib
!endif
!if $(STATIC_BUILD)
! $(TCLREGLIB): $(TMP_DIR)\tclWinReg.obj
$(lib32) -nologo -out:$@ $(TMP_DIR)\tclWinReg.obj
!else
! $(TCLREGLIB): $(TMP_DIR)\tclWinReg.obj $(TCLSTUBLIB)
! $(link32) $(dlllflags) -base:@$(WINDIR)\coffbase.txt,tclreg -out:$@ \
! $** $(baselibs)
-@del $*.exp
-@del $*.lib
!endif
$(CAT32): $(WINDIR)\cat.c
$(cc32) $(CON_CFLAGS) -Fo$(TMP_DIR)\ $?
$(link32) $(conlflags) -out:$@ -stack:16384 $(TMP_DIR)\cat.obj \
$(baselibs)
! #---------------------------------------------------------------------
! # Regenerate the stubs files. [Development use only]
! #---------------------------------------------------------------------
!
! genstubs:
! !if !exist($(TCLSH))
! @echo Build tclsh first!
!else
! $(TCLSH) $(TOOLSDIR)\genStubs.tcl $(GENERICDIR) \
! $(GENERICDIR)\tcl.decls $(GENERICDIR)\tclInt.decls
!endif
#---------------------------------------------------------------------
! # Generate the makefile depedancies.
#---------------------------------------------------------------------
! depend:
! !if !exist($(TCLSH))
! @echo Build tclsh first!
! !else
! echo $(TCL_INCLUDES)
! $(TCLSH) $(TOOLSDIR)\mkdepend.tcl -vc32 -out:"$(OUT_DIR)\depend.mk" \
! -passthru:"-DBUILD_tcl $(TCL_INCLUDES:"="")" $(GENERICDIR) \
! $(COMPATDIR) $(WINDIR) @<<
! $(TCLOBJS)
! <<
! !endif
#---------------------------------------------------------------------
! # Build the windows help file.
#---------------------------------------------------------------------
MAN2TCL = $(TOOLSDIR)\man2tcl
! TCLRTF = $(TOOLSDIR)\$(PROJECT).rtf
MAN2HELP = $(TOOLSDIR)\man2help.tcl
winhelp: $(TCLHLP)
$(TCLHLP): $(TCLRTF)
cd $(TOOLSDIR)
! start /wait hcrtf.exe -x <<$(PROJECT).hpj
! [OPTIONS]
! COMPRESS=12 Hall Zeck
! LCID=0x409 0x0 0x0 ; English (United States)
! TITLE=Tcl/Tk Reference Manual
! CNT=$(TCLHLPBASE).cnt
! HLP=$(TCLHLPBASE).hlp
!
! [FILES]
! $(PROJECT).rtf
!
! [WINDOWS]
! main="Tcl/Tk Reference Manual",,0
!
! [CONFIG]
! BrowseButtons()
! CreateButton(1, "Main Web Site", ExecFile("http://www.tcl.tk"))
! CreateButton(2, "Sourceforge", ExecFile("http://sf.net/projects/tcl"))
! CreateButton(3, "Wiki", ExecFile("http://wiki.tcl.tk"))
! <<
cd $(MAKEDIR)
copy $(TOOLSDIR)\$(TCLHLPBASE).hlp $(OUT_DIR)
copy $(TOOLSDIR)\$(TCLHLPBASE).cnt $(OUT_DIR)
! $(MAN2TCL).exe:
cd $(TOOLSDIR)
$(cc32) -nologo -G4 -ML -O2 $(MAN2TCL).c
cd $(MAKEDIR)
***************
*** 623,629 ****
$(cc32) $(TCL_CFLAGS) -Fo$@ $?
!endif
! # The following objects should be built using the stub interfaces
$(TMP_DIR)\tclWinReg.obj: $(WINDIR)\tclWinReg.c
!if $(STATIC_BUILD)
--- 593,599 ----
$(cc32) $(TCL_CFLAGS) -Fo$@ $?
!endif
! ### The following objects should be built using the stub interfaces
$(TMP_DIR)\tclWinReg.obj: $(WINDIR)\tclWinReg.c
!if $(STATIC_BUILD)
***************
*** 641,648 ****
!endif
! # 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
$(TMP_DIR)\tclStubLib.obj: $(GENERICDIR)\tclStubLib.c
$(cc32) $(cdebug) $(cflags) -Zl -DSTATIC_BUILD $(TCL_INCLUDES) -Fo$@ $?
--- 611,618 ----
!endif
! ### 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
$(TMP_DIR)\tclStubLib.obj: $(GENERICDIR)\tclStubLib.c
$(cc32) $(cdebug) $(cflags) -Zl -DSTATIC_BUILD $(TCL_INCLUDES) -Fo$@ $?
***************
*** 671,676 ****
--- 641,656 ----
$(GENERICDIR)\regfronts.c: $(GENERICDIR)\regguts.h
$(GENERICDIR)\regguts.h: $(GENERICDIR)\regcustom.h
+ !if exist("$(OUT_DIR)\depend.mk")
+ !include "$(OUT_DIR)\depend.mk"
+ !message *** Dependency rules in effect.
+ !else
+ !message *** Dependency rules are not being used.
+ !endif
+
+ ### add a spacer in the output
+ !message
+
#---------------------------------------------------------------------
# Implicit rules
***************
*** 692,698 ****
<<
{$(WINDIR)}.rc{$(TMP_DIR)}.res:
! $(rc32) -fo $@ -r -i $(GENERICDIR) -D__WIN32__ \
!if $(DEBUG)
-d DEBUG \
!endif
--- 672,678 ----
<<
{$(WINDIR)}.rc{$(TMP_DIR)}.res:
! $(rc32) -fo $@ -r -i "$(GENERICDIR)" -D__WIN32__ \
!if $(DEBUG)
-d DEBUG \
!endif
***************
*** 704,709 ****
--- 684,764 ----
!endif
$<
+ .SUFFIXES:
+ .SUFFIXES:.c .rc
+
+
+ #---------------------------------------------------------------------
+ # Installation.
+ #---------------------------------------------------------------------
+
+ install-binaries:
+ @echo installing $(TCLLIBNAME)
+ !if "$(TCLLIB)" != "$(TCLIMPLIB)"
+ @xcopy /i /y "$(TCLLIB)" "$(BIN_INSTALL_DIR)\"
+ !endif
+ @xcopy /i /y "$(TCLIMPLIB)" "$(LIB_INSTALL_DIR)\"
+ !if exist($(TCLSH))
+ @echo installing $(TCLSHNAME)
+ @xcopy /i /y "$(TCLSH)" "$(BIN_INSTALL_DIR)\"
+ !endif
+ !if exist($(TCLPIPEDLL))
+ @echo installing $(TCLPIPEDLLNAME)
+ @xcopy /i /y "$(TCLPIPEDLL)" "$(BIN_INSTALL_DIR)\"
+ !endif
+ @echo installing $(TCLSTUBLIBNAME)
+ @xcopy /i /y "$(TCLSTUBLIB)" "$(LIB_INSTALL_DIR)\"
+ !if exist($(TCLHLP))
+ @xcopy /i /y "$(TCLHLP)" "$(DOC_INSTALL_DIR)\"
+ @xcopy /i /y "$(TCLHLPCNT)" "$(DOC_INSTALL_DIR)\"
+ !endif
+
+ install-libraries:
+ @echo installing http1.0
+ @xcopy /i /y "$(ROOT)\library\http1.0\*.tcl" \
+ "$(SCRIPT_INSTALL_DIR)\http1.0\"
+ @echo installing http2.4
+ @xcopy /i /y "$(ROOT)\library\http\*.tcl" \
+ "$(SCRIPT_INSTALL_DIR)\http2.4\"
+ @echo installing opt0.4
+ @xcopy /i /y "$(ROOT)\library\opt\*.tcl" \
+ "$(SCRIPT_INSTALL_DIR)\opt0.4\"
+ @echo installing msgcat1.2
+ @xcopy /i /y "$(ROOT)\library\msgcat\*.tcl" \
+ "$(SCRIPT_INSTALL_DIR)\msgcat1.2\"
+ @echo installing $(TCLDDELIBNAME)
+ !if $(STATIC_BUILD)
+ @xcopy /i /y "$(TCLDDELIB)" "$(LIB_INSTALL_DIR)\"
+ !else
+ @xcopy /i /y "$(TCLDDELIB)" "$(LIB_INSTALL_DIR)\dde$(DDEDOTVERSION)\"
+ @xcopy /i /y "$(ROOT)\library\dde\pkgIndex.tcl" \
+ "$(LIB_INSTALL_DIR)\dde$(DDEDOTVERSION)\"
+ !endif
+ @echo installing $(TCLREGLIBNAME)
+ !if $(STATIC_BUILD)
+ @xcopy /i /y "$(TCLREGLIB)" "$(LIB_INSTALL_DIR)\"
+ !else
+ @xcopy /i /y "$(TCLREGLIB)" "$(LIB_INSTALL_DIR)\reg$(REGDOTVERSION)\"
+ @xcopy /i /y "$(ROOT)\library\reg\pkgIndex.tcl" \
+ "$(LIB_INSTALL_DIR)\reg$(REGDOTVERSION)\"
+ !endif
+ @echo installing encoding files
+ @xcopy /i /y "$(ROOT)\library\encoding\*.enc" \
+ "$(SCRIPT_INSTALL_DIR)\encoding\"
+ @echo installing library files
+ @xcopy /i /y "$(GENERICDIR)\tcl.h" "$(INCLUDE_INSTALL_DIR)\"
+ @xcopy /i /y "$(GENERICDIR)\tclDecls.h" "$(INCLUDE_INSTALL_DIR)\"
+ @xcopy /i /y "$(GENERICDIR)\tclPlatDecls.h" "$(INCLUDE_INSTALL_DIR)\"
+ @xcopy /i /y "$(ROOT)\library\history.tcl" "$(SCRIPT_INSTALL_DIR)\"
+ @xcopy /i /y "$(ROOT)\library\init.tcl" "$(SCRIPT_INSTALL_DIR)\"
+ @xcopy /i /y "$(ROOT)\library\ldAout.tcl" "$(SCRIPT_INSTALL_DIR)\"
+ @xcopy /i /y "$(ROOT)\library\parray.tcl" "$(SCRIPT_INSTALL_DIR)\"
+ @xcopy /i /y "$(ROOT)\library\safe.tcl" "$(SCRIPT_INSTALL_DIR)\"
+ @xcopy /i /y "$(ROOT)\library\tclIndex" "$(SCRIPT_INSTALL_DIR)\"
+ @xcopy /i /y "$(ROOT)\library\package.tcl" "$(SCRIPT_INSTALL_DIR)\"
+ @xcopy /i /y "$(ROOT)\library\word.tcl" "$(SCRIPT_INSTALL_DIR)\"
+ @xcopy /i /y "$(ROOT)\library\auto.tcl" "$(SCRIPT_INSTALL_DIR)\"
+
#---------------------------------------------------------------------
# Clean up
***************
*** 713,727 ****
-del $(TCLLIB)
-del $(TCLSH)
-del $(TCLTEST)
! -del $(TCLDDEDLL)
! -del $(TCLREGDLL)
! clean:
-@$(RMDIR) $(TMP_DIR)
hose: clean
-@$(RMDIR) $(OUT_DIR)
-
-
- .SUFFIXES:
- .SUFFIXES:.c .rc
--- 768,778 ----
-del $(TCLLIB)
-del $(TCLSH)
-del $(TCLTEST)
! -del $(TCLDDELIB)
! -del $(TCLREGLIB)
! clean: tidy
-@$(RMDIR) $(TMP_DIR)
hose: clean
-@$(RMDIR) $(OUT_DIR)
*** win/rules.vc 21 Feb 2002 18:37:27 -0000 1.6
--- win/rules.vc 27 Mar 2002 10:15:25 -0000
***************
*** 7,13 ****
# 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.6 2002/02/21 18:37:27 davygrvy Exp $
--- 7,13 ----
# See the file "license.terms" for information on usage and redistribution
# of this file, and for a DISCLAIMER OF ALL WARRANTIES.
#
! # Copyright (c) 2001-2002 David Gravereaux.
#
#------------------------------------------------------------------------------
# RCS: @(#) $Id: rules.vc,v 1.6 2002/02/21 18:37:27 davygrvy Exp $
***************
*** 31,49 ****
!message ===============================================================================
-
#----------------------------------------------------------
! # Test for compiler features
#----------------------------------------------------------
! ### Just display the compiler and linker versions to the output
! !if [$(cc32) 2>&1 | find "(R)"]
!endif
- !if [$(link32) 2>&1 | find "(R)"]
!endif
### test for optimizations
! !if [$(cc32) -Ox -nologo -c -Zs -TC -Fdtemp nul 2>&1 | find "D4002" > nul]
!message *** Compiler has 'Optimizations'
OPTIMIZING = 1
!else
--- 31,52 ----
!message ===============================================================================
#----------------------------------------------------------
! # build the helper app we need to overcome nmake's limiting
! # environment.
#----------------------------------------------------------
! !if !exist(nmakehlp.exe)
! !if [$(cc32) -nologo -ML nmakehlp.c -link -subsystem:console > nul]
!endif
!endif
+ #----------------------------------------------------------
+ # Test for compiler features
+ #----------------------------------------------------------
+
### test for optimizations
! !if [nmakehlp -c -Ox]
!message *** Compiler has 'Optimizations'
OPTIMIZING = 1
!else
***************
*** 51,66 ****
OPTIMIZING = 0
!endif
- ### test for pentium errata
!if "$(MACHINE)" == "IX86"
! !if [$(cc32) -QI0f -nologo -c -Zs -TC -Fdtemp nul 2>&1 | find "D4002" > nul]
!message *** Compiler has 'Pentium 0x0f fix'
PENT_0F_ERRATA = 1
!else
!message *** Compiler doesn't have 'Pentium 0x0f fix'
PENT_0F_ERRATA = 0
!endif
! !if [$(link32) -nologo -opt:nowin98 2>&1 | find "LNK1117" > nul]
!message *** Linker has 'Win98 alignment problem'
ALIGN98_HACK = 1
!else
--- 54,70 ----
OPTIMIZING = 0
!endif
!if "$(MACHINE)" == "IX86"
! ### test for pentium errata
! !if [nmakehlp -c -QI0f]
!message *** Compiler has 'Pentium 0x0f fix'
PENT_0F_ERRATA = 1
!else
!message *** Compiler doesn't have 'Pentium 0x0f fix'
PENT_0F_ERRATA = 0
!endif
! ### test for -align:4096, when align:512 will do.
! !if [nmakehlp -l -opt:nowin98]
!message *** Linker has 'Win98 alignment problem'
ALIGN98_HACK = 1
!else
***************
*** 72,80 ****
ALIGN98_HACK = 0
!endif
- ### test for Itanium errata
!if "$(MACHINE)" == "IA64"
! !if [$(cc32) -QIA64_Bx -nologo -c -Zs -TC -Fdtemp nul 2>&1 | find "D4002" > nul]
!message *** Compiler has 'B-stepping errata workarounds'
ITAN_B_ERRATA = 1
!else
--- 76,84 ----
ALIGN98_HACK = 0
!endif
!if "$(MACHINE)" == "IA64"
! ### test for Itanium errata
! !if [nmakehlp -c -QIA64_Bx]
!message *** Compiler has 'B-stepping errata workarounds'
ITAN_B_ERRATA = 1
!else
***************
*** 85,100 ****
ITAN_B_ERRATA = 0
!endif
- ### Clean-up temp files after tests.
- !if [@for %d in (temp.idb temp.pdb) do @if exist %d del %d]
- !endif
-
-
#----------------------------------------------------------
# Decode the options requested.
#----------------------------------------------------------
! !if "$(OPTS)" == "" || ![echo "$(OPTS)" | find /i "none" > nul]
STATIC_BUILD = 0
TCL_THREADS = 0
DEBUG = 0
--- 89,99 ----
ITAN_B_ERRATA = 0
!endif
#----------------------------------------------------------
# Decode the options requested.
#----------------------------------------------------------
! !if "$(OPTS)" == "" || [nmakehlp -f "$(OPTS)" "none"]
STATIC_BUILD = 0
TCL_THREADS = 0
DEBUG = 0
***************
*** 103,145 ****
LOIMPACT = 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
! !if ![echo $(OPTS) | find /i "loimpact" > nul]
!message *** Doing loimpact
LOIMPACT = 1
!else
--- 102,144 ----
LOIMPACT = 0
TCL_LINKWITHEXTENSIONS = 0
!else
! !if [nmakehlp -f $(OPTS) "static"]
!message *** Doing static
STATIC_BUILD = 1
!else
STATIC_BUILD = 0
!endif
! !if [nmakehlp -f $(OPTS) "msvcrt"]
!message *** Doing msvcrt
MSVCRT = 1
!else
MSVCRT = 0
!endif
! !if [nmakehlp -f $(OPTS) "linkexten"]
!message *** Doing linkexten
TCL_LINKWITHEXTENSIONS = 1
!else
TCL_LINKWITHEXTENSIONS = 0
!endif
! !if [nmakehlp -f $(OPTS) "threads"]
!message *** Doing threads
TCL_THREADS = 1
!else
TCL_THREADS = 0
!endif
! !if [nmakehlp -f $(OPTS) "symbols"]
!message *** Doing symbols
DEBUG = 1
!else
DEBUG = 0
!endif
! !if [nmakehlp -f $(OPTS) "profile"]
!message *** Doing profile
PROFILE = 1
!else
PROFILE = 0
!endif
! !if [nmakehlp -f $(OPTS) "loimpact"]
!message *** Doing loimpact
LOIMPACT = 1
!else
***************
*** 213,229 ****
# 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
--- 212,228 ----
# Decode the statistics requested.
#----------------------------------------------------------
! !if "$(STATS)" == "" || [nmakehlp -f "$(STATS)" "none"]
TCL_MEM_DEBUG = 0
TCL_COMPILE_DEBUG = 0
!else
! !if [nmakehlp -f $(STATS) "memdbg"]
!message *** Doing memdbg
TCL_MEM_DEBUG = 1
!else
TCL_MEM_DEBUG = 0
!endif
! !if [nmakehlp -f $(STATS) "compdbg"]
!message *** Doing compdbg
TCL_COMPILE_DEBUG = 1
!else
***************
*** 259,264 ****
!message *** Output directory will be '$(OUT_DIR)'
!message *** Suffix for binaries will be '$(SUFX)'
!message *** Optional defines are '$(OPTDEFINES)'
- !message
!endif
--- 258,262 ----