[Cmake-commits] CMake branch, next, updated. v3.1.1-2466-gfcfce76

Brad King brad.king at kitware.com
Thu Jan 29 11:40:24 EST 2015


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "CMake".

The branch, next has been updated
       via  fcfce76d09ba7d5337ed8e198b9998d7d2f6f5fc (commit)
       via  2596f95e7338ab22695fed24c26157de5ad76f2d (commit)
      from  8157b25c9bc92c415f486bb6107d8592571a4954 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=fcfce76d09ba7d5337ed8e198b9998d7d2f6f5fc
commit fcfce76d09ba7d5337ed8e198b9998d7d2f6f5fc
Merge: 8157b25 2596f95
Author:     Brad King <brad.king at kitware.com>
AuthorDate: Thu Jan 29 11:40:23 2015 -0500
Commit:     CMake Topic Stage <kwrobot at kitware.com>
CommitDate: Thu Jan 29 11:40:23 2015 -0500

    Merge topic 'ninja-msvc-only-C-and-CXX' into next
    
    2596f95e Ninja: Use "deps = msvc" only for C and CXX


http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=2596f95e7338ab22695fed24c26157de5ad76f2d
commit 2596f95e7338ab22695fed24c26157de5ad76f2d
Author:     Brad King <brad.king at kitware.com>
AuthorDate: Thu Jan 29 11:02:06 2015 -0500
Commit:     Brad King <brad.king at kitware.com>
CommitDate: Thu Jan 29 11:39:22 2015 -0500

    Ninja: Use "deps = msvc" only for C and CXX
    
    The "/showIncludes" flag is only available with MS C and C++ compilers,
    and on compilers that "simulate" them (like Intel for Windows).  Fix our
    logic to choose this type only for MS tools with these languages.  All
    other cases need to use "deps = gcc" and define DEP_FILE in the build
    rule.
    
    Reported-by: Brian Smith <brian at briansmith.org>

diff --git a/Source/cmNinjaTargetGenerator.cxx b/Source/cmNinjaTargetGenerator.cxx
index ff41f6d..cfd8937 100644
--- a/Source/cmNinjaTargetGenerator.cxx
+++ b/Source/cmNinjaTargetGenerator.cxx
@@ -200,21 +200,21 @@ cmNinjaTargetGenerator::ComputeFlagsForObject(cmSourceFile const* source,
   return flags;
 }
 
-
-bool cmNinjaTargetGenerator::needsDepFile(const std::string& lang)
+bool cmNinjaTargetGenerator::NeedDepTypeMSVC(const std::string& lang) const
 {
-  cmMakefile* mf = this->GetMakefile();
-
-  const bool usingMSVC = std::string("MSVC") ==
-                       (mf->GetDefinition("CMAKE_C_COMPILER_ID") ?
-                    mf->GetSafeDefinition("CMAKE_C_COMPILER_ID") :
-                    mf->GetSafeDefinition("CMAKE_CXX_COMPILER_ID"));
-
-  return !usingMSVC || lang == "RC";
+  if (lang == "C" || lang == "CXX")
+    {
+    cmMakefile* mf = this->GetMakefile();
+    return (
+      strcmp(mf->GetSafeDefinition("CMAKE_C_COMPILER_ID"), "MSVC") == 0 ||
+      strcmp(mf->GetSafeDefinition("CMAKE_CXX_COMPILER_ID"), "MSVC") == 0 ||
+      strcmp(mf->GetSafeDefinition("CMAKE_C_SIMULATE_ID"), "MSVC") == 0 ||
+      strcmp(mf->GetSafeDefinition("CMAKE_CXX_SIMULATE_ID"), "MSVC") == 0
+      );
+    }
+  return false;
 }
 
-
-
 // TODO: Refactor with
 // void cmMakefileTargetGenerator::WriteTargetLanguageFlags().
 std::string
@@ -391,22 +391,22 @@ cmNinjaTargetGenerator
 
   cmMakefile* mf = this->GetMakefile();
 
-  const std::string cId = mf->GetDefinition("CMAKE_C_COMPILER_ID")
-                          ? mf->GetSafeDefinition("CMAKE_C_COMPILER_ID")
-                          : mf->GetSafeDefinition("CMAKE_CXX_COMPILER_ID");
-  const std::string sId = mf->GetDefinition("CMAKE_C_SIMULATE_ID")
-                          ? mf->GetSafeDefinition("CMAKE_C_SIMULATE_ID")
-                          : mf->GetSafeDefinition("CMAKE_CXX_SIMULATE_ID");
-  const bool usingMSVC = (cId == "MSVC" || sId == "MSVC");
-
   // Tell ninja dependency format so all deps can be loaded into a database
   std::string deptype;
   std::string depfile;
   std::string cldeps;
   std::string flags = "$FLAGS";
-  if (usingMSVC)
+  if (this->NeedDepTypeMSVC(lang))
     {
-    if (!mf->GetIsSourceFileTryCompile() && lang == "RC")
+    deptype = "msvc";
+    depfile = "";
+    flags += " /showIncludes";
+    }
+  else if (lang == "RC" && this->NeedDepTypeMSVC("C"))
+    {
+    // For the MS resource compiler we need cmcldeps, but skip dependencies
+    // for source-file try_compile cases because they are always fresh.
+    if (!mf->GetIsSourceFileTryCompile())
       {
       deptype = "gcc";
       depfile = "$DEP_FILE";
@@ -419,12 +419,6 @@ cmNinjaTargetGenerator
       cldeps += mf->GetSafeDefinition("CMAKE_CL_SHOWINCLUDES_PREFIX");
       cldeps += "\" \"" + cl + "\" ";
       }
-    else
-      {
-      deptype = "msvc";
-      depfile = "";
-      flags += " /showIncludes";
-      }
     }
   else
     {
@@ -636,7 +630,7 @@ cmNinjaTargetGenerator
   cmNinjaVars vars;
   vars["FLAGS"] = this->ComputeFlagsForObject(source, language);
   vars["DEFINES"] = this->ComputeDefines(source, language);
-  if (needsDepFile(language)) {
+  if (!this->NeedDepTypeMSVC(language)) {
     vars["DEP_FILE"] =
             cmGlobalNinjaGenerator::EncodeDepfileSpace(objectFileName + ".d");
   }
diff --git a/Source/cmNinjaTargetGenerator.h b/Source/cmNinjaTargetGenerator.h
index 17cf517..5733fde 100644
--- a/Source/cmNinjaTargetGenerator.h
+++ b/Source/cmNinjaTargetGenerator.h
@@ -42,7 +42,7 @@ public:
 
   std::string GetTargetName() const;
 
-  bool needsDepFile(const std::string& lang);
+  bool NeedDepTypeMSVC(const std::string& lang) const;
 
 protected:
 

-----------------------------------------------------------------------

Summary of changes:
 Source/cmNinjaTargetGenerator.cxx |   52 ++++++++++++++++---------------------
 Source/cmNinjaTargetGenerator.h   |    2 +-
 2 files changed, 24 insertions(+), 30 deletions(-)


hooks/post-receive
-- 
CMake


More information about the Cmake-commits mailing list