summaryrefslogtreecommitdiffstats
path: root/Source
diff options
context:
space:
mode:
Diffstat (limited to 'Source')
-rw-r--r--Source/cmNinjaTargetGenerator.cxx52
-rw-r--r--Source/cmNinjaTargetGenerator.h2
2 files changed, 24 insertions, 30 deletions
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: