Skip to content

Commit c7e035b

Browse files
feat: update fcitx5 to 5.1.17-1
1 parent ff77a5d commit c7e035b

File tree

561 files changed

+29326
-25214
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

561 files changed

+29326
-25214
lines changed

.clang-format

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ Standard: Cpp11
4141
IndentWidth: 4
4242
TabWidth: 4
4343
UseTab: Never
44+
LineEnding: LF
4445
BreakBeforeBraces: Attach
4546
SpacesInParentheses: false
4647
SpacesInAngles: false
@@ -51,6 +52,7 @@ SpaceBeforeAssignmentOperators: true
5152
ContinuationIndentWidth: 4
5253
CommentPragmas: '^ IWYU pragma:'
5354
ForEachMacros: [ Q_FOREACH, BOOST_FOREACH ]
55+
AttributeMacros: [ FCITXCORE_EXPORT, FCITXUTILS_EXPORT, FCITXCONFIG_EXPORT ]
5456
SpaceBeforeParens: ControlStatements
5557
DisableFormat: false
5658
SortIncludes: true

.gitignore

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
build*/
2+
.*
3+
!.git*
4+
.git/
5+
*.tar.*
6+
*.kdev4
7+
*.kate-swp
8+
*.orig
9+
tags
10+
astyle.sh
11+
cscope.*
12+
*.part
13+
XF86keysym.h
14+
keysymdef.h
15+
*~

CMakeLists.txt

Lines changed: 83 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
cmake_minimum_required(VERSION 3.6.0)
2-
project(fcitx VERSION 5.1.11)
1+
cmake_minimum_required(VERSION 3.13)
2+
project(fcitx VERSION 5.1.17)
33
set(FCITX_VERSION ${PROJECT_VERSION})
44

55
find_package(ECM REQUIRED 1.0.0)
@@ -16,11 +16,14 @@ include(WriteBasicConfigVersionFile)
1616
include(ECMUninstallTarget)
1717
include(src/lib/fcitx-utils/Fcitx5Macros.cmake)
1818
include(CheckSymbolExists)
19+
include(CheckIncludeFile)
20+
include(CheckCXXCompilerFlag)
1921

2022
#######################################################################
2123
# Options
2224
#######################################################################
23-
option(ENABLE_TEST "Build Test" On)
25+
option(ENABLE_TESTING_ADDONS "Build testing frontend, im and ui addons" On)
26+
option(ENABLE_TEST "Build Test (Need ENABLE_TESTING_ADDONS=On)" On)
2427
option(ENABLE_COVERAGE "Build the project with gcov support (Need ENABLE_TEST=On)" Off)
2528
set(GCOV_TOOL "gcov" CACHE STRING "Path to gcov tool used by coverage.")
2629
set(DEFAULT_XKB_RULES "evdev" CACHE STRING "Xkb rules name")
@@ -31,12 +34,15 @@ option(ENABLE_DBUS "Enable DBus" On)
3134
option(ENABLE_DOC "Build doxygen" Off)
3235
option(ENABLE_SERVER "Build a fcitx as server, disable this option if you want to use fcitx as an embedded library." On)
3336
option(ENABLE_KEYBOARD "Enable key event translation with XKB and build keyboard engine" On)
34-
option(USE_SYSTEMD "Use systemd for event loop and dbus, will fallback to libuv/libdbus if not found." On)
37+
option(USE_SYSTEMD "Use systemd for event loop and dbus, will fallback to libuv/libdbus if not found. Only used when EVENT_LOOP_BACKEND is auto." On)
3538
option(ENABLE_XDGAUTOSTART "Enable xdg autostart desktop file installation" On)
3639
option(USE_FLATPAK_ICON "Use flatpak icon name for desktop files" Off)
3740
option(ENABLE_EMOJI "Enable emoji module" On)
3841
option(ENABLE_LIBUUID "Use libuuid for uuid generation" On)
39-
set(NO_PREEDIT_APPS "gvim.*,wps.*,wpp.*,et.*" CACHE STRING "Disable preedit for follwing app by default.")
42+
option(BUILD_SPELL_DICT "Build en_dict.fscd for English spell check" On)
43+
option(BUILD_SHARED_LIBS "Build library as shared libs" On)
44+
set(NO_PREEDIT_APPS "gvim.*,wps.*,wpp.*,et.*" CACHE STRING "Disable preedit for following app by default.")
45+
set(EVENT_LOOP_BACKEND "auto" CACHE STRING "Set the underlying event loop implementation, valid values are auto,systemd,libuv,none")
4046

