summaryrefslogtreecommitdiffstats
path: root/Source
diff options
context:
space:
mode:
authorDavid Cole <david.cole@kitware.com>2012-03-06 20:27:54 (GMT)
committerCMake Topic Stage <kwrobot@kitware.com>2012-03-06 20:27:54 (GMT)
commit50f9db9b00dedd53789ae446475fef790e2534df (patch)
tree71cff1f9c91b099334830614873fc6852b3228d1 /Source
parente872b0d2b8af28297ce4d3dfb9f751003e50e65c (diff)
parent635bf50c27aef184bfa1698953dd44361e1fb2f9 (diff)
downloadCMake-50f9db9b00dedd53789ae446475fef790e2534df.zip
CMake-50f9db9b00dedd53789ae446475fef790e2534df.tar.gz
CMake-50f9db9b00dedd53789ae446475fef790e2534df.tar.bz2
Merge topic 'skip-install-rpath'
635bf50 Add an option to skip RPATH during installation.
Diffstat (limited to 'Source')
-rw-r--r--Source/cmComputeLinkInformation.cxx1
-rw-r--r--Source/cmDocumentVariables.cxx18
-rw-r--r--Source/cmTarget.cxx6
3 files changed, 22 insertions, 3 deletions
diff --git a/Source/cmComputeLinkInformation.cxx b/Source/cmComputeLinkInformation.cxx
index 57fd5b4..df78bf8 100644
--- a/Source/cmComputeLinkInformation.cxx
+++ b/Source/cmComputeLinkInformation.cxx
@@ -1772,6 +1772,7 @@ void cmComputeLinkInformation::GetRPath(std::vector<std::string>& runtimeDirs,
!linking_for_install);
bool use_link_rpath =
outputRuntime && linking_for_install &&
+ !this->Makefile->IsOn("CMAKE_SKIP_INSTALL_RPATH") &&
this->Target->GetPropertyAsBool("INSTALL_RPATH_USE_LINK_PATH");
// Construct the RPATH.
diff --git a/Source/cmDocumentVariables.cxx b/Source/cmDocumentVariables.cxx
index 80f6b87..897e516 100644
--- a/Source/cmDocumentVariables.cxx
+++ b/Source/cmDocumentVariables.cxx
@@ -355,7 +355,9 @@ void cmDocumentVariables::DefineVariables(cmake* cm)
"If this is set to TRUE, then the rpath information "
"is not added to compiled executables. The default "
"is to add rpath information if the platform supports it. "
- "This allows for easy running from the build tree.",false,
+ "This allows for easy running from the build tree. To omit RPATH"
+ "in the install step, but not the build step, use "
+ "CMAKE_SKIP_INSTALL_RPATH instead.",false,
"Variables that Provide Information");
cm->DefineProperty
("CMAKE_SOURCE_DIR", cmProperty::VARIABLE,
@@ -1201,6 +1203,20 @@ void cmDocumentVariables::DefineVariables(cmake* cm)
"Variables that Control the Build");
cm->DefineProperty
+ ("CMAKE_SKIP_INSTALL_RPATH", cmProperty::VARIABLE,
+ "Do not include RPATHs in the install tree.",
+ "Normally CMake uses the build tree for the RPATH when building "
+ "executables etc on systems that use RPATH. When the software "
+ "is installed the executables etc are relinked by CMake to have "
+ "the install RPATH. If this variable is set to true then the software "
+ "is always installed without RPATH, even if RPATH is enabled when "
+ "building. This can be useful for example to allow running tests from "
+ "the build directory with RPATH enabled before the installation step. "
+ "To omit RPATH in both the build and install steps, use "
+ "CMAKE_SKIP_RPATH instead.",false,
+ "Variables that Control the Build");
+
+ cm->DefineProperty
("CMAKE_EXE_LINKER_FLAGS", cmProperty::VARIABLE,
"Linker flags used to create executables.",
"Flags used by the linker when creating an executable.",false,
diff --git a/Source/cmTarget.cxx b/Source/cmTarget.cxx
index 817375e..2ec97c8 100644
--- a/Source/cmTarget.cxx
+++ b/Source/cmTarget.cxx
@@ -3592,7 +3592,8 @@ bool cmTarget::HaveBuildTreeRPATH()
bool cmTarget::HaveInstallTreeRPATH()
{
const char* install_rpath = this->GetProperty("INSTALL_RPATH");
- return install_rpath && *install_rpath;
+ return (install_rpath && *install_rpath) &&
+ !this->Makefile->IsOn("CMAKE_SKIP_INSTALL_RPATH");
}
//----------------------------------------------------------------------------
@@ -3699,7 +3700,8 @@ std::string cmTarget::GetInstallNameDirForInstallTree(const char* config,
{
std::string dir;
- if(!this->Makefile->IsOn("CMAKE_SKIP_RPATH"))
+ if(!this->Makefile->IsOn("CMAKE_SKIP_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)