# SPDX-FileCopyrightText: (C) 2023 Claudio Cambra <claudio.cambra@kde.org>
# SPDX-License-Identifier: BSD-2-Clause

## identitymanagentprivate target

ecm_setup_version(PROJECT VARIABLE_PREFIX KIDENTITYMANAGEMENTQUICK
                        VERSION_HEADER "${CMAKE_CURRENT_BINARY_DIR}/kidentitymanagementquick_version.h"
                        PACKAGE_VERSION_FILE "${CMAKE_CURRENT_BINARY_DIR}/KPim6IdentityManagementQuickConfigVersion.cmake"
                        SOVERSION 6
)


add_library(identitymanagentprivate STATIC)

target_sources(identitymanagentprivate
    PRIVATE
        identityutils.h
        identityutils.cpp
        keylistmodelinterface.h
        identityeditorbackend.h
        identityeditorbackend.cpp
)
set_property(TARGET identitymanagentprivate PROPERTY POSITION_INDEPENDENT_CODE ON)
target_link_libraries(identitymanagentprivate
    PUBLIC
        Qt::Core
        Qt::Quick
	KPim6::IdentityManagementCore
    PRIVATE
        KF6::I18n
)

## KPimIdentityManagementQuick target

add_library(KPim6IdentityManagementQuick SHARED)
add_library(KPim6::IdentityManagementQuick ALIAS KPim6IdentityManagementQuick)

target_sources(KPim6IdentityManagementQuick
    PRIVATE
        cryptographybackendinterface.h
        cryptographyeditorbackend.h
        cryptographyeditorbackend.cpp
)


target_link_libraries(KPim6IdentityManagementQuick
    PRIVATE
        identitymanagentprivate
)

if(COMPILE_WITH_UNITY_CMAKE_SUPPORT)
    set_target_properties(KPim6IdentityManagementQuick PROPERTIES UNITY_BUILD ON)
endif()

generate_export_header(KPim6IdentityManagementQuick
    BASE_NAME kidentitymanagementquick
)

target_include_directories(KPim6IdentityManagementQuick
    INTERFACE "$<INSTALL_INTERFACE:${KDE_INSTALL_INCLUDEDIR}/KPim6/KIdentityManagementQuick>"
)
target_include_directories(KPim6IdentityManagementQuick PUBLIC "$<BUILD_INTERFACE:${KIdentityManagement_SOURCE_DIR}/src;${KIdentityManagement_BINARY_DIR}/src>")

set_target_properties(KPim6IdentityManagementQuick PROPERTIES
	VERSION ${KIDENTITYMANAGEMENTQUICK_VERSION}
	SOVERSION ${KIDENTITYMANAGEMENTQUICK_SOVERSION}
    EXPORT_NAME IdentityManagementQuick
)

set(CMAKECONFIG_INSTALL_DIR "${KDE_INSTALL_CMAKEPACKAGEDIR}/KPim6IdentityManagementQuick")


install(FILES
  "${CMAKE_CURRENT_BINARY_DIR}/KPim6IdentityManagementQuickConfig.cmake"
  "${CMAKE_CURRENT_BINARY_DIR}/KPim6IdentityManagementQuickConfigVersion.cmake"
  DESTINATION "${CMAKECONFIG_INSTALL_DIR}"
  COMPONENT Devel
)

install(EXPORT KPim6IdentityManagementQuickTargets
    DESTINATION "${CMAKECONFIG_INSTALL_DIR}"
    FILE KPim6IdentityManagementQuickTargets.cmake
    NAMESPACE KPim6::
)

install(TARGETS KPim6IdentityManagementQuick EXPORT KPim6IdentityManagementQuickTargets ${KDE_INSTALL_TARGETS_DEFAULT_ARGS})

# ########## Generate Headers ###############
ecm_generate_headers(KIdentityManagementQuick_CamelCase_HEADERS
    HEADER_NAMES
        CryptographyBackendInterface
        CryptographyEditorBackend
        KeyListModelInterface
    PREFIX
        KIdentityManagementQuick
    REQUIRED_HEADERS
        KIdentityManagementQuick_HEADERS
)