4147
if (ENABLE_EMOJI)
4248
find_package(ZLIB REQUIRED)
@@ -46,35 +52,67 @@ if ((ENABLE_WAYLAND OR ENABLE_X11) AND NOT ENABLE_KEYBOARD)
4652
message(FATAL_ERROR "X11 and Wayland require ENABLE_KEYBOARD to be set to ON.")
4753
endif ()
4854

49-
5055
#######################################################################
5156
# Find packages
5257
#######################################################################
5358

5459
find_package(PkgConfig REQUIRED)
5560

56-
if (USE_SYSTEMD)
57-
find_package(Systemd)
58-
endif ()
61+
set(CANDIDATE_EVENT_LOOP_BACKENDS)
5962

60-
if (USE_FLATPAK_ICON)
61-
set(FCITX_ICON_NAME "org.fcitx.Fcitx5")
62-
else()
63-
set(FCITX_ICON_NAME "fcitx")
63+
if (EVENT_LOOP_BACKEND STREQUAL "auto")
64+
if (USE_SYSTEMD)
65+
list(APPEND CANDIDATE_EVENT_LOOP_BACKENDS systemd)
66+
endif()
67+
68+
list(APPEND CANDIDATE_EVENT_LOOP_BACKENDS libuv)
69+
elseif (EVENT_LOOP_BACKEND STREQUAL "systemd")
70+
list(APPEND CANDIDATE_EVENT_LOOP_BACKENDS systemd)
71+
elseif (EVENT_LOOP_BACKEND STREQUAL "libuv")
72+
list(APPEND CANDIDATE_EVENT_LOOP_BACKENDS libuv)
73+
elseif (EVENT_LOOP_BACKEND STREQUAL "none")
74+
list(APPEND CANDIDATE_EVENT_LOOP_BACKENDS none)
6475
endif()
6576

66-
if (NOT TARGET Systemd::Systemd)
67-
if (ENABLE_DBUS)
68-
pkg_check_modules(DBus REQUIRED IMPORTED_TARGET "dbus-1")
69-
pkg_get_variable(DBUS_SYSTEM_BUS_DEFAULT_ADDRESS "dbus-1" "system_bus_default_address")
70-
endif()
77+
set(FCITX_EVENT_LOOP_BACKEND "")
78+
foreach(CANDIDATE_EVENT_LOOP_BACKEND IN LISTS CANDIDATE_EVENT_LOOP_BACKENDS)
79+
if (CANDIDATE_EVENT_LOOP_BACKEND STREQUAL systemd)
80+
find_package(Systemd)
81+
if (TARGET Systemd::Systemd)
82+
set(FCITX_EVENT_LOOP_BACKEND "systemd")
83+
break()
84+
endif()
85+
elseif (CANDIDATE_EVENT_LOOP_BACKEND STREQUAL libuv)
86+
if (NOT LIBUV_TARGET)
87+
if (NOT (TARGET PkgConfig::LibUV))
88+
pkg_check_modules(LibUV IMPORTED_TARGET "libuv")
89+
set(LIBUV_TARGET PkgConfig::LibUV)
90+
endif()
91+
endif()
7192

