Browse Source

Merge topic 'restore-pkg-prefix-var' into release-3.29

0e4db17764 CMakePackageConfigHelpers: Restore undocumented PACKAGE_PREFIX_DIR variable

Acked-by: Kitware Robot <[email protected]>
Merge-request: !9420
Brad King 1 year ago
parent
commit
df6b2a3d7d

+ 7 - 35
Modules/CMakePackageConfigHelpers.cmake

@@ -377,24 +377,6 @@ macro(WRITE_BASIC_PACKAGE_VERSION_FILE)
   write_basic_config_version_file(${ARGN})
 endmacro()
 
-function(__CMAKE_get_config_file_package_prefix outvar)
-  get_property(counter GLOBAL PROPERTY CMAKE_CONFIGURE_PACKAGE_CONFIG_FILE_COUNTER)
-  if(NOT counter)
-    set(counter 1)
-    set_property(GLOBAL PROPERTY CMAKE_CONFIGURE_PACKAGE_CONFIG_FILE_COUNTER ${counter})
-  endif()
-  set(${outvar} "PACKAGE_\${CMAKE_FIND_PACKAGE_NAME}_COUNTER_${counter}" PARENT_SCOPE)
-endfunction()
-
-function(__CMAKE_increment_config_file_counter)
-  get_property(counter GLOBAL PROPERTY CMAKE_CONFIGURE_PACKAGE_CONFIG_FILE_COUNTER)
-  if(NOT counter)
-    message(FATAL_ERROR "Internal error: global counter unexpectedly not set")
-  endif()
-  math(EXPR counter "${counter} + 1")
-  set_property(GLOBAL PROPERTY CMAKE_CONFIGURE_PACKAGE_CONFIG_FILE_COUNTER ${counter})
-endfunction()
-
 function(CONFIGURE_PACKAGE_CONFIG_FILE _inputFile _outputFile)
   set(options NO_SET_AND_CHECK_MACRO NO_CHECK_REQUIRED_COMPONENTS_MACRO)
   set(oneValueArgs INSTALL_DESTINATION INSTALL_PREFIX)
@@ -430,17 +412,15 @@ function(CONFIGURE_PACKAGE_CONFIG_FILE _inputFile _outputFile)
 
   file(RELATIVE_PATH PACKAGE_RELATIVE_PATH "${absInstallDir}" "${installPrefix}" )
 
-  __CMAKE_get_config_file_package_prefix(prefix_dir)
-
   foreach(var ${CCF_PATH_VARS})
     if(NOT DEFINED ${var})
       message(FATAL_ERROR "Variable ${var} does not exist")
     else()
       if(IS_ABSOLUTE "${${var}}")
