project(LomiriOnlineAccountsClientQML LANGUAGES CXX)

set(CLIENT_MODULE LomiriOnlineAccountsClientQML)
set(API_URI Lomiri.OnlineAccounts.Client)

if(ENABLE_QT6)
    qt_add_qml_module(${CLIENT_MODULE}
        URI ${API_URI}
        VERSION 0.2
        SOURCES plugin.h plugin.cpp
        PLUGIN_TARGET ${CLIENT_MODULE}
        CLASS_NAME Plugin
        NO_GENERATE_PLUGIN_SOURCE
        NO_PLUGIN_OPTIONAL)
    qt_query_qml_module(${CLIENT_MODULE}
        PLUGIN_TARGET module_plugin_target
        TARGET_PATH module_target_path
        QMLDIR module_qmldir
        TYPEINFO module_typeinfo
    )
    set_target_properties(${CLIENT_MODULE} PROPERTIES
        LINK_FLAGS -Wl,--no-undefined
    )
    target_include_directories(${CLIENT_MODULE} PRIVATE
        ${CMAKE_CURRENT_SOURCE_DIR}
        ${CMAKE_CURRENT_BINARY_DIR}
        ${LomiriOnlineAccountsClient_SOURCE_DIR}/..
    )
    target_link_libraries(${CLIENT_MODULE} PRIVATE
        Qt${QT_VERSION}::Core
        Qt${QT_VERSION}::Qml
        Qt${QT_VERSION}::Quick
        lomiri-online-accounts-client${LIB_SUFFIX}
    )

    set(PLUGIN_IMPORTS_DIR "${QT_INSTALL_QML}/${module_target_path}")
    install(TARGETS ${module_plugin_target} DESTINATION "${PLUGIN_IMPORTS_DIR}")
    install(FILES ${module_qmldir} DESTINATION "${PLUGIN_IMPORTS_DIR}")
    # install(FILES ${module_typeinfo} DESTINATION "${PLUGIN_IMPORTS_DIR}")
else()
    include_directories(
        ${CMAKE_CURRENT_SOURCE_DIR}
        ${CMAKE_CURRENT_BINARY_DIR}
        ${LomiriOnlineAccountsClient_SOURCE_DIR}/..
    )

    add_library(${CLIENT_MODULE} MODULE
        plugin.cpp
    )

    if(ENABLE_UBUNTU_COMPAT AND NOT ENABLE_QT6)
        add_definitions(-DLOMIRI_ONLINEACCOUNTS_UBUNTU_COMPAT)
    endif()

    set_target_properties(${CLIENT_MODULE} PROPERTIES
         LINK_FLAGS -Wl,--no-undefined
    )

    target_link_libraries(${CLIENT_MODULE}
        Qt${QT_VERSION}::Core
        Qt${QT_VERSION}::Qml
        Qt${QT_VERSION}::Quick
        lomiri-online-accounts-client
    )

    configure_file(${CMAKE_CURRENT_SOURCE_DIR}/qmldir.in ${CMAKE_CURRENT_BINARY_DIR}/qmldir @ONLY)

    # Module install

    set(PLUGIN_IMPORTS_DIR "${QT_INSTALL_QML}/Lomiri/OnlineAccounts/Client")
    install(FILES ${CMAKE_CURRENT_BINARY_DIR}/qmldir DESTINATION ${PLUGIN_IMPORTS_DIR})
    install(TARGETS ${CLIENT_MODULE} DESTINATION ${PLUGIN_IMPORTS_DIR})
endif()
