Modifications to compile with Python3, lest version of cmake and last
version of swig (2026-04-23) Modifications qui seront validées : modifié : CMakeLists.txt modifié : cmake/modules/OpenCVDetectPython.cmake modifié : src/java/CMakeLists.txt modifié : src/javascript/CMakeLists.txt modifié : src/python/python3/CMakeLists.txt
This commit is contained in:
@@ -1,6 +1,3 @@
|
||||
# From OpenCV Project
|
||||
# SPDX-License-Identifier: BSD-3-Clause
|
||||
#
|
||||
# Find specified Python version
|
||||
# Arguments:
|
||||
# preferred_version (value): Version to check for first
|
||||
@@ -22,36 +19,38 @@
|
||||
# include_dir (variable): Output of found Python include dir
|
||||
# include_dir2 (variable): Output of found Python include dir2
|
||||
# packages_path (variable): Output of found Python packages path
|
||||
|
||||
function(find_python preferred_version min_version library_env include_dir_env
|
||||
found executable version_string version_major version_minor
|
||||
libs_found libs_version_string libraries library debug_libraries
|
||||
debug_library include_path include_dir include_dir2 packages_path)
|
||||
|
||||
if(NOT ${found})
|
||||
if(${executable})
|
||||
set(PYTHON_EXECUTABLE "${${executable}}")
|
||||
set(Python3_EXECUTABLE "${${executable}}")
|
||||
endif()
|
||||
|
||||
find_package(PythonInterp "${preferred_version}")
|
||||
if(NOT PYTHONINTERP_FOUND)
|
||||
find_package(PythonInterp "${min_version}")
|
||||
find_package(Python3 "${preferred_version}" COMPONENTS Interpreter Development)
|
||||
if(NOT Python3_FOUND)
|
||||
find_package(Python3 "${min_version}")
|
||||
endif()
|
||||
|
||||
if(PYTHONINTERP_FOUND)
|
||||
if(Python3_FOUND)
|
||||
# Copy outputs
|
||||
set(_found ${PYTHONINTERP_FOUND})
|
||||
set(_executable ${PYTHON_EXECUTABLE})
|
||||
set(_version_string ${PYTHON_VERSION_STRING})
|
||||
set(_version_major ${PYTHON_VERSION_MAJOR})
|
||||
set(_version_minor ${PYTHON_VERSION_MINOR})
|
||||
set(_version_patch ${PYTHON_VERSION_PATCH})
|
||||
set(_found ${Python3_FOUND})
|
||||
set(_executable ${Python3_EXECUTABLE})
|
||||
set(_version_string ${ython3_VERSION})
|
||||
set(_version_major ${Python3_VERSION_MAJOR})
|
||||
set(_version_minor ${Python3_VERSION_MINOR})
|
||||
set(_version_patch ${Python3_VERSION_PATCH})
|
||||
|
||||
# Clear find_host_package side effects
|
||||
unset(PYTHONINTERP_FOUND)
|
||||
unset(PYTHON_EXECUTABLE CACHE)
|
||||
unset(PYTHON_VERSION_STRING)
|
||||
unset(PYTHON_VERSION_MAJOR)
|
||||
unset(PYTHON_VERSION_MINOR)
|
||||
unset(PYTHON_VERSION_PATCH)
|
||||
unset(Python3_FOUND)
|
||||
unset(Python3_EXECUTABLE CACHE)
|
||||
unset(Python3_VERSION_STRING)
|
||||
unset(Python3_VERSION_MAJOR)
|
||||
unset(Python3_VERSION_MINOR)
|
||||
unset(Python3_VERSION_PATCH)
|
||||
endif()
|
||||
|
||||
if(_found)
|
||||
@@ -61,42 +60,42 @@ if(NOT ${found})
|
||||
# not using _version_string here, because it might not conform to the CMake version format
|
||||
if(CMAKE_CROSSCOMPILING)
|
||||
# builder version can differ from target, matching base version (e.g. 2.7)
|
||||
find_package(PythonLibs "${_version_major_minor}")
|
||||
find_package(Python "${_version_major_minor}" COMPONENTS Interpreter Development)
|
||||
else()
|
||||
find_package(PythonLibs "${_version_major_minor}.${_version_patch}" EXACT)
|
||||
find_package(Python "${_version_major_minor}.${_version_patch}" EXACT COMPONENTS Interpreter Development)
|
||||
endif()
|
||||
|
||||
if(PYTHONLIBS_FOUND)
|
||||
if(Python_FOUND)
|
||||
# Copy outputs
|
||||
set(_libs_found ${PYTHONLIBS_FOUND})
|
||||
set(_libraries ${PYTHON_LIBRARIES})
|
||||
set(_include_path ${PYTHON_INCLUDE_PATH})
|
||||
set(_include_dirs ${PYTHON_INCLUDE_DIRS})
|
||||
set(_debug_libraries ${PYTHON_DEBUG_LIBRARIES})
|
||||
set(_libs_version_string ${PYTHONLIBS_VERSION_STRING})
|
||||
set(_debug_library ${PYTHON_DEBUG_LIBRARY})
|
||||
set(_library ${PYTHON_LIBRARY})
|
||||
set(_library_debug ${PYTHON_LIBRARY_DEBUG})
|
||||
set(_library_release ${PYTHON_LIBRARY_RELEASE})
|
||||
set(_include_dir ${PYTHON_INCLUDE_DIR})
|
||||
set(_include_dir2 ${PYTHON_INCLUDE_DIR2})
|
||||
set(_libs_found ${Python_Development_FOUND})
|
||||
set(_libraries ${Python_LIBRARIES})
|
||||
set(_include_path ${Python_INCLUDE_DIR})
|
||||
set(_include_dirs ${Python_INCLUDE_DIRS})
|
||||
set(_debug_libraries ${Python_LIBRARIES})
|
||||
set(_libs_version_string ${Python_VERSION})
|
||||
set(_debug_library ${Python_LIBRARY})
|
||||
set(_library ${Python_LIBRARY})
|
||||
set(_library_debug ${Python_LIBRARY})
|
||||
set(_library_release ${Python_LIBRARY})
|
||||
set(_include_dir ${Python_INCLUDE_DIR})
|
||||
set(_include_dir2 ${Python_INCLUDE_DIR2})
|
||||
|
||||
# Clear find_package side effects
|
||||
unset(PYTHONLIBS_FOUND)
|
||||
unset(PYTHON_LIBRARIES)
|
||||
unset(PYTHON_INCLUDE_PATH)
|
||||
unset(PYTHON_INCLUDE_DIRS)
|
||||
unset(PYTHON_DEBUG_LIBRARIES)
|
||||
unset(PYTHONLIBS_VERSION_STRING)
|
||||
unset(PYTHON_DEBUG_LIBRARY CACHE)
|
||||
unset(PYTHON_LIBRARY)
|
||||
unset(PYTHON_LIBRARY_DEBUG)
|
||||
unset(PYTHON_LIBRARY_RELEASE)
|
||||
unset(PYTHON_LIBRARY CACHE)
|
||||
unset(PYTHON_LIBRARY_DEBUG CACHE)
|
||||
unset(PYTHON_LIBRARY_RELEASE CACHE)
|
||||
unset(PYTHON_INCLUDE_DIR CACHE)
|
||||
unset(PYTHON_INCLUDE_DIR2 CACHE)
|
||||
unset(Python_Development_FOUND)
|
||||
unset(Python_LIBRARIES)
|
||||
unset(Python_INCLUDE_DIR)
|
||||
unset(Python_INCLUDE_DIRS)
|
||||
unset(Python_LIBRARIES)
|
||||
unset(Python_VERSION)
|
||||
unset(Python_LIBRARY CACHE)
|
||||
unset(Python_LIBRARY)
|
||||
unset(Python_LIBRARY_DEBUG)
|
||||
unset(Python_LIBRARY_RELEASE)
|
||||
unset(Python_LIBRARY CACHE)
|
||||
unset(Python_LIBRARY CACHE)
|
||||
unset(Python_LIBRARY CACHE)
|
||||
unset(Python_INCLUDE_DIR CACHE)
|
||||
unset(Python_INCLUDE_DIR2 CACHE)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
@@ -138,26 +137,26 @@ endfunction(find_python)
|
||||
set(MIN_VER_PYTHON2 2.7)
|
||||
set(MIN_VER_PYTHON3 3.2)
|
||||
|
||||
find_python(2.7 "${MIN_VER_PYTHON2}" PYTHON2_LIBRARY PYTHON2_INCLUDE_DIR
|
||||
PYTHON2INTERP_FOUND PYTHON2_EXECUTABLE PYTHON2_VERSION_STRING
|
||||
PYTHON2_VERSION_MAJOR PYTHON2_VERSION_MINOR PYTHON2LIBS_FOUND
|
||||
PYTHON2LIBS_VERSION_STRING PYTHON2_LIBRARIES PYTHON2_LIBRARY
|
||||
PYTHON2_DEBUG_LIBRARIES PYTHON2_LIBRARY_DEBUG PYTHON2_INCLUDE_PATH
|
||||
PYTHON2_INCLUDE_DIR PYTHON2_INCLUDE_DIR2 PYTHON2_PACKAGES_PATH)
|
||||
#find_python(2.7 "${MIN_VER_PYTHON2}" PYTHON2_LIBRARY PYTHON2_INCLUDE_DIR
|
||||
# Python3_FOUND PYTHON2_EXECUTABLE PYTHON2_VERSION_STRING
|
||||
# PYTHON2_VERSION_MAJOR PYTHON2_VERSION_MINOR PYTHON2LIBS_FOUND
|
||||
# PYTHON2LIBS_VERSION_STRING PYTHON2_LIBRARIES PYTHON2_LIBRARY
|
||||
# PYTHON2_DEBUG_LIBRARIES PYTHON2_LIBRARY_DEBUG PYTHON2_INCLUDE_PATH
|
||||
# PYTHON2_INCLUDE_DIR PYTHON2_INCLUDE_DIR2 PYTHON2_PACKAGES_PATH)
|
||||
|
||||
find_python(3 "${MIN_VER_PYTHON3}" PYTHON3_LIBRARY PYTHON3_INCLUDE_DIR
|
||||
PYTHON3INTERP_FOUND PYTHON3_EXECUTABLE PYTHON3_VERSION_STRING
|
||||
PYTHON3_VERSION_MAJOR PYTHON3_VERSION_MINOR PYTHON3LIBS_FOUND
|
||||
PYTHON3LIBS_VERSION_STRING PYTHON3_LIBRARIES PYTHON3_LIBRARY
|
||||
PYTHON3_DEBUG_LIBRARIES PYTHON3_LIBRARY_DEBUG PYTHON3_INCLUDE_PATH
|
||||
PYTHON3_INCLUDE_DIR PYTHON3_INCLUDE_DIR2 PYTHON3_PACKAGES_PATH)
|
||||
find_python(3 "${MIN_VER_PYTHON3}" Python_LIBRARY Python_INCLUDE_DIR
|
||||
Python3_FOUND Python3_EXECUTABLE Python3_VERSION
|
||||
Python3_VERSION_MAJOR Python3_VERSION_MINOR PYTHON3LIBS_FOUND
|
||||
Python_VERSION Python_LIBRARIES Python_LIBRARY
|
||||
PYTHON3_DEBUG_LIBRARIES PYTHON3_LIBRARY_DEBUG Python_INCLUDE_DIR
|
||||
Python_INCLUDE_DIR Python_INCLUDE_DIR2 PYTHON3_PACKAGES_PATH)
|
||||
|
||||
if(PYTHON_DEFAULT_EXECUTABLE)
|
||||
set(PYTHON_DEFAULT_AVAILABLE "TRUE")
|
||||
elseif(PYTHON3INTERP_FOUND) # Use Python 3 as default Python interpreter
|
||||
set(PYTHON_DEFAULT_AVAILABLE "TRUE")
|
||||
set(PYTHON_DEFAULT_EXECUTABLE "${PYTHON3_EXECUTABLE}")
|
||||
elseif(PYTHON2INTERP_FOUND) # Use Python 2 as fallback Python interpreter (if there is no Python 3)
|
||||
elseif(Python3_FOUND) # Use Python 2 as default Python interpreter
|
||||
set(PYTHON_DEFAULT_AVAILABLE "TRUE")
|
||||
set(PYTHON_DEFAULT_EXECUTABLE "${PYTHON2_EXECUTABLE}")
|
||||
elseif(Python3_FOUND) # Use Python 2 as fallback Python interpreter (if there is no Python 2)
|
||||
set(PYTHON_DEFAULT_AVAILABLE "TRUE")
|
||||
set(PYTHON_DEFAULT_EXECUTABLE "${Python3_EXECUTABLE}")
|
||||
endif()
|
||||
|
||||
Reference in New Issue
Block a user