Merge topic 'fix-genex-RPATH-handling'
dcb5907 Fix RPATH information when only a genex is used as a link library.
This commit is contained in:
commit
e6b4641bfa
@ -1816,7 +1816,7 @@ void cmComputeLinkInformation::GetRPath(std::vector<std::string>& runtimeDirs,
|
||||
(outputRuntime && this->Target->HaveInstallTreeRPATH() &&
|
||||
linking_for_install);
|
||||
bool use_build_rpath =
|
||||
(outputRuntime && this->Target->HaveBuildTreeRPATH() &&
|
||||
(outputRuntime && this->Target->HaveBuildTreeRPATH(this->Config) &&
|
||||
!linking_for_install);
|
||||
bool use_link_rpath =
|
||||
outputRuntime && linking_for_install &&
|
||||
|
@ -4253,10 +4253,15 @@ void cmTarget::SetPropertyDefault(const char* property,
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
bool cmTarget::HaveBuildTreeRPATH()
|
||||
bool cmTarget::HaveBuildTreeRPATH(const char *config)
|
||||
{
|
||||
return (!this->GetPropertyAsBool("SKIP_BUILD_RPATH") &&
|
||||
!this->LinkLibraries.empty());
|
||||
if (this->GetPropertyAsBool("SKIP_BUILD_RPATH"))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
std::vector<std::string> libs;
|
||||
this->GetDirectLinkLibraries(config, libs, this);
|
||||
return !libs.empty();
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
@ -4327,7 +4332,7 @@ bool cmTarget::NeedRelinkBeforeInstall(const char* config)
|
||||
// If either a build or install tree rpath is set then the rpath
|
||||
// will likely change between the build tree and install tree and
|
||||
// this target must be relinked.
|
||||
return this->HaveBuildTreeRPATH() || this->HaveInstallTreeRPATH();
|
||||
return this->HaveBuildTreeRPATH(config) || this->HaveInstallTreeRPATH();
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
|
@ -401,7 +401,7 @@ public:
|
||||
*/
|
||||
bool NeedRelinkBeforeInstall(const char* config);
|
||||
|
||||
bool HaveBuildTreeRPATH();
|
||||
bool HaveBuildTreeRPATH(const char *config);
|
||||
bool HaveInstallTreeRPATH();
|
||||
|
||||
/** Return true if builtin chrpath will work for this target */
|
||||
|
Loading…
x
Reference in New Issue
Block a user