Hi Mathias.

On 20/01/2007 11:48, Mathias Michaelis wrote:
Hi Mike

Thanks a lot for your patch. If the appropriate compiler options are
applied to VC8, the make_mvc.mak script emits much less warning
messages, and probably the created binary is better optimised in
some manner.

Alas, your patch doesn't work on my machine for three reasons:

1) I use VCExpress version to build vim. This is VC8, but there is
   no SDK.

I didn't think the Express version of the compilers supported optimized code generation. And I am surprised VCExpress comes without nmake.

> So I also downloaded the Windows Server 2003 R2 Platform
   SDK. This SDK was the newest when I downloaded it. Alas it comes
   with nmake version 7.00.xyz. So I have to use nmake 7.00.xyz to
   control VC8.

Ah, that would be a problem.

   Solution: make_mvc.mak should not estimate the version of the
   nmake utility, but of the compiler that is used. This is a little
   bit difficult, but since version 7.0 of the VC toolset there
   exists a environment variable MSVCVer which IMHO should be used
   when it is defined.

I don't believe this is the case. For my install of VC8 there is no MSVCVER variable defined. Could this may be a feature of VCExpress?

2) The nmake utility that comes with the Windows Server 2003 R2
   Platform SDK has the version 7.00.8882. This is none of the
   versions that your patch is made for.

I was afraid this might happen.

   Solution: This version should be added to the list of versions
   as long a s this list is maintained. Another problem: I have
   heart of a VC 7.1. But I don't know with which exact version
   number the related nmake tool comes.

Indeed there was.  I think its _NMAKE_VER value is 7.10.3077.

So it is doubtful if the
   version list should be maintained at all, or if one should better
   relay on the environment variable MSVCVer that can in case of
   need be defined manually by the user.

3) Your patch uses the operators >, <, >= and <= to compare version
   numbers. With my nmake-7.00.8882 this doesn't work, even if I
   omit the quotes around the numbers and the macros.

   Solution: It's a pity, but one has to work with == and !=.
>
I have applied all the solutions mentioned above (by keeping to
maintain the list of nmake versions) and can now build vim
successfully. (To be honest: I HAVE to apply other patches too that
I once have mailed to this list but seemed to have been ignored?).

So there are now two issues. Non-SDK build environments don't have MSVCVER variable, while SDK build environments have version numbers that can be out of synch with the version of Visual C. It would be nice to keep the makefile handle its environment automatically without developers having to define variables to get it to build "out of the box". Perhaps it should first check for MSVCVER and if not defined fallback on _NMAKE_VER. Thoughts?

Best regards and thanks again for this patch

No problems.  As ever, every new solution generates new problems.

Mike
--
Don't pick up that pho+>+Abe+++f NO CARRIER

Reply via email to