-
Notifications
You must be signed in to change notification settings - Fork 15
/
CMakeLists.txt
97 lines (80 loc) · 3.23 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
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
cmake_minimum_required(VERSION 3.6)
project(fcitx5-gtk VERSION 5.1.3)
find_package(ECM REQUIRED 1.0.0)
set(CMAKE_MODULE_PATH ${ECM_MODULE_PATH} "${CMAKE_CURRENT_SOURCE_DIR}/cmake" ${CMAKE_MODULE_PATH})
include(FindPkgConfig)
include(ECMSetupVersion)
include(GenerateExportHeader)
include(FeatureSummary)
include(GNUInstallDirs)
include(ECMUninstallTarget)
option(ENABLE_GIR "GObject Introspection" ON)
option(ENABLE_GTK2_IM_MODULE "Enable GTK2 IM Module" ON)
option(ENABLE_GTK3_IM_MODULE "Enable GTK3 IM Module" ON)
option(ENABLE_GTK4_IM_MODULE "Enable GTK4 IM Module" ON)
option(ENABLE_SNOOPER "Enable Key Snooper for gtk app" ON)
option(BUILD_ONLY_PLUGIN "Build only IM Module" OFF)
set(NO_SNOOPER_APPS ".*chrome.*,.*chromium.*,firefox.*,Do.*"
CACHE STRING "Disable Key Snooper for following app by default.")
set(NO_PREEDIT_APPS "gvim.*" CACHE STRING "Disable preedit for follwing app by default.")
set(SYNC_MODE_APPS "firefox.*" CACHE STRING "Use sync mode for following app by default.")
configure_file(config.h.in "${CMAKE_CURRENT_BINARY_DIR}/config.h")
include_directories("${CMAKE_CURRENT_BINARY_DIR}")
find_package(PkgConfig)
find_package(XKBCommon)
pkg_check_modules(GLib2 REQUIRED IMPORTED_TARGET "glib-2.0>=2.56")
pkg_check_modules(Gio2 REQUIRED IMPORTED_TARGET "gio-2.0")
pkg_check_modules(GioUnix2 REQUIRED IMPORTED_TARGET "gio-unix-2.0")
pkg_check_modules(GObject2 REQUIRED IMPORTED_TARGET "gobject-2.0")
set(CMAKE_C_VISIBILITY_PRESET default)
include(cmake/CompilerSettings.cmake)
if (BUILD_ONLY_PLUGIN)
set(GCLIENT_LIBRARY_TYPE STATIC)
else()
set(GCLIENT_LIBRARY_TYPE SHARED)
endif()
add_subdirectory(fcitx-gclient)
set(NEED_X11 FALSE)
if (ENABLE_GTK2_IM_MODULE)
pkg_check_modules(Gtk2 REQUIRED IMPORTED_TARGET "gtk+-2.0")
pkg_check_modules(Gdk2 REQUIRED IMPORTED_TARGET "gdk-2.0")
pkg_check_modules(Gdk2X11 REQUIRED IMPORTED_TARGET "gdk-x11-2.0")
pkg_get_variable(GTK2_BINARY_VERSION "gtk+-2.0" "gtk_binary_version")
set(NEED_X11 TRUE)
endif()
if (ENABLE_GTK3_IM_MODULE)
pkg_check_modules(Gtk3 REQUIRED IMPORTED_TARGET "gtk+-3.0")
pkg_check_modules(Gdk3 REQUIRED IMPORTED_TARGET "gdk-3.0")
pkg_get_variable(GTK3_BINARY_VERSION "gtk+-3.0" "gtk_binary_version")
pkg_get_variable(GTK3_TARGETS "gtk+-3.0" "targets")
if (GTK3_TARGETS MATCHES "x11")
set(NEED_X11 TRUE)
pkg_check_modules(Gdk3X11 REQUIRED IMPORTED_TARGET "gdk-x11-3.0")
endif()
endif()
if (ENABLE_GTK4_IM_MODULE)
pkg_check_modules(Gtk4 REQUIRED IMPORTED_TARGET "gtk4>=4.2")
pkg_get_variable(GTK4_BINARY_VERSION "gtk4" "gtk_binary_version")
pkg_get_variable(GTK4_TARGETS "gtk4" "targets")
if (GTK4_TARGETS MATCHES "x11")
set(NEED_X11 TRUE)
pkg_check_modules(Gtk4X11 REQUIRED IMPORTED_TARGET "gtk4-x11")
endif()
endif()
if (NEED_X11)
find_package(X11 REQUIRED)
add_library(X11Import UNKNOWN IMPORTED)
set_target_properties(X11Import PROPERTIES
IMPORTED_LOCATION "${X11_X11_LIB}"
INTERFACE_INCLUDE_DIRECTORIES "${X11_X11_INCLUDE_PATH}")
endif()
if (ENABLE_GTK2_IM_MODULE)
add_subdirectory(gtk2)
endif()
if (ENABLE_GTK3_IM_MODULE)
add_subdirectory(gtk3)
endif()
if (ENABLE_GTK4_IM_MODULE)
add_subdirectory(gtk4)
endif()
feature_summary(WHAT ALL FATAL_ON_MISSING_REQUIRED_PACKAGES)