Warning, /network/ruqola/cmake/Python/FindPySide2.cmake is written in an unsupported language. File is not indexed.

0001 #
0002 # SPDX-FileCopyrightText: 2020 Klarälvdalens Datakonsult AB a KDAB Group company <info@kdab.com>
0003 # Author: Renato Araujo Oliveira Filho <renato.araujo@kdab.com>
0004 #
0005 # SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only
0006 #
0007 # Contact KDAB at <info@kdab.com> for commercial licensing options.
0008 #
0009 
0010 #  PYSIDE_BASEDIR       - Top of the PySide2 installation
0011 #  PYSIDE_INCLUDE_DIR   - Directories to include to use PySide2
0012 #  PYSIDE_LIBRARY       - Files to link against to use PySide2
0013 #  PYSIDE_TYPESYSTEMS   - Type system files that should be used by other bindings extending PySide2
0014 #
0015 # You can install PySide2 from Qt repository with
0016 # pip3 install --index-url=https://download.qt.io/official_releases/QtForPython --trusted-host download.qt.io pyside2
0017 
0018 find_package(PkgConfig)
0019 if(PKG_CONFIG_FOUND)
0020   pkg_check_modules(PYSIDE2_PRIV QUIET pyside2)
0021 endif()
0022 
0023 set(PYSIDE2_FOUND FALSE)
0024 
0025 if(PYSIDE2_PRIV_FOUND)
0026     set(PYSIDE2_FOUND TRUE)
0027     message(STATUS "Using PySide2 found in the system!")
0028     pkg_get_variable(SHIBOKEN_BINARY
0029         pyside2
0030         generator_location
0031     )
0032     pkg_get_variable(PYSIDE2_BASEDIR
0033         pyside2
0034         typesystemdir
0035     )
0036     pkg_get_variable(PYSIDE_INCLUDE_DIR
0037         pyside2
0038         includedir
0039     )
0040     set(PYSIDE_TYPESYSTEMS ${PYSIDE2_BASEDIR})
0041     set(PYSIDE2_SO_VERSION ${PYSIDE2_PRIV_VERSION})
0042     set(PYSIDE_LIBRARY ${PYSIDE2_PRIV_LINK_LIBRARIES})
0043     list(GET PYSIDE_LIBRARY 0 PYSIDE_LIBRARY)
0044 else()
0045     # extract python library basename
0046     list(GET Python3_LIBRARIES 0 PYTHON_LIBRARY_FILENAME)
0047     get_filename_component(PYTHON_LIBRARY_FILENAME ${PYTHON_LIBRARY_FILENAME} NAME)
0048 
0049     execute_process(
0050         COMMAND ${Python3_EXECUTABLE} -c "if True:
0051            import os, sys
0052            try:
0053             import PySide2.QtCore as QtCore
0054             print(os.path.dirname(QtCore.__file__))
0055            except Exception as error:
0056             print(error, file=sys.stderr)
0057             exit()
0058         "
0059         OUTPUT_VARIABLE PYSIDE2_BASEDIR
0060         OUTPUT_STRIP_TRAILING_WHITESPACE
0061     )
0062 
0063     if(PYSIDE2_BASEDIR)
0064         set(PYSIDE_BASEDIR ${PYSIDE2_BASEDIR} CACHE PATH "Top level install of PySide2" FORCE)
0065         execute_process(
0066             COMMAND ${Python3_EXECUTABLE} -c "if True:
0067                import os
0068                import PySide2.QtCore as QtCore
0069                print(os.path.basename(QtCore.__file__).split('.', 1)[1])
0070             "
0071             OUTPUT_VARIABLE PYSIDE2_SUFFIX
0072             OUTPUT_STRIP_TRAILING_WHITESPACE
0073         )
0074 
0075         execute_process(
0076             COMMAND ${Python3_EXECUTABLE} -c "if True:
0077                import os
0078                import PySide2.QtCore as QtCore
0079                print(';'.join(map(str, QtCore.__version_info__)))
0080             "
0081             OUTPUT_VARIABLE PYSIDE2_SO_VERSION
0082             OUTPUT_STRIP_TRAILING_WHITESPACE
0083         )
0084         list(GET PYSIDE2_SO_VERSION 0 PYSIDE2_SO_MACRO_VERSION)
0085         list(GET PYSIDE2_SO_VERSION 1 PYSIDE2_SO_MICRO_VERSION)
0086         list(GET PYSIDE2_SO_VERSION 2 PYSIDE2_SO_MINOR_VERSION)
0087         string(REPLACE ";" "." PYSIDE2_SO_VERSION "${PYSIDE2_SO_VERSION}")
0088 
0089         if(NOT APPLE)
0090             set(PYSIDE2_SUFFIX "${PYSIDE2_SUFFIX}.${PYSIDE2_SO_MACRO_VERSION}.${PYSIDE2_SO_MICRO_VERSION}")
0091           else()
0092             string(REPLACE ".so" "" PYSIDE2_SUFFIX ${PYSIDE2_SUFFIX})
0093             set(PYSIDE2_SUFFIX "${PYSIDE2_SUFFIX}.${PYSIDE2_SO_MACRO_VERSION}.${PYSIDE2_SO_MICRO_VERSION}.dylib")
0094         endif()
0095 
0096         set(PYSIDE2_FOUND TRUE)
0097         message(STATUS "PySide2 base dir:           ${PYSIDE2_BASEDIR}" )
0098         message(STATUS "PySide2 suffix:             ${PYSIDE2_SUFFIX}")
0099     endif()
0100 
0101     if (PYSIDE2_FOUND)
0102         #PySide
0103         #===============================================================================
0104         find_path(PYSIDE_INCLUDE_DIR
0105             pyside.h
0106             PATHS ${PYSIDE2_BASEDIR}/include ${PYSIDE2_CUSTOM_PREFIX}/include/PySide2
0107             NO_DEFAULT_PATH)
0108 
0109         # Platform specific library names
0110         if(MSVC)
0111             SET(PYSIDE_LIBRARY_BASENAMES "pyside2.abi3.lib")
0112         elseif(CYGWIN)
0113             SET(PYSIDE_LIBRARY_BASENAMES "")
0114         elseif(WIN32)
0115             SET(PYSIDE_LIBRARY_BASENAMES "libpyside2.${PYSIDE2_SUFFIX}")
0116         else()
0117             SET(PYSIDE_LIBRARY_BASENAMES "libpyside2.${PYSIDE2_SUFFIX}")
0118         endif()
0119 
0120         find_file(PYSIDE_LIBRARY
0121             ${PYSIDE_LIBRARY_BASENAMES}
0122             PATHS ${PYSIDE2_BASEDIR} ${PYSIDE2_CUSTOM_PREFIX}/lib
0123             NO_DEFAULT_PATH)
0124 
0125         find_path(PYSIDE_TYPESYSTEMS
0126             typesystem_core.xml
0127             PATHS ${PYSIDE2_BASEDIR}/typesystems ${PYSIDE2_CUSTOM_PREFIX}/share/PySide2/typesystems
0128             NO_DEFAULT_PATH)
0129     endif()
0130 endif()
0131 
0132 if(PYSIDE2_FOUND)
0133     message(STATUS "PySide include dir:         ${PYSIDE_INCLUDE_DIR}")
0134     message(STATUS "PySide library:             ${PYSIDE_LIBRARY}")
0135     message(STATUS "PySide typesystems:         ${PYSIDE_TYPESYSTEMS}")
0136     message(STATUS "PySide2 version:            ${PYSIDE2_SO_VERSION}")
0137 
0138     # Create PySide2 target
0139     add_library(PySide2::pyside2 SHARED IMPORTED GLOBAL)
0140     if(MSVC)
0141         set_property(TARGET PySide2::pyside2 PROPERTY
0142             IMPORTED_IMPLIB ${PYSIDE_LIBRARY})
0143     endif()
0144     set_property(TARGET PySide2::pyside2 PROPERTY
0145         IMPORTED_LOCATION ${PYSIDE_LIBRARY})
0146     set_property(TARGET PySide2::pyside2 APPEND PROPERTY
0147         INTERFACE_INCLUDE_DIRECTORIES
0148         ${PYSIDE_INCLUDE_DIR}
0149         ${PYSIDE_INCLUDE_DIR}/QtCore/
0150         ${PYSIDE_INCLUDE_DIR}/QtGui/
0151         ${PYSIDE_INCLUDE_DIR}/QtWidgets/
0152         ${Python3_INCLUDE_DIRS}
0153     )
0154 endif()
0155 
0156 
0157 find_package_handle_standard_args(PySide2
0158     REQUIRED_VARS PYSIDE2_BASEDIR PYSIDE_INCLUDE_DIR PYSIDE_LIBRARY PYSIDE_TYPESYSTEMS
0159     VERSION_VAR PYSIDE2_SO_VERSION
0160 )