Tcl Source Code

View Ticket
Login
Ticket UUID: 1881216
Title: VC2005 build still not quite right.
Type: Bug Version: None
Submitter: kennykb Created on: 2008-01-28 15:54:59
Subsystem: 35. TclOO Package Assigned To: dkf
Priority: 5 Medium Severity:
Status: Closed Last Modified: 2008-02-02 00:18:38
Resolution: Fixed Closed By: dkf
    Closed on: 2008-02-01 17:18:38
Description:
The build for vc2005 still isn't quite right.  I'm
running the configurator from an 'msys' shell with

mkdir `hostname`
cd `hostname`
CC=cl ../configure --prefix=d:/tcltest --with-tcl=d:/tcltest/lib --enable-threads

The configurator finds (correctly) that a 'windres' command exists. But it winds up, somehow, using 'rc' in its place, producing a makefile that attempts to run 'rc' with command line options appropriate to 'windres'.

I work around that with 'make RC=windres', and the build progresses somewhat further, but fails when it attempts to run 'mt'.  The problem there is shell syntax; the semicolon that separates the DLL name from the resource number needs to be escaped.  I trace that back to aclocal.m4, in the TEAX_VC_MANIFEST macro.  A proposed
patch is attached.

The failing Makefile and config.log are also attached, as requested.
User Comments: kennykb added on 2008-01-31 07:39:27:
Logged In: YES 
user_id=99768
Originator: YES

With this evening's HEAD, the '-o' on the 'rc' should be '-fo'.
Aside from that, everything looks to be building correctly.

Also, it would be nice to add 'nologo' on that command; it would
slightly reduce the dribble in the 'make' output.

dkf added on 2008-01-30 22:33:44:
Logged In: YES 
user_id=79902
Originator: NO

Everything done except for the (trivial) bugfix in tclOOCall.c, which gets in the way of a number of changes in my sandboxes.

kennykb added on 2008-01-30 08:53:15:

File Added - 264238: Makefile.diffs

Logged In: YES 
user_id=99768
Originator: YES

Still not quite there.

For starters, options beginning with '/' seem to get munged
by either msys 'make' or the msys shell... but ones beginning
with '-' are OK.  I attach a set of diffs to the generated
Makefile that take care of the problem in RCFLAGS and
the '.c.obj' and '.rc.$(RES)' rules.  With these changes,
the 'make' is successful.

The warning about mismatched const-ness at generic/tclOOCall.c:565
is still there.  The reason that warnings are a major annoyance
is that an --enable-symbols build on VC++ turns on
"warnings treated as errors", which means that the compiler
won't generate object code for the offending file.
File Added: Makefile.diffs

dkf added on 2008-01-29 21:20:42:
Logged In: YES 
user_id=79902
Originator: NO

Ugh, it seems that working out what to do about windres/rc needs to be done *after* TEA_CONFIG_CFLAGS as that unilaterally sets RC...

kennykb added on 2008-01-28 23:01:40:
Logged In: YES 
user_id=99768
Originator: YES

Oh, also... once the Makefile is patched, there are two more things, which don't make the build fail but are nevertheless annoying:

(1) Every 'cl' command generates:

cl : Command line warning D9035 : option 'o' has been deprecated and will be removed in a future release

(2) There is still one spot where we trip over VC++ obsessive-compulsive behaviour with respect to constness of function args:

../generic/tclOOCall.c(565) : warning C4028: formal parameter 3 different from declaration

kennykb added on 2008-01-28 22:56:28:
Logged In: YES 
user_id=99768
Originator: YES

File Added: Makefile

kennykb added on 2008-01-28 22:56:27:

File Added - 264030: Makefile

kennykb added on 2008-01-28 22:55:48:
Logged In: YES 
user_id=99768
Originator: YES

File Added: config.log

kennykb added on 2008-01-28 22:55:46:

File Added - 264029: config.log

kennykb added on 2008-01-28 22:55:04:

File Added - 264028: oo-aclocal.patch

Attachments: