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})

generate_export_header(KPim6AkonadiXml BASE_NAME akonadi-xml)

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/)
