project(LomiriOnlineAccountsQML LANGUAGES CXX)

pkg_check_modules(ACCOUNTSQT accounts-qt${QT_VERSION} REQUIRED)

set(LOA_QML_MODULE LomiriOnlineAccountsQML)

set(API_URI Lomiri.OnlineAccounts)
# FIXME: see below (qmlplugindump)
#set(API_VERSION 2.0)

set(CMAKE_MODULE_LINKER_FLAGS "-Wl,--no-undefined")

include_directories(
    ${CMAKE_CURRENT_SOURCE_DIR}
    ${CMAKE_SOURCE_DIR}/online-accounts/lib/qt
)

if(ENABLE_UBUNTU_COMPAT)
    add_definitions(-DLOMIRI_ONLINEACCOUNTS_UBUNTU_COMPAT)
endif()

add_definitions(
    ${ACCOUNTSQT_CFLAGS}
)

add_library(${LOA_QML_MODULE} MODULE
    account.cpp
    account_model.cpp
    authentication_data.cpp
    plugin.cpp
)

target_link_libraries(${LOA_QML_MODULE}
    Qt${QT_VERSION}::Core
    Qt${QT_VERSION}::Qml
    lomiri-online-accounts-qt${QT_VERSION}
    ${ACCOUNTSQT_LDFLAGS}
)

set_target_properties(${LOA_QML_MODULE} PROPERTIES AUTOMOC TRUE)

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

# Module install

# FIXME: do we really need this, it causes build failures from time to time (maybe related to
# a missing dependency declaration?
#add_custom_command(TARGET ${LOA_QML_MODULE} POST_BUILD
#                   COMMAND qmlplugindump -noinstantiate ${API_URI} ${API_VERSION} > ${CMAKE_CURRENT_BINARY_DIR}/plugin.qmltypes)

set(PLUGIN_IMPORTS_DIR "${QT_INSTALL_QML}/Lomiri/OnlineAccounts")
install(TARGETS ${LOA_QML_MODULE} DESTINATION ${PLUGIN_IMPORTS_DIR})
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/qmldir DESTINATION ${PLUGIN_IMPORTS_DIR})
# FIXME: see above (qmlplugindump command)
#install(FILES ${CMAKE_CURRENT_BINARY_DIR}/plugin.qmltypes DESTINATION ${PLUGIN_IMPORTS_DIR})
