From e86383e135e4cae9d54575445d945df1f6272b3a Mon Sep 17 00:00:00 2001 From: Brad King Date: Fri, 5 Feb 2016 09:40:13 -0500 Subject: [PATCH 1/3] Tests: Use newer policy settings in RunCMake.install test In particular, avoid CMP0042 warnings on OS X. --- Tests/RunCMake/install/CMP0062-NEW.cmake | 2 +- Tests/RunCMake/install/CMP0062-OLD.cmake | 2 +- Tests/RunCMake/install/CMP0062-WARN.cmake | 1 + Tests/RunCMake/install/CMakeLists.txt | 2 +- 4 files changed, 4 insertions(+), 3 deletions(-) diff --git a/Tests/RunCMake/install/CMP0062-NEW.cmake b/Tests/RunCMake/install/CMP0062-NEW.cmake index a696f56fc..9e7a5fb82 100644 --- a/Tests/RunCMake/install/CMP0062-NEW.cmake +++ b/Tests/RunCMake/install/CMP0062-NEW.cmake @@ -1,4 +1,4 @@ - +cmake_policy(VERSION 3.2) cmake_policy(SET CMP0062 NEW) add_library(iface INTERFACE) diff --git a/Tests/RunCMake/install/CMP0062-OLD.cmake b/Tests/RunCMake/install/CMP0062-OLD.cmake index 94b809a98..8874923b4 100644 --- a/Tests/RunCMake/install/CMP0062-OLD.cmake +++ b/Tests/RunCMake/install/CMP0062-OLD.cmake @@ -1,4 +1,4 @@ - +cmake_policy(VERSION 3.2) cmake_policy(SET CMP0062 OLD) add_library(iface INTERFACE) diff --git a/Tests/RunCMake/install/CMP0062-WARN.cmake b/Tests/RunCMake/install/CMP0062-WARN.cmake index 0435a640e..018f82275 100644 --- a/Tests/RunCMake/install/CMP0062-WARN.cmake +++ b/Tests/RunCMake/install/CMP0062-WARN.cmake @@ -1,3 +1,4 @@ +cmake_policy(VERSION 3.2) add_library(iface INTERFACE) export(TARGETS iface FILE "${CMAKE_CURRENT_BINARY_DIR}/exported.cmake") diff --git a/Tests/RunCMake/install/CMakeLists.txt b/Tests/RunCMake/install/CMakeLists.txt index 4b3de84d9..6dd8cdf55 100644 --- a/Tests/RunCMake/install/CMakeLists.txt +++ b/Tests/RunCMake/install/CMakeLists.txt @@ -1,3 +1,3 @@ -cmake_minimum_required(VERSION 2.8.12) +cmake_minimum_required(VERSION 3.4) project(${RunCMake_TEST} NONE) include(${RunCMake_TEST}.cmake) From 47460f3e152a59af81edd816cdfe6e0d54e38090 Mon Sep 17 00:00:00 2001 From: Brad King Date: Thu, 4 Feb 2016 11:45:54 -0500 Subject: [PATCH 2/3] install(EXPORT): Fix crash on target in another directory Refactoring merged by commit v3.5.0-rc1~299 (Merge topic 'use-generator-target', 2015-10-20) in and around commit v3.5.0-rc1~299^2~13 (cmExportSet: Store a cmGeneratorTarget, 2015-10-17) changed export sets to delay looking up actual targets and stores only their names. However, in InstallCommand::HandleExportMode we need to lookup targets immediately to check them for EXPORT_LINK_INTERFACE_LIBRARIES. The check was accidentally made local to the current directory, so if an export set contains a target from another directory the lookup fails and CMake crashes. Fix the check to look up the target name globally, and tolerate when no target is found just in case. Reported-by: Kelly Thompson --- Source/cmInstallCommand.cxx | 8 +++++--- Tests/RunCMake/install/EXPORT-OldIFace.cmake | 6 ++++++ Tests/RunCMake/install/EXPORT-OldIFace/CMakeLists.txt | 2 ++ Tests/RunCMake/install/RunCMakeTest.cmake | 1 + 4 files changed, 14 insertions(+), 3 deletions(-) create mode 100644 Tests/RunCMake/install/EXPORT-OldIFace.cmake create mode 100644 Tests/RunCMake/install/EXPORT-OldIFace/CMakeLists.txt diff --git a/Source/cmInstallCommand.cxx b/Source/cmInstallCommand.cxx index 15a83ee01..2d78a4101 100644 --- a/Source/cmInstallCommand.cxx +++ b/Source/cmInstallCommand.cxx @@ -1374,10 +1374,12 @@ bool cmInstallCommand::HandleExportMode(std::vector const& args) tei != exportSet->GetTargetExports()->end(); ++tei) { cmTargetExport const* te = *tei; - cmTarget* tgt = this->Makefile->FindTarget(te->TargetName); + cmTarget* tgt = + this->Makefile->GetGlobalGenerator()->FindTarget(te->TargetName); const bool newCMP0022Behavior = - tgt->GetPolicyStatusCMP0022() != cmPolicies::WARN - && tgt->GetPolicyStatusCMP0022() != cmPolicies::OLD; + (tgt && + tgt->GetPolicyStatusCMP0022() != cmPolicies::WARN && + tgt->GetPolicyStatusCMP0022() != cmPolicies::OLD); if(!newCMP0022Behavior) { diff --git a/Tests/RunCMake/install/EXPORT-OldIFace.cmake b/Tests/RunCMake/install/EXPORT-OldIFace.cmake new file mode 100644 index 000000000..8dfb46b12 --- /dev/null +++ b/Tests/RunCMake/install/EXPORT-OldIFace.cmake @@ -0,0 +1,6 @@ +enable_language(C) +add_subdirectory(EXPORT-OldIFace) +add_library(foo SHARED empty.c) +target_link_libraries(foo bar) +install(TARGETS foo DESTINATION lib EXPORT fooExport) +install(EXPORT fooExport DESTINATION lib/cmake/foo EXPORT_LINK_INTERFACE_LIBRARIES) diff --git a/Tests/RunCMake/install/EXPORT-OldIFace/CMakeLists.txt b/Tests/RunCMake/install/EXPORT-OldIFace/CMakeLists.txt new file mode 100644 index 000000000..32292e2f6 --- /dev/null +++ b/Tests/RunCMake/install/EXPORT-OldIFace/CMakeLists.txt @@ -0,0 +1,2 @@ +add_library(bar SHARED ../empty.c) +install(TARGETS bar DESTINATION lib EXPORT fooExport) diff --git a/Tests/RunCMake/install/RunCMakeTest.cmake b/Tests/RunCMake/install/RunCMakeTest.cmake index 2c1b29d9c..c2347d89d 100644 --- a/Tests/RunCMake/install/RunCMakeTest.cmake +++ b/Tests/RunCMake/install/RunCMakeTest.cmake @@ -10,6 +10,7 @@ run_cmake(DIRECTORY-DIRECTORY-bad) run_cmake(DIRECTORY-DESTINATION-bad) run_cmake(FILES-DESTINATION-bad) run_cmake(TARGETS-DESTINATION-bad) +run_cmake(EXPORT-OldIFace) run_cmake(CMP0062-OLD) run_cmake(CMP0062-NEW) run_cmake(CMP0062-WARN) From a1ad098dc8fc5204fc797b92faed517337816b82 Mon Sep 17 00:00:00 2001 From: Brad King Date: Mon, 8 Feb 2016 10:44:43 -0500 Subject: [PATCH 3/3] Tests: Avoid OS X 10.5 limitation warning in RunCMake.install test The EXPORT-OldIFace test case uses install(TARGETS) and so generates a warning: CMake Warning in CMakeLists.txt: WARNING: Target "foo" has runtime paths which cannot be changed during install. To change runtime paths, OS X version 10.6 or newer is required. Therefore, runtime paths will not be changed when installing. CMAKE_BUILD_WITH_INSTALL_RPATH may be used to work around this limitation. Set CMAKE_BUILD_WITH_INSTALL_RPATH to avoid the warning since we do not need to run the binaries from the build tree anyway. --- Tests/RunCMake/install/EXPORT-OldIFace.cmake | 1 + 1 file changed, 1 insertion(+) diff --git a/Tests/RunCMake/install/EXPORT-OldIFace.cmake b/Tests/RunCMake/install/EXPORT-OldIFace.cmake index 8dfb46b12..033f68446 100644 --- a/Tests/RunCMake/install/EXPORT-OldIFace.cmake +++ b/Tests/RunCMake/install/EXPORT-OldIFace.cmake @@ -1,4 +1,5 @@ enable_language(C) +set(CMAKE_BUILD_WITH_INSTALL_RPATH 1) add_subdirectory(EXPORT-OldIFace) add_library(foo SHARED empty.c) target_link_libraries(foo bar)