diff options
author | Brad King <brad.king@kitware.com> | 2015-11-04 15:13:27 (GMT) |
---|---|---|
committer | CMake Topic Stage <kwrobot@kitware.com> | 2015-11-04 15:13:27 (GMT) |
commit | 49ac682d39af7fe47e79455827e2e83130193236 (patch) | |
tree | 0b76a33d60c509ebe3e9e620596fea01e7760d2e /Source | |
parent | 1e83e41d5eae60adfd588904e5418df38075b1d7 (diff) | |
parent | e7e713cc0533cd8f1ef47de4cdfd895d33545502 (diff) | |
download | CMake-49ac682d39af7fe47e79455827e2e83130193236.zip CMake-49ac682d39af7fe47e79455827e2e83130193236.tar.gz CMake-49ac682d39af7fe47e79455827e2e83130193236.tar.bz2 |
Merge topic 'vs-show-def-files'
e7e713cc VS: Add module definition `.def` files to .vcxproj files (#15313)
247c168b Refactor `.def` file lookup
adfc8a67 cmGeneratorTarget: Fix IMPLEMENT_VISIT_IMPL for template data types
Diffstat (limited to 'Source')
-rw-r--r-- | Source/cmCommonTargetGenerator.cxx | 4 | ||||
-rw-r--r-- | Source/cmCommonTargetGenerator.h | 2 | ||||
-rw-r--r-- | Source/cmGeneratorTarget.cxx | 16 | ||||
-rw-r--r-- | Source/cmGeneratorTarget.h | 2 | ||||
-rw-r--r-- | Source/cmMakefileTargetGenerator.cxx | 4 | ||||
-rw-r--r-- | Source/cmNinjaTargetGenerator.cxx | 5 | ||||
-rw-r--r-- | Source/cmVisualStudio10TargetGenerator.cxx | 13 |
7 files changed, 30 insertions, 16 deletions
diff --git a/Source/cmCommonTargetGenerator.cxx b/Source/cmCommonTargetGenerator.cxx index bd47715..76ed038 100644 --- a/Source/cmCommonTargetGenerator.cxx +++ b/Source/cmCommonTargetGenerator.cxx @@ -81,7 +81,7 @@ void cmCommonTargetGenerator::AddFeatureFlags( //---------------------------------------------------------------------------- void cmCommonTargetGenerator::AddModuleDefinitionFlag(std::string& flags) { - if(this->ModuleDefinitionFile.empty()) + if(!this->ModuleDefinitionFile) { return; } @@ -98,7 +98,7 @@ void cmCommonTargetGenerator::AddModuleDefinitionFlag(std::string& flags) // vs6's "cl -link" pass it to the linker. std::string flag = defFileFlag; flag += (this->LocalGenerator->ConvertToLinkReference( - this->ModuleDefinitionFile)); + this->ModuleDefinitionFile->GetFullPath())); this->LocalGenerator->AppendFlags(flags, flag); } diff --git a/Source/cmCommonTargetGenerator.h b/Source/cmCommonTargetGenerator.h index 3fb1fd0..0c17500 100644 --- a/Source/cmCommonTargetGenerator.h +++ b/Source/cmCommonTargetGenerator.h @@ -54,7 +54,7 @@ protected: std::string ConfigName; // The windows module definition source file (.def), if any. - std::string ModuleDefinitionFile; + cmSourceFile const* ModuleDefinitionFile; // Target-wide Fortran module output directory. bool FortranModuleDirectoryComputed; diff --git a/Source/cmGeneratorTarget.cxx b/Source/cmGeneratorTarget.cxx index 1f74eda..40afc0e 100644 --- a/Source/cmGeneratorTarget.cxx +++ b/Source/cmGeneratorTarget.cxx @@ -573,7 +573,7 @@ static void handleSystemIncludesDep(cmLocalGenerator *lg, { \ std::vector<cmSourceFile*> sourceFiles; \ this->GetSourceFiles(sourceFiles, config); \ - TagVisitor<DATA ## Tag DATATYPE> visitor(this, data); \ + TagVisitor< DATA##Tag DATATYPE > visitor(this, data); \ for(std::vector<cmSourceFile*>::const_iterator si = sourceFiles.begin(); \ si != sourceFiles.end(); ++si) \ { \ @@ -2095,12 +2095,18 @@ cmGeneratorTarget::CompileInfo const* cmGeneratorTarget::GetCompileInfo( } //---------------------------------------------------------------------------- -std::string +cmSourceFile const* cmGeneratorTarget::GetModuleDefinitionFile(const std::string& config) const { - std::string data; - IMPLEMENT_VISIT_IMPL(ModuleDefinitionFile, COMMA std::string) - return data; + std::vector<cmSourceFile const*> data; + IMPLEMENT_VISIT_IMPL(ModuleDefinitionFile, + COMMA std::vector<cmSourceFile const*>) + if(!data.empty()) + { + return data.front(); + } + + return 0; } bool cmGeneratorTarget::IsDLLPlatform() const diff --git a/Source/cmGeneratorTarget.h b/Source/cmGeneratorTarget.h index da59a98..bd23477 100644 --- a/Source/cmGeneratorTarget.h +++ b/Source/cmGeneratorTarget.h @@ -220,7 +220,7 @@ public: cmLocalGenerator* LocalGenerator; cmGlobalGenerator const* GlobalGenerator; - std::string GetModuleDefinitionFile(const std::string& config) const; + cmSourceFile const* GetModuleDefinitionFile(const std::string& config) const; /** Return whether or not the target is for a DLL platform. */ bool IsDLLPlatform() const; diff --git a/Source/cmMakefileTargetGenerator.cxx b/Source/cmMakefileTargetGenerator.cxx index 7acccb3..eedc6ab 100644 --- a/Source/cmMakefileTargetGenerator.cxx +++ b/Source/cmMakefileTargetGenerator.cxx @@ -1497,9 +1497,9 @@ void cmMakefileTargetGenerator this->AppendTargetDepends(depends); // Add a dependency on the link definitions file, if any. - if(!this->ModuleDefinitionFile.empty()) + if(this->ModuleDefinitionFile) { - depends.push_back(this->ModuleDefinitionFile); + depends.push_back(this->ModuleDefinitionFile->GetFullPath()); } // Add a dependency on user-specified manifest files, if any. diff --git a/Source/cmNinjaTargetGenerator.cxx b/Source/cmNinjaTargetGenerator.cxx index dc2c7a6..5ff4fdb 100644 --- a/Source/cmNinjaTargetGenerator.cxx +++ b/Source/cmNinjaTargetGenerator.cxx @@ -195,9 +195,10 @@ 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->ModuleDefinitionFile.empty()) + if(this->ModuleDefinitionFile) { - result.push_back(this->ConvertToNinjaPath(this->ModuleDefinitionFile)); + result.push_back(this->ConvertToNinjaPath( + this->ModuleDefinitionFile->GetFullPath())); } // Add a dependency on user-specified manifest files, if any. diff --git a/Source/cmVisualStudio10TargetGenerator.cxx b/Source/cmVisualStudio10TargetGenerator.cxx index 7da00fa..6e1fb5b 100644 --- a/Source/cmVisualStudio10TargetGenerator.cxx +++ b/Source/cmVisualStudio10TargetGenerator.cxx @@ -1613,6 +1613,12 @@ void cmVisualStudio10TargetGenerator::WriteAllSources() (*this->BuildFileStream ) << cmVS10EscapeXML(obj) << "\" />\n"; } + if (cmSourceFile const* defsrc = + this->GeneratorTarget->GetModuleDefinitionFile("")) + { + this->WriteSource("None", defsrc); + } + if (this->IsMissingFiles) { this->WriteMissingFiles(); @@ -2642,10 +2648,11 @@ cmVisualStudio10TargetGenerator::ComputeLinkOptions(std::string const& config) if(this->MSTools) { - std::string def = this->GeneratorTarget->GetModuleDefinitionFile(""); - if(!def.empty()) + if (cmSourceFile const* defsrc = + this->GeneratorTarget->GetModuleDefinitionFile("")) { - linkOptions.AddFlag("ModuleDefinitionFile", def.c_str()); + linkOptions.AddFlag("ModuleDefinitionFile", + defsrc->GetFullPath().c_str()); } linkOptions.AppendFlag("IgnoreSpecificDefaultLibraries", "%(IgnoreSpecificDefaultLibraries)"); |