summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarc Chevrier <marc.chevrier@gmail.com>2022-06-25 14:45:29 +0200
committerBrad King <brad.king@kitware.com>2022-06-27 13:16:29 -0400
commitece3bedbf2cdc4857f19e2fceafa98a3f8002b4a (patch)
treeaf598733f02817680c8f8effb17bd5d0b0b6df7f
parent8c562ece28b7a13ddb734b8c51710ebafe9ac570 (diff)
downloadcmake-ece3bedbf2cdc4857f19e2fceafa98a3f8002b4a.tar.gz
FindPython: fix error on multiple queries with different COMPONENTS
Ensure that multiple queries with different COMPONENTS specified in different sub-directories are fully supported.
-rw-r--r--Modules/FindPython/Support.cmake6
-rw-r--r--Tests/FindPython/CMakeLists.txt13
-rw-r--r--Tests/FindPython/DifferentComponents/CMakeLists.txt7
-rw-r--r--Tests/FindPython/DifferentComponents/subdir/CMakeLists.txt2
4 files changed, 26 insertions, 2 deletions
diff --git a/Modules/FindPython/Support.cmake b/Modules/FindPython/Support.cmake
index 8e98500f46..c4fae6b013 100644
--- a/Modules/FindPython/Support.cmake
+++ b/Modules/FindPython/Support.cmake
@@ -2861,7 +2861,8 @@ if (("Development.Module" IN_LIST ${_PYTHON_PREFIX}_FIND_COMPONENTS
endif()
unset (_${_PYTHON_PREFIX}_INCLUDE_HINTS)
- if (_${_PYTHON_PREFIX}_LIBRARY_RELEASE)
+ if ("LIBRARY" IN_LIST _${_PYTHON_PREFIX}_FIND_DEVELOPMENT_ARTIFACTS
+ AND _${_PYTHON_PREFIX}_LIBRARY_RELEASE)
# Use the library's install prefix as a hint
if (_${_PYTHON_PREFIX}_LIBRARY_RELEASE MATCHES "^(.+/Frameworks/Python.framework/Versions/[0-9.]+)")
list (APPEND _${_PYTHON_PREFIX}_INCLUDE_HINTS "${CMAKE_MATCH_1}")
@@ -2945,7 +2946,8 @@ if (("Development.Module" IN_LIST ${_PYTHON_PREFIX}_FIND_COMPONENTS
if (_${_PYTHON_PREFIX}_INCLUDE_DIR)
# retrieve version from header file
_python_get_version (INCLUDE PREFIX _${_PYTHON_PREFIX}_INC_)
- if (_${_PYTHON_PREFIX}_LIBRARY_RELEASE)
+ if ("LIBRARY" IN_LIST _${_PYTHON_PREFIX}_FIND_DEVELOPMENT_ARTIFACTS
+ AND _${_PYTHON_PREFIX}_LIBRARY_RELEASE)
if ("${_${_PYTHON_PREFIX}_INC_VERSION_MAJOR}.${_${_PYTHON_PREFIX}_INC_VERSION_MINOR}"
VERSION_EQUAL _${_PYTHON_PREFIX}_VERSION)
# update versioning
diff --git a/Tests/FindPython/CMakeLists.txt b/Tests/FindPython/CMakeLists.txt
index 520ba9e166..d4cf36b33d 100644
--- a/Tests/FindPython/CMakeLists.txt
+++ b/Tests/FindPython/CMakeLists.txt
@@ -423,6 +423,19 @@ if(CMake_TEST_FindPython)
--test-command ${CMAKE_CTEST_COMMAND} -V -C $<CONFIGURATION>
)
+ add_test(NAME FindPython.DifferentComponents COMMAND
+ ${CMAKE_CTEST_COMMAND} -C $<CONFIGURATION>
+ --build-and-test
+ "${CMake_SOURCE_DIR}/Tests/FindPython/DifferentComponents"
+ "${CMake_BINARY_DIR}/Tests/FindPython/DifferentComponents"
+ ${build_generator_args}
+ --build-project DifferentComponents
+ --build-options ${build_options} "-Dbuild_generator_args=${build_generator_args}"
+ "-DCMake_SOURCE_DIR=${CMake_SOURCE_DIR}"
+ "-DCMake_BINARY_DIR=${CMake_BINARY_DIR}"
+ --test-command ${CMAKE_CTEST_COMMAND} -V -C $<CONFIGURATION>
+ )
+
if (CMAKE_SYSTEM_NAME MATCHES "Linux|Darwin")
add_test(NAME FindPython.Interpreter.SOABI COMMAND
${CMAKE_CTEST_COMMAND} -C $<CONFIGURATION>
diff --git a/Tests/FindPython/DifferentComponents/CMakeLists.txt b/Tests/FindPython/DifferentComponents/CMakeLists.txt
new file mode 100644
index 0000000000..7476632a4e
--- /dev/null
+++ b/Tests/FindPython/DifferentComponents/CMakeLists.txt
@@ -0,0 +1,7 @@
+cmake_minimum_required(VERSION 3.1)
+
+project(TestDifferentComponents LANGUAGES C)
+
+add_subdirectory(subdir)
+
+find_package(Python3 REQUIRED COMPONENTS Development.Module)
diff --git a/Tests/FindPython/DifferentComponents/subdir/CMakeLists.txt b/Tests/FindPython/DifferentComponents/subdir/CMakeLists.txt
new file mode 100644
index 0000000000..98fcd5f51c
--- /dev/null
+++ b/Tests/FindPython/DifferentComponents/subdir/CMakeLists.txt
@@ -0,0 +1,2 @@
+
+find_package(Python3 REQUIRED COMPONENTS Development)