From d2c764ad8db1a2d920e43f5c78d4ff4b1f643cee Mon Sep 17 00:00:00 2001 From: Brad King Date: Mon, 2 Apr 2012 10:55:01 -0400 Subject: Ninja: Fix module .def file path conversion Refactoring in commit a2514f15 (Simplify cmNinjaTargetGenerator using cmGeneratorTarget, 2012-03-13) accidentally removed mapping of .def file paths through ConvertToNinjaPath (via GetSourceFilePath). Take the ModuleDefinitionFile value from cmGeneratorTarget and map it correctly through ConvertToNinjaPath. In addition to generating cleaner paths in the ninja build files this correctly links up references to a generated .def file with the custom command output that produces it. --- Source/cmNinjaTargetGenerator.cxx | 13 +++++++++---- Source/cmNinjaTargetGenerator.h | 3 +++ 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/Source/cmNinjaTargetGenerator.cxx b/Source/cmNinjaTargetGenerator.cxx index 23662d9..3f7c925 100644 --- a/Source/cmNinjaTargetGenerator.cxx +++ b/Source/cmNinjaTargetGenerator.cxx @@ -234,9 +234,9 @@ cmNinjaDeps cmNinjaTargetGenerator::ComputeLinkDeps() const std::transform(deps.begin(), deps.end(), result.begin(), MapToNinjaPath()); // Add a dependency on the link definitions file, if any. - if(!this->GeneratorTarget->ModuleDefinitionFile.empty()) + if(!this->ModuleDefinitionFile.empty()) { - result.push_back(this->GeneratorTarget->ModuleDefinitionFile); + result.push_back(this->ModuleDefinitionFile); } return result; @@ -400,6 +400,11 @@ cmNinjaTargetGenerator { this->WriteObjectBuildStatement(*si); } + if(!this->GeneratorTarget->ModuleDefinitionFile.empty()) + { + this->ModuleDefinitionFile = this->ConvertToNinjaPath( + this->GeneratorTarget->ModuleDefinitionFile.c_str()); + } this->GetBuildFileStream() << "\n"; } @@ -478,7 +483,7 @@ void cmNinjaTargetGenerator ::AddModuleDefinitionFlag(std::string& flags) { - if(this->GeneratorTarget->ModuleDefinitionFile.empty()) + if(this->ModuleDefinitionFile.empty()) { return; } @@ -495,6 +500,6 @@ cmNinjaTargetGenerator // vs6's "cl -link" pass it to the linker. std::string flag = defFileFlag; flag += (this->LocalGenerator->ConvertToLinkReference( - this->GeneratorTarget->ModuleDefinitionFile.c_str())); + this->ModuleDefinitionFile.c_str())); this->LocalGenerator->AppendFlags(flags, flag.c_str()); } diff --git a/Source/cmNinjaTargetGenerator.h b/Source/cmNinjaTargetGenerator.h index f639116..b64ce1e 100644 --- a/Source/cmNinjaTargetGenerator.h +++ b/Source/cmNinjaTargetGenerator.h @@ -118,6 +118,9 @@ private: cmLocalNinjaGenerator* LocalGenerator; /// List of object files for this target. cmNinjaDeps Objects; + + // The windows module definition source file (.def), if any. + std::string ModuleDefinitionFile; }; #endif // ! cmNinjaTargetGenerator_h -- cgit v0.12