cmake_minimum_required(VERSION 3.16)

set(VERSION "0.0.1")

project(gnupgpass VERSION 0.0.1)

set(QT_MIN_VERSION "5.15.0")
set(KF_MIN_VERSION "5.100.0")
if (QT_MAJOR_VERSION STREQUAL "6")
    set(QT_MIN_VERSION "6.6.0")
    set(KF_MIN_VERSION "5.240.0")
endif()

find_package(ECM ${KF_MIN_VERSION} REQUIRED NO_MODULE)
set(CMAKE_MODULE_PATH ${ECM_MODULE_PATH} ${CMAKE_SOURCE_DIR}/cmake/modules)

include(KDEInstallDirs)
include(KDECompilerSettings NO_POLICY_SCOPE)
include(KDECMakeSettings)
include(ECMMarkAsTest)
include(ECMAddTests)
include(FeatureSummary)
include(ECMAddAppIcon)
include(ECMSetupVersion)
include(KDEGitCommitHooks)
include(KDEClangFormat)
kde_configure_git_pre_commit_hook(CHECKS CLANG_FORMAT)

# Generate header with version number
ecm_setup_version(${VERSION} VARIABLE_PREFIX GPGPASS VERSION_HEADER
                  "${CMAKE_CURRENT_BINARY_DIR}/gpgpass_version.h")

find_package(Qt${QT_MAJOR_VERSION} ${QT_MIN_VERSION} NO_MODULE COMPONENTS Core Widgets Test)
set_package_properties(Qt6 PROPERTIES
    TYPE REQUIRED
    PURPOSE "Basic application components"
)
include_directories(${CMAKE_BINARY_DIR})

find_package(KF${QT_MAJOR_VERSION} ${KF_MIN_VERSION} REQUIRED COMPONENTS
    CoreAddons
    Prison
    IconThemes
    I18n
    WidgetsAddons
    ItemModels
    ItemViews
    Config
    KIO
)
if (QT_MAJOR_VERSION STREQUAL "6")
    find_package(KF${QT_MAJOR_VERSION} ${KF_MIN_VERSION} REQUIRED COMPONENTS ColorScheme)
    find_package(QGpgmeQt6 1.19 CONFIG REQUIRED)
    set(KPIM_LIBKLEO_VERSION "6.1.40")
    find_package(KPim6Libkleo ${KPIM_LIBKLEO_VERSION} CONFIG REQUIRED)

    set(CMAKE_MODULE_PATH ${LIBKLEO_MODULE_PATH} ${CMAKE_MODULE_PATH})
    find_package(LibGpgError ${GPG_ERROR_REQUIRED_VERSION} REQUIRED)
else()
    find_package(QGpgme 1.19 CONFIG REQUIRED)
    find_package(KPim5Libkleo ${KPIM_LIBKLEO_VERSION} CONFIG REQUIRED)
    find_package(KF${QT_MAJOR_VERSION} ${KF_MIN_VERSION} REQUIRED COMPONENTS ConfigWidgets)
endif()

add_subdirectory(main)
add_subdirectory(src)
add_subdirectory(autotests)
ki18n_install(po)

install(FILES org.gnupg.gpgpass.desktop DESTINATION ${KDE_INSTALL_APPDIR})
install(FILES org.gnupg.gpgpass.metainfo.xml DESTINATION ${KDE_INSTALL_METAINFODIR})
install(FILES artwork/sc-gpgpass.svg DESTINATION ${KDE_INSTALL_FULL_ICONDIR}/hicolor/scalable/apps RENAME org.gnupg.gpgpass.svg)

feature_summary(WHAT ALL INCLUDE_QUIET_PACKAGES FATAL_ON_MISSING_REQUIRED_PACKAGES)
