diff options
Diffstat (limited to 'sources/pyside6/libpyside/CMakeLists.txt')
-rw-r--r-- | sources/pyside6/libpyside/CMakeLists.txt | 134 |
1 files changed, 58 insertions, 76 deletions
diff --git a/sources/pyside6/libpyside/CMakeLists.txt b/sources/pyside6/libpyside/CMakeLists.txt index 50cc3108f..ebfe123dd 100644 --- a/sources/pyside6/libpyside/CMakeLists.txt +++ b/sources/pyside6/libpyside/CMakeLists.txt @@ -1,42 +1,47 @@ +# Copyright (C) 2023 The Qt Company Ltd. +# SPDX-License-Identifier: BSD-3-Clause + project(libpyside) -if(${Qt${QT_MAJOR_VERSION}Qml_FOUND}) - if(NOT "${Qt${QT_MAJOR_VERSION}Qml_PRIVATE_INCLUDE_DIRS}" MATCHES "/QtQml/") - string(REPLACE "/QtCore" "/QtQml" replaceme "${Qt${QT_MAJOR_VERSION}Core_PRIVATE_INCLUDE_DIRS}") - list(APPEND Qt${QT_MAJOR_VERSION}Qml_PRIVATE_INCLUDE_DIRS ${replaceme}) - list(REMOVE_DUPLICATES Qt${QT_MAJOR_VERSION}Qml_PRIVATE_INCLUDE_DIRS) - endif() -endif() +set(libpyside_libraries Qt::Core Qt::CorePrivate) -if(${Qt${QT_MAJOR_VERSION}Quick_FOUND}) - if(NOT "${Qt${QT_MAJOR_VERSION}Quick_PRIVATE_INCLUDE_DIRS}" MATCHES "/QtQuick/") - string(REPLACE "/QtCore" "/QtQuick" replaceme "${Qt${QT_MAJOR_VERSION}Core_PRIVATE_INCLUDE_DIRS}") - list(APPEND Qt${QT_MAJOR_VERSION}Quick_PRIVATE_INCLUDE_DIRS ${Qt${QT_MAJOR_VERSION}Qml_PRIVATE_INCLUDE_DIRS}) - list(APPEND Qt${QT_MAJOR_VERSION}Quick_PRIVATE_INCLUDE_DIRS ${replaceme}) - list(REMOVE_DUPLICATES Qt${QT_MAJOR_VERSION}Quick_PRIVATE_INCLUDE_DIRS) - endif() -endif() +set(CMAKE_AUTOMOC ON) -set(QML_PRIVATE_API_SUPPORT 0) -if(Qt${QT_MAJOR_VERSION}Qml_FOUND) - # Used for registering custom QQuickItem classes defined in Python code. - set(QML_SUPPORT 1) - set(QML_INCLUDES ${Qt${QT_MAJOR_VERSION}Qml_INCLUDE_DIRS}) - set(QML_LIBRARIES ${Qt${QT_MAJOR_VERSION}Qml_LIBRARIES}) - - if(Qt${QT_MAJOR_VERSION}Qml_PRIVATE_INCLUDE_DIRS) - # Used for transforming QML exceptions into Python exceptions. - set(QML_PRIVATE_API_SUPPORT 1) - set(QML_INCLUDES ${QML_INCLUDES} ${Qt${QT_MAJOR_VERSION}Qml_PRIVATE_INCLUDE_DIRS}) - else() - message(WARNING "QML private API include files could not be found, support for catching QML exceptions inside Python code will not work.") - endif() -else() - set(QML_SUPPORT 0) - set(QML_PRIVATE_API_SUPPORT 0) - set(QML_INCLUDES "") - set(QML_LIBRARIES "") -endif() +set(libpyside_HEADERS # installed below + class_property.h + dynamicqmetaobject.h + feature_select.h + globalreceiverv2.h + pysideclassdecorator_p.h + pysideclassinfo.h + pysideclassinfo_p.h + pysidecleanup.h + pyside.h + pysideinit.h + pysidelogging_p.h + pysidemacros.h + pysidemetafunction.h + pysidemetafunction_p.h + pysidemetatype.h + pyside_numpy.h + pyside_p.h + pysideproperty.h + pysideproperty_p.h + pysideqapp.h + pysideqenum.h + pysideqhash.h + pysideqmetatype.h + pysideqobject.h + pysideqslotobject_p.h + pysidesignal.h + pysidesignal_p.h + pysideslot_p.h + pysidestaticstrings.h + pysideutils.h + pysideweakref.h + qobjectconnect.h + signalmanager.h +) set(libpyside_SRC class_property.cpp @@ -44,16 +49,20 @@ set(libpyside_SRC feature_select.cpp signalmanager.cpp globalreceiverv2.cpp + pysideclassdecorator.cpp pysideclassinfo.cpp pysideqenum.cpp + pysideqslotobject_p.cpp pysidemetafunction.cpp pysidesignal.cpp pysideslot.cpp pysideproperty.cpp - pysideqflags.cpp pysideweakref.cpp pyside.cpp + pyside_numpy.cpp pysidestaticstrings.cpp + qobjectconnect.cpp + ${libpyside_HEADERS} ) qt6_add_resources(libpyside_SRC libpyside.qrc) @@ -83,21 +92,18 @@ add_other_files(${other_files}) add_library(pyside6 SHARED ${libpyside_SRC} ${other_files}) add_library(PySide6::pyside6 ALIAS pyside6) -target_include_directories(pyside6 PRIVATE - ${QML_INCLUDES} - ${Qt${QT_MAJOR_VERSION}Core_PRIVATE_INCLUDE_DIRS} - ${Qt${QT_MAJOR_VERSION}Core_INCLUDE_DIRS} -) +#does nothing if QFP_NO_OVERRIDE_OPTIMIZATION_FLAGS (no-size-optimization) flag is not set +append_size_optimization_flags(pyside6) target_include_directories(pyside6 PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}> $<INSTALL_INTERFACE:include/PySide6> ) +target_compile_definitions(pyside6 PRIVATE -DQT_LEAN_HEADERS=1 -DQT_NO_KEYWORDS=1) + target_link_libraries(pyside6 - PRIVATE Shiboken6::libshiboken - PRIVATE ${QML_LIBRARIES} - PRIVATE ${Qt${QT_MAJOR_VERSION}Core_LIBRARIES}) + PRIVATE Shiboken6::libshiboken ${libpyside_libraries}) set_target_properties(pyside6 PROPERTIES VERSION ${BINDING_API_VERSION} @@ -105,16 +111,7 @@ set_target_properties(pyside6 PROPERTIES OUTPUT_NAME "pyside6${pyside6_SUFFIX}${SHIBOKEN_PYTHON_SHARED_LIBRARY_SUFFIX}" DEFINE_SYMBOL BUILD_LIBPYSIDE) -if(${QT_MAJOR_VERSION} GREATER_EQUAL 6) - set_property(TARGET pyside6 PROPERTY CXX_STANDARD 17) -else() - set_property(TARGET pyside6 PROPERTY CXX_STANDARD 11) -endif() - -if(QML_SUPPORT) - target_compile_definitions(pyside6 PUBLIC PYSIDE_QML_SUPPORT=1) -endif() -target_compile_definitions(pyside6 PRIVATE PYSIDE_QML_PRIVATE_API_SUPPORT=${QML_PRIVATE_API_SUPPORT}) +set_property(TARGET pyside6 PROPERTY CXX_STANDARD 17) if(PYSIDE_QT_CONF_PREFIX) set_property(SOURCE pyside.cpp @@ -127,23 +124,6 @@ endif() # install stuff # -set(libpyside_HEADERS - class_property.h - dynamicqmetaobject.h - feature_select.h - pysideclassinfo.h - pysideqenum.h - pysidemacros.h - signalmanager.h - pyside.h - pysidestaticstrings.h - pysidemetafunction.h - pysidesignal.h - pysideproperty.h - pysideqflags.h - pysideweakref.h -) - if (CMAKE_BUILD_TYPE STREQUAL "Debug") set(LIBRARY_OUTPUT_SUFFIX ${CMAKE_DEBUG_POSTFIX}) else() @@ -152,6 +132,8 @@ endif() set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D QT_NO_CAST_FROM_ASCII -D QT_NO_CAST_TO_ASCII") +qfp_strip_library("pyside6") + # create pkg-config file configure_file("${CMAKE_CURRENT_SOURCE_DIR}/pyside6.pc.in" "${CMAKE_CURRENT_BINARY_DIR}/pyside6${pyside6_SUFFIX}.pc" @ONLY) @@ -180,7 +162,7 @@ set(PYSIDE_GLUE "${CMAKE_INSTALL_PREFIX}/share/PySide6${pyside6_SUFFIX}/glue") configure_package_config_file( "${CMAKE_CURRENT_SOURCE_DIR}/PySide6Config-spec.cmake.in" "${CMAKE_CURRENT_BINARY_DIR}/install/PySide6Config${SHIBOKEN_PYTHON_CONFIG_SUFFIX}.cmake" - INSTALL_DESTINATION "${LIB_INSTALL_DIR}/cmake/PySide6-${BINDING_API_VERSION}" + INSTALL_DESTINATION "${LIB_INSTALL_DIR}/cmake/PySide6" PATH_VARS PYSIDE_PYTHONPATH PYSIDE_TYPESYSTEMS PYSIDE_GLUE ) @@ -197,16 +179,16 @@ install(TARGETS pyside6 EXPORT PySide6Targets ARCHIVE DESTINATION "${LIB_INSTALL_DIR}" RUNTIME DESTINATION bin) install(EXPORT PySide6Targets NAMESPACE PySide6:: - DESTINATION "${LIB_INSTALL_DIR}/cmake/PySide6-${BINDING_API_VERSION}") + DESTINATION "${LIB_INSTALL_DIR}/cmake/PySide6") install(FILES "${CMAKE_CURRENT_BINARY_DIR}/pyside6${pyside6_SUFFIX}.pc" DESTINATION "${LIB_INSTALL_DIR}/pkgconfig") install(FILES "${CMAKE_CURRENT_BINARY_DIR}/PySide6Config.cmake" - DESTINATION "${LIB_INSTALL_DIR}/cmake/PySide6-${BINDING_API_VERSION}") + DESTINATION "${LIB_INSTALL_DIR}/cmake/PySide6") install(FILES "${CMAKE_CURRENT_BINARY_DIR}/install/PySide6Config${SHIBOKEN_PYTHON_CONFIG_SUFFIX}.cmake" - DESTINATION "${LIB_INSTALL_DIR}/cmake/PySide6-${BINDING_API_VERSION}") + DESTINATION "${LIB_INSTALL_DIR}/cmake/PySide6") install(FILES "${CMAKE_CURRENT_BINARY_DIR}/PySide6ConfigVersion.cmake" - DESTINATION "${LIB_INSTALL_DIR}/cmake/PySide6-${BINDING_API_VERSION}") + DESTINATION "${LIB_INSTALL_DIR}/cmake/PySide6") |