Menu

#3915 VC2005 build still not quite right.

closed-fixed
5
2008-02-01
2008-01-28
No

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.

Discussion

  • Kevin B KENNY

    Kevin B KENNY - 2008-01-28

    Patch for the 'mt' syntax problem

     
  • Kevin B KENNY

    Kevin B KENNY - 2008-01-28

    config.log from the failed build

     
  • Kevin B KENNY

    Kevin B KENNY - 2008-01-28

    Logged In: YES
    user_id=99768
    Originator: YES

    File Added: config.log

     
  • Kevin B KENNY

    Kevin B KENNY - 2008-01-28

    Makefile from the failed build.

     
  • Kevin B KENNY

    Kevin B KENNY - 2008-01-28

    Logged In: YES
    user_id=99768
    Originator: YES

    File Added: Makefile

     
  • Kevin B KENNY

    Kevin B KENNY - 2008-01-28

    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

     
  • Donal K. Fellows

    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...

     
  • Donal K. Fellows

    • status: open --> closed-fixed
     
  • Kevin B KENNY

    Kevin B KENNY - 2008-01-30

    Makefile changes to replace offending /options with -options

     
  • Kevin B KENNY

    Kevin B KENNY - 2008-01-30
    • status: closed-fixed --> open-fixed
     
  • Kevin B KENNY

    Kevin B KENNY - 2008-01-30

    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

     
  • Donal K. Fellows

    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.

     
  • Kevin B KENNY

    Kevin B KENNY - 2008-01-31

    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.

     
  • Donal K. Fellows

    • status: open-fixed --> closed-fixed