pkg_check_modules hunspell and pinyin

This commit is contained in:
Rick Vogel 2022-11-03 16:48:04 +01:00
parent c6087845a4
commit 92a475f335
7 changed files with 119 additions and 41 deletions

View File

@ -299,6 +299,16 @@ jobs:
set-env: "true"
tools-only: "false"
- name: Install hunspell for Ubuntu
if: startsWith(matrix.config.name, 'Ubuntu')
run: |
sudo apt-get install -y libhunspell-dev
- name: Install pinyin for Ubuntu
if: startsWith(matrix.config.name, 'Ubuntu')
run: |
sudo apt-get install -y libimepinyin-dev
- name: Configure
shell: bash
run: |
@ -310,7 +320,10 @@ jobs:
-G "${{ matrix.config.generators }}" \
-DCMAKE_BUILD_TYPE=${{ matrix.config.build_type }} \
-DCMAKE_INSTALL_PREFIX:PATH=instdir \
-D${{ matrix.config.cmake.qtdirkey }}:PATH="${{ matrix.config.cmake.qtdirvalue }}"
-D${{ matrix.config.cmake.qtdirkey }}:PATH="${{ matrix.config.cmake.qtdirvalue }}" \
-DENABLE_HUNSPELL:BOOL=ON \
-DENABLE_PINYIN:BOOL=ON
- name: Build
shell: bash
run: cmake --build . --config ${{ matrix.config.build_type }}

View File

@ -58,6 +58,26 @@ elseif(NOT "${Qt6_DIR}" STREQUAL "")
set(Qt_VERSION_PATCH ${Qt6_VERSION_PATCH})
endif()
# optional package hunspell
if(NOT UNIX AND ENABLE_HUNSPELL)
message(WARNING "Feature 'hunspell' only available for UNIX!")
unset(ENABLE_HUNSPELL CACHE)
endif()
# optional package pinyin
if(NOT UNIX AND ENABLE_PINYIN)
message(WARNING "Feature 'pinyin' only available for UNIX!")
unset(ENABLE_PINYIN CACHE)
endif()
if(ENABLE_HUNSPELL)
include(cmake/QSkinnyOptionalHunspell.cmake)
endif()
if(ENABLE_PINYIN)
include(cmake/QSkinnyOptionalPinyin.cmake)
endif()
if(TRUE)
message(STATUS "\${Qt} : ${Qt}")
message(STATUS "\${Qt_VERSION_MAJOR}: ${Qt_VERSION_MAJOR}")

View File

@ -0,0 +1,20 @@
find_package(PkgConfig)
pkg_check_modules(PKG_HUNSPELL QUIET hunspell)
find_path(HUNSPELL_INCLUDE_DIRS
NAMES hunspell.hxx
PATH_SUFFIXES hunspell
HINTS ${PKG_HUNSPELL_INCLUDE_DIRS})
find_library(HUNSPELL_LIBRARIES
NAMES ${PKG_HUNSPELL_LIBRARIES} hunspell hunspell-1.8 hunspell-1.7 hunspell-1.6 libhunspell
HINTS ${PKG_HUNSPELL_LIBRARY_DIRS})
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(HUNSPELL
REQUIRED_VARS HUNSPELL_LIBRARIES HUNSPELL_INCLUDE_DIRS
VERSION_VAR PKG_HUNSPELL_VERSION)
mark_as_advanced(HUNSPELL_INCLUDE_DIRS HUNSPELL_LIBRARIES)
add_library(hunspell SHARED IMPORTED GLOBAL)
set_target_properties(hunspell PROPERTIES IMPORTED_LOCATION ${HUNSPELL_LIBRARIES})
target_include_directories(hunspell
INTERFACE
${HUNSPELL_INCLUDE_DIRS})

View File

@ -0,0 +1,20 @@
find_package(PkgConfig)
pkg_check_modules(PKG_PINYIN QUIET pinyin)
find_path(PINYIN_INCLUDE_DIRS
NAMES pinyinime.h
PATH_SUFFIXES pinyin LibIME/libime/pinyin
HINTS ${PKG_PINYIN_INCLUDE_DIRS})
find_library(PINYIN_LIBRARIES
NAMES ${PKG_PINYIN_LIBRARIES} IMEPinyin imepinyin ime libime libimepinyin
HINTS ${PKG_PINYIN_LIBRARY_DIRS})
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(PINYIN
REQUIRED_VARS PINYIN_LIBRARIES PINYIN_INCLUDE_DIRS
VERSION_VAR PKG_PINYIN_VERSION)
mark_as_advanced(PINYIN_INCLUDE_DIRS PINYIN_LIBRARIES)
add_library(pinyin SHARED IMPORTED GLOBAL)
set_target_properties(pinyin PROPERTIES IMPORTED_LOCATION ${PINYIN_LIBRARIES})
target_include_directories(pinyin
INTERFACE
${PINYIN_INCLUDE_DIRS})

View File