72-
if (NOT LIBUV_TARGET)
73-
if (NOT (TARGET PkgConfig::LibUV))
74-
pkg_check_modules(LibUV REQUIRED IMPORTED_TARGET "libuv")
93+
if (TARGET "${LIBUV_TARGET}")
94+
set(FCITX_EVENT_LOOP_BACKEND "libuv")
95+
break()
7596
endif()
76-
set(LIBUV_TARGET PkgConfig::LibUV)
97+
elseif (CANDIDATE_EVENT_LOOP_BACKEND STREQUAL none)
98+
set(FCITX_EVENT_LOOP_BACKEND "none")
99+
break()
77100
endif()
101+
endforeach()
102+
103+
if (ENABLE_DBUS AND NOT (FCITX_EVENT_LOOP_BACKEND STREQUAL systemd))
104+
pkg_check_modules(DBus REQUIRED IMPORTED_TARGET "dbus-1")
105+
pkg_get_variable(DBUS_SYSTEM_BUS_DEFAULT_ADDRESS "dbus-1" "system_bus_default_address")
106+
endif()
107+
108+
if (FCITX_EVENT_LOOP_BACKEND STREQUAL "")
109+
message(FATAL_ERROR "Failed to find a valid event loop backend. Backends checked: ${CANDIDATE_EVENT_LOOP_BACKENDS}")
110+
endif()
111+
112+
if (USE_FLATPAK_ICON)
113+
set(FCITX_ICON_NAME "org.fcitx.Fcitx5")
114+
else()
115+
set(FCITX_ICON_NAME "fcitx")
78116
endif()
79117

80118
if(${CMAKE_SYSTEM_NAME} MATCHES "BSD|DragonFly")
@@ -94,16 +132,6 @@ find_package(Pthread REQUIRED)
94132
find_package(Execinfo)
95133
find_package(Gettext REQUIRED)
96134

97-
if (NOT (TARGET fmt::fmt OR TARGET fmt::fmt-header-only))
98-
find_package(fmt REQUIRED)
99-
endif()
100-
101-
if (TARGET fmt::fmt-header-only)
102-
set(FMT_TARGET fmt::fmt-header-only)
103-
else()
104-
set(FMT_TARGET fmt::fmt)
105-
endif ()
106-
107135
set(REQUIRED_XKBCOMMON_COMPONENTS XKBCommon)
108136
if (ENABLE_X11)
109137
set(REQUIRED_XKBCOMMON_COMPONENTS ${REQUIRED_XKBCOMMON_COMPONENTS} X11)
@@ -121,7 +149,7 @@ if (ENABLE_KEYBOARD)
121149
find_package(XKBCommon REQUIRED COMPONENTS ${REQUIRED_XKBCOMMON_COMPONENTS})
122150
find_package(IsoCodes REQUIRED)
123151
find_package(XKeyboardConfig REQUIRED)
124-
pkg_check_modules(JsonC REQUIRED IMPORTED_TARGET "json-c")
152+
find_package(nlohmann_json)
125153

126154
set(DEFAULT_XKB_RULES_FILES "${XKEYBOARDCONFIG_XKBBASE}/rules/${DEFAULT_XKB_RULES}.xml")
127155
if (NOT EXISTS "${DEFAULT_XKB_RULES_FILES}" AND NOT APPLE)
@@ -139,9 +167,9 @@ endif()
139167

140168
if (ENABLE_WAYLAND)
141169
set(REQUIRED_WAYLAND_COMPONENTS Client Cursor)
142-
find_package(Wayland REQUIRED COMPONENTS ${REQUIRED_WAYLAND_COMPONENTS})
170+
find_package(Wayland 1.22 REQUIRED COMPONENTS ${REQUIRED_WAYLAND_COMPONENTS})
143171
find_package(WaylandScanner REQUIRED)
144-
find_package(WaylandProtocols REQUIRED)
172+
find_package(WaylandProtocols 1.39 REQUIRED)
145173
pkg_check_modules(Gio IMPORTED_TARGET gio-2.0)
146174
endif()
147175

