cmake_minimum_required(VERSION 4.0)

project(plasma-ions-china
        DESCRIPTION "A collection of ions for Chinese users."
        HOMEPAGE_URL "https://github.com/arenekosreal/plasma-ions-china"
        LANGUAGES CXX)

if(NOT PROJECT_VERSION)
    find_package(Git)
    if (Git_FOUND)
        execute_process(COMMAND "${GIT_EXECUTABLE}" describe --tags --always
                        WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}"
                        OUTPUT_VARIABLE GIT_TAG
                        OUTPUT_STRIP_TRAILING_WHITESPACE
                        RESULT_VARIABLE GIT_RESULT
                        ERROR_QUIET)
        if (GIT_RESULT EQUAL 0 AND GIT_TAG MATCHES "^v[0-9]+\\.[0-9]+\\.[0-9]+")
            string(REGEX REPLACE "^v([0-9]+\\.[0-9]+\\.[0-9]+)" "\\1" PROJECT_VERSION "${GIT_TAG}")
            message("Extracted project version ${PROJECT_VERSION} from git tag.")
        endif()
    endif()
    if(NOT PROJECT_VERSION)
        set(PROJECT_VERSION 0.1.0)
        message(WARNING "Failed to find git to get tag of repository. Using fallback value ${PROJECT_VERSION} instead.")
    endif()
endif()

set(QT_MAJOR_VERSION 6)
set(KF_MAJOR_VERSION ${QT_MAJOR_VERSION})
set(QT_MIN_VERSION ${QT_MAJOR_VERSION}.6.0)
set(KF_MIN_VERSION ${KF_MAJOR_VERSION}.0.0)
find_package(ECM ${KF_MIN_VERSION} REQUIRED NO_MODULE)
list(APPEND CMAKE_MODULE_PATH "${ECM_MODULE_PATH}" "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
include(ECMQtDeclareLoggingCategory)
include(KDEInstallDirs)
include(KDECompilerSettings)
include(KDECMakeSettings)
include(KDEClangFormat)
include(KDEGitCommitHooks)

option(PLASMA_IONS_CHINA_ENABLE_MODERN "Enable ions used for KDE >= 6.5" ON)
option(PLASMA_IONS_CHINA_ENABLE_LEGACY "Enable ions used for KDE < 6.5" OFF)
option(PLASMA_IONS_CHINA_USE_SYSTEM_HEADERS "Use system headers for libplasmaweatherion and libplasmaweatherdata" OFF)

set(CMAKE_FIND_PACKAGE_PREFER_CONFIG TRUE) # Config, then Module
if(CMAKE_BUILD_TYPE MATCHES Debug)
    set(CMAKE_EXPORT_COMPILE_COMMANDS TRUE) # Clangd requires compile_commands.json generated by this
endif()
if(PLASMA_IONS_CHINA_ENABLE_MODERN)
    list(APPEND PLASMA_WEATHER_COMPONENTS Ion)
endif()
if(PLASMA_IONS_CHINA_ENABLE_LEGACY)
    message(WARNING "No maintainer is using KDE < 6.5, so the legacy version is unmaintained now.")
    list(APPEND PLASMA_WEATHER_COMPONENTS IonLegacy)
endif()
if(NOT PLASMA_WEATHER_COMPONENTS)
    message(FATAL_ERROR "At least one of PLASMA_IONS_CHINA_ENABLE_MODERN and PLASMA_IONS_CHINA_ENABLE_LEGACY should be set to `ON`")
endif()
set(ION_HEADERS_TARGET ion_headers)
if(PLASMA_IONS_CHINA_ENABLE_MODERN AND NOT PLASMA_IONS_CHINA_USE_SYSTEM_HEADERS)
    include(PlasmaIonsChinaIonHeadersTarget)
    plasma_ions_china_setup_ion_headers(VERSION 6.5.5
                                        HASH SHA256=32b69b987258998b95017cf08aba1d85b986303bd59e1bbc600ed12e2184f5cb
                                        TARGET_NAME "${ION_HEADERS_TARGET}"
                                        VARIABLES PlasmaWeather_Data_INCLUDE_DIR
                                                  PlasmaWeather_Ion_INCLUDE_DIR)
endif()
set(TRANSLATION_DOMAIN "plasma_ions_china")
find_package(PlasmaWeather COMPONENTS ${PLASMA_WEATHER_COMPONENTS})
find_package(KF${KF_MAJOR_VERSION} ${KF_MIN_VERSION} REQUIRED COMPONENTS UnitConversion I18n)
add_compile_definitions(-DTRANSLATION_DOMAIN=\"${TRANSLATION_DOMAIN}\")
if(TARGET Plasma::Weather::Ion)
    find_package(KF${KF_MAJOR_VERSION} ${KF_MIN_VERSION} REQUIRED COMPONENTS CoreAddons)
    set(ION_INSTALL_NAMESPACE "plasma/weather_ions")
    if(NOT PLASMA_IONS_CHINA_USE_SYSTEM_HEADERS)
        add_dependencies(Plasma::Weather::Ion "${ION_HEADERS_TARGET}")
    endif()
endif()
if(NOT TARGET Plasma::Weather::Ion AND NOT TARGET Plasma::Weather::IonLegacy)
    message(FATAL_ERROR "No ion is found. Please check if you have installed dependencies.")
endif()
if(CMAKE_BUILD_TYPE MATCHES Debug)
    include(PlasmaIonsChinaPoTargets)
    plasma_ions_china_setup_po_targets(TRANSLATION_DOMAIN "${TRANSLATION_DOMAIN}")
endif()
ki18n_install(po)

add_subdirectory("src")
