From dc5098429b5bd6b5f5c61eb76dcdb79f022b323e Mon Sep 17 00:00:00 2001 From: Brad King Date: Mon, 18 Dec 2023 14:57:01 -0500 Subject: CMakePackageConfigHelpers: Clarify Apple platform selection usage error `generate_apple_platform_selection_file` requires `INSTALL_DESTINATION`. --- Modules/CMakePackageConfigHelpers.cmake | 4 ++++ Tests/RunCMake/CMakePackage/ApplePlatformMissingDest-result.txt | 1 + Tests/RunCMake/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 ab46d09..61e27ae 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 0000000..d00491f --- /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 0000000..03be015 --- /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 0000000..e47b595 --- /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 9fef792..9c1dbd5 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}") -- cgit v0.12