Merge topic 'rpath-on-mac'

78cd884 OSX: Allow an empty INSTALL_NAME_DIR to override MACOSX_RPATH.
This commit is contained in:
Brad King 2013-08-26 10:28:10 -04:00 committed by CMake Topic Stage
commit 4923c6c724
1 changed files with 7 additions and 3 deletions

View File

@ -1617,7 +1617,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");
@ -4570,6 +4570,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
{ {
@ -5302,18 +5306,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/";
} }