# SPDX-FileCopyrightText: 2023 Carl Schwan <carl.schwan@gnupg.com>
# SPDX-License-Identifier: BSD-3-Clause

ecm_setup_version(PROJECT
    VARIABLE_PREFIX MIMETREEPARSER_CORE
    VERSION_HEADER "${CMAKE_CURRENT_BINARY_DIR}/mimetreeparser_core_version.h"
    PACKAGE_VERSION_FILE "${CMAKE_CURRENT_BINARY_DIR}/KPim6MimeTreeParserCoreConfigVersion.cmake"
    SOVERSION 6
)

# public dynamic library


add_library(KPim6MimeTreeParserCore)
add_library(KPim6::MimeTreeParserCore
    ALIAS KPim6MimeTreeParserCore
)

ecm_qt_declare_logging_category(KPim6MimeTreeParserCore
    HEADER mimetreeparser_core_debug.h
    IDENTIFIER MIMETREEPARSER_CORE_LOG
    CATEGORY_NAME org.kde.pim.mimetreeparser.core
    DESCRIPTION "mimetreeparser (pim lib)"
    EXPORT MIMETREEPARSERNG
)

target_sources(KPim6MimeTreeParserCore PRIVATE
     errors.h
     attachmentmodel.h
     bodypartformatter.h
     bodypartformatterbasefactory.h
     bodypartformatterbasefactory_p.h
     cryptohelper.h
     enums.h
     fileopener.h
     htmlutils.h
     messageparser.h
     messagepart.h
     objecttreeparser.h
     partmetadata.h
     partmodel.h
     urlhandler.h
     utils.h
     attachmentmodel.cpp
     bodypartformatter.cpp
     bodypartformatter_impl.cpp
     bodypartformatterbasefactory.cpp
     cryptohelper.cpp
     fileopener.cpp
     htmlutils.cpp
     messageparser.cpp
     messagepart.cpp
     objecttreeparser.cpp
     partmodel.cpp
     urlhandler.cpp
     utils.cpp
)

if(COMPILE_WITH_UNITY_CMAKE_SUPPORT)
    set_target_properties(KPim6MimeTreeParserCore PROPERTIES UNITY_BUILD ON)
endif()
generate_export_header(KPim6MimeTreeParserCore BASE_NAME mimetreeparser_core)


target_include_directories(KPim6MimeTreeParserCore
    INTERFACE "$<INSTALL_INTERFACE:${KDE_INSTALL_INCLUDEDIR}/KPim6/MimeTreeParserCore>")

target_link_libraries(KPim6MimeTreeParserCore
PUBLIC
    KPim6::Mime
    KPim6::Libkleo
    Gpgmepp
    Qt::Gui
PRIVATE
    KPim6::Mbox
    KF6::I18n
)

set_target_properties(KPim6MimeTreeParserCore PROPERTIES
    VERSION ${MIMETREEPARSERNG_VERSION}
    SOVERSION ${MIMETREEPARSERNG_SOVERSION}
    EXPORT_NAME MimeTreeParserCore
)

ecm_generate_pri_file(BASE_NAME MimeTreeParserCore
    LIB_NAME KPim6MimeTreeParserCore
    DEPS "MimeTreeParserCore" 
    FILENAME_VAR PRI_FILENAME
)

install(FILES ${PRI_FILENAME} DESTINATION ${ECM_MKSPECS_INSTALL_DIR})

install(TARGETS
    KPim6MimeTreeParserCore
    EXPORT KPim6MimeTreeParserCoreTargets ${KDE_INSTALL_TARGETS_DEFAULT_ARGS}
)

ecm_generate_headers(MimeTreeParserCore_CamelCase_HEADERS
    HEADER_NAMES
        AttachmentModel
        CryptoHelper
        Errors
        FileOpener
        MessageParser
        MessagePart
        ObjectTreeParser
        PartModel
        PartMetaData
        Enums
        UrlHandler
    REQUIRED_HEADERS MimeTreeParserCore_HEADERS
    PREFIX MimeTreeParserCore
)

install(FILES
    ${MimeTreeParserCore_CamelCase_HEADERS}
    DESTINATION ${KDE_INSTALL_INCLUDEDIR}/KPim6/MimeTreeParserCore/MimeTreeParserCore
    COMPONENT Devel
)
install(FILES
    ${CMAKE_CURRENT_BINARY_DIR}/mimetreeparser_core_export.h
    ${MimeTreeParserCore_HEADERS}
    DESTINATION ${KDE_INSTALL_INCLUDEDIR}/KPim6/MimeTreeParserCore/mimetreeparsercore
    COMPONENT Devel
)

if(BUILD_QCH)
    ecm_add_qch(
        KPim6MimeTreeParserCore_QCH
        NAME MimeTreeParserCore
        BASE_NAME KPim6MimeTreeParserCore
        VERSION ${PIM_VERSION}
        ORG_DOMAIN org.kde
        # using only public headers, to cover only public API
        SOURCES ${MimeTreeParserCore_HEADERS}
        MD_MAINPAGE "${CMAKE_SOURCE_DIR}/README.md"
        LINK_QCHS
            Qt6Core_QCH
        INCLUDE_DIRS
            ${CMAKE_CURRENT_BINARY_DIR}
        BLANK_MACROS
            MIMETREEPARSERCORE_EXPORT
        TAGFILE_INSTALL_DESTINATION ${KDE_INSTALL_QTQCHDIR}
        QCH_INSTALL_DESTINATION ${KDE_INSTALL_QTQCHDIR}
        COMPONENT Devel
   )
endif()

########### CMake Config Files ###########
set(CMAKECONFIG_INSTALL_DIR "${KDE_INSTALL_CMAKEPACKAGEDIR}/KPim6MimeTreeParserCore")

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

configure_package_config_file(
    "${CMAKE_CURRENT_SOURCE_DIR}/KPimMimeTreeParserCoreConfig.cmake.in"
    "${CMAKE_CURRENT_BINARY_DIR}/KPim6MimeTreeParserCoreConfig.cmake"
    INSTALL_DESTINATION  ${CMAKECONFIG_INSTALL_DIR}
)

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

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