# ########## install files ###############
install(FILES
    ${CMAKE_CURRENT_BINARY_DIR}/kidentitymanagementquick_export.h
    ${KIdentityManagementQuick_HEADERS}
    DESTINATION ${KDE_INSTALL_INCLUDEDIR}/KPim6/KIdentityManagementQuick/kidentitymanagementquick
    COMPONENT Devel
)
install(FILES ${KIdentityManagementQuick_CamelCase_HEADERS}
    DESTINATION ${KDE_INSTALL_INCLUDEDIR}/KPim6/KIdentityManagementQuick/KIdentityManagementQuick/
    COMPONENT Devel
)

if(BUILD_QCH)
    ecm_add_qch(KPim6IdentityManagementQuick_QCH
        NAME
            KIdentityManagementQuick
        BASE_NAME
            KPim6IdentityManagementQuick
        VERSION
            ${PIM_VERSION}
        ORG_DOMAIN
            org.kde
        SOURCES # using only public headers, to cover only public API
            ${KIdentityManagementQuick_HEADERS}

        # MD_MAINPAGE "${CMAKE_SOURCE_DIR}/README.md"
        # IMAGE_DIRS "${CMAKE_SOURCE_DIR}/docs/pics"
        LINK_QCHS
            Qt6Quick_QCH
        INCLUDE_DIRS
            ${CMAKE_CURRENT_BINARY_DIR}
        BLANK_MACROS
            KIDENTITYMANAGEMENTQUICK_EXPORT
        TAGFILE_INSTALL_DESTINATION
            ${KDE_INSTALL_QTQCHDIR}
        QCH_INSTALL_DESTINATION
            ${KDE_INSTALL_QTQCHDIR}
        COMPONENT
            Devel
)
endif()


# ########## QML Plugin s###############

ecm_add_qml_module(kidentitymanagement_quick_plugin URI "org.kde.kidentitymanagement" VERSION 1.0)

target_sources(kidentitymanagement_quick_plugin
    PRIVATE
        kidentitymanagementquickplugin.cpp
        kidentitymanagementquickplugin.h
)

target_link_libraries(kidentitymanagement_quick_plugin
    PUBLIC
        Qt::Core
        Qt::Quick
        identitymanagentprivate
	KPim6IdentityManagementCore
        KPim6IdentityManagementQuick
)

ecm_target_qml_sources(kidentitymanagement_quick_plugin SOURCES
    qml/BasicIdentityEditorCard.qml
    qml/CryptographyEditorCard.qml
    qml/IdentityConfigurationForm.qml
    qml/IdentityEditorPage.qml
)

ecm_finalize_qml_module(kidentitymanagement_quick_plugin
    DESTINATION ${KDE_INSTALL_QMLDIR}
    BUILD_SHARED_LIBS OFF
)

install(FILES
   ${CMAKE_CURRENT_BINARY_DIR}/kidentitymanagementquick_version.h
   DESTINATION ${KDE_INSTALL_INCLUDEDIR}/KPim6/KIdentityManagementQuick
   COMPONENT Devel
)

if(BUILD_QCH)
    ecm_install_qch_export(
        TARGETS KPim6IdentityManagementQuick_QCH
        FILE KPim6IdentityManagementQuickQchTargets.cmake
        DESTINATION "${CMAKECONFIG_INSTALL_DIR}"
        COMPONENT Devel
)
    set(PACKAGE_INCLUDE_QCHTARGETS "include(\"\${CMAKE_CURRENT_LIST_DIR}/KPim6IdentityManagementQuickQchTargets.cmake\")")
endif()

configure_package_config_file(
  "${CMAKE_CURRENT_SOURCE_DIR}/KPimIdentityManagementQuickConfig.cmake.in"
  "${CMAKE_CURRENT_BINARY_DIR}/KPim6IdentityManagementQuickConfig.cmake"
  INSTALL_DESTINATION ${CMAKECONFIG_INSTALL_DIR}
)

