Refactor and fixes Python binding
Python binding was broke since commit b1f37a8.
This is a fix and to some degree a refactor.
The binding build is now integrated. Controlled by the CMake
QTERMWIDGET_BUILD_PYTHON_BINDING option.
CMake components taken from https://cgit.kde.org/pykde5.git/. No need to
reinvent the wheel.
Closes https://github.com/lxqt/qtermwidget/issues/135.
This commit is contained in:
@@ -0,0 +1,73 @@
|
||||
# Find Python
|
||||
# ~~~~~~~~~~~
|
||||
# Find the Python interpreter and related Python directories.
|
||||
#
|
||||
# This file defines the following variables:
|
||||
#
|
||||
# PYTHON_EXECUTABLE - The path and filename of the Python interpreter.
|
||||
#
|
||||
# PYTHON_SHORT_VERSION - The version of the Python interpreter found,
|
||||
# excluding the patch version number. (e.g. 2.5 and not 2.5.1))
|
||||
#
|
||||
# PYTHON_LONG_VERSION - The version of the Python interpreter found as a human
|
||||
# readable string.
|
||||
#
|
||||
# PYTHON_SITE_PACKAGES_INSTALL_DIR - this cache variable can be used for installing
|
||||
# own python modules. You may want to adjust this to be the
|
||||
# same as ${PYTHON_SITE_PACKAGES_DIR}, but then admin
|
||||
# privileges may be required for installation.
|
||||
#
|
||||
# PYTHON_SITE_PACKAGES_DIR - Location of the Python site-packages directory.
|
||||
#
|
||||
# PYTHON_INCLUDE_PATH - Directory holding the python.h include file.
|
||||
#
|
||||
# PYTHON_LIBRARY, PYTHON_LIBRARIES- Location of the Python library.
|
||||
|
||||
# Copyright (c) 2007, Simon Edwards <simon@simonzone.com>
|
||||
# Copyright (c) 2012, Luca Beltrame <lbeltrame@kde.org>
|
||||
# Redistribution and use is allowed according to the terms of the BSD license.
|
||||
# For details see the accompanying COPYING-CMAKE-SCRIPTS file.
|
||||
|
||||
include(FindPackageHandleStandardArgs)
|
||||
|
||||
find_package(PythonInterp)
|
||||
|
||||
if (PYTHONINTERP_FOUND)
|
||||
|
||||
option(INSTALL_PYTHON_FILES_IN_PYTHON_PREFIX "Install the Python files in the Python packages dir" FALSE)
|
||||
|
||||
# Set the Python libraries to what we actually found for interpreters
|
||||
set(Python_ADDITIONAL_VERSIONS "${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}")
|
||||
# These are kept for compatibility
|
||||
set(PYTHON_SHORT_VERSION "${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}")
|
||||
set(PYTHON_LONG_VERSION ${PYTHON_VERSION_STRING})
|
||||
|
||||
find_package(PythonLibs QUIET)
|
||||
|
||||
if(PYTHONLIBS_FOUND)
|
||||
set(PYTHON_LIBRARY ${PYTHON_LIBRARIES})
|
||||
endif(PYTHONLIBS_FOUND)
|
||||
|
||||
# Auto detect Python site-packages directory
|
||||
execute_process(COMMAND ${PYTHON_EXECUTABLE} -c "from distutils.sysconfig import get_python_lib; print(get_python_lib(True))"
|
||||
OUTPUT_VARIABLE PYTHON_SITE_PACKAGES_DIR
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||
)
|
||||
|
||||
message(STATUS "Python system site-packages directory: ${PYTHON_SITE_PACKAGES_DIR}")
|
||||
if(INSTALL_PYTHON_FILES_IN_PYTHON_PREFIX)
|
||||
set(PYTHON_SITE_PACKAGES_INSTALL_DIR ${PYTHON_SITE_PACKAGES_DIR})
|
||||
else()
|
||||
execute_process(COMMAND ${PYTHON_EXECUTABLE} -c "from distutils.sysconfig import get_python_lib; print(get_python_lib(True, prefix='${CMAKE_INSTALL_PREFIX}'))"
|
||||
OUTPUT_VARIABLE PYTHON_SITE_PACKAGES_INSTALL_DIR
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||
)
|
||||
endif()
|
||||
|
||||
if(NOT PYTHON_SITE_PACKAGES_INSTALL_DIR STREQUAL PYTHON_SITE_PACKAGES_DIR)
|
||||
message(STATUS "The Python files will be installed to ${PYTHON_SITE_PACKAGES_INSTALL_DIR}. Make sure to add them to the Python search path (e.g. by setting PYTHONPATH)")
|
||||
endif()
|
||||
|
||||
endif(PYTHONINTERP_FOUND)
|
||||
|
||||
find_package_handle_standard_args(PythonLibrary DEFAULT_MSG PYTHON_LIBRARY)
|
||||
Reference in New Issue
Block a user