Ninja: Use as dependency file <objectDir/SourceName>.d if needed.

This commit is contained in:
Claus Klein
2018-02-20 21:42:50 +01:00
parent b89252689c
commit 84de8b80ec

View File

@@ -856,9 +856,27 @@ void cmNinjaTargetGenerator::WriteObjectBuildStatement(
vars["FLAGS"] = this->ComputeFlagsForObject(source, language);
vars["DEFINES"] = this->ComputeDefines(source, language);
vars["INCLUDES"] = this->ComputeIncludes(source, language);
if (!this->NeedDepTypeMSVC(language)) {
vars["DEP_FILE"] = this->GetLocalGenerator()->ConvertToOutputFormat(
objectFileName + ".d", cmOutputConverter::SHELL);
bool replaceExt(false);
if (!language.empty()) {
std::string repVar = "CMAKE_";
repVar += language;
repVar += "_DEPFILE_EXTENSION_REPLACE";
replaceExt = this->Makefile->IsOn(repVar);
}
if (!replaceExt) {
// use original code
vars["DEP_FILE"] = this->GetLocalGenerator()->ConvertToOutputFormat(
objectFileName + ".d", cmOutputConverter::SHELL);
} else {
// Replace the original source file extension with the
// depend file extension.
std::string dependFileName =
cmSystemTools::GetFilenameWithoutLastExtension(objectFileName) + ".d";
vars["DEP_FILE"] = this->GetLocalGenerator()->ConvertToOutputFormat(
objectFileDir + "/" + dependFileName, cmOutputConverter::SHELL);
}
}
this->ExportObjectCompileCommand(