From 6a35c277d03fb4072a92c3a68450d411989e8b0f Mon Sep 17 00:00:00 2001 From: Andrej730 Date: Thu, 23 Oct 2025 21:55:58 +0500 Subject: [PATCH] FindPython: Support getting DEBUG_POSTFIX without requiring Interpreter --- Modules/FindPython/Support.cmake | 11 +++++++---- Tests/RunCMake/UseSWIG/SetPOSTFIX.cmake | 4 +++- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/Modules/FindPython/Support.cmake b/Modules/FindPython/Support.cmake index 6d981a770d..b536c57166 100644 --- a/Modules/FindPython/Support.cmake +++ b/Modules/FindPython/Support.cmake @@ -537,6 +537,13 @@ function (_PYTHON_GET_CONFIG_VAR _PYTHON_PGCV_VALUE NAME) return() endif() + if (NAME STREQUAL "POSTFIX") + if (WIN32 AND _${_PYTHON_PREFIX}_LIBRARY_DEBUG MATCHES "_d${CMAKE_IMPORT_LIBRARY_SUFFIX}$") + set (${_PYTHON_PGCV_VALUE} "_d" PARENT_SCOPE) + endif() + return() + endif() + if (NAME STREQUAL "SOSABI") # assume some default if (CMAKE_SYSTEM_NAME STREQUAL "Windows" OR CMAKE_SYSTEM_NAME MATCHES "MSYS|CYGWIN") @@ -667,10 +674,6 @@ function (_PYTHON_GET_CONFIG_VAR _PYTHON_PGCV_VALUE NAME) else() string (REGEX REPLACE "^\\.(.+)\\.[^.]+$" "\\1" _values "${_values}") endif() - elseif (NAME STREQUAL "POSTFIX") - if (WIN32 AND _${_PYTHON_PREFIX}_LIBRARY_DEBUG MATCHES "_d${CMAKE_IMPORT_LIBRARY_SUFFIX}$") - set (_values "_d") - endif() elseif (NAME STREQUAL "ABIFLAGS" AND WIN32) # config var ABIFLAGS does not exist for version < 3.14, check GIL specific variable execute_process (COMMAND ${_${_PYTHON_PREFIX}_INTERPRETER_LAUNCHER} "${_${_PYTHON_PREFIX}_EXECUTABLE}" -c diff --git a/Tests/RunCMake/UseSWIG/SetPOSTFIX.cmake b/Tests/RunCMake/UseSWIG/SetPOSTFIX.cmake index f627aa5e7c..2c235598ed 100644 --- a/Tests/RunCMake/UseSWIG/SetPOSTFIX.cmake +++ b/Tests/RunCMake/UseSWIG/SetPOSTFIX.cmake @@ -6,7 +6,8 @@ include(CTest) cmake_policy(SET CMP0078 NEW) cmake_policy(SET CMP0086 NEW) -find_package(Python REQUIRED COMPONENTS Interpreter Development) +# Development.Module should be enough to get DEBUG_POSTFIX. +find_package(Python REQUIRED COMPONENTS Development.Module) find_package(SWIG) include(UseSWIG) @@ -23,6 +24,7 @@ else() set (PS ":") endif() +find_package(Python REQUIRED COMPONENTS Interpreter) add_test (NAME SetPOSTFIX COMMAND "${CMAKE_COMMAND}" -E env "PYTHONPATH=${CMAKE_CURRENT_BINARY_DIR}${PS}$" "${Python_INTERPRETER}" "${CMAKE_CURRENT_SOURCE_DIR}/runme.py")