##// END OF EJS Templates
Started PySide2 migration, builds with CMake and produces a working binary...
Started PySide2 migration, builds with CMake and produces a working binary Need to port all previous stuff from Pybind11 to PySide2/shboken Signed-off-by: Alexis Jeandet <alexis.jeandet@member.fsf.org>

File last commit:

r1477:70de8bd3d575
r1477:70de8bd3d575
Show More
FindShiboken2.cmake
106 lines | 4.5 KiB | text/x-cmake | CMakeLexer
set(_module Shiboken2)
find_package(${_module} ${${_module}_FIND_VERSION} CONFIG QUIET)
set(_executable_target ${_module}::shiboken2)
set(_lib_target ${_module}::libshiboken)
if(NOT ${_module}_FOUND)
include(PythonInfo)
find_python_site_packages(PYTHON_SITE_PACKAGES)
get_python_extension_suffix(PYTHON_EXTENSION_SUFFIX)
execute_process(
COMMAND "${PYTHON_EXECUTABLE}" -c "if True:
from shiboken2 import _config
print(_config.shiboken_library_soversion.split('.')[0])
"
OUTPUT_VARIABLE ${_module}_FIND_VERSION_MAJOR
OUTPUT_STRIP_TRAILING_WHITESPACE)
execute_process(
COMMAND "${PYTHON_EXECUTABLE}" -c "if True:
from shiboken2 import _config
print(_config.shiboken_library_soversion.split('.')[1])
"
OUTPUT_VARIABLE ${_module}_FIND_VERSION_MINOR
OUTPUT_STRIP_TRAILING_WHITESPACE)
find_library(SHIBOKEN_LIBRARY
NAMES
"libshiboken2${PYTHON_EXTENSION_SUFFIX}.${${_module}_FIND_VERSION_MAJOR}.${${_module}_FIND_VERSION_MINOR}"
"shiboken2${PYTHON_EXTENSION_SUFFIX}"
PATHS "${PYTHON_SITE_PACKAGES}/shiboken2")
find_path(SHIBOKEN_INCLUDE_DIR
shiboken.h
PATHS "${PYTHON_SITE_PACKAGES}/shiboken2_generator/include")
find_file(SHIBOKEN_BINARY
shiboken2
PATHS "${PYTHON_SITE_PACKAGES}/shiboken2_generator")
endif()
if(TARGET ${_executable_target})
get_target_property(_is_imported ${_executable_target} IMPORTED)
if(_is_imported)
get_target_property(_imported_location ${_executable_target} IMPORTED_LOCATION)
if(NOT _imported_location)
message(STATUS "Target ${_executable_target} does not specify its IMPORTED_LOCATION! Trying to find it ourselves...")
find_file(SHIBOKEN_BINARY
shiboken2
PATHS "${SHIBOKEN_SHARED_LIBRARY_DIR}/../bin"
NO_DEFAULT_PATH)
if(NOT SHIBOKEN_BINARY)
set(_message_type WARNING)
if(${_module}_FIND_REQUIRED)
set(_message_type FATAL_ERROR)
endif()
message(${_message_type} "Failed to manually find executable for ${_module}")
return()
endif()
message(STATUS "IMPORTED_LOCATION for ${_executable_target} found: ${SHIBOKEN_BINARY}")
set_target_properties(${_executable_target} PROPERTIES IMPORTED_LOCATION "${SHIBOKEN_BINARY}")
endif()
endif()
get_target_property(_is_imported ${_lib_target} IMPORTED)
if(_is_imported)
get_target_property(_imported_location ${_lib_target} IMPORTED_LOCATION)
if(NOT _imported_location)
message(STATUS "Target ${_lib_target} does not specify its IMPORTED_LOCATION! Trying to find it ourselves...")
find_library(SHIBOKEN_LIBRARY
NAMES
"shiboken2${SHIBOKEN_PYTHON_EXTENSION_SUFFIX}"
"shiboken2${SHIBOKEN_PYTHON_EXTENSION_SUFFIX}.${${_module}_FIND_VERSION_MAJOR}.${${_module}_FIND_VERSION_MINOR}"
PATHS "${SHIBOKEN_SHARED_LIBRARY_DIR}")
if(NOT SHIBOKEN_LIBRARY)
set(_message_type WARNING)
if(${_module}_FIND_REQUIRED)
set(_message_type FATAL_ERROR)
endif()
message(${_message_type} "Failed to manually find library for ${_module}")
return()
endif()
message(STATUS "IMPORTED_LOCATION for ${_lib_target} found: ${SHIBOKEN_LIBRARY}")
set_target_properties(${_lib_target} PROPERTIES IMPORTED_LOCATION "${SHIBOKEN_LIBRARY}")
endif()
endif()
else()
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(${_module}
FOUND_VAR ${_module}_FOUND
REQUIRED_VARS SHIBOKEN_LIBRARY SHIBOKEN_INCLUDE_DIR SHIBOKEN_BINARY
VERSION_VAR ${_module}_VERSION)
add_library(${_module}::libshiboken INTERFACE IMPORTED)
set_target_properties(${_module}::libshiboken PROPERTIES
INTERFACE_INCLUDE_DIRECTORIES "${SHIBOKEN_INCLUDE_DIR}"
INTERFACE_LINK_LIBRARIES "${SHIBOKEN_LIBRARY}")
add_executable(${_module}::shiboken2 IMPORTED)
set_target_properties(${_module}::shiboken2 PROPERTIES
IMPORTED_LOCATION "${SHIBOKEN_BINARY}")
endif()
mark_as_advanced(SHIBOKEN_INCLUDE_DIR SHIBOKEN_LIBRARY SHIBOKEN_BINARY)