[Cmake-commits] [cmake-commits] hoffman committed CMakeLists.txt 1.428.2.1 1.428.2.2 cmCTest.cxx 1.370.2.1 1.370.2.2 cmCommandArgumentParserHelper.cxx 1.23.2.1 1.23.2.2 cmCoreTryCompile.cxx 1.14.2.1 1.14.2.2 cmExtraCodeBlocksGenerator.cxx 1.28.2.1 1.28.2.2 cmExtraEclipseCDT4Generator.cxx 1.27.2.1 1.27.2.2 cmFileCommand.cxx 1.136.2.2 1.136.2.3 cmFileCommand.h 1.47.2.1 1.47.2.2 cmGlobalVisualStudio10Generator.cxx 1.2.2.1 1.2.2.2 cmGlobalVisualStudio10Win64Generator.cxx NONE 1.1.2.2 cmGlobalVisualStudio10Win64Generator.h NONE 1.1.2.2 cmGlobalVisualStudio7Generator.cxx 1.108.2.2 1.108.2.3 cmGlobalVisualStudio7Generator.h 1.51.2.2 1.51.2.3 cmGlobalVisualStudio8Generator.cxx 1.39.2.1 1.39.2.2 cmGlobalVisualStudio8Generator.h 1.16.2.1 1.16.2.2 cmGlobalVisualStudioGenerator.h 1.11.2.1 1.11.2.2 cmGlobalXCodeGenerator.cxx 1.232.2.2 1.232.2.3 cmIfCommand.cxx 1.97.2.2 1.97.2.3 cmIfCommand.h 1.57.2.1 1.57.2.2 cmLocalVisualStudio10Generator.cxx 1.5.2.1 1.5.2.2 cmLocalVisualStudio7Generator.cxx 1.252.2.1 1.252.2.2 cmPolicies.cxx 1.44.2.2 1.44.2.3 cmPolicies.h 1.26.2.2 1.26.2.3 cmVS10CLFlagTable.h 1.3.2.1 1.3.2.2 cmVS10LinkFlagTable.h 1.2.2.1 1.2.2.2 cmVisualStudio10TargetGenerator.cxx 1.15.2.1 1.15.2.2 cmVisualStudio10TargetGenerator.h 1.7.2.1 1.7.2.2 cmake.cxx 1.429.2.2 1.429.2.3 cmparseMSBuildXML.py 1.2.2.1 1.2.2.2

cmake-commits at cmake.org cmake-commits at cmake.org
Wed Oct 28 12:15:40 EDT 2009


Update of /cvsroot/CMake/CMake/Source
In directory public:/mounts/ram/cvs-serv18987/Source

Modified Files:
      Tag: CMake-2-8
	CMakeLists.txt cmCTest.cxx cmCommandArgumentParserHelper.cxx 
	cmCoreTryCompile.cxx cmExtraCodeBlocksGenerator.cxx 
	cmExtraEclipseCDT4Generator.cxx cmFileCommand.cxx 
	cmFileCommand.h cmGlobalVisualStudio10Generator.cxx 
	cmGlobalVisualStudio7Generator.cxx 
	cmGlobalVisualStudio7Generator.h 
	cmGlobalVisualStudio8Generator.cxx 
	cmGlobalVisualStudio8Generator.h 
	cmGlobalVisualStudioGenerator.h cmGlobalXCodeGenerator.cxx 
	cmIfCommand.cxx cmIfCommand.h 
	cmLocalVisualStudio10Generator.cxx 
	cmLocalVisualStudio7Generator.cxx cmPolicies.cxx cmPolicies.h 
	cmVS10CLFlagTable.h cmVS10LinkFlagTable.h 
	cmVisualStudio10TargetGenerator.cxx 
	cmVisualStudio10TargetGenerator.h cmake.cxx 
	cmparseMSBuildXML.py 
Added Files:
      Tag: CMake-2-8
	cmGlobalVisualStudio10Win64Generator.cxx 
	cmGlobalVisualStudio10Win64Generator.h 
Log Message:
RC 4 merge


