From f5a441a616c03739962b52fd8dd0deb48cc9083b Mon Sep 17 00:00:00 2001 From: Marc Chevrier Date: Wed, 31 Aug 2022 11:50:07 +0200 Subject: Xcode: Fix erroneous MACOSX_BUNDLE link Refactoring in commit a2cfa2da4f (GenEx/LINK_LIBRARY: Add features for framework support on Apple, 2022-02-10, v3.24.0-rc1~661^2) accidentally removed a `GetParentDirectory` call. Restore it. Fixes: #23891 --- Source/cmGlobalXCodeGenerator.cxx | 1 + Tests/RunCMake/XcodeProject/BundleLinkBundle.cmake | 14 ++++++++++++++ Tests/RunCMake/XcodeProject/RunCMakeTest.cmake | 10 ++++++++++ Tests/RunCMake/XcodeProject/lib_bundle/CMakeLIsts.txt | 5 +++++ Tests/RunCMake/XcodeProject/lib_bundle/lib_bundle.cpp | 6 ++++++ Tests/RunCMake/XcodeProject/main_bundle.cpp | 9 +++++++++ 6 files changed, 45 insertions(+) create mode 100644 Tests/RunCMake/XcodeProject/BundleLinkBundle.cmake create mode 100644 Tests/RunCMake/XcodeProject/lib_bundle/CMakeLIsts.txt create mode 100644 Tests/RunCMake/XcodeProject/lib_bundle/lib_bundle.cpp create mode 100644 Tests/RunCMake/XcodeProject/main_bundle.cpp diff --git a/Source/cmGlobalXCodeGenerator.cxx b/Source/cmGlobalXCodeGenerator.cxx index d5783ef..b9bbb67 100644 --- a/Source/cmGlobalXCodeGenerator.cxx +++ b/Source/cmGlobalXCodeGenerator.cxx @@ -3622,6 +3622,7 @@ void cmGlobalXCodeGenerator::AddDependAndLinkInformation(cmXCodeObject* target) } } } else { + linkDir = cmSystemTools::GetParentDirectory(linkDir); if (std::find(linkSearchPaths.begin(), linkSearchPaths.end(), linkDir) == linkSearchPaths.end()) { linkSearchPaths.push_back(linkDir); diff --git a/Tests/RunCMake/XcodeProject/BundleLinkBundle.cmake b/Tests/RunCMake/XcodeProject/BundleLinkBundle.cmake new file mode 100644 index 0000000..1f3c19d --- /dev/null +++ b/Tests/RunCMake/XcodeProject/BundleLinkBundle.cmake @@ -0,0 +1,14 @@ +cmake_minimum_required(VERSION 3.23) + +project(BundleLinkBundle CXX) + +add_subdirectory(lib_bundle) + +add_executable(MainBundle MACOSX_BUNDLE main_bundle.cpp) + +target_link_libraries(MainBundle PRIVATE LibBundle) + +set_target_properties(MainBundle PROPERTIES + MACOSX_BUNDLE "YES" + XCODE_LINK_BUILD_PHASE_MODE BUILT_ONLY +) diff --git a/Tests/RunCMake/XcodeProject/RunCMakeTest.cmake b/Tests/RunCMake/XcodeProject/RunCMakeTest.cmake index 80c6b73..d20f5a6 100644 --- a/Tests/RunCMake/XcodeProject/RunCMakeTest.cmake +++ b/Tests/RunCMake/XcodeProject/RunCMakeTest.cmake @@ -151,6 +151,16 @@ endfunction() XcodeXCConfig() +function(BundleLinkBundle) + set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/BundleLinkBundle-build) + run_cmake(BundleLinkBundle) + set(RunCMake_TEST_NO_CLEAN 1) + run_cmake_command(BundleLinkBundle-build ${CMAKE_COMMAND} --build .) +endfunction() + +BundleLinkBundle() + + # Isolate device tests from host architecture selection. unset(ENV{CMAKE_OSX_ARCHITECTURES}) diff --git a/Tests/RunCMake/XcodeProject/lib_bundle/CMakeLIsts.txt b/Tests/RunCMake/XcodeProject/lib_bundle/CMakeLIsts.txt new file mode 100644 index 0000000..7a50ce8 --- /dev/null +++ b/Tests/RunCMake/XcodeProject/lib_bundle/CMakeLIsts.txt @@ -0,0 +1,5 @@ + +add_library(LibBundle lib_bundle.cpp) + +set_target_properties(LibBundle PROPERTIES + MACOSX_BUNDLE YES) diff --git a/Tests/RunCMake/XcodeProject/lib_bundle/lib_bundle.cpp b/Tests/RunCMake/XcodeProject/lib_bundle/lib_bundle.cpp new file mode 100644 index 0000000..9f74584 --- /dev/null +++ b/Tests/RunCMake/XcodeProject/lib_bundle/lib_bundle.cpp @@ -0,0 +1,6 @@ +#include + +void foo() +{ + std::cout << "foobar" << std::endl; +} diff --git a/Tests/RunCMake/XcodeProject/main_bundle.cpp b/Tests/RunCMake/XcodeProject/main_bundle.cpp new file mode 100644 index 0000000..11834ac --- /dev/null +++ b/Tests/RunCMake/XcodeProject/main_bundle.cpp @@ -0,0 +1,9 @@ + +extern void foo(); + +int main() +{ + + foo(); + return 0; +} -- cgit v0.12