init
Some checks failed
Docker. / Ubuntu (push) Has been cancelled
User-agent updater. / User-agent (push) Failing after 15s
Lock Threads / lock (push) Failing after 10s
Waiting for answer. / waiting-for-answer (push) Failing after 22s
Close stale issues and PRs / stale (push) Successful in 13s
Needs user action. / needs-user-action (push) Failing after 8s
Can't reproduce. / cant-reproduce (push) Failing after 8s

This commit is contained in:
allhaileris
2026-02-16 15:50:16 +03:00
commit afb81b8278
13816 changed files with 3689732 additions and 0 deletions

View File

@@ -0,0 +1,147 @@
# 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
add_library(lib_spellcheck STATIC)
add_library(desktop-app::lib_spellcheck ALIAS lib_spellcheck)
init_target(lib_spellcheck)
get_filename_component(src_loc . REALPATH)
set(use_enchant 0)
if (LINUX AND DESKTOP_APP_USE_ENCHANT)
set(use_enchant 1)
endif()
set(system_spellchecker 0)
if ((APPLE OR WIN32 OR use_enchant) AND NOT DESKTOP_APP_USE_HUNSPELL_ONLY)
set(system_spellchecker 1)
endif()
if (APPLE)
target_link_frameworks_weak(lib_spellcheck
PUBLIC
NaturalLanguage # Since macOS 10.14 only.
)
endif()
set(use_cld3 0)
if (LINUX OR DESKTOP_APP_USE_CLD3)
set(use_cld3 1)
endif()
target_precompile_headers(lib_spellcheck PRIVATE ${src_loc}/spellcheck/spellcheck_pch.h)
nice_target_sources(lib_spellcheck ${src_loc}
PRIVATE
highlighting/highlighting.qrc
spellcheck/platform/linux/language_linux.cpp
spellcheck/platform/linux/language_linux.h
spellcheck/platform/linux/linux_enchant.cpp
spellcheck/platform/linux/linux_enchant.h
spellcheck/platform/linux/spellcheck_linux.cpp
spellcheck/platform/linux/spellcheck_linux.h
spellcheck/platform/mac/language_mac.h
spellcheck/platform/mac/language_mac.mm
spellcheck/platform/mac/spellcheck_mac.h
spellcheck/platform/mac/spellcheck_mac.mm
spellcheck/platform/win/language_win.cpp
spellcheck/platform/win/language_win.h
spellcheck/platform/win/spellcheck_win.cpp
spellcheck/platform/win/spellcheck_win.h
spellcheck/platform/platform_language.h
spellcheck/platform/platform_spellcheck.h
spellcheck/third_party/language_cld3.cpp
spellcheck/third_party/language_cld3.h
spellcheck/third_party/hunspell_controller.cpp
spellcheck/third_party/hunspell_controller.h
spellcheck/third_party/spellcheck_hunspell.cpp
spellcheck/third_party/spellcheck_hunspell.h
spellcheck/spellcheck_types.h
spellcheck/spellcheck_highlight_syntax.cpp
spellcheck/spellcheck_highlight_syntax.h
spellcheck/spellcheck_utils.cpp
spellcheck/spellcheck_utils.h
spellcheck/spellcheck_value.cpp
spellcheck/spellcheck_value.h
spellcheck/spelling_highlighter.cpp
spellcheck/spelling_highlighter.h
spellcheck/spelling_highlighter_helper.cpp
spellcheck/spelling_highlighter_helper.h
spellcheck/spellcheck_pch.h
)
target_prepare_qrc(lib_spellcheck)
if (system_spellchecker)
remove_target_sources(lib_spellcheck ${src_loc}
spellcheck/third_party/spellcheck_hunspell.cpp
spellcheck/third_party/spellcheck_hunspell.h
)
else()
remove_target_sources(lib_spellcheck ${src_loc}
spellcheck/platform/linux/linux_enchant.cpp
spellcheck/platform/linux/linux_enchant.h
spellcheck/platform/linux/spellcheck_linux.cpp
spellcheck/platform/linux/spellcheck_linux.h
spellcheck/platform/mac/spellcheck_mac.h
spellcheck/platform/mac/spellcheck_mac.mm
spellcheck/platform/win/spellcheck_win.cpp
spellcheck/platform/win/spellcheck_win.h
)
endif()
if (use_cld3)
target_link_libraries(lib_spellcheck PRIVATE desktop-app::external_cld3)
remove_target_sources(lib_spellcheck ${src_loc}
spellcheck/platform/linux/language_linux.cpp
spellcheck/platform/linux/language_linux.h
spellcheck/platform/mac/language_mac.h
spellcheck/platform/mac/language_mac.mm
spellcheck/platform/win/language_win.cpp
spellcheck/platform/win/language_win.h
)
else()
remove_target_sources(lib_spellcheck ${src_loc}
spellcheck/third_party/language_cld3.cpp
spellcheck/third_party/language_cld3.h
)
endif()
# We should support both types of spellchecker for Windows.
if (WIN32 OR NOT system_spellchecker)
target_link_libraries(lib_spellcheck PRIVATE desktop-app::external_hunspell)
else()
remove_target_sources(lib_spellcheck ${src_loc}
spellcheck/third_party/hunspell_controller.cpp
spellcheck/third_party/hunspell_controller.h
)
endif()
target_include_directories(lib_spellcheck
PUBLIC
${src_loc}
)
target_link_libraries(lib_spellcheck
PRIVATE
desktop-app::lib_ui
desktop-app::lib_base
desktop-app::lib_rpl
desktop-app::lib_crl
desktop-app::lib_prisma
desktop-app::external_qt
desktop-app::external_ranges
desktop-app::external_gsl
desktop-app::external_xxhash
)
if (LINUX AND use_enchant)
find_package(PkgConfig REQUIRED)
pkg_search_module(DESKTOP_APP_ENCHANT REQUIRED enchant-2 enchant)
target_include_directories(lib_spellcheck SYSTEM PRIVATE ${DESKTOP_APP_ENCHANT_INCLUDE_DIRS})
endif()