Ticket UUID: | 1096916 | |||
Title: | Support build with MSVC++ 8 | |||
Type: | Patch | Version: | None | |
Submitter: | patthoyts | Created on: | 2005-01-06 02:42:34 | |
Subsystem: | 53. Configure and Build Tools | Assigned To: | hobbs | |
Priority: | 7 High | Severity: | ||
Status: | Closed | Last Modified: | 2006-09-18 12:22:35 | |
Resolution: | Accepted | Closed By: | patthoyts | |
Closed on: | 2005-11-03 00:18:40 | |||
Description: |
NOTE: this patch is provided to record the modifications required. It is not intended to actually be applied until this compiler is officially released. This patch contains a number of changes required to compile Tcl using Microsoft Visual C++ 8 which is currently provided as part of the Microsoft Visual Studio 2005 Beta. To summarize: regerror.c: errcode is a typedef declared in the windows headers. tclWinPort.h: A large number of C library functions have been marked as depreciated as part of some secure programming drive at MS. This suppresses the warnings. tcl.h: By default time_t is declared as a 64 bit value. Tcl can't cope with this so we define _USE_32BIT_TIME_T. This means we must use a compatible struct version for Tcl_StatBuf nmakehlp.c: The error codes have changed. rules.vc: makefile.vc: We need more options checking as a number have been removed. The result is that Tcl now compiles without warnings. There are 11 test suite failures and one crash. The crash is caused by the C runtime when we try to convert an illegal time value ( a legitimate test - blame microsoft). The other failures are due to some change in the putenv() function which appears to no longer be changing the environment. | |||
User Comments: |
nobody added on 2006-09-18 12:22:35:
Logged In: NO to Build with MSVC8 patthoyts added on 2005-11-03 07:18:40: Logged In: YES user_id=202636 Now that MSVC8 has been release - applied patch. patthoyts added on 2005-11-03 06:11:35: File Added - 154830: msvc8_3.patch patthoyts added on 2005-11-03 06:11:27: Logged In: YES user_id=202636 Final version - the env.test failures were due to the test interpreter removing an essential environment variable (SYSTEMROOT). We have had to add a few casts to avoid complaints about assigning from the 64bit time_t to int or long. Microsoft fixed the mktime() crashing issue reported above. nobody added on 2005-11-03 03:43:18: File Added - 154806: msvc8_2.patch patthoyts added on 2005-06-05 08:07:51: Logged In: YES user_id=202636 I originally developed this patch on the beta1 release - version 14.00.40607.16 for 80x86. I have recently installed the beta 2 release which is version 14.00.50215.44 and this is almost identical as far as I can see. I raised the following bug with MS: http://lab.msdn.microsoft.com/productfeedback/viewfeedback.aspx?feedbackid=7a8c7299-f442-4d8e-95b4-9743ead00f33 but while they state this is fixed -- I find this not to be the case. jjmcwill added on 2005-05-27 01:24:58: Logged In: YES user_id=1285984 Which version of the compiler are you referring to with the bugs, Pat? I'm using VS.NET 2005 Beta 2. cl yields: Version 14.00.50215.44 for X64 Jeff jjmcwill added on 2005-05-27 00:51:18: Logged In: YES user_id=1285984 Which specific version of the compiler were you using? I'm using the VS.NET 2005 Beta 2. cl.exe emits the following version: 14.00.50215.44 for X64. hobbs added on 2005-05-27 00:29:10: Logged In: YES user_id=72656 So an updated patch is needed right - 64-bit time_t *should* work in Tcl (as Solaris 64 bit uses it, among other 64-bit OSes). patthoyts added on 2005-05-26 21:30:10: Logged In: YES user_id=202636 The crash mentioned about was indeed a but in Microsoft's C library shipped with the above compiler. MS replied to me that this has been fixed so more recent versions should be ok. patthoyts added on 2005-01-06 09:42:36: File Added - 114692: msvc8.patch |