set(CMAKE_AUTOMOC OFF)

include(UseGdbusCodegen)
include(UseGlibGeneration)

set(HUD_SERVICE_XML ${CMAKE_CURRENT_SOURCE_DIR}/data/com.canonical.hud.xml)
set(HUD_APP_XML ${CMAKE_CURRENT_SOURCE_DIR}/data/com.canonical.hud.Application.xml)

set(HUD_INCLUDE_DIRS
  ${CMAKE_CURRENT_SOURCE_DIR}
  ${CMAKE_CURRENT_BINARY_DIR}
)

set(HUD_INCLUDE_DIRS
  ${HUD_INCLUDE_DIRS}
  PARENT_SCOPE
)

set(HUD_LIBRARIES
  hud
)

set(HUD_LIBRARIES
  ${HUD_LIBRARIES}
  PARENT_SCOPE
)

set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=c11 -fPIC")

include_directories(${HUD_INCLUDE_DIRS})
include_directories(${HUD_SRC_DIR})

add_definitions(-DHUD_COMPILATION=1)

###########################
# Generated Lib Hud
###########################

set(HUD_GENERATED_HEADERS
  app-iface.h
  service-iface.h
  marshal.h
)

set(HUD_GENERATED_SOURCES)

message(${HUD_SERVICE_XML})

add_gdbus_codegen(
  OUTFILES HUD_GENERATED_SOURCES
  NAME service-iface
  PREFIX com.canonical.hud.
  NAMESPACE _HudServiceIface
  SERVICE_XML ${HUD_SERVICE_XML}
)

add_gdbus_codegen(
  OUTFILES HUD_GENERATED_SOURCES
  NAME app-iface
  PREFIX com.canonical.hud.Application.
  NAMESPACE _HudAppIface
  SERVICE_XML ${HUD_APP_XML}
)

add_glib_marshal(HUD_GENERATED_SOURCES
  marshal
  _hud_marshal
  marshal.h
)

message(${HUD_GENERATED_SOURCES})
add_library(hud-generated STATIC ${HUD_GENERATED_SOURCES})

target_link_libraries(hud-generated
  ${GLIB2_LIBRARIES}
  ${GOBJECT2_LIBRARIES}
  ${GIO2_LIBRARIES}
)

###########################
# Lib Hud
###########################

set(HUD_MAIN_HEADERS
  hud.h
)

set(HUD_HEADERS
  manager.h
  action-publisher.h
  ${HUD_HEADERS}
)

set(HUD_SOURCES
  manager.c
  action-publisher.c
)

message(${HUD_SOURCES})
add_library(hud STATIC ${HUD_SOURCES})

target_link_libraries(${HUD_LIBRARIES}
  hud-generated
  ${GLIB2_LIBRARIES}
  ${GOBJECT2_LIBRARIES}
)