From a10bb86dcdfc17a9b7f0c827534e46c8dc54bb8f Mon Sep 17 00:00:00 2001 From: Ilya Fedin Date: Fri, 8 May 2020 15:31:50 +0400 Subject: [PATCH] Add fcitx5-qt and it's dependencies --- external/CMakeLists.txt | 2 + external/fcitx5_qt5/CMakeLists.txt | 76 +++++++++++++++++++ external/fcitx5_qt5_dbusaddons/CMakeLists.txt | 54 +++++++++++++ external/hime_im_client/CMakeLists.txt | 2 - external/qt/CMakeLists.txt | 21 +++-- external/qt/package.cmake | 4 +- 6 files changed, 148 insertions(+), 11 deletions(-) create mode 100644 external/fcitx5_qt5/CMakeLists.txt create mode 100644 external/fcitx5_qt5_dbusaddons/CMakeLists.txt diff --git a/external/CMakeLists.txt b/external/CMakeLists.txt index d1f7b07..9109233 100644 --- a/external/CMakeLists.txt +++ b/external/CMakeLists.txt @@ -19,6 +19,8 @@ endif() add_checked_subdirectory(expected) if (LINUX AND NOT DESKTOP_APP_DISABLE_DBUS_INTEGRATION) add_checked_subdirectory(fcitx_qt5) + add_checked_subdirectory(fcitx5_qt5) + add_checked_subdirectory(fcitx5_qt5_dbusaddons) endif() add_checked_subdirectory(ffmpeg) add_checked_subdirectory(gsl) diff --git a/external/fcitx5_qt5/CMakeLists.txt b/external/fcitx5_qt5/CMakeLists.txt new file mode 100644 index 0000000..f355238 --- /dev/null +++ b/external/fcitx5_qt5/CMakeLists.txt @@ -0,0 +1,76 @@ +# This file is part of Desktop App Toolkit, +# a set of libraries for developing nice desktop applications. +# +# For license and copyright information please follow this link: +# https://github.com/desktop-app/legal/blob/master/LEGAL + +if (DESKTOP_APP_USE_PACKAGED AND NOT DESKTOP_APP_USE_PACKAGED_LAZY) + add_library(external_fcitx5_qt5 INTERFACE IMPORTED GLOBAL) + add_library(desktop-app::external_fcitx5_qt5 ALIAS external_fcitx5_qt5) +else() + add_library(external_fcitx5_qt5 STATIC) + add_library(desktop-app::external_fcitx5_qt5 ALIAS external_fcitx5_qt5) + init_target(external_fcitx5_qt5 "(external)") + + set(fcitx5_qt_loc ${third_party_loc}/fcitx5-qt) + set(fcitx5_qt5_src ${fcitx5_qt_loc}/qt5/platforminputcontext) + + set_target_properties(external_fcitx5_qt5 PROPERTIES AUTOMOC ON) + + nice_target_sources(external_fcitx5_qt5 ${fcitx5_qt5_src} + PRIVATE + qfcitxplatforminputcontext.cpp + qfcitxplatforminputcontext.h + qtkey.cpp + main.cpp + main.h + ) + + target_include_directories(external_fcitx5_qt5 + PRIVATE + ${fcitx5_qt5_src} + ) + + target_compile_definitions(external_fcitx5_qt5 + PRIVATE + QT_STATICPLUGIN + ) + + target_link_libraries(external_fcitx5_qt5 + PRIVATE + desktop-app::external_fcitx5_qt5_dbusaddons + desktop-app::external_qt + ) + + if (DESKTOP_APP_USE_PACKAGED) + find_package(PkgConfig REQUIRED) + pkg_check_modules(XKBCOMMON REQUIRED IMPORTED_TARGET xkbcommon) + pkg_check_modules(XCB REQUIRED IMPORTED_TARGET xcb) + + target_link_libraries(external_fcitx5_qt5 + PRIVATE + PkgConfig::XKBCOMMON + PkgConfig::XCB + ) + else() + find_package(PkgConfig REQUIRED) + pkg_check_modules(XKBCOMMON REQUIRED xkbcommon) + pkg_check_modules(XCB REQUIRED xcb) + + target_include_directories(external_fcitx5_qt5 + PUBLIC + ${XKBCOMMON_INCLUDE_DIRS} + ${XCB_INCLUDE_DIRS} + ) + + target_link_static_libraries(external_fcitx5_qt5 + PRIVATE + xkbcommon + ) + + target_link_libraries(external_fcitx5_qt5 + PRIVATE + xcb + ) + endif() +endif() diff --git a/external/fcitx5_qt5_dbusaddons/CMakeLists.txt b/external/fcitx5_qt5_dbusaddons/CMakeLists.txt new file mode 100644 index 0000000..a5a213b --- /dev/null +++ b/external/fcitx5_qt5_dbusaddons/CMakeLists.txt @@ -0,0 +1,54 @@ +# This file is part of Desktop App Toolkit, +# a set of libraries for developing nice desktop applications. +# +# For license and copyright information please follow this link: +# https://github.com/desktop-app/legal/blob/master/LEGAL + +if (DESKTOP_APP_USE_PACKAGED AND NOT DESKTOP_APP_USE_PACKAGED_LAZY) + add_library(external_fcitx5_qt5_dbusaddons INTERFACE IMPORTED GLOBAL) + add_library(desktop-app::external_fcitx5_qt5_dbusaddons ALIAS external_fcitx5_qt5_dbusaddons) +else() + add_library(external_fcitx5_qt5_dbusaddons OBJECT) + add_library(desktop-app::external_fcitx5_qt5_dbusaddons ALIAS external_fcitx5_qt5_dbusaddons) + init_target(external_fcitx5_qt5_dbusaddons "(external)") + + set(fcitx5_qt_loc ${third_party_loc}/fcitx5-qt) + set(fcitx5_qt5_dbusaddons_src ${fcitx5_qt_loc}/qt5/dbusaddons) + + set_target_properties(external_fcitx5_qt5_dbusaddons PROPERTIES AUTOMOC ON) + + nice_target_sources(external_fcitx5_qt5_dbusaddons ${fcitx5_qt5_dbusaddons_src} + PRIVATE + fcitxqtwatcher.cpp + fcitxqtwatcher.h + fcitxqtdbustypes.cpp + fcitxqtdbustypes.h + fcitxqtinputcontextproxy.cpp + fcitxqtinputcontextproxy.h + fcitxqtinputcontextproxyimpl.cpp + fcitxqtinputmethodproxy.cpp + fcitxqtinputmethodproxy.h + fcitxqtcontrollerproxy.cpp + fcitxqtcontrollerproxy.h + ) + + include(GenerateExportHeader) + generate_export_header(external_fcitx5_qt5_dbusaddons BASE_NAME Fcitx5Qt5DBusAddons) + + target_include_directories(external_fcitx5_qt5_dbusaddons + PUBLIC + ${fcitx5_qt_loc}/common + ${fcitx5_qt5_dbusaddons_src} + "${CMAKE_CURRENT_BINARY_DIR}" + ) + + target_compile_definitions(external_fcitx5_qt5_dbusaddons + PRIVATE + FCITX5QT5DBUSADDONS_STATIC_DEFINE + ) + + target_link_libraries(external_fcitx5_qt5_dbusaddons + PRIVATE + desktop-app::external_qt + ) +endif() diff --git a/external/hime_im_client/CMakeLists.txt b/external/hime_im_client/CMakeLists.txt index e8ade7f..17d0e42 100644 --- a/external/hime_im_client/CMakeLists.txt +++ b/external/hime_im_client/CMakeLists.txt @@ -16,8 +16,6 @@ else() set(hime_src ${hime_loc}/src) set(hime_im_client_src ${hime_src}/im-client) - set_target_properties(external_hime_im_client PROPERTIES AUTOMOC ON) - nice_target_sources(external_hime_im_client ${hime_im_client_src} PRIVATE hime-im-client-attr.h diff --git a/external/qt/CMakeLists.txt b/external/qt/CMakeLists.txt index 0822023..f4afaa6 100644 --- a/external/qt/CMakeLists.txt +++ b/external/qt/CMakeLists.txt @@ -30,7 +30,15 @@ if (DESKTOP_APP_USE_PACKAGED) ${Qt5Gui_PRIVATE_INCLUDE_DIRS} ) - if (DESKTOP_APP_USE_PACKAGED_LAZY_PLATFORMTHEMES) + if (Qt5DBus_FOUND) + target_link_libraries(external_qt INTERFACE Qt5::DBus) + endif() + + if (Qt5Svg_FOUND) + target_link_libraries(external_qt INTERFACE Qt5::Svg) + endif() + + if (LINUX AND DESKTOP_APP_USE_PACKAGED_LAZY_PLATFORMTHEMES) find_library(Qt5ThemeSupport_LIBRARY NAMES Qt5ThemeSupport @@ -66,12 +74,8 @@ if (DESKTOP_APP_USE_PACKAGED) ) endif() - if (Qt5Svg_FOUND) - target_link_libraries(external_qt INTERFACE Qt5::Svg) - endif() - - if (Qt5DBus_FOUND) - target_link_libraries(external_qt INTERFACE Qt5::DBus) + if (Qt5X11Extras_FOUND) + target_link_libraries(external_qt INTERFACE Qt5::X11Extras) endif() else() target_include_directories(external_qt SYSTEM @@ -99,6 +103,7 @@ else() ${qt_loc}/include/QtSvg ${qt_loc}/include/QtThemeSupport ${qt_loc}/include/QtWaylandClient + ${qt_loc}/include/QtX11Extras ${qt_loc}/include/QtThemeSupport/${qt_version} ${qt_loc}/include/QtWaylandClient/${qt_version} ${qt_loc}/include/QtThemeSupport/${qt_version}/QtThemeSupport @@ -130,6 +135,7 @@ else() QT_WAYLANDCLIENT_LIB QT_THEME_SUPPORT_LIB QT_SVG_LIB + QT_X11EXTRAS_LIB ) endif() @@ -253,6 +259,7 @@ else() ${qt_libs_dbus_support} plugins/bearer/${qt_lib_prefix}qgenericbearer ${qt_libs_dbus_bearers} + lib/${qt_lib_prefix}Qt5X11Extras lib/${qt_lib_prefix}Qt5WaylandClient ${common_qt_libs} ${qt_libs_dbus} diff --git a/external/qt/package.cmake b/external/qt/package.cmake index 4d5b27d..5ddc0c8 100644 --- a/external/qt/package.cmake +++ b/external/qt/package.cmake @@ -25,9 +25,9 @@ find_package(Qt5Gui COMPONENTS QWebpPlugin REQUIRED) if (LINUX) if (NOT DESKTOP_APP_USE_PACKAGED) - find_package(Qt5 COMPONENTS WaylandClient Svg REQUIRED) + find_package(Qt5 COMPONENTS WaylandClient Svg X11Extras REQUIRED) elseif (DESKTOP_APP_USE_PACKAGED_LAZY) - find_package(Qt5 COMPONENTS WaylandClient REQUIRED) + find_package(Qt5 COMPONENTS WaylandClient X11Extras REQUIRED) if (DESKTOP_APP_USE_PACKAGED_LAZY_PLATFORMTHEMES) find_package(Qt5 COMPONENTS Svg REQUIRED)