-        string(REPLACE "${installPrefix}" "\${${prefix_dir}}"
+        string(REPLACE "${installPrefix}" "\${PACKAGE_PREFIX_DIR}"
                         PACKAGE_${var} "${${var}}")
       else()
-        set(PACKAGE_${var} "\${${prefix_dir}}/${${var}}")
+        set(PACKAGE_${var} "\${PACKAGE_PREFIX_DIR}/${${var}}")
       endif()
     endif()
   endforeach()
@@ -452,7 +432,7 @@ function(CONFIGURE_PACKAGE_CONFIG_FILE _inputFile _outputFile)
 ####### Any changes to this file will be overwritten by the next CMake run ####
 ####### The input file was ${inputFileName}                            ########
 
-get_filename_component(${prefix_dir} \"\${CMAKE_CURRENT_LIST_DIR}/${PACKAGE_RELATIVE_PATH}\" ABSOLUTE)
+get_filename_component(PACKAGE_PREFIX_DIR \"\${CMAKE_CURRENT_LIST_DIR}/${PACKAGE_RELATIVE_PATH}\" ABSOLUTE)
 ")
 
   if("${absInstallDir}" MATCHES "^(/usr)?/lib(64)?/.+")
@@ -463,7 +443,7 @@ get_filename_component(${prefix_dir} \"\${CMAKE_CURRENT_LIST_DIR}/${PACKAGE_RELA
 get_filename_component(_realCurr \"\${CMAKE_CURRENT_LIST_DIR}\" REALPATH)
 get_filename_component(_realOrig \"${absInstallDir}\" REALPATH)
 if(_realCurr STREQUAL _realOrig)
-  set(${prefix_dir} \"${installPrefix}\")
+  set(PACKAGE_PREFIX_DIR \"${installPrefix}\")
 endif()
 unset(_realOrig)
 unset(_realCurr)
@@ -501,10 +481,6 @@ endmacro()
 
   configure_file("${_inputFile}" "${_outputFile}" @ONLY)
 
-  # We're done writing the file. Make sure the next one has a unique prefix dir
-  # variable name (we may have multiple config files for the one package)
-  __CMAKE_increment_config_file_counter()
-
 endfunction()
 
 function(generate_apple_platform_selection_file _output_file)
@@ -545,14 +521,12 @@ function(generate_apple_platform_selection_file _output_file)
     set(_branch_INIT "")
   endif()
 
-  __CMAKE_get_config_file_package_prefix(prefix_dir)
-
   set(_else ELSE)
   foreach(_opt IN LISTS _config_file_options _else)
     if(_gpsf_${_opt})
       set(_config_file "${_gpsf_${_opt}}")
       if(NOT IS_ABSOLUTE "${_config_file}")
-        string(PREPEND _config_file "\${${prefix_dir}}/")
+        string(PREPEND _config_file [[${PACKAGE_PREFIX_DIR}/]])
       endif()
       set(_branch_${_opt} "include(\"${_config_file}\")")
     elseif(_gpsf_ERROR_VARIABLE)
@@ -626,13 +600,11 @@ function(generate_apple_architecture_selection_file _output_file)
     "endif()\n"
     )
 
-  __CMAKE_get_config_file_package_prefix(prefix_dir)
-
   foreach(pair IN ZIP_LISTS _gasf_SINGLE_ARCHITECTURES _gasf_SINGLE_ARCHITECTURE_INCLUDE_FILES)
     set(arch "${pair_0}")
     set(config_file "${pair_1}")
     if(NOT IS_ABSOLUTE "${config_file}")
-      string(PREPEND config_file "\${${prefix_dir}}/")
+      string(PREPEND config_file [[${PACKAGE_PREFIX_DIR}/]])
     endif()
     string(APPEND _branch_code
       "\n"
@@ -647,7 +619,7 @@ function(generate_apple_architecture_selection_file _output_file)
     string(JOIN " " universal_archs "${_gasf_UNIVERSAL_ARCHITECTURES}")
     set(config_file "${_gasf_UNIVERSAL_INCLUDE_FILE}")
     if(NOT IS_ABSOLUTE "${config_file}")
-      string(PREPEND config_file "\${${prefix_dir}}/")
+      string(PREPEND config_file [[${PACKAGE_PREFIX_DIR}/]])
     endif()
     string(APPEND _branch_code
       "\n"

+ 0 - 3
Tests/RunCMake/CMakePackage/ApplePlatformGenSubdir-stdout.txt

@@ -1,3 +0,0 @@
-(-- )?Hello from platform switch
-(-- )?Hello from arch switch
-(-- )?Hello from pkg_a

+ 0 - 50
Tests/RunCMake/CMakePackage/ApplePlatformGenSubdir.cmake

@@ -1,50 +0,0 @@
-set(CMAKE_INSTALL_DATADIR share)
-set(SWITCH_DIR platform/cmake)
-
-include(CMakePackageConfigHelpers)
-
-file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/pkg_a-config.cmake.in [[
-@PACKAGE_INIT@
-include("@PACKAGE_SWITCH_DIR@/platform-switch.cmake")
-include("@PACKAGE_CMAKE_INSTALL_DATADIR@/pkg_a_included.cmake")
-]])
-configure_package_config_file(
-  ${CMAKE_CURRENT_BINARY_DIR}/pkg_a-config.cmake.in
-  ${CMAKE_CURRENT_BINARY_DIR}/install/pkg_a-config.cmake
-  INSTALL_DESTINATION .
-  PATH_VARS CMAKE_INSTALL_DATADIR SWITCH_DIR
-)
-file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/install/${CMAKE_INSTALL_DATADIR}/pkg_a_included.cmake
-  [[message(STATUS "Hello from pkg_a")]]
-)
-
-# To expose re-using the same package prefix variable, we need to use a
-# different install prefix but still with the same package name. This is
-# really contrived and not representative of what a package should do.
-generate_apple_platform_selection_file(
-  ${CMAKE_CURRENT_BINARY_DIR}/install/platform/cmake/platform-switch.cmake
-  INSTALL_PREFIX ${CMAKE_INSTALL_PREFIX}/platform
-  INSTALL_DESTINATION cmake
-  MACOS_INCLUDE_FILE cmake/switch_included.cmake  # relative to install prefix
-)
-file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/install/platform/cmake/switch_included.cmake
-[[
-message(STATUS "Hello from platform switch")
-include("${CMAKE_CURRENT_LIST_DIR}/../arch/cmake/arch-switch.cmake")
-]]
-)
-
-generate_apple_architecture_selection_file(
-  ${CMAKE_CURRENT_BINARY_DIR}/install/platform/arch/cmake/arch-switch.cmake
-  INSTALL_PREFIX ${CMAKE_INSTALL_PREFIX}/platform/arch
-  INSTALL_DESTINATION cmake
-  UNIVERSAL_ARCHITECTURES i386 x86_64 arm64 $(ARCHS_STANDARD)
-  UNIVERSAL_INCLUDE_FILE cmake/switch_included.cmake  # relative to install prefix
-)
-file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/install/platform/arch/cmake/switch_included.cmake
-  [[message(STATUS "Hello from arch switch")]]
-)
-
-find_package(pkg_a REQUIRED NO_DEFAULT_PATH
-  PATHS ${CMAKE_CURRENT_BINARY_DIR}/install
-)

+ 0 - 2
Tests/RunCMake/CMakePackage/NestedConfigFile-stdout.txt

@@ -1,2 +0,0 @@
-(-- )?Hello from pkg_a
-(-- )?Hello from pkg_b

+ 0 - 39
Tests/RunCMake/CMakePackage/NestedConfigFile.cmake

@@ -1,39 +0,0 @@
-set(CMAKE_INSTALL_DATADIR share)
-
-include(CMakePackageConfigHelpers)
-
-file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/pkg_a-config.cmake.in [[
-@PACKAGE_INIT@
-include("@PACKAGE_CMAKE_INSTALL_DATADIR@/pkg_a_included.cmake")
-]])
-configure_package_config_file(
-  ${CMAKE_CURRENT_BINARY_DIR}/pkg_a-config.cmake.in
-  ${CMAKE_CURRENT_BINARY_DIR}/install_pkg_a/pkg_a-config.cmake
-  INSTALL_DESTINATION .
-  PATH_VARS CMAKE_INSTALL_DATADIR
-)
-file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/install_pkg_a/share/pkg_a_included.cmake
-  [[message(STATUS "Hello from pkg_a")]]
-)
-
-file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/pkg_b-config.cmake.in [[
-@PACKAGE_INIT@
-include(CMakeFindDependencyMacro)
-find_dependency(pkg_a NO_DEFAULT_PATH
-    PATHS "@CMAKE_CURRENT_BINARY_DIR@/install_pkg_a"
-)
-include("@PACKAGE_CMAKE_INSTALL_DATADIR@/pkg_b_included.cmake")
-]])
-configure_package_config_file(
-  ${CMAKE_CURRENT_BINARY_DIR}/pkg_b-config.cmake.in
-  ${CMAKE_CURRENT_BINARY_DIR}/install_pkg_b/pkg_b-config.cmake
-  INSTALL_DESTINATION .
-  PATH_VARS CMAKE_INSTALL_DATADIR
-)
-file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/install_pkg_b/share/pkg_b_included.cmake
-  [[message(STATUS "Hello from pkg_b")]]
-)
-
-find_package(pkg_b REQUIRED NO_DEFAULT_PATH
-  PATHS ${CMAKE_CURRENT_BINARY_DIR}/install_pkg_b
-)

+ 0 - 8
Tests/RunCMake/CMakePackage/RunCMakeTest.cmake

@@ -4,8 +4,6 @@ if(NOT RunCMake_GENERATOR_IS_MULTI_CONFIG)
   set(maybe_CMAKE_BUILD_TYPE -DCMAKE_BUILD_TYPE=Release)
 endif()
 
-run_cmake_with_options(NestedConfigFile ${maybe_CMAKE_BUILD_TYPE})
-
 function(apple_export platform system_name archs sysroot)
   set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/apple-export-${platform}-build)
   string(REPLACE ";" "\\;" archs "${archs}")
@@ -80,12 +78,6 @@ if(APPLE AND CMAKE_C_COMPILER_ID STREQUAL "AppleClang")
     set(enable_visionos 1)
   endif()
 
-  string(REPLACE ";" "\\;" macos_archs_for_cmd "${macos_archs}")
-  run_cmake_with_options(ApplePlatformGenSubdir
-    "-DCMAKE_OSX_ARCHITECTURES=${macos_archs_for_cmd}"
-    ${maybe_CMAKE_BUILD_TYPE}
-  )
-
   apple_export(macos Darwin "${macos_archs}" macosx)
   apple_export(ios iOS "arm64" iphoneos)
   apple_export(tvos tvOS "arm64" appletvos)