diff options
Diffstat (limited to 'Source/cmNinjaTargetGenerator.cxx')
-rw-r--r-- | Source/cmNinjaTargetGenerator.cxx | 21 |
1 files changed, 10 insertions, 11 deletions
diff --git a/Source/cmNinjaTargetGenerator.cxx b/Source/cmNinjaTargetGenerator.cxx index 3ebf364..4feb0bb 100644 --- a/Source/cmNinjaTargetGenerator.cxx +++ b/Source/cmNinjaTargetGenerator.cxx @@ -379,10 +379,11 @@ cmNinjaDeps cmNinjaTargetGenerator::ComputeLinkDeps( return result; } -std::string cmNinjaTargetGenerator::GetSourceFilePath( +std::string cmNinjaTargetGenerator::GetCompiledSourceNinjaPath( cmSourceFile const* source) const { - return this->ConvertToNinjaPath(source->GetFullPath()); + // Pass source files to the compiler by absolute path. + return this->ConvertToNinjaAbsPath(source->GetFullPath()); } std::string cmNinjaTargetGenerator::GetObjectFilePath( @@ -987,7 +988,7 @@ void cmNinjaTargetGenerator::WriteObjectBuildStatements( this->GeneratorTarget->GetExternalObjects(externalObjects, config); for (cmSourceFile const* sf : externalObjects) { auto objectFileName = this->GetGlobalGenerator()->ExpandCFGIntDir( - this->GetSourceFilePath(sf), config); + this->ConvertToNinjaPath(sf->GetFullPath()), config); if (!cmSystemTools::StringEndsWith(objectFileName, cmToCStr(pchExtension))) { this->Configs[config].Objects.push_back(objectFileName); @@ -1199,8 +1200,7 @@ void cmNinjaTargetGenerator::WriteObjectBuildStatement( const std::string& fileConfig, bool firstForConfig) { std::string const language = source->GetLanguage(); - std::string const sourceFileName = - language == "RC" ? source->GetFullPath() : this->GetSourceFilePath(source); + std::string const sourceFilePath = this->GetCompiledSourceNinjaPath(source); std::string const objectDir = this->ConvertToNinjaPath( cmStrCat(this->GeneratorTarget->GetSupportDirectory(), this->GetGlobalGenerator()->ConfigDirectory(config))); @@ -1251,7 +1251,7 @@ void cmNinjaTargetGenerator::WriteObjectBuildStatement( } this->ExportObjectCompileCommand( - language, sourceFileName, objectDir, objectFileName, objectFileDir, + language, sourceFilePath, objectDir, objectFileName, objectFileDir, vars["FLAGS"], vars["DEFINES"], vars["INCLUDES"], config); objBuild.Outputs.push_back(objectFileName); @@ -1265,7 +1265,7 @@ void cmNinjaTargetGenerator::WriteObjectBuildStatement( } } - objBuild.ExplicitDeps.push_back(sourceFileName); + objBuild.ExplicitDeps.push_back(sourceFilePath); // Add precompile headers dependencies std::vector<std::string> depList; @@ -1323,9 +1323,9 @@ void cmNinjaTargetGenerator::WriteObjectBuildStatement( if (source->GetIsGenerated() && !source->GetPropertyAsBool("__CMAKE_GENERATED_BY_CMAKE") && !source->GetCustomCommand() && - !this->GetGlobalGenerator()->HasCustomCommandOutput(sourceFileName)) { + !this->GetGlobalGenerator()->HasCustomCommandOutput(sourceFilePath)) { this->GetGlobalGenerator()->AddAssumedSourceDependencies( - sourceFileName, objBuild.OrderOnlyDeps); + sourceFilePath, objBuild.OrderOnlyDeps); } // For some cases we scan to dynamically discover dependencies. @@ -1575,8 +1575,7 @@ void cmNinjaTargetGenerator::WriteTargetDependInfo(std::string const& lang, void cmNinjaTargetGenerator::EmitSwiftDependencyInfo( cmSourceFile const* source, const std::string& config) { - std::string const sourceFilePath = - this->ConvertToNinjaPath(this->GetSourceFilePath(source)); + std::string const sourceFilePath = this->GetCompiledSourceNinjaPath(source); std::string const objectFilePath = this->ConvertToNinjaPath(this->GetObjectFilePath(source, config)); std::string const swiftDepsPath = [source, objectFilePath]() -> std::string { |