@@ -163,13 +191,19 @@ if(NOT CMAKE_INSTALL_LIBDATADIR)
163191
set(CMAKE_INSTALL_LIBDATADIR "${CMAKE_INSTALL_LIBDIR}" CACHE PATH "libdata root (LIBDIR)")
164192
endif()
165193

166-
get_filename_component(CMAKE_INSTALL_FULL_LIBDATADIR "${CMAKE_INSTALL_LIBDATADIR}" ABSOLUTE)
194+
GNUInstallDirs_get_absolute_install_dir(CMAKE_INSTALL_FULL_LIBDATADIR CMAKE_INSTALL_LIBDATADIR LIBDATADIR)
167195
mark_as_advanced(CMAKE_INSTALL_LIBDATADIR)
168196
mark_as_advanced(CMAKE_INSTALL_FULL_LIBDATADIR)
169197

198+
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib")
199+
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin")
200+
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin")
201+
170202
include(Fcitx5CompilerSettings)
203+
check_cxx_compiler_flag(-Wno-deprecated-declarations HAVE_NO_DEPRECATED_DECLARATIONS)
171204

172205
set(FCITX_INSTALL_PREFIX ${CMAKE_INSTALL_PREFIX})
206+
set(FCITX_INSTALL_SYSCONFDIR ${CMAKE_INSTALL_FULL_SYSCONFDIR})
173207
set(FCITX_INSTALL_INCLUDEDIR ${CMAKE_INSTALL_FULL_INCLUDEDIR})
174208
set(FCITX_INSTALL_LIBDIR ${CMAKE_INSTALL_FULL_LIBDIR})
175209
set(FCITX_INSTALL_LIBDATADIR ${CMAKE_INSTALL_FULL_LIBDATADIR})
@@ -181,18 +215,28 @@ set(FCITX_INSTALL_LOCALEDIR ${CMAKE_INSTALL_FULL_LOCALEDIR})
181215
set(FCITX_INSTALL_ADDONDIR "${CMAKE_INSTALL_FULL_LIBDIR}/fcitx5")
182216
set(FCITX_INSTALL_CMAKECONFIG_DIR "${CMAKE_INSTALL_FULL_LIBDIR}/cmake")
183217
set(FCITX_INSTALL_MODULE_HEADER_DIR "${CMAKE_INSTALL_FULL_INCLUDEDIR}/Fcitx5/Module/fcitx-module")
184-
# TODO mac/win
185-
set(FCITX_LIBRARY_SUFFIX ".so")
218+
219+
if (WIN32)
220+
set(FCITX_LIBRARY_SUFFIX ".dll")
221+
else()
222+
set(FCITX_LIBRARY_SUFFIX ".so")
223+
endif()
186224

187225
check_function_exists(pipe2 HAVE_PIPE2)
226+
check_include_file(sys/wait.h HAVE_SYS_WAIT_H)
227+
check_include_file(sys/mman.h HAVE_SYS_MMAN_H)
228+
check_include_file(sys/uio.h HAVE_SYS_UIO_H)
188229

189230
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/config.h.in ${CMAKE_CURRENT_BINARY_DIR}/config.h)
190231
include_directories(${CMAKE_CURRENT_BINARY_DIR})
191232

192233
add_subdirectory(src)
193234
add_subdirectory(data)
194235
add_subdirectory(po)
195-
add_subdirectory(testing)
236+
237+
if (ENABLE_TESTING_ADDONS)
238+
add_subdirectory(testing)
239+
endif()
196240

197241
#######################################################################
198242
# Test features

README.md

Lines changed: 33 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,21 +2,51 @@ Next generation of fcitx
22
==========================
33
Fcitx 5 is a generic input method framework released under LGPL-2.1+.
44

