Переглянути джерело

FindPython: rely on ABIFLAGS on Windows for ABI profile

Starting with Python 3.14, the config_var ABIFLAGS is now also available
on Windows.
Marc Chevrier 5 місяців тому
батько
коміт
811f00f9ad
1 змінених файлів з 3 додано та 5 видалено
  1. 3 5
      Modules/FindPython/Support.cmake

+ 3 - 5
Modules/FindPython/Support.cmake

@@ -625,18 +625,16 @@ function (_PYTHON_GET_CONFIG_VAR _PYTHON_PGCV_VALUE NAME)
         set (_values "_d")
         set (_values "_d")
       endif()
       endif()
     elseif (NAME STREQUAL "ABIFLAGS" AND WIN32)
     elseif (NAME STREQUAL "ABIFLAGS" AND WIN32)
-      # config var ABIFLAGS does not exist, check GIL specific variable
+      # 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
       execute_process (COMMAND ${_${_PYTHON_PREFIX}_INTERPRETER_LAUNCHER} "${_${_PYTHON_PREFIX}_EXECUTABLE}" -c
-                               "import sys; import sysconfig; sys.stdout.write(str(sysconfig.get_config_var('Py_GIL_DISABLED')))"
+                               "import sys\nimport sysconfig\ntry:\n   sys.stdout.write(sysconfig.get_config_var('ABIFLAGS'))\nexcept Exception:\n   sys.stdout.write('t' if sysconfig.get_config_var('Py_GIL_DISABLED') == 1 else '<none>')"
                      RESULT_VARIABLE _result
                      RESULT_VARIABLE _result
                      OUTPUT_VARIABLE _values
                      OUTPUT_VARIABLE _values
                      ERROR_QUIET
                      ERROR_QUIET
                      OUTPUT_STRIP_TRAILING_WHITESPACE)
                      OUTPUT_STRIP_TRAILING_WHITESPACE)
-      if (result OR NOT _values EQUAL "1")
+      if (_result OR NOT _values)
         # assume ABI is not supported or GIL is set
         # assume ABI is not supported or GIL is set
         set (_values "<none>")
         set (_values "<none>")
-      else()
-        set (_values "t")
       endif()
       endif()
     else()
     else()
       set (config_flag "${NAME}")
       set (config_flag "${NAME}")