From b4b24430a1a195947e2090436c3478c4d1bbc8ac Mon Sep 17 00:00:00 2001 From: Nicolas Fella Date: Thu, 9 Mar 2023 14:14:32 +0100 Subject: [PATCH] Allow building against KF6 --- .kde-ci.yml | 33 ++++++++++++++++++++++++++++++--- CMakeLists.txt | 24 ++++++++++++------------ src/CMakeLists.txt | 13 +++++++------ src/windowcontroller.cpp | 4 ++++ 4 files changed, 53 insertions(+), 21 deletions(-) diff --git a/.kde-ci.yml b/.kde-ci.yml index 2e0d96a52..d03a9b37d 100644 --- a/.kde-ci.yml +++ b/.kde-ci.yml @@ -2,7 +2,7 @@ # SPDX-License-Identifier: BSD-2-Clause Dependencies: -- 'on': ['@all'] +- 'on': ['Linux/Qt5', 'Android/Qt5', 'FreeBSD/Qt5', 'Windows/Qt5'] 'require': 'frameworks/extra-cmake-modules': '@stable' 'frameworks/kcoreaddons': '@stable' @@ -19,15 +19,42 @@ Dependencies: 'third-party/qtkeychain': '@latest' 'third-party/cmark': '@latest' 'third-party/qcoro': '@latest' -- 'on': ['Windows', 'Linux', 'FreeBSD'] +- 'on': ['Windows/Qt5', 'Linux/Qt5', 'FreeBSD/Qt5'] 'require': 'frameworks/qqc2-desktop-style': '@stable' 'frameworks/kio': '@stable' 'frameworks/kwindowsystem': '@stable' 'frameworks/kconfigwidgets': '@stable' -- 'on': ['Linux', 'FreeBSD'] +- 'on': ['Linux/Qt5', 'FreeBSD/Qt5'] 'require': 'frameworks/kdbusaddons': '@stable' +- 'on': ['Linux/Qt6', 'Android/Qt6', 'FreeBSD/Qt6', 'Windows/Qt6'] + 'require': + 'frameworks/extra-cmake-modules': '@latest-kf6' + 'frameworks/kcoreaddons': '@latest-kf6' + 'frameworks/kirigami': '@latest-kf6' + 'frameworks/ki18n': '@latest-kf6' + 'frameworks/kconfig': '@latest-kf6' + 'frameworks/syntax-highlighting': '@latest-kf6' + 'frameworks/kitemmodels': '@latest-kf6' + 'frameworks/knotifications': '@latest-kf6' + 'libraries/kquickimageeditor': '@latest-kf6' + 'frameworks/sonnet': '@latest-kf6' + 'libraries/kirigami-addons': '@latest-kf6' + 'third-party/libquotient': '@latest' + 'third-party/qtkeychain': '@latest' + 'third-party/cmark': '@latest' + 'third-party/qcoro': '@latest' +- 'on': ['Windows/Qt6', 'Linux/Qt6', 'FreeBSD/Qt6'] + 'require': + 'frameworks/qqc2-desktop-style': '@latest-kf6' + 'frameworks/kio': '@latest-kf6' + 'frameworks/kwindowsystem': '@latest-kf6' + 'frameworks/kconfigwidgets': '@latest-kf6' +- 'on': ['Linux/Qt6', 'FreeBSD/Qt6'] + 'require': + 'frameworks/kdbusaddons': '@latest-kf6' + Options: require-passing-tests-on: [ 'Linux/Qt5', 'FreeBSD', 'Windows' ] diff --git a/CMakeLists.txt b/CMakeLists.txt index e69feaf24..d095e8aa2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -14,13 +14,13 @@ set(RELEASE_SERVICE_VERSION "${RELEASE_SERVICE_VERSION_MAJOR}.${RELEASE_SERVICE_ project(NeoChat VERSION ${RELEASE_SERVICE_VERSION}) -set(KF5_MIN_VERSION "5.91.0") +set(KF_MIN_VERSION "5.91.0") set(QT_MIN_VERSION "5.15.2") if (ANDROID) set(QT_MIN_VERSION "5.15.8") endif() -find_package(ECM ${KF5_MIN_VERSION} REQUIRED NO_MODULE) +find_package(ECM ${KF_MIN_VERSION} REQUIRED NO_MODULE) set(CMAKE_MODULE_PATH ${ECM_MODULE_PATH} ${CMAKE_SOURCE_DIR}/cmake) @@ -57,16 +57,16 @@ set_package_properties(Qt${QT_MAJOR_VERSION} PROPERTIES TYPE REQUIRED PURPOSE "Basic application components" ) -find_package(KF5 ${KF5_MIN_VERSION} COMPONENTS Kirigami2 I18n Notifications Config CoreAddons Sonnet ItemModels) -set_package_properties(KF5 PROPERTIES +find_package(KF${QT_MAJOR_VERSION} ${KF_MIN_VERSION} COMPONENTS Kirigami2 I18n Notifications Config CoreAddons Sonnet ItemModels) +set_package_properties(KF${QT_MAJOR_VERSION} PROPERTIES TYPE REQUIRED PURPOSE "Basic application components" ) -set_package_properties(KF5Kirigami2 PROPERTIES +set_package_properties(KF${QT_MAJOR_VERSION}Kirigami2 PROPERTIES TYPE REQUIRED PURPOSE "Kirigami application UI framework" ) -find_package(KF5KirigamiAddons 0.7.2 REQUIRED) +find_package(KF${QT_MAJOR_VERSION}KirigamiAddons 0.7.2 REQUIRED) find_package(Qt${QT_MAJOR_VERSION}Keychain) set_package_properties(Qt${QT_MAJOR_VERSION}Keychain PROPERTIES @@ -82,15 +82,15 @@ if(ANDROID) ) else() find_package(Qt${QT_MAJOR_VERSION} ${QT_MIN_VERSION} COMPONENTS Widgets) - find_package(KF5 ${KF5_MIN_VERSION} REQUIRED COMPONENTS QQC2DesktopStyle ConfigWidgets KIO WindowSystem) - set_package_properties(KF5QQC2DesktopStyle PROPERTIES + find_package(KF${QT_MAJOR_VERSION} ${KF_MIN_VERSION} REQUIRED COMPONENTS QQC2DesktopStyle ConfigWidgets KIO WindowSystem) + set_package_properties(KF${QT_MAJOR_VERSION}QQC2DesktopStyle PROPERTIES TYPE RUNTIME ) ecm_find_qmlmodule(org.kde.syntaxhighlighting 1.0) endif() if (NOT ANDROID AND NOT WIN32 AND NOT APPLE) - find_package(KF5DBusAddons ${KF5_MIN_VERSION} REQUIRED) + find_package(KF${QT_MAJOR_VERSION}DBusAddons ${KF_MIN_VERSION} REQUIRED) endif() find_package(Quotient 0.6) @@ -124,8 +124,8 @@ find_package(QCoro${QT_MAJOR_VERSION} 0.4 COMPONENTS Core REQUIRED) qcoro_enable_coroutines() -find_package(KF5DocTools ${KF5_MIN_VERSION}) -set_package_properties(KF5DocTools PROPERTIES DESCRIPTION +find_package(KF${QT_MAJOR_VERSION}DocTools ${KF_MIN_VERSION}) +set_package_properties(KF${QT_MAJOR_VERSION}DocTools PROPERTIES DESCRIPTION "Tools to generate documentation" TYPE OPTIONAL ) @@ -155,7 +155,7 @@ if (BUILD_TESTING AND Quotient_VERSION_MINOR GREATER 6) add_subdirectory(autotests) endif() -if(KF5DocTools_FOUND) +if(KF${QT_MAJOR_VERSION}DocTools_FOUND) kdoctools_install(po) add_subdirectory(doc) endif() diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index e0b76e6e3..c6481abec 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -79,7 +79,7 @@ if(NOT ANDROID) else() target_sources(neochat PRIVATE trayicon.cpp) endif() - target_link_libraries(neochat PUBLIC KF5::ConfigWidgets KF5::WindowSystem) + target_link_libraries(neochat PUBLIC KF${QT_MAJOR_VERSION}::ConfigWidgets KF${QT_MAJOR_VERSION}::WindowSystem) target_compile_definitions(neochat PUBLIC -DHAVE_COLORSCHEME) target_compile_definitions(neochat PUBLIC -DHAVE_WINDOWSYSTEM) endif() @@ -87,13 +87,14 @@ endif() if (NOT ANDROID AND NOT WIN32 AND NOT APPLE) target_sources(neochat-app PRIVATE res_desktop.qrc) target_compile_definitions(neochat PUBLIC -DHAVE_RUNNER) + target_compile_definitions(neochat PUBLIC -DHAVE_X11) target_sources(neochat PRIVATE runner.cpp) else() target_sources(neochat-app PRIVATE res_android.qrc) endif() target_include_directories(neochat PRIVATE ${CMAKE_BINARY_DIR}) -target_link_libraries(neochat PUBLIC Qt::Core Qt::Quick Qt::Qml Qt::Gui Qt::Multimedia Qt::Network Qt::QuickControls2 KF5::I18n KF5::Kirigami2 KF5::Notifications KF5::ConfigCore KF5::ConfigGui KF5::CoreAddons KF5::SonnetCore KF5::ItemModels Quotient cmark::cmark ${QTKEYCHAIN_LIBRARIES} QCoro::Core) +target_link_libraries(neochat PUBLIC Qt::Core Qt::Quick Qt::Qml Qt::Gui Qt::Multimedia Qt::Network Qt::QuickControls2 KF${QT_MAJOR_VERSION}::I18n KF${QT_MAJOR_VERSION}::Kirigami2 KF${QT_MAJOR_VERSION}::Notifications KF${QT_MAJOR_VERSION}::ConfigCore KF${QT_MAJOR_VERSION}::ConfigGui KF${QT_MAJOR_VERSION}::CoreAddons KF${QT_MAJOR_VERSION}::SonnetCore KF${QT_MAJOR_VERSION}::ItemModels Quotient cmark::cmark ${QTKEYCHAIN_LIBRARIES} QCoro::Core) kconfig_add_kcfg_files(neochat GENERATE_MOC neochatconfig.kcfgc) if(NEOCHAT_FLATPAK) @@ -176,7 +177,7 @@ if(ANDROID) "visibility" ) else() - target_link_libraries(neochat PUBLIC Qt::Widgets KF5::KIOWidgets) + target_link_libraries(neochat PUBLIC Qt::Widgets KF${QT_MAJOR_VERSION}::KIOWidgets) install(FILES neochat.notifyrc DESTINATION ${KDE_INSTALL_KNOTIFYRCDIR}) endif() @@ -184,12 +185,12 @@ if(NOT ANDROID) set_target_properties(neochat-app PROPERTIES OUTPUT_NAME "neochat") endif() -if(TARGET KF5::DBusAddons) - target_link_libraries(neochat PUBLIC KF5::DBusAddons) +if(TARGET KF${QT_MAJOR_VERSION}::DBusAddons) + target_link_libraries(neochat PUBLIC KF${QT_MAJOR_VERSION}::DBusAddons) target_compile_definitions(neochat PUBLIC -DHAVE_KDBUSADDONS) endif() -if (TARGET KF5::KIOWidgets) +if (TARGET KF${QT_MAJOR_VERSION}::KIOWidgets) target_compile_definitions(neochat PUBLIC -DHAVE_KIO) endif() diff --git a/src/windowcontroller.cpp b/src/windowcontroller.cpp index 5af72b650..9431a40cd 100644 --- a/src/windowcontroller.cpp +++ b/src/windowcontroller.cpp @@ -7,7 +7,9 @@ #include #ifdef HAVE_WINDOWSYSTEM +#if HAVE_X11 #include +#endif #include #endif @@ -49,7 +51,9 @@ void WindowController::showAndRaiseWindow(const QString &startupId) #ifdef HAVE_WINDOWSYSTEM if (!startupId.isEmpty()) { if (KWindowSystem::isPlatformX11()) { +#if HAVE_X11 KStartupInfo::setNewStartupId(m_window, startupId.toUtf8()); +#endif } else if (KWindowSystem::isPlatformWayland()) { KWindowSystem::setCurrentXdgActivationToken(startupId); }