cmake_minimum_required(VERSION 3.16)

# KDE Gear version, managed by release script
set (RELEASE_SERVICE_VERSION_MAJOR "25")
set (RELEASE_SERVICE_VERSION_MINOR "03")
set (RELEASE_SERVICE_VERSION_MICRO "90")
set (RELEASE_SERVICE_VERSION "${RELEASE_SERVICE_VERSION_MAJOR}.${RELEASE_SERVICE_VERSION_MINOR}.${RELEASE_SERVICE_VERSION_MICRO}")

project(kmouth VERSION ${RELEASE_SERVICE_VERSION})
set(QT_REQUIRED_VERSION "6.6.0")
set(KF_MIN_VERSION "6.3.0")

option(BUILD_DOC "Whether to build the documentation" ON)

if(NOT MSVC)
    set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-Wall -Wno-switch -O2 -g")
    set(CMAKE_CXX_FLAGS_RELEASE "-Wall -Wno-switch -O2")
    set(CMAKE_CXX_FLAGS_DEBUG  "-Wall -Wno-switch -g3 -ggdb -O0" CACHE STRING "Debug options." FORCE)
endif(NOT MSVC)

include(FeatureSummary)

find_package(ECM ${KF_MIN_VERSION} NO_MODULE REQUIRED)
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${ECM_MODULE_PATH} )
include(ECMAddAppIcon)
include(KDEInstallDirs)
include(KDECMakeSettings)
include(KDECompilerSettings NO_POLICY_SCOPE)
include(ECMInstallIcons)
include(ECMSetupVersion)
include(ECMDeprecationSettings)

include(KDEClangFormat)
include(KDEGitCommitHooks)

find_package(Qt6 ${QT_REQUIRED_VERSION} REQUIRED COMPONENTS
    Core
    PrintSupport
    TextToSpeech
    Xml
    Widgets
)

find_package(KF6 ${KF_MIN_VERSION} REQUIRED COMPONENTS
    Crash
    Completion
    Config
    ConfigWidgets
    CoreAddons
    I18n
    KIO
    WidgetsAddons
    XmlGui
)

if(BUILD_DOC)
    find_package(KF6DocTools ${KF_MIN_VERSION})
    set_package_properties(KF6DocTools PROPERTIES
        DESCRIPTION "Tools to generate documentation"
        TYPE REQUIRED
    )
endif()

ecm_setup_version(${kmouth_VERSION}
    VARIABLE_PREFIX KMOUTH
    VERSION_HEADER version.h
)

include_directories (${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR} )
ecm_set_disabled_deprecation_versions(QT 6.8.0  KF 6.5.0)

add_subdirectory( icons )
add_subdirectory( books )

include_directories(./wordcompletion/  )


########### next target ###############
add_executable(kmouth)

target_sources(kmouth PRIVATE
    ./phrasebook/phrasebookreader.cpp ./phrasebook/phrasebookreader.h
    ./phrasebook/phrasebookdialog.cpp ./phrasebook/phrasebookdialog.h
    ./phrasebook/initialphrasebookwidget.cpp ./phrasebook/initialphrasebookwidget.h
    ./phrasebook/phrasebook.cpp ./phrasebook/phrasebook.h
    ./wordcompletion/wordlist.cpp ./wordcompletion/wordlist.h
    ./wordcompletion/wordcompletion.cpp ./wordcompletion/wordcompletion.h
    ./wordcompletion/wordcompletionwidget.cpp ./wordcompletion/wordcompletionwidget.h
    ./wordcompletion/dictionarycreationwizard.cpp ./wordcompletion/dictionarycreationwizard.h
    texttospeechconfigurationwidget.cpp texttospeechconfigurationwidget.h
    optionsdialog.cpp optionsdialog.h
    configwizard.cpp configwizard.h
    phraselist.cpp phraselist.h
    speech.cpp speech.h
    texttospeechsystem.cpp texttospeechsystem.h
    kmouth.cpp kmouth.h
    main.cpp

    kmouth.qrc
)

ki18n_wrap_ui(kmouth
    ./phrasebook/phrasebookdialog.ui
    ./wordcompletion/creationsourceui.ui
    ./wordcompletion/creationsourcedetailsui.ui
    ./wordcompletion/kdedocsourceui.ui
    ./wordcompletion/wordcompletionui.ui
    preferencesui.ui
    texttospeechconfigurationui.ui )


target_link_libraries(kmouth
                      KF6::Completion
                      KF6::ConfigCore
                      KF6::Crash
                      KF6::KIOCore
                      KF6::KIOWidgets
                      KF6::I18n
                      KF6::WidgetsAddons
                      KF6::XmlGui
                      Qt::PrintSupport
                      Qt::TextToSpeech
                      Qt::Widgets
                      Qt::Xml )

install(TARGETS kmouth  ${KDE_INSTALL_TARGETS_DEFAULT_ARGS} )


########### install files ###############

install( PROGRAMS org.kde.kmouth.desktop  DESTINATION  ${KDE_INSTALL_APPDIR} )
install( FILES kmouthrc  DESTINATION  ${KDE_INSTALL_CONFDIR} )
install(FILES org.kde.kmouth.appdata.xml DESTINATION ${KDE_INSTALL_METAINFODIR})

ki18n_install(po)

if(BUILD_DOC)
    add_subdirectory(doc)
    kdoctools_install(po)
endif()

file(GLOB_RECURSE ALL_CLANG_FORMAT_SOURCE_FILES *.cpp *.h)
kde_clang_format(${ALL_CLANG_FORMAT_SOURCE_FILES})

kde_configure_git_pre_commit_hook(CHECKS CLANG_FORMAT)

feature_summary(WHAT ALL FATAL_ON_MISSING_REQUIRED_PACKAGES)

