From b20fd1af117df4defd8ecd6f34dfb65d6c9c7ad6 Mon Sep 17 00:00:00 2001 From: Brad King Date: Wed, 11 Oct 2006 12:41:20 -0400 Subject: BUG: Do not collapse the INSTALL_NAME_DIR setting because users may intend to have .. in the path. This makes the makefile generator consistent with the already working Xcode implementation of this feature. Also added a test for @executable_path/.. style settings for this property. --- Source/cmMakefileLibraryTargetGenerator.cxx | 21 +++------------------ Tests/SimpleInstall/CMakeLists.txt | 3 ++- Tests/SimpleInstallS2/CMakeLists.txt | 3 ++- 3 files changed, 7 insertions(+), 20 deletions(-) diff --git a/Source/cmMakefileLibraryTargetGenerator.cxx b/Source/cmMakefileLibraryTargetGenerator.cxx index 006caa7..fa65215 100644 --- a/Source/cmMakefileLibraryTargetGenerator.cxx +++ b/Source/cmMakefileLibraryTargetGenerator.cxx @@ -548,19 +548,9 @@ void cmMakefileLibraryTargetGenerator::WriteLibraryRules std::string install_name_dir; if(this->Target->GetType() == cmTarget::SHARED_LIBRARY) { - // Select whether to generate an install_name directory for the - // install tree or the build tree. + // Get the install_name directory for the build tree. const char* config = this->LocalGenerator->ConfigurationName.c_str(); - if(this->Target->GetPropertyAsBool("BUILD_WITH_INSTALL_RPATH")) - { - install_name_dir = - this->Target->GetInstallNameDirForInstallTree(config); - } - else - { - install_name_dir = - this->Target->GetInstallNameDirForBuildTree(config); - } + install_name_dir = this->Target->GetInstallNameDirForBuildTree(config); // Set the rule variable replacement value. if(install_name_dir.empty()) @@ -572,13 +562,8 @@ void cmMakefileLibraryTargetGenerator::WriteLibraryRules // Convert to a path for the native build tool. install_name_dir = this->LocalGenerator->Convert(install_name_dir.c_str(), - cmLocalGenerator::FULL, + cmLocalGenerator::NONE, cmLocalGenerator::SHELL, false); - - // The Convert method seems to strip trailing slashes, which should - // probably be fixed. Since the only platform supporting install_name - // right now uses forward slashes just add one. - install_name_dir += "/"; vars.TargetInstallNameDir = install_name_dir.c_str(); } } diff --git a/Tests/SimpleInstall/CMakeLists.txt b/Tests/SimpleInstall/CMakeLists.txt index 564b4fa..3d8cdb8 100644 --- a/Tests/SimpleInstall/CMakeLists.txt +++ b/Tests/SimpleInstall/CMakeLists.txt @@ -205,7 +205,8 @@ ELSE(STAGE2) ${CMAKE_CURRENT_SOURCE_DIR}/PreInstall.cmake) SET_TARGET_PROPERTIES(SimpleInstall PROPERTIES POST_INSTALL_SCRIPT ${CMAKE_CURRENT_SOURCE_DIR}/PostInstall.cmake) - SET_TARGET_PROPERTIES(test4 PROPERTIES VERSION 1.2 SOVERSION 3) + SET_TARGET_PROPERTIES(test4 PROPERTIES VERSION 1.2 SOVERSION 3 + INSTALL_NAME_DIR @executable_path/../lib) ENDIF(STAGE2) IF(CMAKE_CONFIGURATION_TYPES) diff --git a/Tests/SimpleInstallS2/CMakeLists.txt b/Tests/SimpleInstallS2/CMakeLists.txt index 564b4fa..3d8cdb8 100644 --- a/Tests/SimpleInstallS2/CMakeLists.txt +++ b/Tests/SimpleInstallS2/CMakeLists.txt @@ -205,7 +205,8 @@ ELSE(STAGE2) ${CMAKE_CURRENT_SOURCE_DIR}/PreInstall.cmake) SET_TARGET_PROPERTIES(SimpleInstall PROPERTIES POST_INSTALL_SCRIPT ${CMAKE_CURRENT_SOURCE_DIR}/PostInstall.cmake) - SET_TARGET_PROPERTIES(test4 PROPERTIES VERSION 1.2 SOVERSION 3) + SET_TARGET_PROPERTIES(test4 PROPERTIES VERSION 1.2 SOVERSION 3 + INSTALL_NAME_DIR @executable_path/../lib) ENDIF(STAGE2) IF(CMAKE_CONFIGURATION_TYPES) -- cgit v0.12