Index: cmLocalVisualStudio7Generator.cxx
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmLocalVisualStudio7Generator.cxx,v
retrieving revision 1.252.2.1
retrieving revision 1.252.2.2
diff -C 2 -d -r1.252.2.1 -r1.252.2.2
*** cmLocalVisualStudio7Generator.cxx	1 Oct 2009 21:21:06 -0000	1.252.2.1
--- cmLocalVisualStudio7Generator.cxx	28 Oct 2009 16:15:19 -0000	1.252.2.2
***************
*** 589,593 ****
    if(strcmp(configType, "10") != 0)
      {
!     const char* linkLanguage = target.GetLinkerLanguage(configName);
      if(!linkLanguage)
        {
--- 589,594 ----
    if(strcmp(configType, "10") != 0)
      {
!     const char* linkLanguage = (this->FortranProject? "Fortran":
!                                 target.GetLinkerLanguage(configName));
      if(!linkLanguage)
        {
***************
*** 846,849 ****
--- 847,852 ----
                                                      bool isDebug)
  {
+   cmGlobalVisualStudio7Generator* gg =
+     static_cast<cmGlobalVisualStudio7Generator*>(this->GlobalGenerator);
    std::string temp;
    std::string extraLinkOptions;
***************
*** 949,952 ****
--- 952,959 ----
      fout << "\t\t\t<Tool\n"
           << "\t\t\t\tName=\"" << tool << "\"\n";
+     if(!gg->NeedLinkLibraryDependencies(target))
+       {
+       fout << "\t\t\t\tLinkLibraryDependencies=\"false\"\n";
+       }
      linkOptions.OutputAdditionalOptions(fout, "\t\t\t\t", "\n");
      // Use the NOINHERIT macro to avoid getting VS project default
***************
*** 1021,1024 ****
--- 1028,1035 ----
      fout << "\t\t\t<Tool\n"
           << "\t\t\t\tName=\"" << tool << "\"\n";
+     if(!gg->NeedLinkLibraryDependencies(target))
+       {
+       fout << "\t\t\t\tLinkLibraryDependencies=\"false\"\n";
+       }
      linkOptions.OutputAdditionalOptions(fout, "\t\t\t\t", "\n");
      // Use the NOINHERIT macro to avoid getting VS project default

Index: cmPolicies.cxx
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmPolicies.cxx,v
retrieving revision 1.44.2.2
retrieving revision 1.44.2.3
diff -C 2 -d -r1.44.2.2 -r1.44.2.3
*** cmPolicies.cxx	9 Oct 2009 20:11:19 -0000	1.44.2.2
--- cmPolicies.cxx	28 Oct 2009 16:15:20 -0000	1.44.2.3
***************
*** 359,375 ****
      this->DefinePolicy(
      CMP0012, "CMP0012",
!     "The if() command can recognize named boolean constants.",
!     "In CMake versions 2.6.4 and lower the only boolean constants were 0 "
!     "and 1. Other boolean constants such as true, false, yes, no, "
      "on, off, y, n, notfound, ignore (all case insensitive) were recognized "
      "in some cases but not all.  "
      "For example, the code \"if(TRUE)\" might have evaluated as false.  "
!     "In later versions of cmake these values are "
!     "treated as boolean constants more consistently and should not be used "
!     "as variable names. "
!     "The OLD behavior for this policy is to allow variables to have names "
!     "such as true and to dereference them. "
!     "The NEW behavior for this policy is to treat strings like true as a "
!     "boolean constant.",
      2,8,0, cmPolicies::WARN);
  
--- 359,380 ----
      this->DefinePolicy(
      CMP0012, "CMP0012",
!     "if() recognizes numbers and boolean constants.",
!     "In CMake versions 2.6.4 and lower the if() command implicitly "
!     "dereferenced arguments corresponding to variables, even those named "
!     "like numbers or boolean constants, except for 0 and 1.  "
!     "Numbers and boolean constants such as true, false, yes, no, "
      "on, off, y, n, notfound, ignore (all case insensitive) were recognized "
      "in some cases but not all.  "
      "For example, the code \"if(TRUE)\" might have evaluated as false.  "
!     "Numbers such as 2 were recognized only in "
!     "boolean expressions like \"if(NOT 2)\" (leading to false) "
!     "but not as a single-argument like \"if(2)\" (also leading to false). "
!     "Later versions of CMake prefer to treat numbers and boolean constants "
!     "literally, so they should not be used as variable names."
!     "\n"
!     "The OLD behavior for this policy is to implicitly dereference variables "
!     "named like numbers and boolean constants. "
!     "The NEW behavior for this policy is to recognize numbers and "
!     "boolean constants without dereferencing variables with such names.",
      2,8,0, cmPolicies::WARN);
  

Index: cmIfCommand.cxx
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmIfCommand.cxx,v
retrieving revision 1.97.2.2
retrieving revision 1.97.2.3
diff -C 2 -d -r1.97.2.2 -r1.97.2.3
*** cmIfCommand.cxx	9 Oct 2009 20:11:14 -0000	1.97.2.2
--- cmIfCommand.cxx	28 Oct 2009 16:15:18 -0000	1.97.2.3
***************
*** 17,20 ****
--- 17,36 ----
  #include <cmsys/RegularExpression.hxx>
  
+ 
+ static std::string cmIfCommandError(
+   cmMakefile* mf, std::vector<std::string> const& args)
+ {
+   cmLocalGenerator* lg = mf->GetLocalGenerator();
+   std::string err = "given arguments:\n ";
+   for(std::vector<std::string>::const_iterator i = args.begin();
+       i != args.end(); ++i)
+     {
+     err += " ";
+     err += lg->EscapeForCMake(i->c_str());
+     }
+   err += "\n";
+   return err;
+ }
+ 
  //=========================================================================
  bool cmIfFunctionBlocker::
***************
*** 86,99 ****
              if (errorString.size())
                {
!               std::string err = "given arguments\n  ";
!               unsigned int i;
!               for(i =0; i < this->Functions[c].Arguments.size(); ++i)
!                 {
!                 err += (this->Functions[c].Arguments[i].Quoted?"\"":"");
!                 err += this->Functions[c].Arguments[i].Value;
!                 err += (this->Functions[c].Arguments[i].Quoted?"\"":"");
!                 err += " ";
!                 }
!               err += "\n";
                err += errorString;
                mf.IssueMessage(messType, err);
--- 102,106 ----
              if (errorString.size())
                {
!               std::string err = cmIfCommandError(&mf, expandedArguments);
                err += errorString;
                mf.IssueMessage(messType, err);
***************
*** 176,189 ****
    if (errorString.size())
      {
!     std::string err = "given arguments\n  ";
!     unsigned int i;
!     for(i =0; i < args.size(); ++i)
!       {
!       err += (args[i].Quoted?"\"":"");
!       err += args[i].Value;
!       err += (args[i].Quoted?"\"":"");
!       err += " ";
!       }
!     err += "\n";
      err += errorString;
      if (status == cmake::FATAL_ERROR)
--- 183,187 ----
    if (errorString.size())
      {
!     std::string err = cmIfCommandError(this->Makefile, expandedArguments);
      err += errorString;
      if (status == cmake::FATAL_ERROR)
***************
*** 216,297 ****
  {
    //=========================================================================
!   // returns true if succesfull, the resulting bool parsed is stored in result
!   bool GetBooleanValue(std::string &newArg,
!                        cmMakefile *makefile,
!                        bool &result,
!                        std::string &errorString,
!                        cmPolicies::PolicyStatus Policy12Status,
!                        cmake::MessageType &status)
    {
!     if (Policy12Status != cmPolicies::OLD &&
!         Policy12Status != cmPolicies::WARN)
!       {
!       // please note IsOn(var) does not always equal !IsOff(var)
!       // that is why each is called
!       if (cmSystemTools::IsOn(newArg.c_str()))
!         {
!         result = true;
!         return true;
!         }
!       if (cmSystemTools::IsOff(newArg.c_str()))
!         {
!         result = false;
!         return true;
!         }
!       return false;
!       }
! 
!     // Old policy is more complex...
!     // 0 and 1 are very common, test for them first quickly
!     if (newArg == "0")
      {
!       result = false;
!       return true;
      }
!     if (newArg == "1")
      {
!       result = true;
!       return true;
      }
  
!     // old behavior is to dereference the var
!     if (Policy12Status == cmPolicies::OLD)
      {
!       return false;
      }
  
!     // now test for values that may be the name of a variable
!     // warn if used
!     if (cmSystemTools::IsOn(newArg.c_str()))
        {
!       // only warn if the value would change
!       const char *def = makefile->GetDefinition(newArg.c_str());
!       if (cmSystemTools::IsOff(def))
!         {
!         cmPolicies* policies = makefile->GetPolicies();
!         errorString = "A variable or argument named \""
!           + newArg
!           + "\" appears in a conditional statement.  "
!           + policies->GetPolicyWarning(cmPolicies::CMP0012);
!         status = cmake::AUTHOR_WARNING;
!         }
!       return false;
        }
!     if (cmSystemTools::IsOff(newArg.c_str()))
        {
!       // only warn if the value would change
!       const char *def = makefile->GetDefinition(newArg.c_str());
!       if (!cmSystemTools::IsOff(def))
!         {
!         cmPolicies* policies = makefile->GetPolicies();
!         errorString = "A variable or argument named \""
!           + newArg
!           + "\" appears in a conditional statement.  "
!           + policies->GetPolicyWarning(cmPolicies::CMP0012);
!         status = cmake::AUTHOR_WARNING;
!         }
!       return false;
        }
!     return false;
    }
  
--- 214,280 ----
  {
    //=========================================================================
!   bool GetBooleanValue(std::string& arg, cmMakefile* mf)
    {
!   // Check basic constants.
!   if (arg == "0")
      {
!     return false;
      }
!   if (arg == "1")
      {
!     return true;
      }
  
!   // Check named constants.
!   if (cmSystemTools::IsOn(arg.c_str()))
      {
!     return true;
!     }
!   if (cmSystemTools::IsOff(arg.c_str()))
!     {
!     return false;
      }
  
!   // Check for numbers.
!   if(!arg.empty())
!     {
!     char* end;
!     double d = strtod(arg.c_str(), &end);
!     if(*end == '\0')
        {
!       // The whole string is a number.  Use C conversion to bool.
!       return d? true:false;
        }
!     }
! 
!   // Check definition.
!   const char* def = mf->GetDefinition(arg.c_str());
!   return !cmSystemTools::IsOff(def);
!   }
! 
!   //=========================================================================
!   // Boolean value behavior from CMake 2.6.4 and below.
!   bool GetBooleanValueOld(std::string const& arg, cmMakefile* mf, bool one)
!   {
!   if(one)
!     {
!     // Old IsTrue behavior for single argument.
!     if(arg == "0")
!       { return false; }
!     else if(arg == "1")
!       { return true; }
!     else
!       { return !cmSystemTools::IsOff(mf->GetDefinition(arg.c_str())); }
!     }
!   else
!     {
!     // Old GetVariableOrNumber behavior.
!     const char* def = mf->GetDefinition(arg.c_str());
!     if(!def && atoi(arg.c_str()))
        {
!       def = arg.c_str();
        }
!     return !cmSystemTools::IsOff(def);
!     }
    }
  
***************
*** 303,316 ****
      std::string &errorString,
      cmPolicies::PolicyStatus Policy12Status,
!     cmake::MessageType &status)
    {
!     bool result = false;
!     if (GetBooleanValue(newArg, makefile, result,
!                         errorString, Policy12Status, status))
      {
!       return result;
      }
!     const char *def = makefile->GetDefinition(newArg.c_str());
!     return !cmSystemTools::IsOff(def);
    }
  
--- 286,333 ----
      std::string &errorString,
      cmPolicies::PolicyStatus Policy12Status,
!     cmake::MessageType &status,
!     bool oneArg = false)
    {
!   // Use the policy if it is set.
!   if (Policy12Status == cmPolicies::NEW)
      {
!     return GetBooleanValue(newArg, makefile);
      }
!   else if (Policy12Status == cmPolicies::OLD)
!     {
!     return GetBooleanValueOld(newArg, makefile, oneArg);
!     }
! 
!   // Check policy only if old and new results differ.
!   bool newResult = GetBooleanValue(newArg, makefile);
!   bool oldResult = GetBooleanValueOld(newArg, makefile, oneArg);
!   if(newResult != oldResult)
!     {
!     switch(Policy12Status)
!       {
!       case cmPolicies::WARN:
!         {
!         cmPolicies* policies = makefile->GetPolicies();
!         errorString = "An argument named \"" + newArg
!           + "\" appears in a conditional statement.  "
!           + policies->GetPolicyWarning(cmPolicies::CMP0012);
!         status = cmake::AUTHOR_WARNING;
!         }
!       case cmPolicies::OLD:
!         return oldResult;
!       case cmPolicies::REQUIRED_IF_USED:
!       case cmPolicies::REQUIRED_ALWAYS:
!         {
!         cmPolicies* policies = makefile->GetPolicies();
!         errorString = "An argument named \"" + newArg
!           + "\" appears in a conditional statement.  "
!           + policies->GetRequiredPolicyError(cmPolicies::CMP0012);
!         status = cmake::FATAL_ERROR;
!         }
!       case cmPolicies::NEW:
!         break;
!       }
!     }
!   return newResult;
    }
  
***************
*** 894,898 ****
                                              errorString,
                                              Policy12Status,
!                                             status);
  }
  
--- 911,915 ----
                                              errorString,
                                              Policy12Status,
!                                             status, true);
  }
  

Index: cmIfCommand.h
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmIfCommand.h,v
retrieving revision 1.57.2.1
retrieving revision 1.57.2.2
diff -C 2 -d -r1.57.2.1 -r1.57.2.2
*** cmIfCommand.h	1 Oct 2009 21:21:04 -0000	1.57.2.1
--- cmIfCommand.h	28 Oct 2009 16:15:18 -0000	1.57.2.2
***************
*** 122,135 ****
        "will be evaluated. Then NOT operators and finally AND, OR operators "
        "will be evaluated. Possible expressions are:\n"
!       "  if(variable)\n"
!       "True if the variable's value is not empty, 0, N, NO, OFF, FALSE, "
!       "NOTFOUND, or <variable>-NOTFOUND.\n"
!       "  if(NOT variable)\n"
!       "True if the variable's value is empty, 0, N, NO, OFF, FALSE, "
!       "NOTFOUND, or <variable>-NOTFOUND.\n"
!       "  if(variable1 AND variable2)\n"
!       "True if both variables would be considered true individually.\n"
!       "  if(variable1 OR variable2)\n"
!       "True if either variable would be considered true individually.\n"
        "  if(COMMAND command-name)\n"
        "True if the given name is a command, macro or function that can be "
--- 122,143 ----
        "will be evaluated. Then NOT operators and finally AND, OR operators "
        "will be evaluated. Possible expressions are:\n"
!       "  if(<constant>)\n"
!       "True if the constant is 1, ON, YES, TRUE, Y, or a non-zero number.  "
!       "False if the constant is 0, OFF, NO, FALSE, N, IGNORE, \"\", "
!       "or ends in the suffix '-NOTFOUND'.  "
!       "Named boolean constants are case-insensitive."
!       "\n"
!       "  if(<variable>)\n"
!       "True if the variable's value is not a false constant."
!       "\n"
!       "  if(NOT <expression>)\n"
!       "True if the expression is not true."
!       "\n"
!       "  if(<expr1> AND <expr2>)\n"
!       "True if both expressions would be considered true individually."
!       "\n"
!       "  if(<expr1> OR <expr2>)\n"
!       "True if either expression would be considered true individually."
!       "\n"
        "  if(COMMAND command-name)\n"
        "True if the given name is a command, macro or function that can be "

Index: cmVisualStudio10TargetGenerator.h
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmVisualStudio10TargetGenerator.h,v
retrieving revision 1.7.2.1
retrieving revision 1.7.2.2
diff -C 2 -d -r1.7.2.1 -r1.7.2.2
*** cmVisualStudio10TargetGenerator.h	1 Oct 2009 21:21:10 -0000	1.7.2.1
--- cmVisualStudio10TargetGenerator.h	28 Oct 2009 16:15:32 -0000	1.7.2.2
***************
*** 17,25 ****
  class cmMakefile;
  class cmGeneratedFileStream;
! class cmGlobalVisualStudio7Generator;
  class cmSourceFile;
  class cmCustomCommand;
  class cmLocalVisualStudio7Generator;
  class cmComputeLinkInformation;
  #include "cmSourceGroup.h"
  
--- 17,26 ----
  class cmMakefile;
  class cmGeneratedFileStream;
! class cmGlobalVisualStudio10Generator;
  class cmSourceFile;
  class cmCustomCommand;
  class cmLocalVisualStudio7Generator;
  class cmComputeLinkInformation;
+ class cmVisualStudioGeneratorOptions;
  #include "cmSourceGroup.h"
  
***************
*** 28,32 ****
  public:
    cmVisualStudio10TargetGenerator(cmTarget* target, 
!                                   cmGlobalVisualStudio7Generator* gg);
    ~cmVisualStudio10TargetGenerator();
    void Generate();
--- 29,33 ----
  public:
    cmVisualStudio10TargetGenerator(cmTarget* target, 
!                                   cmGlobalVisualStudio10Generator* gg);
    ~cmVisualStudio10TargetGenerator();
    void Generate();
***************
*** 50,53 ****
--- 51,56 ----
    void WritePathAndIncrementalLinkOptions();
    void WriteItemDefinitionGroups();
+   void ComputeClOptions();
+   void ComputeClOptions(std::string const& configName);
    void WriteClOptions(std::string const& config,
                        std::vector<std::string> const & includes);
***************
*** 76,79 ****
--- 79,85 ----
                           std::vector<cmSourceGroup>& );
  private:
+   typedef cmVisualStudioGeneratorOptions Options;
+   typedef std::map<cmStdString, Options*> OptionsMap;
+   OptionsMap ClOptions;
    std::string ModuleDefinitionFile;
    std::string PathToVcxproj;
***************
*** 83,87 ****
    std::string GUID;
    std::string Name;
!   cmGlobalVisualStudio7Generator* GlobalGenerator;
    cmGeneratedFileStream* BuildFileStream;
    cmLocalVisualStudio7Generator* LocalGenerator;
--- 89,93 ----
    std::string GUID;
    std::string Name;
!   cmGlobalVisualStudio10Generator* GlobalGenerator;
    cmGeneratedFileStream* BuildFileStream;
    cmLocalVisualStudio7Generator* LocalGenerator;

--- NEW FILE: cmGlobalVisualStudio10Win64Generator.cxx ---
/*============================================================================
  CMake - Cross Platform Makefile Generator
  Copyright 2000-2009 Kitware, Inc., Insight Software Consortium

  Distributed under the OSI-approved BSD License (the "License");
  see accompanying file Copyright.txt for details.

  This software is distributed WITHOUT ANY WARRANTY; without even the
  implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  See the License for more information.
============================================================================*/
#include "cmGlobalVisualStudio10Win64Generator.h"
#include "cmMakefile.h"
#include "cmake.h"

//----------------------------------------------------------------------------
cmGlobalVisualStudio10Win64Generator::cmGlobalVisualStudio10Win64Generator()
{
  this->PlatformName = "x64";
}

//----------------------------------------------------------------------------
void cmGlobalVisualStudio10Win64Generator
::GetDocumentation(cmDocumentationEntry& entry) const
{
  entry.Name = this->GetName();
  entry.Brief = "Generates Visual Studio 10 Win64 project files.";
  entry.Full = "";
}

//----------------------------------------------------------------------------
void cmGlobalVisualStudio10Win64Generator::EnableLanguage(
  std::vector<std::string> const& lang, cmMakefile *mf, bool optional)
{
  mf->AddDefinition("CMAKE_FORCE_WIN64", "TRUE");
  cmGlobalVisualStudio10Generator::EnableLanguage(lang, mf, optional);
}

Index: cmVisualStudio10TargetGenerator.cxx
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmVisualStudio10TargetGenerator.cxx,v
retrieving revision 1.15.2.1
retrieving revision 1.15.2.2
diff -C 2 -d -r1.15.2.1 -r1.15.2.2
*** cmVisualStudio10TargetGenerator.cxx	1 Oct 2009 21:21:10 -0000	1.15.2.1
--- cmVisualStudio10TargetGenerator.cxx	28 Oct 2009 16:15:31 -0000	1.15.2.2
***************
*** 11,15 ****
  ============================================================================*/
  #include "cmVisualStudio10TargetGenerator.h"
! #include "cmGlobalVisualStudio7Generator.h"
  #include "cmTarget.h"
  #include "cmComputeLinkInformation.h"
--- 11,15 ----
  ============================================================================*/
  #include "cmVisualStudio10TargetGenerator.h"
! #include "cmGlobalVisualStudio10Generator.h"
  #include "cmTarget.h"
  #include "cmComputeLinkInformation.h"
***************
*** 23,26 ****
--- 23,28 ----
  #include "cmVS10LibFlagTable.h"
  
+ #include <cmsys/auto_ptr.hxx>
+ 
  static std::string cmVS10EscapeXML(std::string arg)
  {
***************
*** 33,37 ****
  cmVisualStudio10TargetGenerator::
  cmVisualStudio10TargetGenerator(cmTarget* target,
!                                 cmGlobalVisualStudio7Generator* gg)
  {
    this->GlobalGenerator = gg;
--- 35,39 ----
  cmVisualStudio10TargetGenerator::
  cmVisualStudio10TargetGenerator(cmTarget* target,
!                                 cmGlobalVisualStudio10Generator* gg)
  {
    this->GlobalGenerator = gg;
***************
*** 44,48 ****
    this->GlobalGenerator->CreateGUID(this->Name.c_str());
    this->GUID = this->GlobalGenerator->GetGUID(this->Name.c_str());
!   this->Platform = "|Win32";
    this->ComputeObjectNames();
    this->BuildFileStream = 0;
--- 46,50 ----
    this->GlobalGenerator->CreateGUID(this->Name.c_str());
    this->GUID = this->GlobalGenerator->GetGUID(this->Name.c_str());
!   this->Platform = gg->GetPlatformName();
    this->ComputeObjectNames();
    this->BuildFileStream = 0;
***************
*** 51,54 ****
--- 53,61 ----
  cmVisualStudio10TargetGenerator::~cmVisualStudio10TargetGenerator()
  {
+   for(OptionsMap::iterator i = this->ClOptions.begin();
+       i != this->ClOptions.end(); ++i)
+     {
+     delete i->second;
+     }
    if(!this->BuildFileStream)
      {
***************
*** 81,85 ****
    (*stream ) << "<" << tag 
               << " Condition=\"'$(Configuration)|$(Platform)'=='";
!   (*stream ) << config << this->Platform << "'\"";
    if(attribute)
      {
--- 88,92 ----
    (*stream ) << "<" << tag 
               << " Condition=\"'$(Configuration)|$(Platform)'=='";
!   (*stream ) << config << "|" << this->Platform << "'\"";
    if(attribute)
      {
***************
*** 104,107 ****
--- 111,115 ----
  }
  
+ #define VS10_USER_PROPS "$(UserRootDir)\\Microsoft.Cpp.$(Platform).user.props"
  
  void cmVisualStudio10TargetGenerator::Generate()
***************
*** 116,119 ****
--- 124,131 ----
    this->Target->SetProperty("GENERATOR_FILE_NAME_EXT",
                              ".vcxproj");
+   if(this->Target->GetType() <= cmTarget::MODULE_LIBRARY)
+     {
+     this->ComputeClOptions();
+     }
    cmMakefile* mf = this->Target->GetMakefile();
    std::string path =  mf->GetStartOutputDirectory();
***************
*** 142,145 ****
--- 154,159 ----
    this->WriteString("<SccLocalPath />\n", 2);
    this->WriteString("<Keyword>Win32Proj</Keyword>\n", 2);
+   this->WriteString("<Platform>", 2);
+   (*this->BuildFileStream) << this->Platform << "</Platform>\n";
    this->WriteString("</PropertyGroup>\n", 1);
    this->WriteString("<Import Project="
***************
*** 152,161 ****
    this->WriteString("</ImportGroup>\n", 1);
    this->WriteString("<ImportGroup Label=\"PropertySheets\">\n", 1);
!   this->WriteString("<Import Project="
!                     "\"$(LocalAppData)\\Microsoft\\VisualStudio\\10.0\\"
!                     "Microsoft.Cpp.$(Platform).user.props\" "
!                     "Condition=\"exists('$(LocalAppData)\\Microsoft"
!                     "\\VisualStudio\\10.0\\"
!                     "Microsoft.Cpp.$(Platform).user.props')\" />\n", 2);
    this->WriteString("</ImportGroup>\n", 1);
    this->WriteString("<PropertyGroup Label=\"UserMacros\" />\n", 1);
--- 166,172 ----
    this->WriteString("</ImportGroup>\n", 1);
    this->WriteString("<ImportGroup Label=\"PropertySheets\">\n", 1);
!   this->WriteString("<Import Project=\"" VS10_USER_PROPS "\""
!                     " Condition=\"exists('" VS10_USER_PROPS "')\""
!                     " Label=\"LocalAppDataPlatform\" />", 2);
    this->WriteString("</ImportGroup>\n", 1);
    this->WriteString("<PropertyGroup Label=\"UserMacros\" />\n", 1);
***************
*** 188,195 ****
      {
      this->WriteString("<ProjectConfiguration Include=\"", 2);
!     (*this->BuildFileStream ) <<  *i << this->Platform << "\">\n";
      this->WriteString("<Configuration>", 3);
      (*this->BuildFileStream ) <<  *i << "</Configuration>\n";
!     this->WriteString("<Platform>Win32</Platform>\n", 3);
      this->WriteString("</ProjectConfiguration>\n", 2);
      }
--- 199,207 ----
      {
      this->WriteString("<ProjectConfiguration Include=\"", 2);
!     (*this->BuildFileStream ) <<  *i << "|" << this->Platform << "\">\n";
      this->WriteString("<Configuration>", 3);
      (*this->BuildFileStream ) <<  *i << "</Configuration>\n";
!     this->WriteString("<Platform>", 3);
!     (*this->BuildFileStream) << this->Platform << "</Platform>\n";
      this->WriteString("</ProjectConfiguration>\n", 2);
      }
***************
*** 237,241 ****
        this->WriteString("<UseOfMfc>false</UseOfMfc>\n", 2);
        }
!     this->WriteString("<CharacterSet>MultiByte</CharacterSet>\n", 2);
      this->WriteString("</PropertyGroup>\n", 1);
      }
--- 249,261 ----
        this->WriteString("<UseOfMfc>false</UseOfMfc>\n", 2);
        }
!     if(this->Target->GetType() <= cmTarget::MODULE_LIBRARY &&
!        this->ClOptions[*i]->UsingUnicode())
!       {
!       this->WriteString("<CharacterSet>Unicode</CharacterSet>\n", 2);
!       }
!     else
!       {
!       this->WriteString("<CharacterSet>MultiByte</CharacterSet>\n", 2);
!       }
      this->WriteString("</PropertyGroup>\n", 1);
      }
***************
*** 376,379 ****
--- 396,400 ----
    std::vector<cmSourceFile*> customBuild;
    std::vector<cmSourceFile*> none;
+   std::vector<cmSourceFile*> headers;
    
    for(std::vector<cmSourceFile*>::const_iterator s = classes.begin(); 
***************
*** 385,389 ****
        this->Makefile->FindSourceGroup(source.c_str(), sourceGroups);
      groupsUsed.insert(&sourceGroup);
!     const char* lang = sf->GetLanguage();
      if(!lang)
        {
--- 406,413 ----
        this->Makefile->FindSourceGroup(source.c_str(), sourceGroups);
      groupsUsed.insert(&sourceGroup);
!     const char* lang = sf->GetLanguage(); 
!     bool header = (*s)->GetPropertyAsBool("HEADER_FILE_ONLY")
!       || this->GlobalGenerator->IgnoreFile
!       ((*s)->GetExtension().c_str());
      if(!lang)
        {
***************
*** 398,401 ****
--- 422,429 ----
        customBuild.push_back(sf);
        }
+     else if(header)
+       {
+       headers.push_back(sf);
+       }
      else
        {
***************
*** 420,423 ****
--- 448,452 ----
                      0);
    this->WriteGroupSources("ClCompile", clCompile, sourceGroups);
+   this->WriteGroupSources("ClInclude", headers, sourceGroups);
    this->WriteGroupSources("CustomBuild", customBuild, sourceGroups);
  
***************
*** 533,543 ****
      // if it is not a custom command then add it as a c/c++ file,
      // TODO: need to check for idl or rc
!     if(!(*source)->GetCustomCommand()
!        && !(*source)->GetPropertyAsBool("HEADER_FILE_ONLY")
!        && !this->GlobalGenerator->IgnoreFile
!        ((*source)->GetExtension().c_str()))
        {
        const char* lang = (*source)->GetLanguage();
!       if(lang && (strcmp(lang, "C") == 0 || strcmp(lang, "CXX") ==0))
          {
          std::string sourceFile = (*source)->GetFullPath();
--- 562,572 ----
      // if it is not a custom command then add it as a c/c++ file,
      // TODO: need to check for idl or rc
!     if(!(*source)->GetCustomCommand())
        {
+       bool header = (*source)->GetPropertyAsBool("HEADER_FILE_ONLY")
+         || this->GlobalGenerator->IgnoreFile
+         ((*source)->GetExtension().c_str());
        const char* lang = (*source)->GetLanguage();
!       bool cl = lang && (strcmp(lang, "C") == 0 || strcmp(lang, "CXX") ==0);
          {
          std::string sourceFile = (*source)->GetFullPath();
***************
*** 547,554 ****
          this->ConvertToWindowsSlash(sourceFile);
          // output the source file
!         this->WriteString("<ClCompile Include=\"", 2);
          (*this->BuildFileStream ) << sourceFile << "\"";
          // ouput any flags specific to this source file
!         if(this->OutputSourceSpecificFlags(*source))
            {
            // if the source file has specific flags the tag
--- 576,594 ----
          this->ConvertToWindowsSlash(sourceFile);
          // output the source file
!         if(header)
!           {
!           this->WriteString("<ClInclude Include=\"", 2);
!           }
!         else if(cl)
!           {
!           this->WriteString("<ClCompile Include=\"", 2);
!           }
!         else
!           {
!           this->WriteString("<None Include=\"", 2);
!           }
          (*this->BuildFileStream ) << sourceFile << "\"";
          // ouput any flags specific to this source file
!         if(cl && this->OutputSourceSpecificFlags(*source))
            {
            // if the source file has specific flags the tag
***************
*** 815,833 ****
  }
  
  
! void 
! cmVisualStudio10TargetGenerator::
! WriteClOptions(std::string const& configName,
!                std::vector<std::string> const & includes)
  {
-   
    // much of this was copied from here:
    // copied from cmLocalVisualStudio7Generator.cxx 805
  
-   this->WriteString("<ClCompile>\n", 2);
-   cmVisualStudioGeneratorOptions 
-     clOptions(this->LocalGenerator,
-               10, cmVisualStudioGeneratorOptions::Compiler,
-               cmVS10CLFlagTable);
    std::string flags;
    // collect up flags for 
--- 855,883 ----
  }
  
+ //----------------------------------------------------------------------------
+ void cmVisualStudio10TargetGenerator::ComputeClOptions()
+ {
+   std::vector<std::string> const* configs =
+     this->GlobalGenerator->GetConfigurations();
+   for(std::vector<std::string>::const_iterator i = configs->begin();
+       i != configs->end(); ++i)
+     {
+     this->ComputeClOptions(*i);
+     }
+ }
  
! //----------------------------------------------------------------------------
! void cmVisualStudio10TargetGenerator::ComputeClOptions(
!   std::string const& configName)
  {
    // much of this was copied from here:
    // copied from cmLocalVisualStudio7Generator.cxx 805
+   // TODO: Integrate code below with cmLocalVisualStudio7Generator.
+ 
+   cmsys::auto_ptr<Options> pOptions(
+     new Options(this->LocalGenerator, 10, Options::Compiler,
+                 cmVS10CLFlagTable));
+   Options& clOptions = *pOptions;
  
    std::string flags;
    // collect up flags for 
***************
*** 899,902 ****
--- 949,963 ----
      clOptions.AddDefine(exportMacro);
      }
+ 
+   this->ClOptions[configName] = pOptions.release();
+ }
+ 
+ //----------------------------------------------------------------------------
+ void cmVisualStudio10TargetGenerator::WriteClOptions(
+   std::string const& configName,
+   std::vector<std::string> const& includes)
+ {
+   Options& clOptions = *(this->ClOptions[configName]);
+   this->WriteString("<ClCompile>\n", 2);
    clOptions.OutputAdditionalOptions(*this->BuildFileStream, "      ", "");
    this->OutputIncludes(includes);
***************
*** 1081,1089 ****
      linkDirs += sep;
      linkDirs += *d;
      linkDirs += sep;
      // next path with configuration type Debug, Release, etc
      linkDirs += *d;
      linkDirs += "/$(Configuration)";
!     sep = ";";
      }
    linkDirs += "%(AdditionalLibraryDirectories)";
--- 1142,1151 ----
      linkDirs += sep;
      linkDirs += *d;
+     sep = ";";
      linkDirs += sep;
      // next path with configuration type Debug, Release, etc
      linkDirs += *d;
      linkDirs += "/$(Configuration)";
!     linkDirs += sep;
      }
    linkDirs += "%(AdditionalLibraryDirectories)";
***************
*** 1116,1126 ****
                                    config.c_str());
      }
!   std::string imLib = this->Target->GetDirectory(config.c_str(), true);
!   std::string dir = this->Target->GetDirectory(config.c_str(), true);
    dir += "/";
-   imLib += "/";
-   imLib += targetNameImport;
    std::string pdb = dir;
    pdb += targetNamePDB;
    linkOptions.AddFlag("ImportLibrary", imLib.c_str());
    linkOptions.AddFlag("ProgramDataBaseFileName", pdb.c_str());
--- 1178,1190 ----
                                    config.c_str());
      }
! 
!   std::string dir = this->Target->GetDirectory(config.c_str());
    dir += "/";
    std::string pdb = dir;
    pdb += targetNamePDB;
+   std::string imLib = this->Target->GetDirectory(config.c_str(), true);
+   imLib += "/";
+   imLib += targetNameImport;
+ 
    linkOptions.AddFlag("ImportLibrary", imLib.c_str());
    linkOptions.AddFlag("ProgramDataBaseFileName", pdb.c_str());
***************
*** 1135,1138 ****
--- 1199,1209 ----
    
    this->WriteString("</Link>\n", 2);
+   if(!this->GlobalGenerator->NeedLinkLibraryDependencies(*this->Target))
+     {
+     this->WriteString("<ProjectReference>\n", 2);
+     this->WriteString(
+       "  <LinkLibraryDependencies>false</LinkLibraryDependencies>\n", 2);
+     this->WriteString("</ProjectReference>\n", 2);
+     }
  }
  

Index: CMakeLists.txt
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/CMakeLists.txt,v
retrieving revision 1.428.2.1
retrieving revision 1.428.2.2
diff -C 2 -d -r1.428.2.1 -r1.428.2.2
*** CMakeLists.txt	1 Oct 2009 21:20:35 -0000	1.428.2.1
--- CMakeLists.txt	28 Oct 2009 16:15:06 -0000	1.428.2.2
***************
*** 304,307 ****
--- 304,309 ----
        cmGlobalVisualStudio10Generator.h
        cmGlobalVisualStudio10Generator.cxx
+       cmGlobalVisualStudio10Win64Generator.h
+       cmGlobalVisualStudio10Win64Generator.cxx
        cmGlobalVisualStudioGenerator.cxx
        cmGlobalVisualStudioGenerator.h

Index: cmExtraEclipseCDT4Generator.cxx
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmExtraEclipseCDT4Generator.cxx,v
retrieving revision 1.27.2.1
retrieving revision 1.27.2.2
diff -C 2 -d -r1.27.2.1 -r1.27.2.2
*** cmExtraEclipseCDT4Generator.cxx	1 Oct 2009 21:20:59 -0000	1.27.2.1
--- cmExtraEclipseCDT4Generator.cxx	28 Oct 2009 16:15:10 -0000	1.27.2.2
***************
*** 728,733 ****
             if (ti->first == "edit_cache")
               {
!              if (strstr(makefile->GetRequiredDefinition
!                                     ("CMAKE_EDIT_COMMAND"), "ccmake")!=NULL)
                 {
                 insertTarget = false;
--- 728,738 ----
             if (ti->first == "edit_cache")
               {
!              const char* editCommand = makefile->GetDefinition
!                                                         ("CMAKE_EDIT_COMMAND");
!              if (editCommand == 0)
!                {
!                insertTarget = false;
!                }
!              else if (strstr(editCommand, "ccmake")!=NULL)
                 {
                 insertTarget = false;

Index: cmGlobalVisualStudio10Generator.cxx
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmGlobalVisualStudio10Generator.cxx,v
retrieving revision 1.2.2.1
retrieving revision 1.2.2.2
diff -C 2 -d -r1.2.2.1 -r1.2.2.2
*** cmGlobalVisualStudio10Generator.cxx	1 Oct 2009 21:21:03 -0000	1.2.2.1
--- cmGlobalVisualStudio10Generator.cxx	28 Oct 2009 16:15:13 -0000	1.2.2.2
***************
*** 32,36 ****
  {
    fout << "Microsoft Visual Studio Solution File, Format Version 11.00\n";
!   fout << "# Visual Studio 10\n";
  }
  
--- 32,36 ----
  {
    fout << "Microsoft Visual Studio Solution File, Format Version 11.00\n";
!   fout << "# Visual Studio 2010\n";
  }
  
***************
*** 38,42 ****
  cmLocalGenerator *cmGlobalVisualStudio10Generator::CreateLocalGenerator()
  {
!   cmLocalGenerator*lg =  new cmLocalVisualStudio10Generator;
    lg->SetGlobalGenerator(this);
    return lg;
--- 38,43 ----
  cmLocalGenerator *cmGlobalVisualStudio10Generator::CreateLocalGenerator()
  {
!   cmLocalVisualStudio10Generator* lg =  new cmLocalVisualStudio10Generator;
!   lg->SetPlatformName(this->PlatformName.c_str());
    lg->SetGlobalGenerator(this);
    return lg;

Index: cmGlobalVisualStudio8Generator.h
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmGlobalVisualStudio8Generator.h,v
retrieving revision 1.16.2.1
retrieving revision 1.16.2.2
diff -C 2 -d -r1.16.2.1 -r1.16.2.2
*** cmGlobalVisualStudio8Generator.h	1 Oct 2009 21:21:03 -0000	1.16.2.1
--- cmGlobalVisualStudio8Generator.h	28 Oct 2009 16:15:15 -0000	1.16.2.2
***************
*** 39,42 ****
--- 39,44 ----
    virtual cmLocalGenerator *CreateLocalGenerator();
  
+   std::string const& GetPlatformName() const { return this->PlatformName; }
+ 
    /**
     * Override Configure and Generate to add the build-system check
***************
*** 59,62 ****
--- 61,68 ----
    virtual std::string GetUserMacrosRegKeyBase();
  
+   /** Return true if the target project file should have the option
+       LinkLibraryDependencies and link to .sln dependencies. */
+   virtual bool NeedLinkLibraryDependencies(cmTarget& target);
+ 
  protected:
    virtual const char* GetIDEVersion() { return "8.0"; }
***************
*** 64,67 ****
--- 70,75 ----
    virtual bool VSLinksDependencies() const { return false; }
  
+   void AddCheckTarget();
+ 
    static cmIDEFlagTable const* GetExtraFlagTableVS8();
    virtual void AddPlatformDefinitions(cmMakefile* mf);

Index: cmGlobalVisualStudio8Generator.cxx
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmGlobalVisualStudio8Generator.cxx,v
retrieving revision 1.39.2.1
retrieving revision 1.39.2.2
diff -C 2 -d -r1.39.2.1 -r1.39.2.2
*** cmGlobalVisualStudio8Generator.cxx	1 Oct 2009 21:21:03 -0000	1.39.2.1
--- cmGlobalVisualStudio8Generator.cxx	28 Oct 2009 16:15:13 -0000	1.39.2.2
***************
*** 111,115 ****
  
  //----------------------------------------------------------------------------
! void cmGlobalVisualStudio8Generator::Generate()
  {
    // Add a special target on which all other targets depend that
--- 111,115 ----
  
  //----------------------------------------------------------------------------
! void cmGlobalVisualStudio8Generator::AddCheckTarget()
  {
    // Add a special target on which all other targets depend that
***************
*** 117,240 ****
    const char* no_working_directory = 0;
    std::vector<std::string> no_depends;
!   std::map<cmStdString, std::vector<cmLocalGenerator*> >::iterator it;
!   for(it = this->ProjectMap.begin(); it!= this->ProjectMap.end(); ++it)
!     {
!     std::vector<cmLocalGenerator*>& generators = it->second;
!     if(!generators.empty())
!       {
!       // Add the build-system check target to the first local
!       // generator of this project.
!       cmLocalVisualStudio7Generator* lg =
!         static_cast<cmLocalVisualStudio7Generator*>(generators[0]);
!       cmMakefile* mf = lg->GetMakefile();
  
!       // Skip the target if no regeneration is to be done.
!       if(mf->IsOn("CMAKE_SUPPRESS_REGENERATION"))
!         {
!         continue;
!         }
  
!       std::string cmake_command = mf->GetRequiredDefinition("CMAKE_COMMAND");
!       cmCustomCommandLines noCommandLines;
!       mf->AddUtilityCommand(CMAKE_CHECK_BUILD_SYSTEM_TARGET, false,
!                             no_working_directory, no_depends,
!                             noCommandLines);
!       cmTarget* tgt = mf->FindTarget(CMAKE_CHECK_BUILD_SYSTEM_TARGET);
!       if(!tgt)
!         {
!         cmSystemTools::Error("Error adding target " 
!                              CMAKE_CHECK_BUILD_SYSTEM_TARGET);
!         continue;
!         }
  
!       // Create a list of all stamp files for this project.
!       std::vector<std::string> stamps;
!       std::string stampList = cmake::GetCMakeFilesDirectoryPostSlash();
!       stampList += "generate.stamp.list";
!       {
!       std::string stampListFile =
!         generators[0]->GetMakefile()->GetCurrentOutputDirectory();
!       stampListFile += "/";
!       stampListFile += stampList;
!       std::string stampFile;
!       cmGeneratedFileStream fout(stampListFile.c_str());
!       for(std::vector<cmLocalGenerator*>::const_iterator
!             gi = generators.begin(); gi != generators.end(); ++gi)
!         {
!         stampFile = (*gi)->GetMakefile()->GetCurrentOutputDirectory();
!         stampFile += "/";
!         stampFile += cmake::GetCMakeFilesDirectoryPostSlash();
!         stampFile += "generate.stamp";
!         stampFile = generators[0]->Convert(stampFile.c_str(),
!                                            cmLocalGenerator::START_OUTPUT);
!         fout << stampFile << "\n";
!         stamps.push_back(stampFile);
!         }
!       }
  
!       // Add a custom rule to re-run CMake if any input files changed.
!       {
!       // Collect the input files used to generate all targets in this
!       // project.
!       std::vector<std::string> listFiles;
!       for(unsigned int j = 0; j < generators.size(); ++j)
!         {
!         cmMakefile* lmf = generators[j]->GetMakefile();
!         listFiles.insert(listFiles.end(), lmf->GetListFiles().begin(),
!                          lmf->GetListFiles().end());
!         }
!       // Sort the list of input files and remove duplicates.
!       std::sort(listFiles.begin(), listFiles.end(),
!                 std::less<std::string>());
!       std::vector<std::string>::iterator new_end =
!         std::unique(listFiles.begin(), listFiles.end());
!       listFiles.erase(new_end, listFiles.end());
  
!       // Create a rule to re-run CMake.
!       std::string stampName = cmake::GetCMakeFilesDirectoryPostSlash();
!       stampName += "generate.stamp";
!       const char* dsprule = mf->GetRequiredDefinition("CMAKE_COMMAND");
!       cmCustomCommandLine commandLine;
!       commandLine.push_back(dsprule);
!       std::string argH = "-H";
!       argH += lg->Convert(mf->GetHomeDirectory(),
!                           cmLocalGenerator::START_OUTPUT,
!                           cmLocalGenerator::UNCHANGED, true);
!       commandLine.push_back(argH);
!       std::string argB = "-B";
!       argB += lg->Convert(mf->GetHomeOutputDirectory(),
!                           cmLocalGenerator::START_OUTPUT,
!                           cmLocalGenerator::UNCHANGED, true);
!       commandLine.push_back(argB);
!       commandLine.push_back("--check-stamp-list");
!       commandLine.push_back(stampList.c_str());
!       commandLine.push_back("--vs-solution-file");
!       commandLine.push_back("\"$(SolutionPath)\"");
!       cmCustomCommandLines commandLines;
!       commandLines.push_back(commandLine);
  
!       // Add the rule.  Note that we cannot use the CMakeLists.txt
!       // file as the main dependency because it would get
!       // overwritten by the CreateVCProjBuildRule.
!       // (this could be avoided with per-target source files)
!       const char* no_main_dependency = 0;
!       const char* no_working_directory = 0;
!       mf->AddCustomCommandToOutput(
!         stamps, listFiles,
!         no_main_dependency, commandLines, "Checking Build System",
!         no_working_directory, true);
!       std::string ruleName = stamps[0];
!       ruleName += ".rule";
!       if(cmSourceFile* file = mf->GetSource(ruleName.c_str()))
!         {
!         tgt->AddSourceFile(file);
!         }
!       else
!         {
!         cmSystemTools::Error("Error adding rule for ", stamps[0].c_str());
!         }
!       }
!       }
      }
  
    // All targets depend on the build-system check target.
--- 117,231 ----
    const char* no_working_directory = 0;
    std::vector<std::string> no_depends;
!   std::vector<cmLocalGenerator*> const& generators = this->LocalGenerators;
!   cmLocalVisualStudio7Generator* lg =
!     static_cast<cmLocalVisualStudio7Generator*>(generators[0]);
!   cmMakefile* mf = lg->GetMakefile();
  
!   // Skip the target if no regeneration is to be done.
!   if(mf->IsOn("CMAKE_SUPPRESS_REGENERATION"))
!     {
!     return;
!     }
  
!   std::string cmake_command = mf->GetRequiredDefinition("CMAKE_COMMAND");
!   cmCustomCommandLines noCommandLines;
!   cmTarget* tgt =
!     mf->AddUtilityCommand(CMAKE_CHECK_BUILD_SYSTEM_TARGET, false,
!                           no_working_directory, no_depends,
!                           noCommandLines);
  
!   // Create a list of all stamp files for this project.
!   std::vector<std::string> stamps;
!   std::string stampList = cmake::GetCMakeFilesDirectoryPostSlash();
!   stampList += "generate.stamp.list";
!   {
!   std::string stampListFile =
!     generators[0]->GetMakefile()->GetCurrentOutputDirectory();
!   stampListFile += "/";
!   stampListFile += stampList;
!   std::string stampFile;
!   cmGeneratedFileStream fout(stampListFile.c_str());
!   for(std::vector<cmLocalGenerator*>::const_iterator
!         gi = generators.begin(); gi != generators.end(); ++gi)
!     {
!     stampFile = (*gi)->GetMakefile()->GetCurrentOutputDirectory();
!     stampFile += "/";
!     stampFile += cmake::GetCMakeFilesDirectoryPostSlash();
!     stampFile += "generate.stamp";
!     stampFile = generators[0]->Convert(stampFile.c_str(),
!                                        cmLocalGenerator::START_OUTPUT);
!     fout << stampFile << "\n";
!     stamps.push_back(stampFile);
!     }
!   }
  
!   // Add a custom rule to re-run CMake if any input files changed.
!   {
!   // Collect the input files used to generate all targets in this
!   // project.
!   std::vector<std::string> listFiles;
!   for(unsigned int j = 0; j < generators.size(); ++j)
!     {
!     cmMakefile* lmf = generators[j]->GetMakefile();
!     listFiles.insert(listFiles.end(), lmf->GetListFiles().begin(),
!                      lmf->GetListFiles().end());
!     }
!   // Sort the list of input files and remove duplicates.
!   std::sort(listFiles.begin(), listFiles.end(),
!             std::less<std::string>());
!   std::vector<std::string>::iterator new_end =
!     std::unique(listFiles.begin(), listFiles.end());
!   listFiles.erase(new_end, listFiles.end());
  
!   // Create a rule to re-run CMake.
!   std::string stampName = cmake::GetCMakeFilesDirectoryPostSlash();
!   stampName += "generate.stamp";
!   const char* dsprule = mf->GetRequiredDefinition("CMAKE_COMMAND");
!   cmCustomCommandLine commandLine;
!   commandLine.push_back(dsprule);
!   std::string argH = "-H";
!   argH += lg->Convert(mf->GetHomeDirectory(),
!                       cmLocalGenerator::START_OUTPUT,
!                       cmLocalGenerator::UNCHANGED, true);
!   commandLine.push_back(argH);
!   std::string argB = "-B";
!   argB += lg->Convert(mf->GetHomeOutputDirectory(),
!                       cmLocalGenerator::START_OUTPUT,
!                       cmLocalGenerator::UNCHANGED, true);
!   commandLine.push_back(argB);
!   commandLine.push_back("--check-stamp-list");
!   commandLine.push_back(stampList.c_str());
!   commandLine.push_back("--vs-solution-file");
!   commandLine.push_back("\"$(SolutionPath)\"");
!   cmCustomCommandLines commandLines;
!   commandLines.push_back(commandLine);
  
!   // Add the rule.  Note that we cannot use the CMakeLists.txt
!   // file as the main dependency because it would get
!   // overwritten by the CreateVCProjBuildRule.
!   // (this could be avoided with per-target source files)
!   const char* no_main_dependency = 0;
!   const char* no_working_directory = 0;
!   mf->AddCustomCommandToOutput(
!     stamps, listFiles,
!     no_main_dependency, commandLines, "Checking Build System",
!     no_working_directory, true);
!   std::string ruleName = stamps[0];
!   ruleName += ".rule";
!   if(cmSourceFile* file = mf->GetSource(ruleName.c_str()))
!     {
!     tgt->AddSourceFile(file);
!     }
!   else
!     {
!     cmSystemTools::Error("Error adding rule for ", stamps[0].c_str());
      }
+   }
+ }
+ 
+ //----------------------------------------------------------------------------
+ void cmGlobalVisualStudio8Generator::Generate()
+ {
+   this->AddCheckTarget();
  
    // All targets depend on the build-system check target.
***************
*** 291,294 ****
--- 282,308 ----
  
  //----------------------------------------------------------------------------
+ bool cmGlobalVisualStudio8Generator::NeedLinkLibraryDependencies(
+   cmTarget& target)
+ {
+   // Look for utility dependencies that magically link.
+   for(std::set<cmStdString>::const_iterator ui =
+         target.GetUtilities().begin();
+       ui != target.GetUtilities().end(); ++ui)
+     {
+     if(cmTarget* depTarget = this->FindTarget(0, ui->c_str()))
+       {
+       if(depTarget->GetProperty("EXTERNAL_MSPROJECT"))
+         {
+         // This utility dependency names an external .vcproj target.
+         // We use LinkLibraryDependencies="true" to link to it without
+         // predicting the .lib file location or name.
+         return true;
+         }
+       }
+     }
+   return false;
+ }
+ 
+ //----------------------------------------------------------------------------
  static cmVS7FlagTable cmVS8ExtraFlagTable[] =
  { 

Index: cmGlobalXCodeGenerator.cxx
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmGlobalXCodeGenerator.cxx,v
retrieving revision 1.232.2.2
retrieving revision 1.232.2.3
diff -C 2 -d -r1.232.2.2 -r1.232.2.3
*** cmGlobalXCodeGenerator.cxx	9 Oct 2009 20:11:13 -0000	1.232.2.2
--- cmGlobalXCodeGenerator.cxx	28 Oct 2009 16:15:15 -0000	1.232.2.3
***************
*** 656,659 ****
--- 656,663 ----
      sourcecode += ".c.c";
      }
+   else if(lang && strcmp(lang, "Fortran") == 0)
+     {
+     sourcecode += ".fortran.f90";
+     }
    else if(ext == "png" || ext == "gif" || ext == "jpg")
      {
***************
*** 1834,1844 ****
      // VERSION -> current_version
      target.GetTargetVersion(false, major, minor, patch);
!     if(major == 0 && minor == 0 && patch == 0)
        {
!       // Xcode always wants at least 1.0.0
!       major = 1;
        }
-     cmOStringStream v;
-     v << major << "." << minor << "." << patch;
      buildSettings->AddAttribute("DYLIB_CURRENT_VERSION",
                                  this->CreateString(v.str().c_str()));
--- 1838,1848 ----
      // VERSION -> current_version
      target.GetTargetVersion(false, major, minor, patch);
!     cmOStringStream v;
! 
!     // Xcode always wants at least 1.0.0 or nothing
!     if(!(major == 0 && minor == 0 && patch == 0))
        {
!       v << major << "." << minor << "." << patch;
        }
      buildSettings->AddAttribute("DYLIB_CURRENT_VERSION",
                                  this->CreateString(v.str().c_str()));
***************
*** 1846,1856 ****
      // SOVERSION -> compatibility_version
      target.GetTargetVersion(true, major, minor, patch);
!     if(major == 0 && minor == 0 && patch == 0)
        {
!       // Xcode always wants at least 1.0.0
!       major = 1;
        }
-     cmOStringStream vso;
-     vso << major << "." << minor << "." << patch;
      buildSettings->AddAttribute("DYLIB_COMPATIBILITY_VERSION",
                                  this->CreateString(vso.str().c_str()));
--- 1850,1860 ----
      // SOVERSION -> compatibility_version
      target.GetTargetVersion(true, major, minor, patch);
!     cmOStringStream vso;
! 
!     // Xcode always wants at least 1.0.0 or nothing
!     if(!(major == 0 && minor == 0 && patch == 0))
        {
!       vso << major << "." << minor << "." << patch;
        }
      buildSettings->AddAttribute("DYLIB_COMPATIBILITY_VERSION",
                                  this->CreateString(vso.str().c_str()));

Index: cmake.cxx
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmake.cxx,v
retrieving revision 1.429.2.2
retrieving revision 1.429.2.3
diff -C 2 -d -r1.429.2.2 -r1.429.2.3
*** cmake.cxx	9 Oct 2009 20:11:21 -0000	1.429.2.2
--- cmake.cxx	28 Oct 2009 16:15:33 -0000	1.429.2.3
***************
*** 64,67 ****
--- 64,68 ----
  #    include "cmGlobalVisualStudio9Win64Generator.h"
  #    include "cmGlobalVisualStudio10Generator.h"
+ #    include "cmGlobalVisualStudio10Win64Generator.h"
  #    include "cmGlobalVisualStudio8Win64Generator.h"
  #    include "cmGlobalBorlandMakefileGenerator.h"
***************
*** 2414,2417 ****
--- 2415,2420 ----
    this->Generators[cmGlobalVisualStudio10Generator::GetActualName()] =
      &cmGlobalVisualStudio10Generator::New;
+   this->Generators[cmGlobalVisualStudio10Win64Generator::GetActualName()] =
+     &cmGlobalVisualStudio10Win64Generator::New;
    this->Generators[cmGlobalVisualStudio71Generator::GetActualName()] =
      &cmGlobalVisualStudio71Generator::New;

Index: cmVS10LinkFlagTable.h
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmVS10LinkFlagTable.h,v
retrieving revision 1.2.2.1
retrieving revision 1.2.2.2
diff -C 2 -d -r1.2.2.1 -r1.2.2.2
*** cmVS10LinkFlagTable.h	1 Oct 2009 21:21:09 -0000	1.2.2.1
--- cmVS10LinkFlagTable.h	28 Oct 2009 16:15:30 -0000	1.2.2.2
***************
*** 192,202 ****
  
    //Bool Properties With Argument
!   {"EnableUAC", "MANIFESTUAC:NO", "", "false", cmVS7FlagTable::Continue},
    {"EnableUAC", "MANIFESTUAC:NO", "Enable User Account Control (UAC)", "",
     cmVS7FlagTable::UserValueRequired},
!   {"EnableUAC", "MANIFESTUAC:", "", "true", cmVS7FlagTable::Continue},
    {"UACUIAccess", "MANIFESTUAC:", "Enable User Account Control (UAC)", "",
     cmVS7FlagTable::UserValueRequired},
!   {"GenerateMapFile", "MAP", "", "true", cmVS7FlagTable::Continue},
    {"MapFileName", "MAP", "Generate Map File", "",
     cmVS7FlagTable::UserValueRequired},
--- 192,205 ----
  
    //Bool Properties With Argument
!   {"EnableUAC", "MANIFESTUAC:NO", "", "false",
!    cmVS7FlagTable::UserValueIgnored | cmVS7FlagTable::Continue},
    {"EnableUAC", "MANIFESTUAC:NO", "Enable User Account Control (UAC)", "",
     cmVS7FlagTable::UserValueRequired},
!   {"EnableUAC", "MANIFESTUAC:", "", "true",
!    cmVS7FlagTable::UserValueIgnored | cmVS7FlagTable::Continue},
    {"UACUIAccess", "MANIFESTUAC:", "Enable User Account Control (UAC)", "",
     cmVS7FlagTable::UserValueRequired},
!   {"GenerateMapFile", "MAP", "", "true",
!    cmVS7FlagTable::UserValueIgnored | cmVS7FlagTable::Continue},
    {"MapFileName", "MAP", "Generate Map File", "",
     cmVS7FlagTable::UserValueRequired},

Index: cmGlobalVisualStudio7Generator.h
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmGlobalVisualStudio7Generator.h,v
retrieving revision 1.51.2.2
retrieving revision 1.51.2.3
diff -C 2 -d -r1.51.2.2 -r1.51.2.3
*** cmGlobalVisualStudio7Generator.h	9 Oct 2009 20:11:13 -0000	1.51.2.2
--- cmGlobalVisualStudio7Generator.h	28 Oct 2009 16:15:13 -0000	1.51.2.3
***************
*** 93,96 ****
--- 93,100 ----
    virtual const char* GetCMakeCFGInitDirectory()  { return "$(OutDir)"; }
  
+   /** Return true if the target project file should have the option
+       LinkLibraryDependencies and link to .sln dependencies. */
+   virtual bool NeedLinkLibraryDependencies(cmTarget&) { return false; }
+ 
  protected:
    virtual const char* GetIDEVersion() { return "7.0"; }
***************
*** 134,138 ****
    std::string ConvertToSolutionPath(const char* path);
  
-   virtual bool IsRootOnlyTarget(cmTarget* target);
    bool IsPartOfDefaultBuild(const char* project,
                              cmTarget* target);
--- 138,141 ----

Index: cmExtraCodeBlocksGenerator.cxx
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmExtraCodeBlocksGenerator.cxx,v
retrieving revision 1.28.2.1
retrieving revision 1.28.2.2
diff -C 2 -d -r1.28.2.1 -r1.28.2.2
*** cmExtraCodeBlocksGenerator.cxx	1 Oct 2009 21:20:59 -0000	1.28.2.1
--- cmExtraCodeBlocksGenerator.cxx	28 Oct 2009 16:15:06 -0000	1.28.2.2
***************
*** 195,199 ****
    virtualFolders += "CMake Files\\" + prefix +  path + "\\;";
    for (std::vector<Tree>::const_iterator it = folders.begin();
!      it != folders.end();
       ++it)
      {
--- 195,199 ----
    virtualFolders += "CMake Files\\" + prefix +  path + "\\;";
    for (std::vector<Tree>::const_iterator it = folders.begin();
!        it != folders.end();
       ++it)
      {
***************
*** 264,298 ****
           ++it)
      {
!       // Convert
!       std::vector<std::string> listFiles =
!               it->second[0]->GetMakefile()->GetListFiles();
  
!       for (std::vector<std::string>::const_iterator jt = listFiles.begin();
!            jt != listFiles.end();
!            ++jt)
!          {
!          const std::string &relative =
!                  cmSystemTools::RelativePath(
                           it->second[0]->GetMakefile()->GetHomeDirectory(),
                           jt->c_str());
!          std::vector<std::string> splitted;
!          cmSystemTools::SplitPath(relative.c_str(), splitted, false);
!          // Split filename from path
!          std::string fileName = *(splitted.end()-1);
!          splitted.erase(splitted.end() - 1, splitted.end());
  
!          // We don't want paths with ".." in them
!          // reasons are that we don't want files outside the project
!          // TODO: the path should be normalized first though
!          // We don't want paths with CMakeFiles in them
!          // or do we?
!          // In speedcrunch those where purely internal
!          if (splitted.size() >= 1
!              && relative.find("..") == std::string::npos
!              && relative.find("CMakeFiles") == std::string::npos)
!            {
!            tree.InsertPath(splitted, 1, fileName);
!            }
!          }
      }
  
--- 264,306 ----
           ++it)
      {
!     // Collect all files
!     std::vector<std::string> listFiles;
!     for (std::vector<cmLocalGenerator *>::const_iterator
!          jt = it->second.begin();
!          jt != it->second.end();
!          ++jt)
!       {
!       const std::vector<std::string> & files =
!                                           (*jt)->GetMakefile()->GetListFiles();
!       listFiles.insert(listFiles.end(), files.begin(), files.end());
!       }
  
!     // Convert
!     for (std::vector<std::string>::const_iterator jt = listFiles.begin();
!          jt != listFiles.end();
!          ++jt)
!       {
!       const std::string &relative = cmSystemTools::RelativePath(
                           it->second[0]->GetMakefile()->GetHomeDirectory(),
                           jt->c_str());
!       std::vector<std::string> splitted;
!       cmSystemTools::SplitPath(relative.c_str(), splitted, false);
!       // Split filename from path
!       std::string fileName = *(splitted.end()-1);
!       splitted.erase(splitted.end() - 1, splitted.end());
  
!       // We don't want paths with ".." in them
!       // reasons are that we don't want files outside the project
!       // TODO: the path should be normalized first though
!       // We don't want paths with CMakeFiles in them
!       // or do we?
!       // In speedcrunch those where purely internal
!       if (splitted.size() >= 1
!           && relative.find("..") == std::string::npos
!           && relative.find("CMakeFiles") == std::string::npos)
!         {
!         tree.InsertPath(splitted, 1, fileName);
!         }
!       }
      }
  
***************
*** 330,395 ****
           ti != targets.end(); ti++)
        {
!         switch(ti->second.GetType())
          {
!           case cmTarget::GLOBAL_TARGET:
              {
!             bool insertTarget = false;
!             // Only add the global targets from CMAKE_BINARY_DIR, 
!             // not from the subdirs
!             if (strcmp(makefile->GetStartOutputDirectory(), 
!                        makefile->GetHomeOutputDirectory())==0)
                {
!               insertTarget = true;
!               // only add the "edit_cache" target if it's not ccmake, because
!               // this will not work within the IDE
!               if (ti->first == "edit_cache")
                  {
!                 if (strstr(makefile->GetRequiredDefinition
!                                        ("CMAKE_EDIT_COMMAND"), "ccmake")!=NULL)
!                   {
!                   insertTarget = false;
!                   }
                  }
                }
!             if (insertTarget)
!               {
!               this->AppendTarget(fout, ti->first.c_str(), 0, 
                                 make.c_str(), makefile, compiler.c_str());
-               }
              }
!             break;
!           case cmTarget::UTILITY:
!             // Add all utility targets, except the Nightly/Continuous/
!             // Experimental-"sub"targets as e.g. NightlyStart
!             if (((ti->first.find("Nightly")==0)   &&(ti->first!="Nightly"))
               || ((ti->first.find("Continuous")==0)&&(ti->first!="Continuous"))
               || ((ti->first.find("Experimental")==0) 
                                                 && (ti->first!="Experimental")))
-               {
-               break;
-               }
- 
-             this->AppendTarget(fout, ti->first.c_str(), 0, 
-                                  make.c_str(), makefile, compiler.c_str());
-             break;
-           case cmTarget::EXECUTABLE:
-           case cmTarget::STATIC_LIBRARY:
-           case cmTarget::SHARED_LIBRARY:
-           case cmTarget::MODULE_LIBRARY:
              {
-             this->AppendTarget(fout, ti->first.c_str(), &ti->second, 
-                                make.c_str(), makefile, compiler.c_str());
-             std::string fastTarget = ti->first;
-             fastTarget += "/fast";
-             this->AppendTarget(fout, fastTarget.c_str(), &ti->second, 
-                                make.c_str(), makefile, compiler.c_str());
-             }
-             break;
-           // ignore these:
-           case cmTarget::INSTALL_FILES:
-           case cmTarget::INSTALL_PROGRAMS:
-           case cmTarget::INSTALL_DIRECTORY:
-           default:
              break;
          }
        }
--- 338,408 ----
           ti != targets.end(); ti++)
        {
!       switch(ti->second.GetType())
          {
!         case cmTarget::GLOBAL_TARGET:
!           {
!           bool insertTarget = false;
!           // Only add the global targets from CMAKE_BINARY_DIR, 
!           // not from the subdirs
!           if (strcmp(makefile->GetStartOutputDirectory(), 
!                      makefile->GetHomeOutputDirectory())==0)
              {
!             insertTarget = true;
!             // only add the "edit_cache" target if it's not ccmake, because
!             // this will not work within the IDE
!             if (ti->first == "edit_cache")
                {
!               const char* editCommand = makefile->GetDefinition
!                                                         ("CMAKE_EDIT_COMMAND");
!               if (editCommand == 0)
                  {
!                 insertTarget = false;
!                 }
!               else if (strstr(editCommand, "ccmake")!=NULL)
!                 {
!                 insertTarget = false;
                  }
                }
!             }
!           if (insertTarget)
!             {
!             this->AppendTarget(fout, ti->first.c_str(), 0, 
                                 make.c_str(), makefile, compiler.c_str());
              }
!           }
!           break;
!         case cmTarget::UTILITY:
!           // Add all utility targets, except the Nightly/Continuous/
!           // Experimental-"sub"targets as e.g. NightlyStart
!           if (((ti->first.find("Nightly")==0)   &&(ti->first!="Nightly"))
               || ((ti->first.find("Continuous")==0)&&(ti->first!="Continuous"))
               || ((ti->first.find("Experimental")==0) 
                                                 && (ti->first!="Experimental")))
              {
              break;
+             }
+ 
+           this->AppendTarget(fout, ti->first.c_str(), 0, 
+                                  make.c_str(), makefile, compiler.c_str());
+           break;
+         case cmTarget::EXECUTABLE:
+         case cmTarget::STATIC_LIBRARY:
+         case cmTarget::SHARED_LIBRARY:
+         case cmTarget::MODULE_LIBRARY:
+           {
+           this->AppendTarget(fout, ti->first.c_str(), &ti->second, 
+                              make.c_str(), makefile, compiler.c_str());
+           std::string fastTarget = ti->first;
+           fastTarget += "/fast";
+           this->AppendTarget(fout, fastTarget.c_str(), &ti->second, 
+                              make.c_str(), makefile, compiler.c_str());
+           }
+           break;
+         // ignore these:
+         case cmTarget::INSTALL_FILES:
+         case cmTarget::INSTALL_PROGRAMS:
+         case cmTarget::INSTALL_DIRECTORY:
+         default:
+           break;
          }
        }
***************
*** 669,673 ****
      }
    else if ((target->GetType()==cmTarget::SHARED_LIBRARY) 
!      || (target->GetType()==cmTarget::MODULE_LIBRARY))
      {
      return 3;
--- 682,686 ----
      }
    else if ((target->GetType()==cmTarget::SHARED_LIBRARY) 
!            || (target->GetType()==cmTarget::MODULE_LIBRARY))
      {
      return 3;

Index: cmLocalVisualStudio10Generator.cxx
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmLocalVisualStudio10Generator.cxx,v
retrieving revision 1.5.2.1
retrieving revision 1.5.2.2
diff -C 2 -d -r1.5.2.1 -r1.5.2.2
*** cmLocalVisualStudio10Generator.cxx	1 Oct 2009 21:21:06 -0000	1.5.2.1
--- cmLocalVisualStudio10Generator.cxx	28 Oct 2009 16:15:19 -0000	1.5.2.2
***************
*** 14,18 ****
  #include "cmMakefile.h"
  #include "cmVisualStudio10TargetGenerator.h"
! #include "cmGlobalVisualStudio7Generator.h"
  #include <cm_expat.h>
  #include "cmXMLParser.h"
--- 14,18 ----
  #include "cmMakefile.h"
  #include "cmVisualStudio10TargetGenerator.h"
! #include "cmGlobalVisualStudio10Generator.h"
  #include <cm_expat.h>
  #include "cmXMLParser.h"
***************
*** 94,100 ****
    for(cmTargets::iterator l = tgts.begin(); l != tgts.end(); ++l)
      {
!     cmVisualStudio10TargetGenerator tg(&l->second, 
!                                        (cmGlobalVisualStudio7Generator*)
!                                        this->GetGlobalGenerator());
      tg.Generate();
      }
--- 94,100 ----
    for(cmTargets::iterator l = tgts.begin(); l != tgts.end(); ++l)
      {
!     cmVisualStudio10TargetGenerator tg(
!       &l->second, static_cast<cmGlobalVisualStudio10Generator*>(
!         this->GetGlobalGenerator()));
      tg.Generate();
      }

Index: cmFileCommand.cxx
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmFileCommand.cxx,v
retrieving revision 1.136.2.2
retrieving revision 1.136.2.3
diff -C 2 -d -r1.136.2.2 -r1.136.2.3
*** cmFileCommand.cxx	9 Oct 2009 20:11:12 -0000	1.136.2.2
--- cmFileCommand.cxx	28 Oct 2009 16:15:12 -0000	1.136.2.3
***************
*** 2291,2295 ****
    if(args.size() != 4 )
      {
!     this->SetError("called with incorrect number of arguments");
      return false;
      }
--- 2291,2295 ----
    if(args.size() != 4 )
      {
!     this->SetError("RELATIVE_PATH called with incorrect number of arguments");
      return false;
      }
***************
*** 2302,2306 ****
      {
      std::string errstring =
!       "RelativePath must be passed a full path to the directory: "
        + directoryName;
      this->SetError(errstring.c_str());
--- 2302,2306 ----
      {
      std::string errstring =
!       "RELATIVE_PATH must be passed a full path to the directory: "
        + directoryName;
      this->SetError(errstring.c_str());
***************
*** 2310,2314 ****
      {
      std::string errstring =
!       "RelativePath must be passed a full path to the file: "
        + fileName;
      this->SetError(errstring.c_str());
--- 2310,2314 ----
      {
      std::string errstring =
!       "RELATIVE_PATH must be passed a full path to the file: "
        + fileName;
      this->SetError(errstring.c_str());
***************
*** 2329,2333 ****
    if(args.size() != 3)
      {
!     this->SetError("given incorrect number of arguments.");
      return false;
      }
--- 2329,2333 ----
    if(args.size() != 3)
      {
!     this->SetError("RENAME given incorrect number of arguments.");
      return false;
      }
***************
*** 2401,2406 ****
    if(args.size() != 3)
      {
!     this->SetError("FILE(SYSTEM_PATH ENV result) must be called with "
!                    "only three arguments.");
      return false;
      }
--- 2401,2406 ----
    if(args.size() != 3)
      {
!     this->SetError("FILE([TO_CMAKE_PATH|TO_NATIVE_PATH] path result) must be "
!       "called with exactly three arguments.");
      return false;
      }
***************
*** 2466,2480 ****
        = static_cast<cmFileCommandVectorOfChar*>(data);
      vec->insert(vec->end(), chPtr, chPtr + size);
!     
      return size;
    }
!   
!   
  }
  
  #endif
  
! bool 
! cmFileCommand::HandleDownloadCommand(std::vector<std::string> 
                                       const& args)
  {
--- 2466,2511 ----
        = static_cast<cmFileCommandVectorOfChar*>(data);
      vec->insert(vec->end(), chPtr, chPtr + size);
! 
      return size;
    }
! 
! 
  }
  
  #endif
  
! #if defined(CMAKE_BUILD_WITH_CMAKE)
! namespace {
! 
!   class cURLEasyGuard
!   {
!   public:
!     cURLEasyGuard(CURL * easy)
!       : Easy(easy)
!       {}
!     
!     ~cURLEasyGuard(void) 
!       {
!         if (this->Easy)
!           {
!           ::curl_easy_cleanup(this->Easy);
!           }
!       }
!     
!     inline void release(void) 
!       {
!         this->Easy = 0;
!         return;
!       }
!     
!   private:
!     ::CURL * Easy;
!   };
!   
! }
! #endif
! 
! bool
! cmFileCommand::HandleDownloadCommand(std::vector<std::string>
                                       const& args)
  {
***************
*** 2487,2496 ****
      return false;
      }
!   i++; // Get rid of subcommand
    std::string url = *i;
!   i++;
    std::string file = *i;
!   i++;
!   double timeout = 0;
    std::string verboseLog;
    std::string statusVar;
--- 2518,2527 ----
      return false;
      }
!   ++i; // Get rid of subcommand
    std::string url = *i;
!   ++i;
    std::string file = *i;
!   ++i;
!   long timeout = 0;
    std::string verboseLog;
    std::string statusVar;
***************
*** 2499,2509 ****
      if(*i == "TIMEOUT")
        {
!       i++;
        if(i != args.end())
          {
!         timeout = atof(i->c_str());
          }
        else
!         { 
          this->SetError("FILE(DOWNLOAD url file TIMEOUT time) missing "
                         "time for TIMEOUT.");
--- 2530,2540 ----
      if(*i == "TIMEOUT")
        {
!       ++i;
        if(i != args.end())
          {
!         timeout = atol(i->c_str());
          }
        else
!         {
          this->SetError("FILE(DOWNLOAD url file TIMEOUT time) missing "
                         "time for TIMEOUT.");
***************
*** 2513,2517 ****
      else if(*i == "LOG")
        {
!       i++;
        if( i == args.end())
          {
--- 2544,2548 ----
      else if(*i == "LOG")
        {
!       ++i;
        if( i == args.end())
          {
***************
*** 2524,2528 ****
      else if(*i == "STATUS")
        {
!       i++;
        if( i == args.end())
          {
--- 2555,2559 ----
      else if(*i == "STATUS")
        {
!       ++i;
        if( i == args.end())
          {
***************
*** 2533,2537 ****
        statusVar = *i;
        }
!     i++;
      }
  
--- 2564,2568 ----
        statusVar = *i;
        }
!     ++i;
      }
  
***************
*** 2540,2545 ****
       !cmSystemTools::MakeDirectory(dir.c_str()))
      {
!     std::string errstring = "FILE(DOWNLOAD ) error; cannot create directory: "
!       + dir + ". Maybe need administrative privileges.";
      this->SetError(errstring.c_str());
      return false;
--- 2571,2577 ----
       !cmSystemTools::MakeDirectory(dir.c_str()))
      {
!     std::string errstring = "DOWNLOAD error: cannot create directory '"
!       + dir + "' - Specify file by full path name and verify that you "
!       "have directory creation and file write privileges.";
      this->SetError(errstring.c_str());
      return false;
***************
*** 2553,2559 ****
      return false;
      }
!   CURL *curl;
!   curl_global_init(CURL_GLOBAL_DEFAULT);
!   curl = curl_easy_init();
    if(!curl)
      {
--- 2585,2591 ----
      return false;
      }
!   ::CURL *curl;
!   ::curl_global_init(CURL_GLOBAL_DEFAULT);
!   curl = ::curl_easy_init();
    if(!curl)
      {
***************
*** 2562,2600 ****
      return false;
      }
!   
!   curl_easy_setopt(curl, CURLOPT_URL, url.c_str());
!   curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, 
!                    cmFileCommandWriteMemoryCallback);
!   curl_easy_setopt(curl, CURLOPT_DEBUGFUNCTION,
!                    cmFileCommandCurlDebugCallback);
    cmFileCommandVectorOfChar chunkDebug;
!   ::curl_easy_setopt(curl, CURLOPT_FILE, (void *)&fout);
!   ::curl_easy_setopt(curl, CURLOPT_DEBUGDATA, (void *)&chunkDebug);
    if(verboseLog.size())
      {
!     curl_easy_setopt(curl, CURLOPT_VERBOSE, 1);
      }
    if(timeout > 0)
      {
!     curl_easy_setopt(curl, CURLOPT_TIMEOUT, timeout ); 
      }
!   CURLcode res = curl_easy_perform(curl);
    /* always cleanup */
!   curl_easy_cleanup(curl);
    if(statusVar.size())
      {
      cmOStringStream result;
!     result << (int)res << ";\"" << curl_easy_strerror(res) << "\"";
!     this->Makefile->AddDefinition(statusVar.c_str(), 
                                    result.str().c_str());
      }
!   curl_global_cleanup();
    if(chunkDebug.size())
      {
      chunkDebug.push_back(0);
      if(CURLE_OPERATION_TIMEOUTED == res)
!       { 
        std::string output = &*chunkDebug.begin();
!       
        if(verboseLog.size())
          {
--- 2594,2688 ----
      return false;
      }
! 
!   cURLEasyGuard g_curl(curl);
! 
!   ::CURLcode res = ::curl_easy_setopt(curl, CURLOPT_URL, url.c_str());
!   if (res != CURLE_OK)
!     {
!       std::string errstring = "FILE(DOWNLOAD ) error; cannot set url: ";
!       errstring += ::curl_easy_strerror(res);
!     return false;
!     }
! 
!   res = ::curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION,
!                              cmFileCommandWriteMemoryCallback);
!   if (res != CURLE_OK)
!       {
!       std::string errstring =
!         "FILE(DOWNLOAD ) error; cannot set write function: ";
!       errstring += ::curl_easy_strerror(res);
!     return false;
!     }
! 
!   res = ::curl_easy_setopt(curl, CURLOPT_DEBUGFUNCTION,
!                              cmFileCommandCurlDebugCallback);
!   if (res != CURLE_OK)
!     {
!      std::string errstring =
!        "FILE(DOWNLOAD ) error; cannot set debug function: ";
!      errstring += ::curl_easy_strerror(res);
!     return false;
!     }
! 
    cmFileCommandVectorOfChar chunkDebug;
! 
!   res = ::curl_easy_setopt(curl, CURLOPT_WRITEDATA, (void *)&fout);
! 
!   if (res != CURLE_OK)
!     {
!     std::string errstring = "FILE(DOWNLOAD ) error; cannot set write data: ";
!     errstring += ::curl_easy_strerror(res);
!     return false;
!     }
! 
!   res = ::curl_easy_setopt(curl, CURLOPT_DEBUGDATA, (void *)&chunkDebug);
!   if (res != CURLE_OK)
!     {
!     std::string errstring = "FILE(DOWNLOAD ) error; cannot set write data: ";
!     errstring += ::curl_easy_strerror(res);
!     return false;
!     }
! 
    if(verboseLog.size())
      {
!     res = ::curl_easy_setopt(curl, CURLOPT_VERBOSE, 1);
! 
!     if (res != CURLE_OK)
!       {
!       std::string errstring = "FILE(DOWNLOAD ) error; cannot set verbose: ";
!       errstring += ::curl_easy_strerror(res);
!       return false;
!       }
      }
    if(timeout > 0)
      {
!     res = ::curl_easy_setopt(curl, CURLOPT_TIMEOUT, timeout );
! 
!     if (res != CURLE_OK)
!       {
!       std::string errstring = "FILE(DOWNLOAD ) error; cannot set verbose: ";
!       errstring += ::curl_easy_strerror(res);
!       return false;
!       }
      }
!   res = ::curl_easy_perform(curl);
    /* always cleanup */
!   g_curl.release();
!   ::curl_easy_cleanup(curl);
    if(statusVar.size())
      {
      cmOStringStream result;
!     result << (int)res << ";\"" << ::curl_easy_strerror(res) << "\"";
!     this->Makefile->AddDefinition(statusVar.c_str(),
                                    result.str().c_str());
      }
!   ::curl_global_cleanup();
    if(chunkDebug.size())
      {
      chunkDebug.push_back(0);
      if(CURLE_OPERATION_TIMEOUTED == res)
!       {
        std::string output = &*chunkDebug.begin();
! 
        if(verboseLog.size())
          {
***************
*** 2608,2615 ****
      }
    return true;
! #else 
    this->SetError("FILE(DOWNLOAD ) "
                   "not supported in bootstrap cmake ");
    return false;
! #endif  
  }
--- 2696,2703 ----
      }
    return true;
! #else
    this->SetError("FILE(DOWNLOAD ) "
                   "not supported in bootstrap cmake ");
    return false;
! #endif
  }

Index: cmparseMSBuildXML.py
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmparseMSBuildXML.py,v
retrieving revision 1.2.2.1
retrieving revision 1.2.2.2
diff -C 2 -d -r1.2.2.1 -r1.2.2.2
*** cmparseMSBuildXML.py	1 Oct 2009 21:21:10 -0000	1.2.2.1
--- cmparseMSBuildXML.py	28 Oct 2009 16:15:37 -0000	1.2.2.2
***************
*** 4,8 ****
  
  #  http://blogs.msdn.com/vcblog/archive/2008/12/16/msbuild-task.aspx
! #  cl.xml
  #
  #  BoolProperty  <Name>true|false</Name>
--- 4,10 ----
  
  #  http://blogs.msdn.com/vcblog/archive/2008/12/16/msbuild-task.aspx
! #  "${PROGRAMFILES}/MSBuild/Microsoft.Cpp/v4.0/1033/cl.xml"
! #  "${PROGRAMFILES}/MSBuild/Microsoft.Cpp/v4.0/1033/lib.xml"
! #  "${PROGRAMFILES}/MSBuild/Microsoft.Cpp/v4.0/1033/link.xml"
  #
  #  BoolProperty  <Name>true|false</Name>
***************
*** 216,224 ****
      toReturn = "static cmVS7FlagTable cmVS10CxxTable[] =\n{\n"
      toReturn += "\n  //Enum Properties\n"
      for i in self.enumProperties:
        for j in i.values:
!         toReturn+="  {\""+i.attributes["Name"]+"\", \""+j.attributes["Switch"]+"\",\n   \""+j.DisplayName+"\", \""+j.attributes["Name"]+"\", 0},\n"
        toReturn += "\n"
  
      
      toReturn += "\n  //Bool Properties\n"
--- 218,240 ----
      toReturn = "static cmVS7FlagTable cmVS10CxxTable[] =\n{\n"
      toReturn += "\n  //Enum Properties\n"
+     lastProp = {}
      for i in self.enumProperties:
+       if i.attributes["Name"] == "CompileAsManaged":
+         #write these out after the rest of the enumProperties
+         lastProp = i
+         continue
        for j in i.values:
!         #hardcore Brad King's manual fixes for cmVS10CLFlagTable.h
!         if i.attributes["Name"] == "PrecompiledHeader" and j.attributes["Switch"] != "":
!           toReturn+="  {\""+i.attributes["Name"]+"\", \""+j.attributes["Switch"]+"\",\n   \""+j.DisplayName+"\", \""+j.attributes["Name"]+"\",\n   cmVS7FlagTable::UserValueIgnored | cmVS7FlagTable::Continue},\n"
!         else:
!           #default (normal, non-hardcoded) case
!           toReturn+="  {\""+i.attributes["Name"]+"\", \""+j.attributes["Switch"]+"\",\n   \""+j.DisplayName+"\", \""+j.attributes["Name"]+"\", 0},\n"
        toReturn += "\n"
  
+     if lastProp != {}:
+       for j in lastProp.values:
+           toReturn+="  {\""+lastProp.attributes["Name"]+"\", \""+j.attributes["Switch"]+"\",\n   \""+j.DisplayName+"\", \""+j.attributes["Name"]+"\", 0},\n"
+       toReturn += "\n"
      
      toReturn += "\n  //Bool Properties\n"
***************
*** 234,241 ****
        if i.argumentProperty != "":
          if i.attributes["ReverseSwitch"] != "":
!           toReturn += "  {\""+i.attributes["Name"]+"\", \""+i.attributes["ReverseSwitch"]+"\", \"\", \"false\", cmVS7FlagTable::Continue},\n"
            toReturn += "  {\""+i.attributes["Name"]+"\", \""+i.attributes["ReverseSwitch"]+"\", \""+i.DisplayName+"\", \"\",\n   cmVS7FlagTable::UserValueRequired},\n"
          if i.attributes["Switch"] != "":
!           toReturn += "  {\""+i.attributes["Name"]+"\", \""+i.attributes["Switch"]+"\", \"\", \"true\", cmVS7FlagTable::Continue},\n"
            toReturn += "  {\""+i.argumentProperty+"\", \""+i.attributes["Switch"]+"\", \""+i.DisplayName+"\", \"\",\n   cmVS7FlagTable::UserValueRequired},\n"
      
--- 250,257 ----
        if i.argumentProperty != "":
          if i.attributes["ReverseSwitch"] != "":
!           toReturn += "  {\""+i.attributes["Name"]+"\", \""+i.attributes["ReverseSwitch"]+"\", \"\", \"false\",\n   cmVS7FlagTable::UserValueIgnored | cmVS7FlagTable::Continue},\n"
            toReturn += "  {\""+i.attributes["Name"]+"\", \""+i.attributes["ReverseSwitch"]+"\", \""+i.DisplayName+"\", \"\",\n   cmVS7FlagTable::UserValueRequired},\n"
          if i.attributes["Switch"] != "":
!           toReturn += "  {\""+i.attributes["Name"]+"\", \""+i.attributes["Switch"]+"\", \"\", \"true\",\n   cmVS7FlagTable::UserValueIgnored | cmVS7FlagTable::Continue},\n"
            toReturn += "  {\""+i.argumentProperty+"\", \""+i.attributes["Switch"]+"\", \""+i.DisplayName+"\", \"\",\n   cmVS7FlagTable::UserValueRequired},\n"
      
***************
*** 250,254 ****
      for i in self.stringProperties:
        if i.attributes["Switch"] == "":
!         toReturn += "  // Skip [" + i.attributes["Name"] + "] - no command line Switch.\n";
        else:
          toReturn +="  {\""+i.attributes["Name"]+"\", \""+i.attributes["Switch"]+i.attributes["Separator"]+"\",\n   \""+i.DisplayName+"\",\n   \"\", cmVS7FlagTable::UserValue},\n"
--- 266,279 ----
      for i in self.stringProperties:
        if i.attributes["Switch"] == "":
!         if i.attributes["Name"] == "PrecompiledHeaderFile":
!           #more hardcoding
!           toReturn += "  {\"PrecompiledHeaderFile\", \"Yc\",\n"
!           toReturn += "   \"Precompiled Header Name\",\n"
!           toReturn += "   \"\", cmVS7FlagTable::UserValueRequired},\n"
!           toReturn += "  {\"PrecompiledHeaderFile\", \"Yu\",\n"
!           toReturn += "   \"Precompiled Header Name\",\n"
!           toReturn += "   \"\", cmVS7FlagTable::UserValueRequired},\n"
!         else:
!           toReturn += "  // Skip [" + i.attributes["Name"] + "] - no command line Switch.\n";
        else:
          toReturn +="  {\""+i.attributes["Name"]+"\", \""+i.attributes["Switch"]+i.attributes["Separator"]+"\",\n   \""+i.DisplayName+"\",\n   \"\", cmVS7FlagTable::UserValue},\n"

Index: cmCoreTryCompile.cxx
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmCoreTryCompile.cxx,v
retrieving revision 1.14.2.1
retrieving revision 1.14.2.2
diff -C 2 -d -r1.14.2.1 -r1.14.2.2
*** cmCoreTryCompile.cxx	1 Oct 2009 21:20:43 -0000	1.14.2.1
--- cmCoreTryCompile.cxx	28 Oct 2009 16:15:06 -0000	1.14.2.2
***************
*** 318,322 ****
      if ((res==0) && (copyFile.size()))
        {
!       if(!cmSystemTools::CopyFileAlways(this->OutputFile.c_str(), 
                                          copyFile.c_str()))
          {
--- 318,323 ----
      if ((res==0) && (copyFile.size()))
        {
!       if(this->OutputFile.empty() ||
!          !cmSystemTools::CopyFileAlways(this->OutputFile.c_str(),
                                          copyFile.c_str()))
          {

Index: cmGlobalVisualStudioGenerator.h
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmGlobalVisualStudioGenerator.h,v
retrieving revision 1.11.2.1
retrieving revision 1.11.2.2
diff -C 2 -d -r1.11.2.1 -r1.11.2.2
*** cmGlobalVisualStudioGenerator.h	1 Oct 2009 21:21:04 -0000	1.11.2.1
--- cmGlobalVisualStudioGenerator.h	28 Oct 2009 16:15:15 -0000	1.11.2.2
***************
*** 89,96 ****
                               TargetDependSet& originalTargets,
                               cmLocalGenerator* root, GeneratorVector const&);
  private:
    void FixUtilityDependsForTarget(cmTarget& target);
    void CreateUtilityDependTarget(cmTarget& target);
-   bool CheckTargetLinks(cmTarget& target, const char* name);
  };
  
--- 89,97 ----
                               TargetDependSet& originalTargets,
                               cmLocalGenerator* root, GeneratorVector const&);
+ 
+   bool CheckTargetLinks(cmTarget& target, const char* name);
  private:
    void FixUtilityDependsForTarget(cmTarget& target);
    void CreateUtilityDependTarget(cmTarget& target);
  };
  

--- NEW FILE: cmGlobalVisualStudio10Win64Generator.h ---
/*============================================================================
  CMake - Cross Platform Makefile Generator
  Copyright 2000-2009 Kitware, Inc., Insight Software Consortium

  Distributed under the OSI-approved BSD License (the "License");
  see accompanying file Copyright.txt for details.

  This software is distributed WITHOUT ANY WARRANTY; without even the
  implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  See the License for more information.
============================================================================*/
#ifndef cmGlobalVisualStudio10Win64Generator_h
#define cmGlobalVisualStudio10Win64Generator_h

#include "cmGlobalVisualStudio10Generator.h"

class cmGlobalVisualStudio10Win64Generator :
  public cmGlobalVisualStudio10Generator
{
public:
  cmGlobalVisualStudio10Win64Generator();
  static cmGlobalGenerator* New() {
    return new cmGlobalVisualStudio10Win64Generator; }

  ///! Get the name for the generator.
  virtual const char* GetName() const {
    return cmGlobalVisualStudio10Win64Generator::GetActualName();}
  static const char* GetActualName() {return "Visual Studio 10 Win64";}

  /** Get the documentation entry for this generator.  */
  virtual void GetDocumentation(cmDocumentationEntry& entry) const;

  virtual void EnableLanguage(std::vector<std::string>const& languages,
                              cmMakefile *, bool optional);
};
#endif

Index: cmVS10CLFlagTable.h
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmVS10CLFlagTable.h,v
retrieving revision 1.3.2.1
retrieving revision 1.3.2.2
diff -C 2 -d -r1.3.2.1 -r1.3.2.2
*** cmVS10CLFlagTable.h	1 Oct 2009 21:21:09 -0000	1.3.2.1
--- cmVS10CLFlagTable.h	28 Oct 2009 16:15:27 -0000	1.3.2.2
***************
*** 103,109 ****
  
    {"PrecompiledHeader", "Yc",
!    "Create", "Create", 0},
    {"PrecompiledHeader", "Yu",
!    "Use", "Use", 0},
    {"PrecompiledHeader", "",
     "Not Using Precompiled Headers", "NotUsing", 0},
--- 103,111 ----
  
    {"PrecompiledHeader", "Yc",
!    "Create", "Create",
!    cmVS7FlagTable::UserValueIgnored | cmVS7FlagTable::Continue},
    {"PrecompiledHeader", "Yu",
!    "Use", "Use",
!    cmVS7FlagTable::UserValueIgnored | cmVS7FlagTable::Continue},
    {"PrecompiledHeader", "",
     "Not Using Precompiled Headers", "NotUsing", 0},
***************
*** 137,141 ****
     "Do Not Send Report", "None", 0},
    {"ErrorReporting", "errorReport:prompt",
!    "Prompt Immediatelly", "Prompt", 0},
    {"ErrorReporting", "errorReport:queue",
     "Queue For Next Login", "Queue", 0},
--- 139,143 ----
     "Do Not Send Report", "None", 0},
    {"ErrorReporting", "errorReport:prompt",
!    "Prompt Immediately", "Prompt", 0},
    {"ErrorReporting", "errorReport:queue",
     "Queue For Next Login", "Queue", 0},
***************
*** 181,185 ****
    {"FloatingPointExceptions", "fp:except-", "", "false", 0},
    {"FloatingPointExceptions", "fp:except", "", "true", 0},
!   {"CodeGeneration", "hotpatch", "", "true", 0},
    {"DisableLanguageExtensions", "Za", "", "true", 0},
    {"TreatWChar_tAsBuiltInType", "Zc:wchar_t-", "", "false", 0},
--- 183,187 ----
    {"FloatingPointExceptions", "fp:except-", "", "false", 0},
    {"FloatingPointExceptions", "fp:except", "", "true", 0},
!   {"CreateHotpatchableImage", "hotpatch", "", "true", 0},
    {"DisableLanguageExtensions", "Za", "", "true", 0},
    {"TreatWChar_tAsBuiltInType", "Zc:wchar_t-", "", "false", 0},
***************
*** 200,211 ****
  
    //Bool Properties With Argument
!   {"MultiProcessorCompilation", "MP", "", "true", cmVS7FlagTable::Continue},
    {"ProcessorNumber", "MP", "Multi-processor Compilation", "",
     cmVS7FlagTable::UserValueRequired},
    {"GenerateXMLDocumentationFiles", "doc", "", "true",
!    cmVS7FlagTable::Continue},
    {"XMLDocumentationFileName", "doc", "Generate XML Documentation Files", "",
     cmVS7FlagTable::UserValueRequired},
!   {"BrowseInformation", "FR", "", "true", cmVS7FlagTable::Continue},
    {"BrowseInformationFile", "FR", "Enable Browse Information", "",
     cmVS7FlagTable::UserValueRequired},
--- 202,215 ----
  
    //Bool Properties With Argument
!   {"MultiProcessorCompilation", "MP", "", "true",
!    cmVS7FlagTable::UserValueIgnored | cmVS7FlagTable::Continue},
    {"ProcessorNumber", "MP", "Multi-processor Compilation", "",
     cmVS7FlagTable::UserValueRequired},
    {"GenerateXMLDocumentationFiles", "doc", "", "true",
!    cmVS7FlagTable::UserValueIgnored | cmVS7FlagTable::Continue},
    {"XMLDocumentationFileName", "doc", "Generate XML Documentation Files", "",
     cmVS7FlagTable::UserValueRequired},
!   {"BrowseInformation", "FR", "", "true",
!    cmVS7FlagTable::UserValueIgnored | cmVS7FlagTable::Continue},
    {"BrowseInformationFile", "FR", "Enable Browse Information", "",
     cmVS7FlagTable::UserValueRequired},
***************
*** 239,243 ****
    //String Properties
    // Skip [TrackerLogDirectory] - no command line Switch.
!   // Skip [PrecompiledHeaderFile] - no command line Switch.
    {"PrecompiledHeaderOutputFile", "Fp",
     "Precompiled Header Output File",
--- 243,255 ----
    //String Properties
    // Skip [TrackerLogDirectory] - no command line Switch.
!   {"PreprocessOutputPath", "Fi",
!    "Preprocess Output Path",
!    "", cmVS7FlagTable::UserValue},
!   {"PrecompiledHeaderFile", "Yc",
!    "Precompiled Header Name",
!    "", cmVS7FlagTable::UserValueRequired},
!   {"PrecompiledHeaderFile", "Yu",
!    "Precompiled Header Name",
!    "", cmVS7FlagTable::UserValueRequired},
    {"PrecompiledHeaderOutputFile", "Fp",
     "Precompiled Header Output File",

Index: cmGlobalVisualStudio7Generator.cxx
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmGlobalVisualStudio7Generator.cxx,v
retrieving revision 1.108.2.2
retrieving revision 1.108.2.3
diff -C 2 -d -r1.108.2.2 -r1.108.2.3
*** cmGlobalVisualStudio7Generator.cxx	9 Oct 2009 20:11:13 -0000	1.108.2.2
--- cmGlobalVisualStudio7Generator.cxx	28 Oct 2009 16:15:13 -0000	1.108.2.3
***************
*** 616,626 ****
  }
  
- //----------------------------------------------------------------------------
- bool cmGlobalVisualStudio7Generator::IsRootOnlyTarget(cmTarget* target)
- {
-   return (this->cmGlobalVisualStudioGenerator::IsRootOnlyTarget(target) ||
-           strcmp(target->GetName(), CMAKE_CHECK_BUILD_SYSTEM_TARGET) == 0);
- }
- 
  bool cmGlobalVisualStudio7Generator::IsPartOfDefaultBuild(const char* project,
                                                            cmTarget* target)
--- 616,619 ----

Index: cmCommandArgumentParserHelper.cxx
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmCommandArgumentParserHelper.cxx,v
retrieving revision 1.23.2.1
retrieving revision 1.23.2.2
diff -C 2 -d -r1.23.2.1 -r1.23.2.2
*** cmCommandArgumentParserHelper.cxx	1 Oct 2009 21:20:36 -0000	1.23.2.1
--- cmCommandArgumentParserHelper.cxx	28 Oct 2009 16:15:06 -0000	1.23.2.2
***************
*** 66,70 ****
      {
      return this->ExpandVariable(var);
!     } 
    if ( strcmp(key, "ENV") == 0 )
      {
--- 66,74 ----
      {
      return this->ExpandVariable(var);
!     }
!   if(!var)
!     {
!     return this->EmptyVariable;
!     }
    if ( strcmp(key, "ENV") == 0 )
      {

Index: cmPolicies.h
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmPolicies.h,v
retrieving revision 1.26.2.2
retrieving revision 1.26.2.3
diff -C 2 -d -r1.26.2.2 -r1.26.2.3
*** cmPolicies.h	9 Oct 2009 20:11:19 -0000	1.26.2.2
--- cmPolicies.h	28 Oct 2009 16:15:24 -0000	1.26.2.3
***************
*** 48,52 ****
      CMP0010, // Bad variable reference syntax is an error
      CMP0011, // Strong policy scope for include and find_package
!     CMP0012, // Strong handling of boolean constants
      CMP0013, // Duplicate binary directories not allowed
      CMP0014, // Input directories must have CMakeLists.txt
--- 48,52 ----
      CMP0010, // Bad variable reference syntax is an error
      CMP0011, // Strong policy scope for include and find_package
!     CMP0012, // Recognize numbers and boolean constants in if()
      CMP0013, // Duplicate binary directories not allowed
      CMP0014, // Input directories must have CMakeLists.txt

Index: cmCTest.cxx
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmCTest.cxx,v
retrieving revision 1.370.2.1
retrieving revision 1.370.2.2
diff -C 2 -d -r1.370.2.1 -r1.370.2.2
*** cmCTest.cxx	1 Oct 2009 21:20:36 -0000	1.370.2.1
--- cmCTest.cxx	28 Oct 2009 16:15:06 -0000	1.370.2.2
***************
*** 565,568 ****
--- 565,569 ----
      // parse the dart test file
      std::ifstream fin(fileName.c_str());
+ 
      if(!fin)
        {
***************
*** 1082,1090 ****
    // determine how much time we have
    double timeout = this->GetRemainingTimeAllowed() - 120;
!   if (this->TimeOut && this->TimeOut < timeout)
      {
      timeout = this->TimeOut;
      }
!   if (testTimeOut 
        && testTimeOut < this->GetRemainingTimeAllowed())
      {
--- 1083,1091 ----
    // determine how much time we have
    double timeout = this->GetRemainingTimeAllowed() - 120;
!   if (this->TimeOut > 0 && this->TimeOut < timeout)
      {
      timeout = this->TimeOut;
      }
!   if (testTimeOut > 0
        && testTimeOut < this->GetRemainingTimeAllowed())
      {
***************
*** 1118,1122 ****
          // invocations. Since --build-generator is required this is a 
          // good place to check for it, and to add the arguments in
!         if (strcmp(argv[i],"--build-generator") == 0 && timeout)
            {
            args.push_back("--test-timeout");
--- 1119,1123 ----
          // invocations. Since --build-generator is required this is a 
          // good place to check for it, and to add the arguments in
!         if (strcmp(argv[i],"--build-generator") == 0 && timeout > 0)
            {
            args.push_back("--test-timeout");
***************
*** 1266,1269 ****
--- 1267,1275 ----
         << cmVersion::GetCMakeVersion()  << "\"\n"
         << (append? "\tAppend=\"true\"\n":"")
+        << "\tCompilerName=\"" << this->GetCTestConfiguration("Compiler") 
+        << "\"\n"
+ #ifdef _COMPILER_VERSION
+        << "\tCompilerVersion=\"_COMPILER_VERSION\"\n"
+ #endif
         << "\tOSName=\"" << info.GetOSName() << "\"\n"
         << "\tHostname=\"" << info.GetHostname() << "\"\n"
***************
*** 2364,2368 ****
  {
    cmCTestLog(this, HANDLER_VERBOSE_OUTPUT, "SetCTestConfiguration:"
!              << name << ":" << value << "\n");
  
    if ( !name )
--- 2370,2374 ----
  {
    cmCTestLog(this, HANDLER_VERBOSE_OUTPUT, "SetCTestConfiguration:"
!     << name << ":" << (value ? value : "(null)") << "\n");
  
    if ( !name )

Index: cmFileCommand.h
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmFileCommand.h,v
retrieving revision 1.47.2.1
retrieving revision 1.47.2.2
diff -C 2 -d -r1.47.2.1 -r1.47.2.2
*** cmFileCommand.h	1 Oct 2009 21:20:59 -0000	1.47.2.1
--- cmFileCommand.h	28 Oct 2009 16:15:13 -0000	1.47.2.2
***************
*** 153,157 ****
        "numeric error means no error in the operation. "
        "If TIMEOUT time is specified, the operation will "
!       "timeout after time seconds, time can be specified as a float."
        "\n"
        "The file() command also provides COPY and INSTALL signatures:\n"
--- 153,157 ----
        "numeric error means no error in the operation. "
        "If TIMEOUT time is specified, the operation will "
!       "timeout after time seconds, time should be specified as an integer."
        "\n"
        "The file() command also provides COPY and INSTALL signatures:\n"



More information about the Cmake-commits mailing list