# SPDX-License-Identifier: CC0-1.0
# SPDX-FileCopyrightText: none

## Html to text converter target

add_executable(akonadi_html_to_text htmltotext.cpp)

if(Corrosion_FOUND)
    corrosion_import_crate(MANIFEST_PATH ${CMAKE_CURRENT_SOURCE_DIR}/rs/htmlparser/Cargo.toml)
    target_link_libraries(
        akonadi_html_to_text
        PUBLIC
            htmlparser
            -Wl,--gc-sections
    )

    if(Corrosion_VERSION VERSION_LESS 0.6.0)
        set(corrosion_build_dir "build")
    else()
        string(SHA1 cargo_path_hash ${CMAKE_CURRENT_SOURCE_DIR}/rs/htmlparser/Cargo.toml)
        string(
            SUBSTRING "${cargo_path_hash}"
            0
            5
            cargo_path_hash
        )
        set(corrosion_build_dir "htmlparser_${cargo_path_hash}")
    endif()

    target_include_directories(
        akonadi_html_to_text
        PRIVATE
            ${CMAKE_BINARY_DIR}/cargo/${corrosion_build_dir}/${Rust_CARGO_TARGET}/cxxbridge/htmlparser/src/
    )

    target_compile_definitions(akonadi_html_to_text PRIVATE -DHAS_HTMLPARSER)
endif()

target_link_libraries(
    akonadi_html_to_text
    PRIVATE
        Qt::Core
        Qt::Gui
        KF6::CoreAddons
        KF6::I18n
)

install(
    TARGETS
        akonadi_html_to_text
        ${KDE_INSTALL_TARGETS_DEFAULT_ARGS}
)

## Indexing agent target

kde_enable_exceptions()
include_directories(
    ${XAPIAN_INCLUDE_DIR}
    ${CMAKE_CURRENT_BINARY_DIR}
)

add_executable(akonadi_indexing_agent)

target_sources(
    akonadi_indexing_agent
    PRIVATE
        abstractindexer.cpp
        agent.cpp
        emailindexer.cpp
        contactindexer.cpp
        calendarindexer.cpp
        collectionindexer.cpp
        priority.cpp
        scheduler.cpp
        collectionindexingjob.cpp
        index.cpp
        collectionupdatejob.cpp
        abstractindexer.h
        agent.h
        emailindexer.h
        contactindexer.h
        calendarindexer.h
        collectionindexer.h
        priority.h
        scheduler.h
        collectionindexingjob.h
        index.h
        collectionupdatejob.h
)

ecm_qt_declare_logging_category(akonadi_indexing_agent HEADER akonadi_indexer_agent_debug.h IDENTIFIER AKONADI_INDEXER_AGENT_LOG CATEGORY_NAME org.kde.pim.akonadi_indexer_agent
        DESCRIPTION "akonadisearch (akonadi indexer agent)"
        OLD_CATEGORY_NAMES log_akonadi_indexer_agent
        EXPORT AKONADISEARCH
)

ecm_qt_declare_logging_category(akonadi_indexing_agent HEADER akonadi_indexer_agent_calendar_debug.h IDENTIFIER AKONADI_INDEXER_AGENT_CALENDAR_LOG CATEGORY_NAME org.kde.pim.akonadi_indexer_agent.calendar
        DESCRIPTION "akonadisearch (akonadi indexer agent calendar)"
        EXPORT AKONADISEARCH
)

ecm_qt_declare_logging_category(akonadi_indexing_agent HEADER akonadi_indexer_agent_email_debug.h IDENTIFIER AKONADI_INDEXER_AGENT_EMAIL_LOG CATEGORY_NAME org.kde.pim.akonadi_indexer_agent.email
        DESCRIPTION "akonadisearch (akonadi indexer agent email)"
        EXPORT AKONADISEARCH
)

qt_add_dbus_adaptor(akonadi_indexing_agent_SRCS org.freedesktop.Akonadi.Indexer.xml agent.h AkonadiIndexingAgent)
target_sources(akonadi_indexing_agent PRIVATE ${akonadi_indexing_agent_SRCS})

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

target_link_libraries(
    akonadi_indexing_agent
    PRIVATE
        Qt::Core
        KPim6::AkonadiCore
        KPim6::AkonadiMime
        KPim6::Mime
        KF6::Contacts
        KPim6::AkonadiAgentBase
        KF6::CalendarCore
        KPim6::AkonadiSearchXapian
        KPim6::AkonadiSearchPIM
        KF6::Codecs
        KF6::I18n
        KF6::ConfigCore
        KF6::TextUtils
)

install(
    TARGETS
        akonadi_indexing_agent
        ${KDE_INSTALL_TARGETS_DEFAULT_ARGS}
)
install(FILES akonadiindexingagent.desktop DESTINATION "${KDE_INSTALL_DATAROOTDIR}/akonadi/agents")

if(BUILD_TESTING)
    add_subdirectory(tests)
    add_subdirectory(autotests)
endif()
