Private
Public Access
2
0

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:
2026-04-23 00:59:52 +02:00
parent 677d4ca7d2
commit e8bc904d42
5 changed files with 97 additions and 90 deletions

View File

@@ -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()