# make the macro a bit more smart, making it possible to pass arguments to qdbusxml2cpp
macro(QT4_ADD_DBUS_INTERFACE _sources _interface _basename)
  get_filename_component(_infile ${_interface} ABSOLUTE)
  set(_header ${CMAKE_CURRENT_BINARY_DIR}/${_basename}.h)
  set(_impl   ${CMAKE_CURRENT_BINARY_DIR}/${_basename}.cpp)
  set(_moc    ${CMAKE_CURRENT_BINARY_DIR}/${_basename}.moc)

  # handling more arguments (as in FindQt4.cmake from KDE4) will come soon, then
  # _params will be used for more than just -m
  set(_params -m)

  add_custom_command(OUTPUT ${_impl} ${_header}
      COMMAND ${QT_DBUSXML2CPP_EXECUTABLE} ${_params} -p ${_basename} ${_infile} ${ARGN}
      DEPENDS ${_infile})

  set_source_files_properties(${_impl} PROPERTIES SKIP_AUTOMOC TRUE)

  qt4_generate_moc(${_header} ${_moc})

  set(${_sources} ${${_sources}} ${_impl} ${_header} ${_moc})
  macro_add_file_dependencies(${_impl} ${_moc})

endmacro(QT4_ADD_DBUS_INTERFACE)

include_directories(. ${CMAKE_SOURCE_DIR}/libmuonapt)

add_subdirectory(tests)

set(appsbackend_SRCS
    ApplicationBackend.cpp
    Application.cpp
    ApplicationUpdates.cpp
    ReviewsBackend.cpp #TODO: rename to AptReviewsBackend
    UbuntuLoginBackend.cpp
)

qt4_add_dbus_interface(appsbackend_SRCS ubuntu_sso_dbus_interface.xml ubuntu_sso -i "LoginMetaTypes.h")

kde4_add_plugin(muon-appsbackend SHARED ${appsbackend_SRCS})
target_link_libraries(muon-appsbackend ${QT_QTCORE_LIBRARY} ${QT_QTGUI_LIBRARY} ${QT_QTDBUS_LIBRARY}
    ${KDE4_KDECORE_LIBS} ${KDE4_KDEUI_LIBS} ${KDE4_KIO_LIBS} ${DEBCONF_KDE_LIB}
    ${qjson_LIBRARIES} ${QTOAUTH_LIBRARY} ${QAPT_LIBRARY} muonprivate muonapt
)
install(TARGETS muon-appsbackend DESTINATION ${PLUGIN_INSTALL_DIR})
install(FILES muon-applications-backend.desktop DESTINATION ${SERVICES_INSTALL_DIR})
install(FILES apps-categories.xml DESTINATION ${DATA_INSTALL_DIR}/libmuon/categories)

include_directories(${CMAKE_SOURCE_DIR}/kded)
kde4_add_plugin(kded_muonapplicationnotifier ApplicationNotifier.cpp)
target_link_libraries(kded_muonapplicationnotifier ${KDE4_KDECORE_LIBS} ${KDE4_KDEUI_LIBS} muonprivate)

install(TARGETS kded_muonapplicationnotifier DESTINATION ${PLUGIN_INSTALL_DIR})

install(FILES muonapplicationnotifier.desktop  DESTINATION  ${SERVICES_INSTALL_DIR}/kded)
install(FILES muonapplicationnotifier.notifyrc DESTINATION ${DATA_INSTALL_DIR}/muonapplicationnotifier)
install(FILES distupgradeevent/releasechecker DESTINATION ${DATA_INSTALL_DIR}/muonapplicationnotifier)
