configure_file(${CMAKE_CURRENT_SOURCE_DIR}/config-latte-lib.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config-latte-lib.h)

set(lattecoreplugin_SRCS
    dialog.cpp
    dialog.h
    environment.cpp
    environment.h
    iconitem.cpp
    iconitem.h
    quickwindowsystem.cpp
    quickwindowsystem.h
    tools.cpp
    tools.h
    types.h
)

# All types are registered declaratively via QML_NAMED_ELEMENT (the plugin
# class and the registration code are generated by qt_add_qml_module; the
# Latte::Types Q_GADGET is declared in declarativeimports/coretypes.h.in).
set(LATTE_CORE_QML_BUILD_DIR ${CMAKE_BINARY_DIR}/qml/org/kde/latte/core)

qt_add_qml_module(lattecoreplugin
    URI org.kde.latte.core
    VERSION 0.2
    CLASS_NAME LatteCorePlugin
    PLUGIN_TARGET lattecoreplugin
    NO_PLUGIN_OPTIONAL
    DEPENDENCIES org.kde.plasma.core
    OUTPUT_DIRECTORY ${LATTE_CORE_QML_BUILD_DIR}
    SOURCES ${lattecoreplugin_SRCS}
)

# QML's Unix plugin loader expects the conventional lib-prefixed filename.
set_target_properties(lattecoreplugin PROPERTIES
    PREFIX "lib"
)

target_link_libraries(lattecoreplugin PRIVATE
    latteLogging
    Qt6::Quick
    Qt6::Qml
    KF6::CoreAddons
    KF6::WindowSystem
    ${LATTE_SVG_TARGET}
    Plasma::Plasma
    Plasma::PlasmaQuick
    ${LATTE_QUICKADDONS_TARGET}
    KF6::IconThemes
    KF6::GuiAddons
)

install(TARGETS lattecoreplugin DESTINATION ${KDE_INSTALL_QMLDIR}/org/kde/latte/core)

install(FILES ${LATTE_CORE_QML_BUILD_DIR}/qmldir DESTINATION ${KDE_INSTALL_QMLDIR}/org/kde/latte/core)
# Tooling data for qmllint/Qt Creator; generated together with the qmldir.
install(FILES ${LATTE_CORE_QML_BUILD_DIR}/lattecoreplugin.qmltypes
        DESTINATION ${KDE_INSTALL_QMLDIR}/org/kde/latte/core
        OPTIONAL)

if(LATTE_QT6_COMPAT_QMLDIR)
    install(TARGETS lattecoreplugin DESTINATION ${LATTE_QT6_COMPAT_QMLDIR}/org/kde/latte/core)
    install(FILES ${LATTE_CORE_QML_BUILD_DIR}/qmldir DESTINATION ${LATTE_QT6_COMPAT_QMLDIR}/org/kde/latte/core)
    install(FILES ${LATTE_CORE_QML_BUILD_DIR}/lattecoreplugin.qmltypes
            DESTINATION ${LATTE_QT6_COMPAT_QMLDIR}/org/kde/latte/core
            OPTIONAL)
endif()
