diff --git a/CMakeLists.txt b/CMakeLists.txt index c3316d2..b7c2a15 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -11,7 +11,11 @@ include(ECMUninstallTarget) find_package(Fcitx5Core 5.0.2 REQUIRED) find_package(Gettext REQUIRED) find_package(PkgConfig REQUIRED) -pkg_check_modules(Hangul IMPORTED_TARGET "libhangul>=0.0.12" REQUIRED) + +if (NOT DEFINED HANGUL_TARGET) + pkg_check_modules(Hangul IMPORTED_TARGET "libhangul>=0.0.12" REQUIRED) + set(HANGUL_TARGET PkgConfig::Hangul) +endif() include("${FCITX_INSTALL_CMAKECONFIG_DIR}/Fcitx5Utils/Fcitx5CompilerSettings.cmake") add_definitions(-DFCITX_GETTEXT_DOMAIN=\"fcitx5-hangul\" -D_GNU_SOURCE) diff --git a/data/CMakeLists.txt b/data/CMakeLists.txt index 2a28eaa..38d0ece 100644 --- a/data/CMakeLists.txt +++ b/data/CMakeLists.txt @@ -1,4 +1,4 @@ -install(FILES symbol.txt DESTINATION ${FCITX_INSTALL_PKGDATADIR}/hangul/) +install(FILES symbol.txt DESTINATION ${FCITX_INSTALL_PKGDATADIR}/hangul/ COMPONENT config) install(DIRECTORY 16x16 22x22 24x24 48x48 64x64 DESTINATION "${CMAKE_INSTALL_DATADIR}/icons/hicolor" PATTERN .* EXCLUDE diff --git a/list/CMakeLists.txt b/list/CMakeLists.txt index 097ea39..ac6d6d3 100644 --- a/list/CMakeLists.txt +++ b/list/CMakeLists.txt @@ -1,2 +1,2 @@ add_executable(gen_list gen_list.c) -target_link_libraries (gen_list PkgConfig::Hangul) +target_link_libraries (gen_list ${HANGUL_TARGET}) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 02ab6a2..5bbbcdf 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -3,11 +3,10 @@ set( fcitx_hangul_sources ) add_library(hangul MODULE ${fcitx_hangul_sources}) -target_link_libraries(hangul Fcitx5::Core Fcitx5::Config PkgConfig::Hangul) -set_target_properties(hangul PROPERTIES PREFIX "") +target_link_libraries(hangul Fcitx5::Core Fcitx5::Config ${HANGUL_TARGET}) install(TARGETS hangul DESTINATION "${CMAKE_INSTALL_LIBDIR}/fcitx5") fcitx5_translate_desktop_file(hangul.conf.in hangul.conf) configure_file(hangul-addon.conf.in.in hangul-addon.conf.in) fcitx5_translate_desktop_file("${CMAKE_CURRENT_BINARY_DIR}/hangul-addon.conf.in" hangul-addon.conf) -install(FILES "${CMAKE_CURRENT_BINARY_DIR}/hangul.conf" DESTINATION "${FCITX_INSTALL_PKGDATADIR}/inputmethod") -install(FILES "${CMAKE_CURRENT_BINARY_DIR}/hangul-addon.conf" RENAME hangul.conf DESTINATION "${FCITX_INSTALL_PKGDATADIR}/addon") +install(FILES "${CMAKE_CURRENT_BINARY_DIR}/hangul.conf" DESTINATION "${FCITX_INSTALL_PKGDATADIR}/inputmethod" COMPONENT config) +install(FILES "${CMAKE_CURRENT_BINARY_DIR}/hangul-addon.conf" RENAME hangul.conf DESTINATION "${FCITX_INSTALL_PKGDATADIR}/addon" COMPONENT config) diff --git a/src/engine.cpp b/src/engine.cpp index 8a71a08..c9ab7c4 100644 --- a/src/engine.cpp +++ b/src/engine.cpp @@ -538,10 +538,16 @@ class HangulState : public InputContextProperty { LookupMethod lastLookupMethod_; }; +HanjaTable *loadTable() { + const auto &sp = fcitx::StandardPath::global(); + std::string hanjaTxt = sp.locate(fcitx::StandardPath::Type::Data, "libhangul/hanja/hanja.txt"); + return hanja_table_load(hanjaTxt.empty() ? nullptr : hanjaTxt.c_str()); +} + HangulEngine::HangulEngine(Instance *instance) : instance_(instance), factory_([this](InputContext &ic) { return new HangulState(this, &ic); }), - table_(hanja_table_load(nullptr)) { + table_(loadTable()) { if (!table_) { throw std::runtime_error("Failed to load hanja table."); } diff --git a/src/hangul-addon.conf.in.in b/src/hangul-addon.conf.in.in index efdeb33..b86796e 100644 --- a/src/hangul-addon.conf.in.in +++ b/src/hangul-addon.conf.in.in @@ -3,7 +3,7 @@ Name=Hangul Comment=Hangul Wrapper For Fcitx Category=InputMethod Version=@PROJECT_VERSION@ -Library=hangul +Library=libhangul Type=SharedLibrary OnDemand=True Configurable=True