# Qt5 bits
set (CMAKE_INCLUDE_CURRENT_DIR ON)
set (CMAKE_AUTOMOC ON)
find_package(Qt5Core REQUIRED)

set (PSA_SOURCES purchase_service_adaptor.cpp purchase_service_adaptor.h)
set (PSC_SOURCES purchase_service_client.cpp purchase_service_client.h)
file (GLOB CPP_SOURCES *.cpp)

configure_file (qmldir.in qmldir)

add_library (${QML_PLUGIN_NAME} MODULE
  ${CPP_SOURCES} ${PSA_SOURCES} ${PSC_SOURCES})
qt5_use_modules (${QML_PLUGIN_NAME} Core Widgets Quick Qml )
target_link_libraries (${QML_PLUGIN_NAME}
  ${UBUNTUONE_LDFLAGS}
)

install (FILES ${CMAKE_CURRENT_BINARY_DIR}/qmldir
  DESTINATION ${QML_MODULE_INSTALL_DIR}/${QML_MODULE_PATH}
)

set (SERVICE_FILE com.canonical.Purchase.service)
add_custom_command (TARGET ${QML_PLUGIN_NAME} POST_BUILD
  COMMAND sed -e "s#\@PKGLIBDIR\@#${CMAKE_INSTALL_PREFIX}/lib/${PROJECT_NAME}#g" < ${CMAKE_CURRENT_SOURCE_DIR}/${SERVICE_FILE}.in > ${SERVICE_FILE}
)

install (FILES ${CMAKE_CURRENT_BINARY_DIR}/${SERVICE_FILE}
  DESTINATION share/dbus-1/services/
)

install (PROGRAMS ${CMAKE_CURRENT_SOURCE_DIR}/ubuntu-purchase-service
  DESTINATION lib/${PROJECT_NAME}
)

install (TARGETS ${QML_PLUGIN_NAME}
  LIBRARY DESTINATION ${QML_MODULE_INSTALL_DIR}/${QML_MODULE_PATH}
  NAMELINK_SKIP
)

install (CODE "execute_process(COMMAND qmlplugindump ${QML_MODULE_NAME} ${QML_PLUGIN_API_VERSION} ${CMAKE_INSTALL_PREFIX}/${QML_MODULE_INSTALL_DIR} OUTPUT_FILE ${CMAKE_INSTALL_PREFIX}/${QML_MODULE_INSTALL_DIR}/${QML_MODULE_PATH}/${QML_PLUGIN_NAME}.qmltypes)")

# These targets are here for convenience purposes, so we can generate the
# source code if the XML ever changes. They must be run by hand, and the
# results committed to bzr, if any changes are made to the XML file.
set (SERVICE_XML_FILE com.canonical.Purchase.xml)
add_custom_target (gen-dbus-source
  DEPENDS gen-dbus-proxy gen-dbus-adaptor
)
add_custom_target (gen-dbus-proxy
  COMMAND qdbusxml2cpp -c PurchaseServiceClient -p purchase_service_client ${CMAKE_CURRENT_SOURCE_DIR}/${SERVICE_XML_FILE}
  SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/${SERVICE_XML_FILE}
)
add_custom_target (gen-dbus-adaptor
  COMMAND qdbusxml2cpp -c PurchaseServiceAdaptor -a purchase_service_adaptor ${CMAKE_CURRENT_SOURCE_DIR}/${SERVICE_XML_FILE}
  SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/${SERVICE_XML_FILE}
)

# Create a directory and symlink so the component can be loaded by the tests
add_custom_command (TARGET ${QML_PLUGIN_NAME} POST_BUILD
  COMMAND mkdir -p ${CMAKE_CURRENT_BINARY_DIR}/Ubuntu && ${CMAKE_COMMAND} -E create_symlink ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_BINARY_DIR}/${QML_MODULE_PATH}
)

# Add the generated files to be cleaned, as well as the symlink
set_property (
  DIRECTORY .
  PROPERTY ADDITIONAL_MAKE_CLEAN_FILES
  ${SERVICE_FILE}
  Ubuntu
  qmldir
)

add_subdirectory (tests)
