find_package(LibXml2)
set_package_properties(
    LibXml2
    PROPERTIES
        DESCRIPTION
            "Required for XML schema validation in akonadixml"
        URL
            "http://xmlsoft.org"
        TYPE
            OPTIONAL
)

if(LIBXML2_FOUND)
    add_definitions(-DHAVE_LIBXML2)
endif()

if(BUILD_TESTING)
    add_subdirectory(autotests)
endif()
set(akonadixml_SRCS
    xmldocument.cpp
    xmldocument.h
    xmlreader.cpp
    xmlreader.h
    xmlwritejob.cpp
    xmlwritejob.h
    xmlwriter.cpp
    xmlwriter.h
)

# base install include dir
set(AkonadiXml_INSTALL_INCLUDEDIR "${KDE_INSTALL_INCLUDEDIR}/KPim6/AkonadiXml")

ecm_generate_headers(AkonadiXml_CC_HEADERS
    HEADER_NAMES
    XmlDocument
    XmlReader
    XmlWriteJob
    XmlWriter
    REQUIRED_HEADERS AkonadiXml_HEADERS
    PREFIX Akonadi
)

add_executable(akonadi2xml akonadi2xml.cpp)
if(COMPILE_WITH_UNITY_CMAKE_SUPPORT)
    set_target_properties(
        akonadi2xml
        PROPERTIES
            UNITY_BUILD
                ON
    )
endif()

set_target_properties(
    akonadi2xml
    PROPERTIES
        MACOSX_BUNDLE
            FALSE
)

target_link_libraries(
    akonadi2xml
    KPim6::AkonadiXml
    KF6::I18n
    Qt::Core
)

add_library(KPim6AkonadiXml ${akonadixml_SRCS})

ecm_generate_export_header(KPim6AkonadiXml
    BASE_NAME akonadi_xml
    EXPORT_FILE_NAME akonadi-xml_export.h
    VERSION ${AKONADI_VERSION}
    DEPRECATED_BASE_VERSION 0
    VERSION_BASE_NAME AKONADI
    USE_VERSION_HEADER akonadi_version.h
)

add_library(KPim6::AkonadiXml ALIAS KPim6AkonadiXml)

target_include_directories(KPim6AkonadiXml INTERFACE "$<INSTALL_INTERFACE:${AkonadiXml_INSTALL_INCLUDEDIR}>")
target_include_directories(
    KPim6AkonadiXml
    PUBLIC
        "$<BUILD_INTERFACE:${Akonadi_SOURCE_DIR}/src/core;${Akonadi_BINARY_DIR}/src/core>"
)

target_link_libraries(
    KPim6AkonadiXml
    PUBLIC
        KPim6::AkonadiCore
        Qt::Xml
    PRIVATE
        KF6::I18n
)
if(LIBXML2_FOUND)
    target_link_libraries(KPim6AkonadiXml PRIVATE LibXml2::LibXml2)
endif()

set_target_properties(
    KPim6AkonadiXml
    PROPERTIES
        VERSION
            ${AKONADI_VERSION}
        SOVERSION
            ${AKONADI_SOVERSION}
        EXPORT_NAME
            AkonadiXml
)

install(TARGETS KPim6AkonadiXml EXPORT KPim6AkonadiTargets ${KDE_INSTALL_TARGETS_DEFAULT_ARGS})

install(
    TARGETS
        akonadi2xml
        ${KDE_INSTALL_TARGETS_DEFAULT_ARGS}
)

install(
    FILES
        ${CMAKE_CURRENT_BINARY_DIR}/akonadi-xml_export.h
        ${AkonadiXml_HEADERS}
    DESTINATION ${AkonadiXml_INSTALL_INCLUDEDIR}/akonadi
    COMPONENT Devel
)
install(FILES ${AkonadiXml_CC_HEADERS} DESTINATION ${AkonadiXml_INSTALL_INCLUDEDIR}/Akonadi COMPONENT Devel)

install(FILES akonadi-xml.xsd DESTINATION ${KDE_INSTALL_DATADIR_KF}/akonadi/)

ecm_add_installed_library_check(KPim6AkonadiXml
    PACKAGE_NAME "KPim6Akonadi"
    PACKAGE_VERSION ${AKONADI_VERSION}
    PACKAGE_TARGET_NAMESPACE "KPim6::"
)

ecm_installed_library_check_include_strings(KPim6AkonadiXml
    HEADERS
    ${AkonadiXml_HEADERS}
    PREFIX akonadi
)

ecm_installed_library_check_include_strings(KPim6AkonadiXml
    HEADERS
    ${AkonadiXml_CC_HEADERS}
    PREFIX Akonadi
)

ecm_installed_library_check_version_preprocessor_macros(KPim6AkonadiXml
    PREFIX AKONADI
    VERSION ${AKONADI_VERSION}
)
