On 03/02/2011 10:45, Graham Bloice wrote:
    
      
      On 03/02/2011 10:16, Guy Harris wrote:
      
        On Feb 3, 2011, at 2:02 AM, Graham Bloice wrote:
 
        
          I've perhaps conjoined two issues.  Compiler and linker flags do depend on the toolchain in use, but IME don't actually vary too much.
 
         
        "Not too much" != "not at all", so, unless there's a way to make them not vary at all, we *do* need to determine the toolchain in use.
 
       
      Ack, there will still have to be some conditionals, but
        hopefully less than we have now.  Of course
        running a very old VS with a much newer SDK might show some
        interesting issues with our current configs due to the newer
        tools in the SDK. 
      
        
          Compile time decisions on what the OS API's and structures look like depend on the SDK in use.
 
         
        In what fashion can one determine the SDK in use?  Or will the user have to specify that in config.nmake as well?
 
       
      If the
          user is running from a command prompt that has run the correct
          toolchain init script then various env vars get set.  The
          easiest way to get the correct toolchain init script is to
          open the command prompt from the Start menu entry for the SDK
          if you have one installed, else the copy of VS you have
          installed.  You can also run the commands directly with
          appropriate parms to select the architecture (x86 or x64) and
          the target OS (to determine what OS API you can use, SetEnv
          only), e.g. vcvarsall.bat for VS and SetEnv.cmd for the SDK 
           
          Looking at my home machine with VS 2010 & SDK 7.1, from
          the VS prompt I get "WindowsSdkDir=C:\Program Files
          (x86)\Microsoft SDKs\Windows\v7.0A\" and from the SDK prompt I
          get "WindowsSDKDir=C:\Program Files\Microsoft
          SDKs\Windows\v7.1\".  I don't see a simple env var that simply
          states the SDK in use.  The SDK prompt also has an sdkdir var
          set to the same path. 
           
          I'll check some other combinations when I get to work. 
         
       
     
    And for VS
        2005 and SDK v6.0A (Vista), 
         
        VS2005: MSSdk=C:\Program Files\Microsoft SDK\. 
        SDK V6.0A: MSSdk=C:\Program Files\Microsoft SDKs\Windows\v6.0 
         
        note the very subtle path differences "SDK" vs "SDKs".  Checking
        the compiler versions for each prompt I get: 
         
        VS 2005: 14.00.50727.762 
        SDK V6.0A: 14.00.50727.42 
         
        I can't remember whether the VS2010 \ SDK 7.0 set MSsdk. 
    -- 
Regards,
Graham Bloice 
  
 |