From: SourceForge.net <no...@so...> - 2004-09-07 22:26:03
|
Bugs item #1020445, was opened at 2004-09-01 07:18 Message generated for change (Comment added) made by davygrvy You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=110894&aid=1020445&group_id=10894 Category: 51. Configure and Build Tools Group: current: 8.4.7 Status: Open Resolution: Fixed Priority: 4 Submitted By: Martin v. Löwis (loewis) >Assigned to: Jeffrey Hobbs (hobbs) Summary: Tcl does not build on Win64-Itanium Initial Comment: I'm trying to build Tcl for Win64-Itanium, using x86 as the host system. I try to follow the instructions in win\makefile.vc. Therefore, I do [vc 2003]vc7\bin\vcvars32.bat [SDK]setenv.bat /pre64 /retail The latter fails because /pre64 is not support; I have to use /XP64 instead. So I do that. Then I invoke nmake -f makefile.vc MACHINE=IA64 This gives a MessageBox, with the title [tcl]win\nmakehlp.exe, and the text [tcl]win\nmakehlp.exe is not a valid Win32 application This analysis is correct; nmakehlp.exe is a Win64 application, which cannot be executed on the build system. Clicking OK a number of times, the build procedes, until it gives cl -nologo -c -W3 -YX -Fp.\Release\tcl_Dynamic-QIA64_Bx -O2 -Op -Gs -MD -I"..\win" -I"..\generic" -DTCL_PIPE_DLL=\tclpip84.dll\ -DBUILD_tcl -Fo.\R elease\tcl_Dynamic@C:\DOCUME~1\MARTIN~1.VON\LOCALS~1\Temp\nm41B.tmp cl : Command line warning D4002 : ignoring unknown option '-QIA64_Bx' tclWin32Dll.c ..\win\tclWin32Dll.c(1138) : error C2065: '_asm' : undeclared identifier [more errors omitted] NMAKE : fatal error U1077: 'cl' : return code '0x2' At this point, the build aborts. ---------------------------------------------------------------------- >Comment By: David Gravereaux (davygrvy) Date: 2004-09-07 15:25 Message: Logged In: YES user_id=7549 ohh, I get it. The helper is built according to $(cc) during a cross. Well, I can't really do much to fix it except advise in the areas I can run it. As I neither have VC7 with it's wacked changes to vcvars32.bat to see in what way the envars are changed, I can't assist with this.. ---------------------------------------------------------------------- Comment By: David Gravereaux (davygrvy) Date: 2004-09-07 15:06 Message: Logged In: YES user_id=7549 I'd love to try it here, but neither do I have VC7, nor did the Aug2004 (XPsp2) SDK contain a win64 compiler. The Feb2003 did, IIRC. ---------------------------------------------------------------------- Comment By: David Gravereaux (davygrvy) Date: 2004-09-07 15:01 Message: Logged In: YES user_id=7549 Then don't use the win64 compile of nmake ---------------------------------------------------------------------- Comment By: Martin v. Löwis (loewis) Date: 2004-09-07 14:04 Message: Logged In: YES user_id=21627 Please try it yourself. Not running vcvars32.bat first triggers an error at the top of makefile.vc, as that has an explicit check for vcvars32.bat being run. That means that native compiles of Tcl currently can't be supported, since VC.NET cannot be installed on Win64. OTOH, a cross-compile gives the message about nmakehlp.exe that I reported above. ---------------------------------------------------------------------- Comment By: David Gravereaux (davygrvy) Date: 2004-09-07 13:58 Message: Logged In: YES user_id=7549 According to http://www.microsoft.com/msdownload/platformsdk/sdkupdate /contents.htm , the setenv switch might be /SVR64 these days. But that's the docs for the Feb2003 one. There's the newer July2004 (XPsp2) one currently, but I can't seem to install it due to some odd msxml3 sp4 vs. sp2 oddity with their dhtml on http://www.microsoft.com/msdownload/platformsdk/sdkupdate / PS. there's no reason to have to use the 64-bit compile of nmake when doing a cross. Give it a shot, try setenv first. ---------------------------------------------------------------------- Comment By: Martin v. Löwis (loewis) Date: 2004-09-07 13:39 Message: Logged In: YES user_id=21627 That's good to hear. However, I could not quite figure out how it is supposed to work. Do I really have to run vcvars32 first? I had hoped that the SDK alone is sufficient in this scenario. Also (and OTOH), does it support cross-compilation, or did it use to work only when building on Itanium natively? I see the build process generates a number of binaries for the build machine - which would have to be build with the native compiler (whatever that is). ---------------------------------------------------------------------- Comment By: David Gravereaux (davygrvy) Date: 2004-09-07 13:14 Message: Logged In: YES user_id=7549 Martin, Your statement that "makefile.vc doesn't support Itanium" is is incorrect. Should be "used to work". ---------------------------------------------------------------------- Comment By: Jeffrey Hobbs (hobbs) Date: 2004-09-07 11:19 Message: Logged In: YES user_id=72656 reopened and assigned to Dave to address the makefile.vc errors for compiling for WIN64. ---------------------------------------------------------------------- Comment By: Kevin B KENNY (kennykb) Date: 2004-09-04 10:52 Message: Logged In: YES user_id=99768 It would be nice to do _getIndReg and retrieve the CPUID on IA64 as well, but as Jeff points out, it isn't critical. I also am making the (questionable?) presumption that Win64 vendors have got their act together with keeping QueryPerformanceCounter synchronized, so I'm #ifdef'ing the code that calls TclWinCPUID out on IA64. ---------------------------------------------------------------------- Comment By: Martin v. Löwis (loewis) Date: 2004-09-01 13:48 Message: Logged In: YES user_id=21627 If makefile.vc is not supported (i.e. bugs reported against it won't be fixed), could a note be added to that file saying so? Also, win/README mentions makefile.vc, and suggests that Cygwin is not needed. It would be good if the mentioning of the makefile.vc process was removed, or that the process is atleast mentioned as unsupported. ---------------------------------------------------------------------- Comment By: Jeffrey Hobbs (hobbs) Date: 2004-09-01 12:00 Message: Logged In: YES user_id=72656 The makefile.vc is not the standard supported makefile - the cygwin build system is. While it may seem a bit odd for Windows-only users, it is much easier to maintain the Tcl/Tk and TEA build system across platforms. You want to use that with --enable-64bit for Win64 builds. ---------------------------------------------------------------------- Comment By: Martin v. Löwis (loewis) Date: 2004-09-01 11:42 Message: Logged In: YES user_id=21627 What about the other problems, e.g. the incorrect documentation in the makefile, and the failure to cross-build properly because a host binary is build with the target compiler? ---------------------------------------------------------------------- Comment By: Jeffrey Hobbs (hobbs) Date: 2004-09-01 10:42 Message: Logged In: YES user_id=72656 The _try { _asm ... } added for CPU id wasn't valid for WIN64. Since it's not critical, I have #ifdef checked for it, but I'm moving this over to Kevin to see if he wants to correct that bit of code. Fixed in 8.4-branch and head, along with other WIN64 corrections to tclWinDde.c and tclWinReg.c. ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=110894&aid=1020445&group_id=10894 |