# SPDX-FileCopyrightText: 2026 pluvium27 <pluvium27@outlook.com>
# SPDX-License-Identifier: BSD-2-Clause

cmake_minimum_required(VERSION 3.16)

project(heurams-k VERSION 1.0.0)

set(QT_MIN_VERSION "6.8.0")
set(KF_MIN_VERSION "6.12.0")

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

include(CTest)
include(FeatureSummary)

find_package(ECM ${KF_MIN_VERSION} REQUIRED NO_MODULE)

set(CMAKE_MODULE_PATH ${ECM_MODULE_PATH})
include(KDEInstallDirs)
include(KDECMakeSettings)
include(KDECompilerSettings NO_POLICY_SCOPE)
include(ECMPoQmTools)        # 新增
include(ECMSetupVersion)
include(ECMDeprecationSettings)
include(ECMAddAndroidApk)
include(ECMQmlModule)
include(KDEClangFormat)
include(KDEGitCommitHooks)

# 基础 Qt 组件
find_package(Qt6 ${QT_MIN_VERSION} REQUIRED COMPONENTS
    Core
    Quick
    Gui
    Qml
    Network
)

# KDE 框架
find_package(KF6 ${KF_MIN_VERSION} REQUIRED COMPONENTS
    Config
    Kirigami2          # 注意：Kongress 用 Kirigami2
    I18n
    CoreAddons
)

find_package(KF6KirigamiAddons 1.0 REQUIRED)

# Android 特殊处理
if (ANDROID)
    find_package(OpenSSL REQUIRED)  # QtNetwork 可能需要
    find_package(KF6 ${KF_MIN_VERSION} REQUIRED COMPONENTS ColorScheme)
else()
    find_package(Qt6 ${QT_MIN_VERSION} REQUIRED COMPONENTS Widgets)
    # 桌面版可以加这些，但不是必须
    # find_package(KF6 ${KF_MIN_VERSION} REQUIRED COMPONENTS Crash)
endif()

# 可选提醒功能（如果你需要）
# if(NOT ANDROID)
#     find_package(KF6 ${KF_MIN_VERSION} REQUIRED COMPONENTS Notifications)
# endif()

add_subdirectory(src)

# 安装 i18n 文件（如果有 po 目录）
if (IS_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/po")
    ki18n_install(po)
endif()

# 桌面文件安装（非 Android）
if (NOT ANDROID)
    install(FILES top.pluv27.heurams.kiri.desktop DESTINATION ${KDE_INSTALL_APPDIR})
    install(FILES top.pluv27.heurams.kiri.metainfo.xml DESTINATION ${KDE_INSTALL_METAINFODIR})
endif()

feature_summary(WHAT ALL INCLUDE_QUIET_PACKAGES FATAL_ON_MISSING_REQUIRED_PACKAGES)

# 代码格式化（可选）
file(GLOB_RECURSE ALL_CLANG_FORMAT_SOURCE_FILES src/*.cpp src/*.h)
kde_clang_format(${ALL_CLANG_FORMAT_SOURCE_FILES})
kde_configure_git_pre_commit_hook(CHECKS CLANG_FORMAT)
