mirror of
https://github.com/Kitware/CMake.git
synced 2026-01-11 16:32:14 -06:00
FindPython: Use bracket arguments for python code blocks
This commit is contained in:
@@ -588,7 +588,22 @@ function (_PYTHON_GET_CONFIG_VAR _PYTHON_PGCV_VALUE NAME)
|
||||
if ("Interpreter" IN_LIST ${_PYTHON_BASE}_FIND_COMPONENTS AND _${_PYTHON_PREFIX}_EXECUTABLE
|
||||
AND (_${_PYTHON_PREFIX}_CROSSCOMPILING OR NOT CMAKE_CROSSCOMPILING))
|
||||
if (NAME STREQUAL "PREFIX")
|
||||
execute_process (COMMAND ${_${_PYTHON_PREFIX}_INTERPRETER_LAUNCHER} "${_${_PYTHON_PREFIX}_EXECUTABLE}" -c "import sys\ntry:\n import sysconfig\n sys.stdout.write(';'.join([sysconfig.get_config_var('base') or '', sysconfig.get_config_var('installed_base') or '']))\nexcept Exception:\n from distutils import sysconfig\n sys.stdout.write(';'.join([sysconfig.PREFIX,sysconfig.EXEC_PREFIX,sysconfig.BASE_EXEC_PREFIX]))"
|
||||
execute_process (COMMAND ${_${_PYTHON_PREFIX}_INTERPRETER_LAUNCHER} "${_${_PYTHON_PREFIX}_EXECUTABLE}" -c [==[
|
||||
import sys
|
||||
try:
|
||||
import sysconfig
|
||||
sys.stdout.write(';'.join([
|
||||
sysconfig.get_config_var('base') or '',
|
||||
sysconfig.get_config_var('installed_base') or '',
|
||||
]))
|
||||
except Exception:
|
||||
from distutils import sysconfig
|
||||
sys.stdout.write(';'.join([
|
||||
sysconfig.PREFIX,
|
||||
sysconfig.EXEC_PREFIX,
|
||||
sysconfig.BASE_EXEC_PREFIX,
|
||||
]))
|
||||
]==]
|
||||
RESULT_VARIABLE _result
|
||||
OUTPUT_VARIABLE _values
|
||||
ERROR_QUIET
|
||||
@@ -605,7 +620,23 @@ function (_PYTHON_GET_CONFIG_VAR _PYTHON_PGCV_VALUE NAME)
|
||||
set (_scheme "posix_prefix")
|
||||
endif()
|
||||
execute_process (COMMAND ${_${_PYTHON_PREFIX}_INTERPRETER_LAUNCHER} "${_${_PYTHON_PREFIX}_EXECUTABLE}" -c
|
||||
"import sys\ntry:\n import sysconfig\n sys.stdout.write(';'.join([sysconfig.get_path('platinclude'),sysconfig.get_path('platinclude','${_scheme}'),sysconfig.get_path('include'),sysconfig.get_path('include','${_scheme}')]))\nexcept Exception:\n from distutils import sysconfig\n sys.stdout.write(';'.join([sysconfig.get_python_inc(plat_specific=True),sysconfig.get_python_inc(plat_specific=False)]))"
|
||||
[==[
|
||||
import sys
|
||||
try:
|
||||
import sysconfig
|
||||
sys.stdout.write(';'.join([
|
||||
sysconfig.get_path('platinclude'),
|
||||
sysconfig.get_path('platinclude', sys.argv[1]),
|
||||
sysconfig.get_path('include'),
|
||||
sysconfig.get_path('include', sys.argv[1]),
|
||||
]))
|
||||
except Exception:
|
||||
from distutils import sysconfig
|
||||
sys.stdout.write(';'.join([
|
||||
sysconfig.get_python_inc(plat_specific=True),
|
||||
sysconfig.get_python_inc(plat_specific=False),
|
||||
]))
|
||||
]==] "${_scheme}"
|
||||
RESULT_VARIABLE _result
|
||||
OUTPUT_VARIABLE _values
|
||||
ERROR_QUIET
|
||||
@@ -618,7 +649,15 @@ function (_PYTHON_GET_CONFIG_VAR _PYTHON_PGCV_VALUE NAME)
|
||||
elseif (NAME STREQUAL "SOABI")
|
||||
# first step: compute SOABI form EXT_SUFFIX config variable
|
||||
execute_process (COMMAND ${_${_PYTHON_PREFIX}_INTERPRETER_LAUNCHER} "${_${_PYTHON_PREFIX}_EXECUTABLE}" -c
|
||||
"import sys\ntry:\n import sysconfig\n sys.stdout.write(sysconfig.get_config_var('EXT_SUFFIX') or '')\nexcept Exception:\n from distutils import sysconfig;sys.stdout.write(sysconfig.get_config_var('EXT_SUFFIX') or '')"
|
||||
[==[
|
||||
import sys
|
||||
try:
|
||||
import sysconfig
|
||||
sys.stdout.write(sysconfig.get_config_var('EXT_SUFFIX') or '')
|
||||
except Exception:
|
||||
from distutils import sysconfig
|
||||
sys.stdout.write(sysconfig.get_config_var('EXT_SUFFIX') or '')
|
||||
]==]
|
||||
RESULT_VARIABLE _result
|
||||
OUTPUT_VARIABLE _values
|
||||
ERROR_QUIET
|
||||
@@ -639,7 +678,21 @@ function (_PYTHON_GET_CONFIG_VAR _PYTHON_PGCV_VALUE NAME)
|
||||
# second step: use SOABI or SO config variables as fallback
|
||||
if (NOT _values)
|
||||
execute_process (COMMAND ${_${_PYTHON_PREFIX}_INTERPRETER_LAUNCHER} "${_${_PYTHON_PREFIX}_EXECUTABLE}" -c
|
||||
"import sys\ntry:\n import sysconfig\n sys.stdout.write(';'.join([sysconfig.get_config_var('SOABI') or '',sysconfig.get_config_var('SO') or '']))\nexcept Exception:\n from distutils import sysconfig;sys.stdout.write(';'.join([sysconfig.get_config_var('SOABI') or '',sysconfig.get_config_var('SO') or '']))"
|
||||
[==[
|
||||
import sys
|
||||
try:
|
||||
import sysconfig
|
||||
sys.stdout.write(';'.join([
|
||||
sysconfig.get_config_var('SOABI') or '',
|
||||
sysconfig.get_config_var('SO') or '',
|
||||
]))
|
||||
except Exception:
|
||||
from distutils import sysconfig
|
||||
sys.stdout.write(';'.join([
|
||||
sysconfig.get_config_var('SOABI') or '',
|
||||
sysconfig.get_config_var('SO') or '',
|
||||
]))
|
||||
]==]
|
||||
RESULT_VARIABLE _result
|
||||
OUTPUT_VARIABLE _soabi
|
||||
ERROR_QUIET
|
||||
@@ -664,7 +717,12 @@ function (_PYTHON_GET_CONFIG_VAR _PYTHON_PGCV_VALUE NAME)
|
||||
endif()
|
||||
endif()
|
||||
elseif (NAME STREQUAL "SOSABI")
|
||||
execute_process (COMMAND ${_${_PYTHON_PREFIX}_INTERPRETER_LAUNCHER} "${_${_PYTHON_PREFIX}_EXECUTABLE}" -c "import sys\nimport re\nimport importlib.machinery\nsys.stdout.write(next(filter(lambda x: re.search('^\\.abi', x), importlib.machinery.EXTENSION_SUFFIXES)))"
|
||||
execute_process (COMMAND ${_${_PYTHON_PREFIX}_INTERPRETER_LAUNCHER} "${_${_PYTHON_PREFIX}_EXECUTABLE}" -c [==[
|
||||
import sys
|
||||
import re
|
||||
import importlib.machinery
|
||||
sys.stdout.write(next(filter(lambda x: re.search('^\\.abi', x), importlib.machinery.EXTENSION_SUFFIXES)))
|
||||
]==]
|
||||
RESULT_VARIABLE _result
|
||||
OUTPUT_VARIABLE _values
|
||||
ERROR_QUIET
|
||||
@@ -677,7 +735,14 @@ function (_PYTHON_GET_CONFIG_VAR _PYTHON_PGCV_VALUE NAME)
|
||||
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
|
||||
"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>')"
|
||||
[==[
|
||||
import sys
|
||||
import sysconfig
|
||||
try:
|
||||
sys.stdout.write(sysconfig.get_config_var('ABIFLAGS'))
|
||||
except Exception:
|
||||
sys.stdout.write('t' if sysconfig.get_config_var('Py_GIL_DISABLED') == 1 else '<none>')
|
||||
]==]
|
||||
RESULT_VARIABLE _result
|
||||
OUTPUT_VARIABLE _values
|
||||
ERROR_QUIET
|
||||
@@ -692,7 +757,15 @@ function (_PYTHON_GET_CONFIG_VAR _PYTHON_PGCV_VALUE NAME)
|
||||
set (config_flag "LIBPL")
|
||||
endif()
|
||||
execute_process (COMMAND ${_${_PYTHON_PREFIX}_INTERPRETER_LAUNCHER} "${_${_PYTHON_PREFIX}_EXECUTABLE}" -c
|
||||
"import sys\ntry:\n import sysconfig\n sys.stdout.write(sysconfig.get_config_var('${config_flag}'))\nexcept Exception:\n from distutils import sysconfig\n sys.stdout.write(sysconfig.get_config_var('${config_flag}'))"
|
||||
[=[
|
||||
import sys
|
||||
try:
|
||||
import sysconfig
|
||||
sys.stdout.write(sysconfig.get_config_var(sys.argv[1]))
|
||||
except Exception:
|
||||
from distutils import sysconfig
|
||||
sys.stdout.write(sysconfig.get_config_var(sys.argv[1]))
|
||||
]=] "${config_flag}"
|
||||
RESULT_VARIABLE _result
|
||||
OUTPUT_VARIABLE _values
|
||||
ERROR_QUIET
|
||||
@@ -1061,7 +1134,7 @@ function (_PYTHON_VALIDATE_INTERPRETER)
|
||||
AND (_${_PYTHON_PREFIX}_CROSSCOMPILING OR NOT CMAKE_CROSSCOMPILING))
|
||||
# In this case, interpreter must have same architecture as environment
|
||||
execute_process (COMMAND ${_${_PYTHON_PREFIX}_INTERPRETER_LAUNCHER} "${_${_PYTHON_PREFIX}_EXECUTABLE}" -c
|
||||
"import sys, struct; sys.stdout.write(str(struct.calcsize(\"P\")))"
|
||||
"import sys, struct; sys.stdout.write(str(struct.calcsize('P')))"
|
||||
RESULT_VARIABLE result
|
||||
OUTPUT_VARIABLE size
|
||||
ERROR_QUIET
|
||||
@@ -1139,7 +1212,11 @@ function (_PYTHON_VALIDATE_COMPILER)
|
||||
|
||||
# retrieve python environment version from compiler
|
||||
set (working_dir "${CMAKE_CURRENT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/PythonCompilerVersion.dir")
|
||||
file (WRITE "${working_dir}/version.py" "import sys; sys.stdout.write('.'.join([str(x) for x in sys.version_info[:3]])); sys.stdout.flush()\n")
|
||||
file (WRITE "${working_dir}/version.py" [==[
|
||||
import sys
|
||||
sys.stdout.write('.'.join([str(x) for x in sys.version_info[:3]]))
|
||||
sys.stdout.flush()
|
||||
]==])
|
||||
execute_process (COMMAND ${launcher} "${_${_PYTHON_PREFIX}_COMPILER}"
|
||||
${_${_PYTHON_PREFIX}_IRON_PYTHON_COMPILER_ARCH_FLAGS}
|
||||
/target:exe /embed /standalone "${working_dir}/version.py"
|
||||
@@ -2394,7 +2471,25 @@ if ("Interpreter" IN_LIST ${_PYTHON_BASE}_FIND_COMPONENTS)
|
||||
|
||||
# retrieve various package installation directories
|
||||
execute_process (COMMAND ${_${_PYTHON_PREFIX}_INTERPRETER_LAUNCHER} "${_${_PYTHON_PREFIX}_EXECUTABLE}" -c
|
||||
"import sys\nif sys.version_info >= (3,10):\n import sysconfig\n sys.stdout.write(';'.join([sysconfig.get_path('stdlib'),sysconfig.get_path('platstdlib'),sysconfig.get_path('purelib'),sysconfig.get_path('platlib')]))\nelse:\n from distutils import sysconfig\n sys.stdout.write(';'.join([sysconfig.get_python_lib(plat_specific=False,standard_lib=True),sysconfig.get_python_lib(plat_specific=True,standard_lib=True),sysconfig.get_python_lib(plat_specific=False,standard_lib=False),sysconfig.get_python_lib(plat_specific=True,standard_lib=False)]))"
|
||||
[==[
|
||||
import sys
|
||||
if sys.version_info >= (3, 10):
|
||||
import sysconfig
|
||||
sys.stdout.write(';'.join([
|
||||
sysconfig.get_path('stdlib'),
|
||||
sysconfig.get_path('platstdlib'),
|
||||
sysconfig.get_path('purelib'),
|
||||
sysconfig.get_path('platlib'),
|
||||
]))
|
||||
else:
|
||||
from distutils import sysconfig
|
||||
sys.stdout.write(';'.join([
|
||||
sysconfig.get_python_lib(plat_specific=False, standard_lib=True),
|
||||
sysconfig.get_python_lib(plat_specific=True, standard_lib=True),
|
||||
sysconfig.get_python_lib(plat_specific=False, standard_lib=False),
|
||||
sysconfig.get_python_lib(plat_specific=True, standard_lib=False),
|
||||
]))
|
||||
]==]
|
||||
RESULT_VARIABLE _${_PYTHON_PREFIX}_RESULT
|
||||
OUTPUT_VARIABLE _${_PYTHON_PREFIX}_LIBPATHS
|
||||
ERROR_QUIET)
|
||||
@@ -2740,7 +2835,11 @@ if ("Compiler" IN_LIST ${_PYTHON_BASE}_FIND_COMPONENTS)
|
||||
# retrieve python environment version from compiler
|
||||
_python_get_launcher (_${_PYTHON_PREFIX}_COMPILER_LAUNCHER COMPILER)
|
||||
set (_${_PYTHON_PREFIX}_VERSION_DIR "${CMAKE_CURRENT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/PythonCompilerVersion.dir")
|
||||
file (WRITE "${_${_PYTHON_PREFIX}_VERSION_DIR}/version.py" "import sys; sys.stdout.write('.'.join([str(x) for x in sys.version_info[:3]])); sys.stdout.flush()\n")
|
||||
file (WRITE "${_${_PYTHON_PREFIX}_VERSION_DIR}/version.py" [==[
|
||||
import sys
|
||||
sys.stdout.write('.'.join([str(x) for x in sys.version_info[:3]]))
|
||||
sys.stdout.flush()
|
||||
]==])
|
||||
execute_process (COMMAND ${_${_PYTHON_PREFIX}_COMPILER_LAUNCHER} "${_${_PYTHON_PREFIX}_COMPILER}"
|
||||
${_${_PYTHON_PREFIX}_IRON_PYTHON_COMPILER_ARCH_FLAGS}
|
||||
/target:exe /embed /standalone "${_${_PYTHON_PREFIX}_VERSION_DIR}/version.py"
|
||||
@@ -4088,7 +4187,14 @@ if ("NumPy" IN_LIST ${_PYTHON_BASE}_FIND_COMPONENTS AND ${_PYTHON_PREFIX}_Interp
|
||||
|
||||
if (NOT _${_PYTHON_PREFIX}_NumPy_INCLUDE_DIR)
|
||||
execute_process(COMMAND ${${_PYTHON_PREFIX}_INTERPRETER_LAUNCHER} "${_${_PYTHON_PREFIX}_EXECUTABLE}" -c
|
||||
"import sys\ntry: import numpy; sys.stdout.write(numpy.get_include())\nexcept:pass\n"
|
||||
[==[
|
||||
import sys
|
||||
try:
|
||||
import numpy
|
||||
sys.stdout.write(numpy.get_include())
|
||||
except Exception:
|
||||
pass
|
||||
]==]
|
||||
RESULT_VARIABLE _${_PYTHON_PREFIX}_RESULT
|
||||
OUTPUT_VARIABLE _${_PYTHON_PREFIX}_NumPy_PATH
|
||||
ERROR_QUIET
|
||||
@@ -4111,7 +4217,14 @@ if ("NumPy" IN_LIST ${_PYTHON_BASE}_FIND_COMPONENTS AND ${_PYTHON_PREFIX}_Interp
|
||||
|
||||
if (_${_PYTHON_PREFIX}_NumPy_INCLUDE_DIR)
|
||||
execute_process (COMMAND ${${_PYTHON_PREFIX}_INTERPRETER_LAUNCHER} "${_${_PYTHON_PREFIX}_EXECUTABLE}" -c
|
||||
"import sys\ntry: import numpy; sys.stdout.write(numpy.__version__)\nexcept:pass\n"
|
||||
[==[
|
||||
import sys
|
||||
try:
|
||||
import numpy
|
||||
sys.stdout.write(numpy.__version__)
|
||||
except Exception:
|
||||
pass
|
||||
]==]
|
||||
RESULT_VARIABLE _${_PYTHON_PREFIX}_RESULT
|
||||
OUTPUT_VARIABLE _${_PYTHON_PREFIX}_NumPy_VERSION)
|
||||
if (NOT _${_PYTHON_PREFIX}_RESULT)
|
||||
|
||||
Reference in New Issue
Block a user