Warning, /network/ruqola/cmake/Python/FindShiboken2.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 # SHIBOKEN_INCLUDE_DIR - Directories to include to use SHIBOKEN 0011 # SHIBOKEN_LIBRARY - Files to link against to use SHIBOKEN 0012 # SHIBOKEN_BINARY - Executable name 0013 # SHIBOKEN_BUILD_TYPE - Tells if Shiboken was compiled in Release or Debug mode. 0014 0015 # You can install Shiboken from Qt repository with 0016 # pip3 install --index-url=https://download.qt.io/official_releases/QtForPython --trusted-host download.qt.io shiboken2-generator 0017 0018 find_package(PkgConfig) 0019 if(PKG_CONFIG_FOUND) 0020 pkg_check_modules(SHIBOKEN2_PRIV QUIET shiboken2) 0021 endif() 0022 0023 set(SHIBOKEN_FOUND FALSE) 0024 0025 if(SHIBOKEN2_PRIV_FOUND) 0026 set(SHIBOKEN_FOUND TRUE) 0027 message(STATUS "Using shiboken found in the system!") 0028 pkg_get_variable(SHIBOKEN_BINARY 0029 shiboken2 0030 generator_location 0031 ) 0032 pkg_get_variable(SHIBOKEN_BASEDIR 0033 shiboken2 0034 libdir 0035 ) 0036 pkg_get_variable(SHIBOKEN_INCLUDE_DIR 0037 shiboken2 0038 includedir 0039 ) 0040 set(SHIBOKEN_VERSION ${SHIBOKEN2_PRIV_VERSION}) 0041 set(SHIBOKEN_LIBRARY ${SHIBOKEN2_PRIV_LINK_LIBRARIES}) 0042 else() 0043 execute_process( 0044 COMMAND ${Python3_EXECUTABLE} -c "if True: 0045 import os 0046 try: 0047 import shiboken2_generator 0048 print(shiboken2_generator.__path__[0]) 0049 except: 0050 exit() 0051 " 0052 OUTPUT_VARIABLE SHIBOKEN_GENERATOR_BASEDIR 0053 OUTPUT_STRIP_TRAILING_WHITESPACE 0054 ) 0055 execute_process( 0056 COMMAND ${Python3_EXECUTABLE} -c "if True: 0057 import os 0058 try: 0059 import shiboken2 0060 print(shiboken2.__path__[0]) 0061 except: 0062 exit() 0063 " 0064 OUTPUT_VARIABLE SHIBOKEN_BASEDIR 0065 OUTPUT_STRIP_TRAILING_WHITESPACE 0066 ) 0067 execute_process( 0068 COMMAND ${Python3_EXECUTABLE} -c "if True: 0069 import os 0070 import shiboken2 0071 print(';'.join(filter(None, map(str, shiboken2.__version_info__)))) 0072 " 0073 OUTPUT_VARIABLE SHIBOKEN_VERSION 0074 OUTPUT_STRIP_TRAILING_WHITESPACE 0075 ) 0076 list(GET SHIBOKEN_VERSION 0 SHIBOKEN_MACRO_VERSION) 0077 list(GET SHIBOKEN_VERSION 1 SHIBOKEN_MICRO_VERSION) 0078 list(GET SHIBOKEN_VERSION 2 SHIBOKEN_MINOR_VERSION) 0079 string(REPLACE ";" "." SHIBOKEN_VERSION "${SHIBOKEN_VERSION}") 0080 0081 message(STATUS "ShibokenGenerator base dir: ${SHIBOKEN_GENERATOR_BASEDIR}") 0082 message(STATUS "Shiboken base dir: ${SHIBOKEN_BASEDIR}") 0083 message(STATUS "Shiboken custom path: ${SHIBOKEN_CUSTOM_PATH}") 0084 0085 if(SHIBOKEN_BASEDIR) 0086 find_path(SHIBOKEN_INCLUDE_DIR 0087 shiboken.h 0088 PATHS ${SHIBOKEN_CUSTOM_PATH} ${SHIBOKEN_GENERATOR_BASEDIR}/include 0089 NO_DEFAULT_PATH) 0090 if(MSVC) 0091 SET(SHIBOKEN_LIBRARY_BASENAMES "shiboken2.abi3.lib") 0092 elseif(CYGWIN) 0093 SET(SHIBOKEN_LIBRARY_BASENAMES "") 0094 elseif(WIN32) 0095 SET(SHIBOKEN_LIBRARY_BASENAMES "libshiboken2.${PYSIDE2_SUFFIX}") 0096 elseif(APPLE) 0097 SET(SHIBOKEN_LIBRARY_BASENAMES 0098 libshiboken2.abi3.dylib 0099 libshiboken2.abi3.${SHIBOKEN_MACRO_VERSION}.dylib 0100 libshiboken2.abi3.${SHIBOKEN_MACRO_VERSION}.${SHIBOKEN_MICRO_VERSION}.dylib 0101 libshiboken2.abi3.${SHIBOKEN_VERSION}.dylib 0102 ) 0103 else() 0104 SET(SHIBOKEN_LIBRARY_BASENAMES 0105 libshiboken2.abi3.so 0106 libshiboken2.abi3.so.${SHIBOKEN_MACRO_VERSION} 0107 libshiboken2.abi3.so.${SHIBOKEN_MACRO_VERSION}.${SHIBOKEN_MICRO_VERSION} 0108 libshiboken2.abi3.so.${SHIBOKEN_VERSION} 0109 ) 0110 endif() 0111 0112 if (NOT SHIBOKEN_INCLUDE_DIR) 0113 return() 0114 endif() 0115 set(SHIBOKEN_SEARCH_PATHS ${SHIBOKEN_CUSTOM_PATH}) 0116 list(APPEND SHIBOKEN_SEARCH_PATHS ${SHIBOKEN_BASEDIR}) 0117 list(APPEND SHIBOKEN_SEARCH_PATHS ${SHIBOKEN_GENERATOR_BASEDIR}) 0118 message(STATUS "BOO: ${SHIBOKEN_SEARCH_PATHS}") 0119 find_file(SHIBOKEN_LIBRARY 0120 ${SHIBOKEN_LIBRARY_BASENAMES} 0121 PATHS ${SHIBOKEN_SEARCH_PATHS} 0122 NO_DEFAULT_PATH) 0123 0124 find_program(SHIBOKEN_BINARY 0125 shiboken2 0126 PATHS ${SHIBOKEN_SEARCH_PATHS} 0127 NO_DEFAULT_PATH 0128 ) 0129 endif() 0130 if (SHIBOKEN_INCLUDE_DIR AND SHIBOKEN_LIBRARY AND SHIBOKEN_BINARY) 0131 set(SHIBOKEN_FOUND TRUE) 0132 endif() 0133 0134 if(SHIBOKEN_FOUND) 0135 endif() 0136 0137 0138 if(MSVC) 0139 # On Windows we must link to python3.dll that is a small library that links against python3x.dll 0140 # that allow us to choose any python3x.dll at runtime 0141 execute_process( 0142 COMMAND ${Python3_EXECUTABLE} -c "if True: 0143 for lib in '${Python3_LIBRARIES}'.split(';'): 0144 if '/' in lib: 0145 prefix, py = lib.rsplit('/', 1) 0146 if py.startswith('python3'): 0147 print(prefix + '/python3.lib') 0148 break 0149 " 0150 OUTPUT_VARIABLE PYTHON_LIMITED_LIBRARIES 0151 OUTPUT_STRIP_TRAILING_WHITESPACE 0152 ) 0153 else() 0154 # On Linux and MacOs our modules should not link with any python library 0155 # that must be handled by the main process 0156 set(PYTHON_LIMITED_LIBRARIES "") 0157 endif() 0158 endif() 0159 if (SHIBOKEN_FOUND) 0160 message(STATUS "Shiboken include dir: ${SHIBOKEN_INCLUDE_DIR}") 0161 message(STATUS "Shiboken library: ${SHIBOKEN_LIBRARY}") 0162 message(STATUS "Shiboken binary: ${SHIBOKEN_BINARY}") 0163 message(STATUS "Shiboken version: ${SHIBOKEN_VERSION}") 0164 0165 # Create shiboke2 target 0166 add_library(Shiboken2::libshiboken SHARED IMPORTED GLOBAL) 0167 if(MSVC) 0168 set_property(TARGET Shiboken2::libshiboken PROPERTY 0169 IMPORTED_IMPLIB ${SHIBOKEN_LIBRARY}) 0170 endif() 0171 set_property(TARGET Shiboken2::libshiboken PROPERTY 0172 IMPORTED_LOCATION ${SHIBOKEN_LIBRARY}) 0173 set_property(TARGET Shiboken2::libshiboken APPEND PROPERTY 0174 INTERFACE_INCLUDE_DIRECTORIES ${SHIBOKEN_INCLUDE_DIR} ${Python3_INCLUDE_DIRS}) 0175 set_property(TARGET Shiboken2::libshiboken APPEND PROPERTY 0176 INTERFACE_LINK_LIBRARIES ${PYTHON_LIMITED_LIBRARIES}) 0177 0178 # Generator target 0179 add_executable(Shiboken2::shiboken IMPORTED GLOBAL) 0180 set_property(TARGET Shiboken2::shiboken PROPERTY 0181 IMPORTED_LOCATION ${SHIBOKEN_BINARY}) 0182 endif() 0183 0184 find_package_handle_standard_args(Shiboken2 0185 REQUIRED_VARS SHIBOKEN_BASEDIR SHIBOKEN_INCLUDE_DIR SHIBOKEN_LIBRARY SHIBOKEN_BINARY 0186 VERSION_VAR SHIBOKEN_VERSION 0187 ) 0188