cmake_minimum_required(VERSION 3.25)
project(lomiri-keyboard VERSION 1.2.0 LANGUAGES C CXX)

set(CMAKE_INCLUDE_CURRENT_DIR ON)

include(GNUInstallDirs)

option(ENABLE_TESTS "Build tests" ON)
option(ENABLE_DOCUMENTATION "Build documentation" ON)
option(ENABLE_PINYIN "Build with support for libpinyin input methods" ON)
option(ENABLE_CHEWING "Build with support for libchewing input methods" ON)
option(ENABLE_HUNSPELL "Build with support for presage predictive text entry" ON)

set(MALIIT_DEFAULT_PROFILE "lomiri" CACHE STRING "Default keyboard style")
set(HUNSPELL_DICT_PATH "${CMAKE_INSTALL_FULL_DATADIR}/hunspell" CACHE STRING "Path to hunspell dictionaries")

find_package(Qt6 REQUIRED COMPONENTS Core DBus Gui Qml Quick Widgets Core5Compat ShaderTools)
if(ENABLE_TESTS)
    enable_testing()
    find_package(Qt6 REQUIRED COMPONENTS QuickTest OpenGL)
endif()

qt_standard_project_setup()

find_package(PkgConfig REQUIRED)

pkg_check_modules(MALIIT6_PLUGINS REQUIRED IMPORTED_TARGET maliit6-plugins)
pkg_get_variable(MALIIT6_PLUGINS_DIR maliit6-plugins pluginsdir)
pkg_get_variable(MALIIT6_PLUGINS_DATA_DIR maliit6-plugins pluginsdatadir)
pkg_check_modules(GSETTINGS_QT6 REQUIRED IMPORTED_TARGET gsettings-qt6)
if(ENABLE_HUNSPELL)
    pkg_check_modules(HUNSPELL REQUIRED IMPORTED_TARGET hunspell)
    add_definitions(
        -DHAVE_HUNSPELL
    )
endif()
find_library(PRESAGE NAMES presage REQUIRED)

add_definitions(-DMALIIT_KEYBOARD_HAVE_OPENGL)

set(LOMIRI_KEYBOARD_LIB_DIR "${CMAKE_INSTALL_FULL_LIBDIR}/lomiri-keyboard")
set(LOMIRI_KEYBOARD_DATA_DIR "${MALIIT6_PLUGINS_DATA_DIR}/lomiri-keyboard")
set(LOMIRI_KEYBOARD_PLUGIN_DIR "${LOMIRI_KEYBOARD_LIB_DIR}/plugins")
set(LOMIRI_KEYBOARD_TEST_DIR "/usr/share/maliit/tests/lomiri-keyboard")
set(LOMIRI_KEYBOARD_HEADERS_DIR "${CMAKE_INSTALL_FULL_INCLUDEDIR}/lomiri-keyboard")
add_definitions(
    -DLOMIRI_KEYBOARD_DATA_DIR=\"${LOMIRI_KEYBOARD_DATA_DIR}\"
    -DLOMIRI_KEYBOARD_PLUGIN_DIR=\"${LOMIRI_KEYBOARD_PLUGIN_DIR}\"
    -DMALIIT_PLUGINS_DATA_DIR=\"${MALIIT6_PLUGINS_DATA_DIR}\"
)

add_subdirectory(src)
add_subdirectory(data)
add_subdirectory(qml6)
add_subdirectory(plugins)
add_subdirectory(po)
if(ENABLE_TESTS)
    add_subdirectory(tests)
endif()
