-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCMakeLists.txt
77 lines (69 loc) · 3.08 KB
/
CMakeLists.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
cmake_minimum_required(VERSION 3.20)
project(bridge VERSION 0.0.1)
set(CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_STANDARD 17)
# Next three: https://github.com/protocolbuffers/protobuf/issues/14500
set(CMAKE_MODULE_LINKER_FLAGS "-Wl,--copy-dt-needed-entries")
set(CMAKE_SHARED_LINKER_FLAGS "-Wl,--copy-dt-needed-entries")
set(CMAKE_STATIC_LINKER_FLAGS "-Wl,--copy-dt-needed-entries")
# By default, all three bridges are built.
option(BUILD_GENERIC "Build for Generic Mode" OFF)
option(BUILD_FULL_CLOUD_PINYIN "Build for Full Cloud Pinyin" ON)
option(BUILD_FULL_CLOUD_NEPALI "Build for Full Cloud Nepali" OFF)
if(BUILD_GENERIC)
add_compile_definitions(FULL_CLOUD_GENERIC)
endif()
if(BUILD_FULL_CLOUD_PINYIN)
add_compile_definitions(FULL_CLOUD_PINYIN)
endif()
if(BUILD_FULL_CLOUD_NEPALI)
add_compile_definitions(FULL_CLOUD_NEPALI)
endif()
find_package(Fcitx5Core REQUIRED)
find_package(cppzmq REQUIRED)
find_package(Protobuf REQUIRED)
# Setup some compiler option that is generally useful and compatible with Fcitx 5 (C++17)
include("${FCITX_INSTALL_CMAKECONFIG_DIR}/Fcitx5Utils/Fcitx5CompilerSettings.cmake")
if(BUILD_GENERIC)
add_library(bridge SHARED bridge.cpp msgs.pb.cc)
target_link_libraries(bridge PRIVATE Fcitx5::Core cppzmq protobuf::libprotobuf)
endif()
if(BUILD_FULL_CLOUD_PINYIN)
add_library(bridge-fcp SHARED bridge.cpp msgs.pb.cc)
target_link_libraries(bridge-fcp PRIVATE Fcitx5::Core cppzmq protobuf::libprotobuf)
endif()
if(BUILD_FULL_CLOUD_NEPALI)
add_library(bridge-fcn SHARED bridge.cpp msgs.pb.cc)
target_link_libraries(bridge-fcn PRIVATE Fcitx5::Core cppzmq protobuf::libprotobuf)
endif()
if(BUILD_GENERIC)
install(TARGETS bridge DESTINATION "${FCITX_INSTALL_LIBDIR}/fcitx5")
endif()
if(BUILD_FULL_CLOUD_PINYIN)
install(TARGETS bridge-fcp DESTINATION "${FCITX_INSTALL_LIBDIR}/fcitx5")
endif()
if(BUILD_FULL_CLOUD_NEPALI)
install(TARGETS bridge-fcn DESTINATION "${FCITX_INSTALL_LIBDIR}/fcitx5")
endif()
# Addon config file
if(BUILD_GENERIC)
install(FILES "${PROJECT_SOURCE_DIR}/bridge-addon.conf" RENAME bridge.conf DESTINATION "${FCITX_INSTALL_PKGDATADIR}/addon")
endif()
if(BUILD_FULL_CLOUD_PINYIN)
install(FILES "${PROJECT_SOURCE_DIR}/bridge-addon-fcp.conf" RENAME bridge-fcp.conf DESTINATION "${FCITX_INSTALL_PKGDATADIR}/addon")
install(FILES "${PROJECT_SOURCE_DIR}/fcp.svg" DESTINATION share/icons/hicolor/scalable/apps)
endif()
if(BUILD_FULL_CLOUD_NEPALI)
install(FILES "${PROJECT_SOURCE_DIR}/bridge-addon-fcn.conf" RENAME bridge-fcn.conf DESTINATION "${FCITX_INSTALL_PKGDATADIR}/addon")
install(FILES "${PROJECT_SOURCE_DIR}/fcp.svg" DESTINATION share/icons/hicolor/scalable/apps)
endif()
# Input Method registration file
if(BUILD_GENERIC)
install(FILES "${PROJECT_SOURCE_DIR}/bridge.conf" DESTINATION "${FCITX_INSTALL_PKGDATADIR}/inputmethod")
endif()
if(BUILD_FULL_CLOUD_PINYIN)
install(FILES "${PROJECT_SOURCE_DIR}/bridge-fcp.conf" DESTINATION "${FCITX_INSTALL_PKGDATADIR}/inputmethod")
endif()
if(BUILD_FULL_CLOUD_NEPALI)
install(FILES "${PROJECT_SOURCE_DIR}/bridge-fcn.conf" DESTINATION "${FCITX_INSTALL_PKGDATADIR}/inputmethod")
endif()