OSX: Allow an empty INSTALL_NAME_DIR to override MACOSX_RPATH.
With this, projects can enable MACOSX_RPATH by default, but still have a way to install libraries with no install name dirs into locations such as /usr/local/lib by setting INSTALL_NAME_DIR="".
This commit is contained in:
parent
84698abb51
commit
78cd884296
|
@ -1615,7 +1615,7 @@ void cmTarget::SetMakefile(cmMakefile* mf)
|
||||||
this->IsApple = this->Makefile->IsOn("APPLE");
|
this->IsApple = this->Makefile->IsOn("APPLE");
|
||||||
|
|
||||||
// Setup default property values.
|
// Setup default property values.
|
||||||
this->SetPropertyDefault("INSTALL_NAME_DIR", "");
|
this->SetPropertyDefault("INSTALL_NAME_DIR", 0);
|
||||||
this->SetPropertyDefault("INSTALL_RPATH", "");
|
this->SetPropertyDefault("INSTALL_RPATH", "");
|
||||||
this->SetPropertyDefault("INSTALL_RPATH_USE_LINK_PATH", "OFF");
|
this->SetPropertyDefault("INSTALL_RPATH_USE_LINK_PATH", "OFF");
|
||||||
this->SetPropertyDefault("SKIP_BUILD_RPATH", "OFF");
|
this->SetPropertyDefault("SKIP_BUILD_RPATH", "OFF");
|
||||||
|
@ -4541,6 +4541,10 @@ bool cmTarget::HasMacOSXRpath(const char* config)
|
||||||
{
|
{
|
||||||
install_name_is_rpath = true;
|
install_name_is_rpath = true;
|
||||||
}
|
}
|
||||||
|
else if(install_name && use_install_name)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -5273,18 +5277,18 @@ std::string cmTarget::GetInstallNameDirForInstallTree()
|
||||||
if(this->Makefile->IsOn("CMAKE_PLATFORM_HAS_INSTALLNAME"))
|
if(this->Makefile->IsOn("CMAKE_PLATFORM_HAS_INSTALLNAME"))
|
||||||
{
|
{
|
||||||
std::string dir;
|
std::string dir;
|
||||||
|
const char* install_name_dir = this->GetProperty("INSTALL_NAME_DIR");
|
||||||
|
|
||||||
if(!this->Makefile->IsOn("CMAKE_SKIP_RPATH") &&
|
if(!this->Makefile->IsOn("CMAKE_SKIP_RPATH") &&
|
||||||
!this->Makefile->IsOn("CMAKE_SKIP_INSTALL_RPATH"))
|
!this->Makefile->IsOn("CMAKE_SKIP_INSTALL_RPATH"))
|
||||||
{
|
{
|
||||||
const char* install_name_dir = this->GetProperty("INSTALL_NAME_DIR");
|
|
||||||
if(install_name_dir && *install_name_dir)
|
if(install_name_dir && *install_name_dir)
|
||||||
{
|
{
|
||||||
dir = install_name_dir;
|
dir = install_name_dir;
|
||||||
dir += "/";
|
dir += "/";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(dir.empty() && this->GetPropertyAsBool("MACOSX_RPATH"))
|
if(!install_name_dir && this->GetPropertyAsBool("MACOSX_RPATH"))
|
||||||
{
|
{
|
||||||
dir = "@rpath/";
|
dir = "@rpath/";
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue