2020-03-03 09:26:56 +09:00
|
|
|
# Licensed to the Apache Software Foundation (ASF) under one
|
|
|
|
|
# or more contributor license agreements. See the NOTICE file
|
|
|
|
|
# distributed with this work for additional information
|
|
|
|
|
# regarding copyright ownership. The ASF licenses this file
|
|
|
|
|
# to you under the Apache License, Version 2.0 (the
|
|
|
|
|
# "License"); you may not use this file except in compliance
|
|
|
|
|
# with the License. You may obtain a copy of the License at
|
|
|
|
|
#
|
|
|
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
|
#
|
|
|
|
|
# Unless required by applicable law or agreed to in writing,
|
|
|
|
|
# software distributed under the License is distributed on an
|
|
|
|
|
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
|
|
|
|
# KIND, either express or implied. See the License for the
|
|
|
|
|
# specific language governing permissions and limitations
|
|
|
|
|
# under the License.
|
|
|
|
|
|
|
|
|
|
# This module finds the libraries corresponding to the Python 3 interpreter
|
|
|
|
|
# and the NumPy package, and sets the following variables:
|
|
|
|
|
# - PYTHON_EXECUTABLE
|
|
|
|
|
# - PYTHON_INCLUDE_DIRS
|
|
|
|
|
# - PYTHON_LIBRARIES
|
|
|
|
|
# - PYTHON_OTHER_LIBS
|
|
|
|
|
# - NUMPY_INCLUDE_DIRS
|
|
|
|
|
|
2022-08-30 13:57:58 +09:00
|
|
|
if(Python3Alt_FOUND)
|
|
|
|
|
return()
|
|
|
|
|
endif()
|
|
|
|
|
|
2022-05-08 05:17:05 +09:00
|
|
|
set(Python3Alt_FIND_PACKAGE_OPTIONS)
|
|
|
|
|
set(Python3Alt_NumPy_FIND_PACKAGE_OPTIONS)
|
|
|
|
|
if(Python3Alt_FIND_VERSION)
|
|
|
|
|
list(APPEND Python3Alt_FIND_PACKAGE_OPTIONS ${Python3Alt_FIND_VERSION})
|
|
|
|
|
endif()
|
|
|
|
|
if(Python3Alt_FIND_REQUIRED)
|
|
|
|
|
list(APPEND Python3Alt_FIND_PACKAGE_OPTIONS REQUIRED)
|
|
|
|
|
list(APPEND Python3Alt_NumPy_FIND_PACKAGE_OPTIONS REQUIRED)
|
|
|
|
|
endif()
|
|
|
|
|
if(Python3Alt_FIND_QUIETLY)
|
|
|
|
|
list(APPEND Python3Alt_FIND_PACKAGE_OPTIONS QUIET)
|
|
|
|
|
list(APPEND Python3Alt_NumPy_FIND_PACKAGE_OPTIONS QUIET)
|
|
|
|
|
endif()
|
|
|
|
|
|
2023-06-27 14:53:32 +09:00
|
|
|
if(CMAKE_VERSION VERSION_LESS 3.18.0)
|
|
|
|
|
# We need libpython to be present, so ask for the full "Development"
|
|
|
|
|
# component on CMake < 3.18, where "Development.Module" is not
|
|
|
|
|
# available.
|
2022-05-08 05:17:05 +09:00
|
|
|
find_package(Python3 ${Python3Alt_FIND_PACKAGE_OPTIONS} COMPONENTS Interpreter
|
|
|
|
|
Development NumPy)
|
2020-03-03 09:26:56 +09:00
|
|
|
else()
|
2022-05-08 05:17:05 +09:00
|
|
|
find_package(Python3 ${Python3Alt_FIND_PACKAGE_OPTIONS}
|
|
|
|
|
COMPONENTS Interpreter Development.Module NumPy)
|
2020-03-03 09:26:56 +09:00
|
|
|
endif()
|
|
|
|
|
|
|
|
|
|
if(NOT Python3_FOUND)
|
|
|
|
|
return()
|
|
|
|
|
endif()
|
|
|
|
|
|
|
|
|
|
set(PYTHON_EXECUTABLE ${Python3_EXECUTABLE})
|
|
|
|
|
set(PYTHON_INCLUDE_DIRS ${Python3_INCLUDE_DIRS})
|
|
|
|
|
set(PYTHON_LIBRARIES ${Python3_LIBRARIES})
|
|
|
|
|
set(PYTHON_OTHER_LIBS)
|
|
|
|
|
|
|
|
|
|
get_target_property(NUMPY_INCLUDE_DIRS Python3::NumPy INTERFACE_INCLUDE_DIRECTORIES)
|
|
|
|
|
|
|
|
|
|
# CMake's python3_add_library() doesn't apply the required extension suffix,
|
|
|
|
|
# detect it ourselves.
|
|
|
|
|
# (https://gitlab.kitware.com/cmake/cmake/issues/20408)
|
2021-06-24 05:25:05 +09:00
|
|
|
execute_process(COMMAND "${PYTHON_EXECUTABLE}" "-c"
|
2024-03-15 02:23:30 +01:00
|
|
|
"import sysconfig; print(sysconfig.get_config_var('EXT_SUFFIX'))"
|
2021-06-24 05:25:05 +09:00
|
|
|
RESULT_VARIABLE _PYTHON_RESULT
|
|
|
|
|
OUTPUT_VARIABLE _PYTHON_STDOUT
|
|
|
|
|
ERROR_VARIABLE _PYTHON_STDERR)
|
2020-03-03 09:26:56 +09:00
|
|
|
|
|
|
|
|
if(NOT _PYTHON_RESULT MATCHES 0)
|
|
|
|
|
if(Python3Alt_FIND_REQUIRED)
|
|
|
|
|
message(FATAL_ERROR "Python 3 config failure:\n${_PYTHON_STDERR}")
|
|
|
|
|
endif()
|
|
|
|
|
endif()
|
|
|
|
|
|
|
|
|
|
string(STRIP ${_PYTHON_STDOUT} _EXT_SUFFIX)
|
|
|
|
|
|
|
|
|
|
function(PYTHON_ADD_MODULE name)
|
|
|
|
|
python3_add_library(${name} MODULE ${ARGN})
|
|
|
|
|
set_target_properties(${name} PROPERTIES SUFFIX ${_EXT_SUFFIX})
|
|
|
|
|
endfunction()
|
|
|
|
|
|
2021-06-24 05:25:05 +09:00
|
|
|
find_package_handle_standard_args(
|
|
|
|
|
Python3Alt REQUIRED_VARS PYTHON_EXECUTABLE PYTHON_INCLUDE_DIRS NUMPY_INCLUDE_DIRS)
|