5+
# Resources
6+
57
[![Jenkins Build Status](https://img.shields.io/jenkins/s/https/jenkins.fcitx-im.org/job/fcitx5.svg)](https://jenkins.fcitx-im.org/job/fcitx5/)
68
[![Coverity Scan Status](https://img.shields.io/coverity/scan/9063.svg)](https://scan.coverity.com/projects/fcitx-fcitx5)
79
[![Documentation](https://codedocs.xyz/fcitx/fcitx5.svg)](https://codedocs.xyz/fcitx/fcitx5/)
810

911
* Wiki: [https://fcitx-im.org/](https://fcitx-im.org/)
1012
- Registration require explicit approval due to the spam, please send an email to the mail list if you do not get approved.
1113
* Discussion:
12-
- [fcitx [at] googlegroups.com](https://groups.google.com/g/fcitx)
13-
- [https://github.com/fcitx/fcitx5/discussions](https://github.com/fcitx/fcitx5/discussions)
14+
- Email: Send email to [fcitx@googlegroups.com](https://groups.google.com/g/fcitx)
15+
- Github Discussions: [https://github.com/fcitx/fcitx5/discussions](https://github.com/fcitx/fcitx5/discussions)
16+
* Chat Group:
17+
- Following methods are all bridged together, you can pick any that works.
1418
- Telegram: https://fcitx-im.org/telegram/captcha.html
1519
- IRC: [#fcitx [at] libera.chat](https://web.libera.chat/?channels=#fcitx)
20+
- Matrix: fcitx on matrix.org
1621
* Bug report: [https://github.com/fcitx/fcitx5/issues](https://github.com/fcitx/fcitx5/issues)
1722
- You can always report any fcitx 5 issue here, it might be transfer to other repos later.
1823
* Translation: [https://explore.transifex.com/fcitx/](https://explore.transifex.com/fcitx/)
1924
- Do not send pull request for translation updates.
2025
- The translation will be automatically pushed to git repository nightly, but not vice versa.
26+
27+
# Supported platform on Linux and BSD
28+
X11/Wayland
29+
30+
For using input method under TTY, please check [fbterm](https://github.com/fcitx/fcitx5-fbterm/) or [tmux](https://github.com/wengxt/fcitx5-tmux), not all features are supported.
31+
32+
# Quick start for Linux
33+
[Install Fcitx 5](https://fcitx-im.org/wiki/Install_Fcitx_5)
34+
35+
Looking for Mac or Android?
36+
[Mac](https://github.com/fcitx-contrib/fcitx5-macos/)
37+
[Android](https://github.com/fcitx5-android/fcitx5-android)
38+
39+
The main package (this repository) only contains keyboard layout engine.
40+
41+
Coressponding input method engines need to be installed to support other languages (e.g. Chinese/Japanese/Korean).
42+
43+
You may find the list of input method engines at [here](https://fcitx-im.org/wiki/Input_method_engines).
44+
45+
# For developers
46+
[Compiling fcitx5](https://fcitx-im.org/wiki/Compiling_fcitx5)
47+
48+
To write a input method (or addon) from scratch, check [Develop a simple input method](https://fcitx-im.org/wiki/Develop_an_simple_input_method)
49+
50+
# Packaging status
2151

22-
[![Packaging status](https://repology.org/badge/vertical-allrepos/fcitx5.svg)](https://repology.org/project/fcitx5/versions)
52+
[![Packaging status](https://repology.org/badge/vertical-allrepos/fcitx5.svg?columns=3)](https://repology.org/project/fcitx5/versions)

cmake/Fcitx5CompilerSettings.cmake

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11

22
set(CMAKE_CXX_EXTENSIONS OFF)
33
set(CMAKE_CXX_STANDARD_REQUIRED TRUE)
4-
set(CMAKE_CXX_STANDARD 17)
4+
set(CMAKE_CXX_STANDARD 20)
55
set(CMAKE_C_STANDARD_REQUIRED TRUE)
66
set(CMAKE_C_STANDARD 99)
77

88
set(CMAKE_C_FLAGS "-Wall -Wextra ${CMAKE_C_FLAGS}")
99
set(CMAKE_CXX_FLAGS "-Wall -Wextra ${CMAKE_CXX_FLAGS}")
1010

11-
if(NOT APPLE)
11+
if(NOT APPLE AND NOT EMSCRIPTEN)
1212
set(CMAKE_SHARED_LINKER_FLAGS "-Wl,--no-undefined -Wl,--as-needed ${CMAKE_SHARED_LINKER_FLAGS}")
1313
set(CMAKE_MODULE_LINKER_FLAGS "-Wl,--no-undefined -Wl,--as-needed ${CMAKE_MODULE_LINKER_FLAGS}")
1414
endif()
@@ -23,6 +23,11 @@ if (POLICY CMP0063)
2323
cmake_policy(SET CMP0063 NEW)
2424
endif()
2525

26+
if (POLICY CMP0067)
27+
# make check_cxx_source_compiles honors CMAKE_CXX_STANDARD
28+
cmake_policy(SET CMP0067 NEW)
29+
endif()
30+
2631
if(ENABLE_COVERAGE)
2732
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fprofile-arcs -ftest-coverage")
2833
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fprofile-arcs -ftest-coverage")

cmake/FindIsoCodes.cmake

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -24,13 +24,7 @@ if(NOT DEFINED ISOCODES_ISO639_JSON)
2424
)
2525
endif()
2626

27-
if(NOT DEFINED ISOCODES_ISO3166_JSON)
28-
find_file(ISOCODES_ISO3166_JSON iso_3166-1.json
29-
HINTS "${PC_ISOCODES_PREFIX}/share/iso-codes/json/"
30-
)
31-
endif()
32-
3327
include(FindPackageHandleStandardArgs)
34-
find_package_handle_standard_args(IsoCodes DEFAULT_MSG ISOCODES_ISO639_JSON ISOCODES_ISO3166_JSON)
28+
find_package_handle_standard_args(IsoCodes DEFAULT_MSG ISOCODES_ISO639_JSON)
3529

36-
mark_as_advanced(ISOCODES_ISO639_JSON ISOCODES_ISO3166_JSON)
30+
mark_as_advanced(ISOCODES_ISO639_JSON)

config.h.in

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@
77
#ifndef _FCITX5_CONFIG_H_IN_
88
#define _FCITX5_CONFIG_H_IN_
99

10+
#define FCITX_INSTALL_PREFIX "@FCITX_INSTALL_PREFIX@"
11+
#define FCITX_INSTALL_SYSCONFDIR "@FCITX_INSTALL_SYSCONFDIR@"
1012
#define FCITX_INSTALL_LIBDIR "@FCITX_INSTALL_LIBDIR@"
1113
#define FCITX_INSTALL_LIBDATADIR "@FCITX_INSTALL_LIBDATADIR@"
1214
#define FCITX_INSTALL_LIBEXECDIR "@FCITX_INSTALL_LIBEXECDIR@"
@@ -19,7 +21,6 @@
1921
#define FCITX_VERSION_STRING "@FCITX_VERSION@"
2022

2123
#define ISOCODES_ISO639_JSON "@ISOCODES_ISO639_JSON@"
22-
#define ISOCODES_ISO3166_JSON "@ISOCODES_ISO3166_JSON@"
2324
#define XKEYBOARDCONFIG_XKBBASE "@XKEYBOARDCONFIG_XKBBASE@"
2425
#define DEFAULT_XKB_RULES "@DEFAULT_XKB_RULES@"
2526
#define NO_PREEDIT_APPS "@NO_PREEDIT_APPS@"
@@ -44,6 +45,9 @@
4445
#define DBUS_SYSTEM_BUS_DEFAULT_ADDRESS "@DBUS_SYSTEM_BUS_DEFAULT_ADDRESS@"
4546

4647
#cmakedefine HAVE_PIPE2
48+
#cmakedefine HAVE_SYS_WAIT_H
49+
#cmakedefine HAVE_SYS_MMAN_H
50+
#cmakedefine HAVE_SYS_UIO_H
4751

4852
#ifndef _GNU_SOURCE
4953
#define _GNU_SOURCE

0 commit comments

Comments
 (0)