# SPDX-FileCopyrightText: 2020 Carl Schwan <carl@carlschwan.eu>
#
# SPDX-License-Identifier: BSD-2-Clause

if(NOT ANDROID)
add_subdirectory(code/modules/image2text)
add_subdirectory(code/modules/opencv)
endif()

set(
    sources
    code/imagetools_plugin.cpp
    code/picinfomodel.cpp
    code/imagemetadata.cpp
    code/exiv2extractor.cpp
    code/geolocation/city.cpp
    code/geolocation/cities.cpp
    code/geolocation/citiesdb.cpp
    code/geolocation/kdtree.cpp
    code/textscanner.cpp
    )

set(
    headers
    code/picinfomodel.h
    code/imagemetadata.h
    code/imagetools_plugin.h
    code/exiv2extractor.h
    code/geolocation/city.h
    code/geolocation/cities.h
    code/geolocation/citiesdb.h
    code/geolocation/kdtree.hpp
    code/textscanner.h
    )

set(
    pluginData
    controls/qmldir
    data/cities.db
    )

if(QUICK_COMPILER)
    qtquick_compiler_add_resources(imagetools_QML_QRC resources.qrc)
else()
    qt5_add_resources(imagetools_QML_QRC resources.qrc)
endif()

add_library(
    MauiKitImageTools
    SHARED
    ${sources} ${pluginData} ${imagetools_QML_QRC}
    )

add_library(MauiKit::ImageTools ALIAS MauiKitImageTools)

generate_export_header(MauiKitImageTools BASE_NAME ImageTools)
set_target_properties(MauiKitImageTools PROPERTIES
    VERSION ${ImageTools_VERSION_STRING}
    SOVERSION ${ImageTools_SOVERSION}
    EXPORT_NAME ImageTools
    )

if(ANDROID)
    target_link_libraries(
        MauiKitImageTools
        PRIVATE
        Qt5::AndroidExtras
        )
else()
    target_link_libraries(
        MauiKitImageTools
        PRIVATE
        Image2Text
        )
endif()

target_include_directories(MauiKitImageTools
    INTERFACE "$<INSTALL_INTERFACE:${KDE_INSTALL_INCLUDEDIR}/MauiKit/ImageTools>")

target_include_directories(MauiKitImageTools PUBLIC "$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR};${CMAKE_CURRENT_BINARY_DIR};>")

if(QUICK_COMPILER)
    add_definitions(-DQUICK_COMPILER)
    target_compile_definitions(MauiKitImageTools PUBLIC QUICK_COMPILER)
endif()

target_link_libraries(
    MauiKitImageTools

    PRIVATE
    Qt5::Core
    Qt5::Quick
    Qt5::Qml
    Qt5::Sql
    LibExiv2::LibExiv2
    Qt5::Positioning
    KF5::CoreAddons
    KF5::I18n
    MauiKit
    )

install(TARGETS MauiKitImageTools EXPORT MauiKitImageToolsTargets ${KDE_INSTALL_TARGETS_DEFAULT_ARGS})

install(FILES
    ${headers}
    ${CMAKE_CURRENT_BINARY_DIR}/imagetools_export.h
    DESTINATION ${KDE_INSTALL_INCLUDEDIR}/MauiKit/ImageTools
    COMPONENT Devel)

if (BUILD_SHARED_LIBS)
    add_custom_target(copy_to_bin ALL
        COMMAND ${CMAKE_COMMAND} -E
        make_directory ${CMAKE_BINARY_DIR}/bin/org/mauikit/imagetools/
        COMMAND ${CMAKE_COMMAND} -E
        copy_directory ${CMAKE_CURRENT_SOURCE_DIR}/controls ${CMAKE_BINARY_DIR}/bin/org/mauikit/imagetools/
        COMMAND ${CMAKE_COMMAND} -E
        copy $<TARGET_FILE:MauiKitImageTools> ${CMAKE_BINARY_DIR}/bin/org/mauikit/imagetools/
        )

    if(QUICK_COMPILER AND NOT ANDROID )
        install(FILES controls/qmldir DESTINATION ${KDE_INSTALL_QMLDIR}/org/mauikit/imagetools)
    else()
        install(DIRECTORY controls/ DESTINATION ${KDE_INSTALL_QMLDIR}/org/mauikit/imagetools)
    endif()
endif()

if(ANDROID)
    install (FILES data/cities.db DESTINATION ${KDE_INSTALL_QMLDIR}/org/mauikit/imagetools)
else()
    install (FILES data/cities.db DESTINATION ${KDE_INSTALL_DATADIR}/org/mauikit/imagetools)
endif()

install(TARGETS MauiKitImageTools DESTINATION ${KDE_INSTALL_QMLDIR}/org/mauikit/imagetools)

