From 3b9586671c54622db43dbce01d56c5f1d64a8ca0 Mon Sep 17 00:00:00 2001 From: Brad King Date: Mon, 18 Dec 2023 14:12:17 -0500 Subject: [PATCH 1/2] CMakePackageConfigHelpers: Clarify Apple platform selection template name The template added by commit 37bc3400cd (CMakePackageConfigHelpers: Add generate_apple_platform_selection_file(), 2023-11-03) is specific to Apple platforms. Give it an Apple-specific name. --- Modules/CMakePackageConfigHelpers.cmake | 2 +- ...rmSelectionFile.cmake.in => ApplePlatformSelection.cmake.in} | 0 2 files changed, 1 insertion(+), 1 deletion(-) rename Modules/Internal/{PlatformSelectionFile.cmake.in => ApplePlatformSelection.cmake.in} (100%) diff --git a/Modules/CMakePackageConfigHelpers.cmake b/Modules/CMakePackageConfigHelpers.cmake index ab38820602..ab46d0968d 100644 --- a/Modules/CMakePackageConfigHelpers.cmake +++ b/Modules/CMakePackageConfigHelpers.cmake @@ -442,7 +442,7 @@ function(generate_apple_platform_selection_file _output_file) endif() endforeach() - configure_package_config_file("${CMAKE_CURRENT_FUNCTION_LIST_DIR}/Internal/PlatformSelectionFile.cmake.in" "${_output_file}" + configure_package_config_file("${CMAKE_CURRENT_FUNCTION_LIST_DIR}/Internal/ApplePlatformSelection.cmake.in" "${_output_file}" INSTALL_DESTINATION "${_gpsf_INSTALL_DESTINATION}" NO_SET_AND_CHECK_MACRO NO_CHECK_REQUIRED_COMPONENTS_MACRO diff --git a/Modules/Internal/PlatformSelectionFile.cmake.in b/Modules/Internal/ApplePlatformSelection.cmake.in similarity index 100% rename from Modules/Internal/PlatformSelectionFile.cmake.in rename to Modules/Internal/ApplePlatformSelection.cmake.in From dc5098429b5bd6b5f5c61eb76dcdb79f022b323e Mon Sep 17 00:00:00 2001 From: Brad King Date: Mon, 18 Dec 2023 14:57:01 -0500 Subject: [PATCH 2/2] CMakePackageConfigHelpers: Clarify Apple platform selection usage error `generate_apple_platform_selection_file` requires `INSTALL_DESTINATION`. --- Modules/CMakePackageConfigHelpers.cmake | 4 ++++ .../CMakePackage/ApplePlatformMissingDest-result.txt | 1 + .../CMakePackage/ApplePlatformMissingDest-stderr.txt | 6 ++++++ Tests/RunCMake/CMakePackage/ApplePlatformMissingDest.cmake | 4 ++++ Tests/RunCMake/CMakePackage/RunCMakeTest.cmake | 4 ++++ 5 files changed, 19 insertions(+) create mode 100644 Tests/RunCMake/CMakePackage/ApplePlatformMissingDest-result.txt create mode 100644 Tests/RunCMake/CMakePackage/ApplePlatformMissingDest-stderr.txt create mode 100644 Tests/RunCMake/CMakePackage/ApplePlatformMissingDest.cmake diff --git a/Modules/CMakePackageConfigHelpers.cmake b/Modules/CMakePackageConfigHelpers.cmake index ab46d0968d..61e27ae2bf 100644 --- a/Modules/CMakePackageConfigHelpers.cmake +++ b/Modules/CMakePackageConfigHelpers.cmake @@ -428,6 +428,10 @@ function(generate_apple_platform_selection_file _output_file) set(_multi) cmake_parse_arguments(PARSE_ARGV 0 _gpsf "${_options}" "${_single}" "${_multi}") + if(NOT _gpsf_INSTALL_DESTINATION) + message(FATAL_ERROR "No INSTALL_DESTINATION given to generate_apple_platform_selection_file()") + endif() + set(_have_relative 0) foreach(_opt IN LISTS _config_file_options) if(_gpsf_${_opt}) diff --git a/Tests/RunCMake/CMakePackage/ApplePlatformMissingDest-result.txt b/Tests/RunCMake/CMakePackage/ApplePlatformMissingDest-result.txt new file mode 100644 index 0000000000..d00491fd7e --- /dev/null +++ b/Tests/RunCMake/CMakePackage/ApplePlatformMissingDest-result.txt @@ -0,0 +1 @@ +1 diff --git a/Tests/RunCMake/CMakePackage/ApplePlatformMissingDest-stderr.txt b/Tests/RunCMake/CMakePackage/ApplePlatformMissingDest-stderr.txt new file mode 100644 index 0000000000..03be015d27 --- /dev/null +++ b/Tests/RunCMake/CMakePackage/ApplePlatformMissingDest-stderr.txt @@ -0,0 +1,6 @@ +^CMake Error at [^ +]*/Modules/CMakePackageConfigHelpers\.cmake:[0-9]+ \(message\): + No INSTALL_DESTINATION given to generate_apple_platform_selection_file\(\) +Call Stack \(most recent call first\): + ApplePlatformMissingDest\.cmake:[0-9]+ \(generate_apple_platform_selection_file\) + CMakeLists.txt:[0-9]+ \(include\)$ diff --git a/Tests/RunCMake/CMakePackage/ApplePlatformMissingDest.cmake b/Tests/RunCMake/CMakePackage/ApplePlatformMissingDest.cmake new file mode 100644 index 0000000000..e47b5952e4 --- /dev/null +++ b/Tests/RunCMake/CMakePackage/ApplePlatformMissingDest.cmake @@ -0,0 +1,4 @@ +include(CMakePackageConfigHelpers) +generate_apple_platform_selection_file(mylib-config-install.cmake + #missing: INSTALL_DESTINATION lib/cmake/mylib + ) diff --git a/Tests/RunCMake/CMakePackage/RunCMakeTest.cmake b/Tests/RunCMake/CMakePackage/RunCMakeTest.cmake index 9fef7926cf..9c1dbd58c6 100644 --- a/Tests/RunCMake/CMakePackage/RunCMakeTest.cmake +++ b/Tests/RunCMake/CMakePackage/RunCMakeTest.cmake @@ -33,6 +33,10 @@ function(apple_import platform system_name archs sysroot) run_cmake_command(apple-import-${platform}-build ${CMAKE_COMMAND} --build . --config Release) endfunction() +if(APPLE) + run_cmake(ApplePlatformMissingDest) +endif() + if(APPLE AND CMAKE_C_COMPILER_ID STREQUAL "AppleClang") set(apple_install ${RunCMake_BINARY_DIR}/apple-install) file(REMOVE_RECURSE "${apple_install}")