diff options
author | Brad King <brad.king@kitware.com> | 2023-05-04 13:06:13 +0000 |
---|---|---|
committer | Kitware Robot <kwrobot@kitware.com> | 2023-05-04 09:06:23 -0400 |
commit | 0d2d5a229c1cda842f0e67134637f19fc69de6c6 (patch) | |
tree | a49e9c37852a30be719018dd3572742739e81ad4 /Source/cmGeneratorTarget.cxx | |
parent | bf36ce2ff6122adbbfa4df2d8f731f57ca282d27 (diff) | |
parent | 375e6fdbbe398921de321216125765ba1917a325 (diff) | |
download | cmake-0d2d5a229c1cda842f0e67134637f19fc69de6c6.tar.gz |
Merge topic 'use-linker-depfile'
375e6fdbbe Link step: use linker dependency linker file
24a3e5cda0 cmLocalGenerator::MayBeRelativeToWorkDir: take care of all cases
Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !8443
Diffstat (limited to 'Source/cmGeneratorTarget.cxx')
-rw-r--r-- | Source/cmGeneratorTarget.cxx | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/Source/cmGeneratorTarget.cxx b/Source/cmGeneratorTarget.cxx index 2eae2451bb..897619cbfa 100644 --- a/Source/cmGeneratorTarget.cxx +++ b/Source/cmGeneratorTarget.cxx @@ -8541,6 +8541,30 @@ bool cmGeneratorTarget::IsLinkable() const this->IsExecutableWithExports()); } +bool cmGeneratorTarget::HasLinkDependencyFile(std::string const& config) const +{ + if (this->GetType() != cmStateEnums::EXECUTABLE && + this->GetType() != cmStateEnums::SHARED_LIBRARY && + this->GetType() != cmStateEnums::MODULE_LIBRARY) { + return false; + } + + if (this->Target->GetProperty("LINK_DEPENDS_NO_SHARED").IsOn()) { + // Do not use the linker dependency file because it includes shared + // libraries as well + return false; + } + + const std::string depsUseLinker{ "CMAKE_LINK_DEPENDS_USE_LINKER" }; + auto linkLanguage = this->GetLinkerLanguage(config); + const std::string langDepsUseLinker{ cmStrCat("CMAKE_", linkLanguage, + "_LINK_DEPENDS_USE_LINKER") }; + + return (!this->Makefile->IsDefinitionSet(depsUseLinker) || + this->Makefile->IsOn(depsUseLinker)) && + this->Makefile->IsOn(langDepsUseLinker); +} + bool cmGeneratorTarget::IsFrameworkOnApple() const { return this->Target->IsFrameworkOnApple(); |