cmake_minimum_required(VERSION 3.21) project(console_recipient_fcitx LANGUAGES CXX) set(CMAKE_CXX_STANDARD 20) set(CMAKE_CXX_STANDARD_REQUIRED ON) find_package(Qt6 6.11 REQUIRED COMPONENTS Core) find_package(PkgConfig REQUIRED) pkg_check_modules(XKB_X11 REQUIRED xkbcommon-x11=1.13.2) foreach(input FCITX_SOURCE FCITX_BUILD FCITX_RUNTIME) if(NOT IS_DIRECTORY "${${input}}") message(FATAL_ERROR "Set ${input} to the matching prepared directory") endif() endforeach() set(console_source "${CMAKE_CURRENT_SOURCE_DIR}/../..") foreach(pair "Utils;2" "Config;6" "Core;7") list(GET pair 0 name) list(GET pair 1 abi) add_library(ConsoleFcitx${name} SHARED IMPORTED) set_target_properties(ConsoleFcitx${name} PROPERTIES IMPORTED_LOCATION "${FCITX_RUNTIME}/lib/libFcitx5${name}.so.${abi}" INTERFACE_INCLUDE_DIRECTORIES "${FCITX_SOURCE}/src/lib;${FCITX_BUILD}/src/lib") endforeach() file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/config.h" "#define ENABLE_KEYBOARD\n#define DEFAULT_XKB_RULES \"evdev\"\n#define XKEYBOARDCONFIG_DATADIR \"/usr/share\"\n#define XKEYBOARDCONFIG_XKBBASE \"/usr/share/X11/xkb\"\n#define ISOCODES_ISO639_JSON \"/usr/share/iso-codes/json/iso_639-3.json\"\n") add_library(recipient_keyboard STATIC "${FCITX_SOURCE}/src/im/keyboard/keyboard.cpp" "${FCITX_SOURCE}/src/im/keyboard/isocodes.cpp" "${FCITX_SOURCE}/src/im/keyboard/xkbrules.cpp" "${FCITX_SOURCE}/src/im/keyboard/xmlparser.cpp" "${FCITX_SOURCE}/src/im/keyboard/longpress.cpp" "${FCITX_SOURCE}/src/im/keyboard/compose.cpp") target_include_directories(recipient_keyboard PRIVATE "${CMAKE_CURRENT_BINARY_DIR}" "${console_source}/third_party/fcitx/sources" "${FCITX_SOURCE}/src/modules/spell" "${FCITX_SOURCE}/src/modules/notifications" "${FCITX_SOURCE}/src/modules/quickphrase" "${FCITX_SOURCE}/src/modules/emoji") target_link_libraries(recipient_keyboard PRIVATE ConsoleFcitxCore ConsoleFcitxConfig ConsoleFcitxUtils "${FCITX_RUNTIME}/lib/libexpat.so.1" "${FCITX_RUNTIME}/lib/libxkbcommon.so.0") add_executable(aspl-console-fcitx-worker "${console_source}/src/fcitx_worker.cpp" "${console_source}/src/keyboard_identity.cpp") target_compile_definitions(aspl-console-fcitx-worker PRIVATE QT_NO_KEYWORDS QT_NO_FOREACH) target_include_directories(aspl-console-fcitx-worker PRIVATE ${XKB_X11_INCLUDE_DIRS}) target_link_libraries(aspl-console-fcitx-worker PRIVATE Qt6::Core recipient_keyboard ConsoleFcitxCore ConsoleFcitxConfig ConsoleFcitxUtils "${FCITX_RUNTIME}/lib/libxkbcommon.so.0" "${FCITX_RUNTIME}/lib/libxkbcommon-x11.so.0" "${FCITX_RUNTIME}/lib/libxcb.so.1" "${FCITX_RUNTIME}/lib/libxcb-xkb.so.1") set(RECIPIENT_RUNPATH "$ORIGIN/../../lib/aspl-console/fcitx/lib" CACHE STRING "Relative installed runtime path from the helper") set_target_properties(aspl-console-fcitx-worker PROPERTIES BUILD_WITH_INSTALL_RPATH ON INSTALL_RPATH "${RECIPIENT_RUNPATH}")