cmake_minimum_required(VERSION 3.0)

set_common_exe_linker_flags()

file(GLOB_RECURSE CORE_H_FILES ./*.h)
file(GLOB_RECURSE CORE_CPP_FILES ./*.cpp)

gen_dbus_stub(CC_DAEMON cc_daemon com.kylinsec.
              ${CMAKE_SOURCE_DIR}/src/com.kylinsec.Kiran.CCDaemon.xml)

add_custom_target(TARGET_CC_DAEMON DEPENDS ${CC_DAEMON_GENERATED_STUB})

configure_file(config.h.in ${PROJECT_BINARY_DIR}/config.h)

if(build-system-daemon)
  # system daemon
  set(TARGET_SYSTEM_DAEMON kiran-system-daemon)

  add_executable(${TARGET_SYSTEM_DAEMON} ${CORE_H_FILES} ${CORE_CPP_FILES}
                                         ${CC_DAEMON_GENERATED_STUB})

  target_include_directories(
    ${TARGET_SYSTEM_DAEMON} PUBLIC ${PROJECT_BINARY_DIR}/generated
                                   ${GMODULE_INCLUDE_DIRS})

  target_compile_definitions(
    ${TARGET_SYSTEM_DAEMON} PRIVATE -DKCC_TYPE="system" -DKCC_SYSTEM_TYPE
                                    -DKCC_PLUGIN_DIR="${KCC_PLUGIN_DIR}/system")

  target_link_libraries(${TARGET_SYSTEM_DAEMON}
                        PRIVATE ${GMODULE_LIBRARIES} lib-base lib-dbus lib-iso)

  add_dependencies(${TARGET_SYSTEM_DAEMON} TARGET_CC_DAEMON)

  install(TARGETS ${TARGET_SYSTEM_DAEMON}
          DESTINATION ${CMAKE_INSTALL_FULL_BINDIR})

endif()

if(build-session-daemon)
  # session daemon
  set(TARGET_SESSION_DAEMON kiran-session-daemon)

  add_executable(${TARGET_SESSION_DAEMON} ${CORE_H_FILES} ${CORE_CPP_FILES}
                                          ${CC_DAEMON_GENERATED_STUB})

  target_include_directories(
    ${TARGET_SESSION_DAEMON}
    PUBLIC ${PROJECT_BINARY_DIR}/generated ${GMODULE_INCLUDE_DIRS}
           ${GTKMM3_INCLUDE_DIRS} ${LIBNOTIFY_INCLUDE_DIRS})

  target_compile_definitions(
    ${TARGET_SESSION_DAEMON}
    PRIVATE -DKCC_TYPE="session" -DKCC_SESSION_TYPE
            -DKCC_PLUGIN_DIR="${KCC_PLUGIN_DIR}/session")

  target_link_libraries(
    ${TARGET_SESSION_DAEMON}
    PRIVATE ${GMODULE_LIBRARIES}
            ${GTKMM3_LIBRARIES}
            ${LIBNOTIFY_LIBRARIES}
            lib-base
            lib-dbus
            lib-iso
            lib-display)

  add_dependencies(${TARGET_SESSION_DAEMON} TARGET_CC_DAEMON)

  install(TARGETS ${TARGET_SESSION_DAEMON}
          DESTINATION ${CMAKE_INSTALL_FULL_BINDIR})

endif()