@ -49,8 +49,8 @@ option(BUILD_QSKDLL "Build qskinny as shared library" ON)
option(BUILD_EXAMPLES "Build qskinny examples" ON)
option(BUILD_PLAYGROUND "Build qskinny playground" ON)
option(BUILD_SVG2QVG_STANDALONE "If 'ON' application won't be linked against qskinny library" ON)
option(ENABLE_PINYIN "Enable romanization system for standard mandarin chinese" OFF) # TODO try find pkg-config
option(ENABLE_HUNSPELL "Enable spell checker" OFF) # TODO try find pkg-config
option(ENABLE_PINYIN "UNIX ONLY OPTION: Enable romanization system for standard mandarin chinese" OFF)
option(ENABLE_HUNSPELL "UNIX ONLY OPTION: Enable spell checker" OFF)
option(ENABLE_FONT_CONFIG "Enable font config for font caching" ON)
option(ENABLE_ENSURE_SKINS "Enabling fall back code, that inserts some skin factories manually when not finding skin factories as plugins" ON)
option(ENABLE_AUTOQVG "enable automatic qvg compilation" OFF)

View File

@ -10,31 +10,33 @@ list(APPEND TARGET_OTHER_FILES
metadata.json)
if(ENABLE_PINYIN)
if(UNIX)
# TODO CONFIG += link_pkgconfig PKGCONFIG += pinyin
list(APPEND TARGET_HEADERS
${CMAKE_SOURCE_DIR}/src/inputpanel/QskPinyinTextPredictor.h)
list(APPEND TARGET_SOURCES
${CMAKE_SOURCE_DIR}/src/inputpanel/QskPinyinTextPredictor.cpp)
else()
message(WARNING "Feature 'pinyin' currently only available for UNIX!")
endif()
list(APPEND TARGET_HEADERS
${CMAKE_SOURCE_DIR}/src/inputpanel/QskPinyinTextPredictor.h)
list(APPEND TARGET_SOURCES
${CMAKE_SOURCE_DIR}/src/inputpanel/QskPinyinTextPredictor.cpp)
endif()
if(ENABLE_HUNSPELL)
if(UNIX)
# TODO CONFIG += link_pkgconfig PKGCONFIG += hunspell
list(APPEND TARGET_HEADERS
${CMAKE_SOURCE_DIR}/src/inputpanel/QskHunspellTextPredictor.h)
list(APPEND TARGET_SOURCES
${CMAKE_SOURCE_DIR}/src/inputpanel/QskHunspellTextPredictor.cpp)
else()
message(WARNING "Feature 'hunspell' currently only available for UNIX!")
endif()
list(APPEND TARGET_HEADERS
${CMAKE_SOURCE_DIR}/src/inputpanel/QskHunspellTextPredictor.h)
list(APPEND TARGET_SOURCES
${CMAKE_SOURCE_DIR}/src/inputpanel/QskHunspellTextPredictor.cpp)
endif()
add_library(${TARGET_NAME} SHARED ${TARGET_SOURCES} ${TARGET_HEADERS} ${TARGET_OTHER_FILES})
if(ENABLE_PINYIN)
target_link_libraries(${TARGET_NAME}
PRIVATE
pinyin)
endif()
if(ENABLE_HUNSPELL)
target_link_libraries(${TARGET_NAME}
PRIVATE
hunspell)
endif()
if(BUILD_QSKDLL)
target_compile_definitions(${TARGET_NAME}
PRIVATE

View File

@ -363,29 +363,18 @@ list(APPEND TARGET_SOURCES
inputpanel/QskVirtualKeyboard.cpp)
if(ENABLE_PINYIN)
if(UNIX)
target_compile_definitions(${TARGET_NAME} PRIVATE PINYIN) # TODO required?
# TODO CONFIG += link_pkgconfig PKGCONFIG += pinyin
list(APPEND TARGET_HEADERS
inputpanel/QskPinyinTextPredictor.h)
list(APPEND TARGET_HEADERS
inputpanel/QskPinyinTextPredictor.h)
list(APPEND TARGET_SOURCES
inputpanel/QskPinyinTextPredictor.cpp)
else()
message(WARNING "Feature 'pinyin' currently only available for UNIX!")
endif()
list(APPEND TARGET_SOURCES
inputpanel/QskPinyinTextPredictor.cpp)
endif()
if(ENABLE_HUNSPELL)
if(UNIX)
# TODO CONFIG += link_pkgconfig PKGCONFIG += hunspell
list(APPEND TARGET_HEADERS
inputpanel/QskHunspellTextPredictor.h)
list(APPEND TARGET_SOURCES
inputpanel/QskHunspellTextPredictor.cpp)
else()
message(WARNING "Feature 'hunspell' currently only available for UNIX!")
endif()
list(APPEND TARGET_HEADERS
inputpanel/QskHunspellTextPredictor.h)
list(APPEND TARGET_SOURCES
inputpanel/QskHunspellTextPredictor.cpp)
endif()
set(TARGET_NAME qskinny)
@ -433,6 +422,20 @@ if (Qt_VERSION_MAJOR VERSION_GREATER "5")
${Qt}::OpenGLPrivate)
endif()
if(ENABLE_HUNSPELL)
target_link_libraries(${TARGET_NAME}
PRIVATE
hunspell)
endif()
if(ENABLE_PINYIN)
target_compile_definitions(${TARGET_NAME} PRIVATE PINYIN)
target_link_libraries(${TARGET_NAME}
PRIVATE
pinyin)
endif()
set_target_properties(${TARGET_NAME}
PROPERTIES
AUTOMOC ON