project(powerd)
cmake_minimum_required(VERSION 2.8.9)

set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake" "${CMAKE_MODULE_PATH}")

if (NOT CMAKE_BUILD_TYPE)
    message(STATUS "No build type selected, default to Release")
    set(CMAKE_BUILD_TYPE "Release")
endif()

set(CMAKE_C_FLAGS "-Wall")
set(CMAKE_CXX_FLAGS "-Wall -std=c++11")
set(CMAKE_C_FLAGS_DEBUG "-O0 -ggdb -g")
set(CMAKE_CXX_FLAGS_DEBUG "-O0 -ggdb -g")
set(CMAKE_C_FLAGS_RELEASE "-O3")
set(CMAKE_CXX_FLAGS_RELEASE "-O3")

set(GDBUS_NAME powerd-dbus)

find_package(Threads REQUIRED)

find_package(PkgConfig)
pkg_check_modules(ANDROID_HEADERS android-headers)
pkg_check_modules(GLIB glib-2.0)
pkg_check_modules(GIO gio-2.0)
pkg_check_modules(GIO-UNIX gio-unix-2.0)
pkg_check_modules(UPOWER_GLIB upower-glib)
pkg_check_modules(UUID uuid)

set(POWERD_GENERATED_SOURCES
  ${GDBUS_NAME}.c
)
set(POWERD_GENERATED_HEADERS
  ${GDBUS_NAME}.h
)
SET_SOURCE_FILES_PROPERTIES(${CMAKE_CURRENT_BINARY_DIR}/src/${POWERD_GENERATED_SOURCES} PROPERTIES GENERATED 1)

set(POWERD_DEVICE_CONFIGS_PATH "${CMAKE_INSTALL_PREFIX}/share/powerd/device_configs")
FILE(GLOB device_config_files "${CMAKE_CURRENT_SOURCE_DIR}/data/device_configs/*.xml")
add_definitions(-DPOWERD_DEVICE_CONFIGS_PATH=\"${POWERD_DEVICE_CONFIGS_PATH}\")

set(
  SRCS

  src/powerd.cpp
  src/display.c
  src/autobrightness.c
  src/backlight.c
  src/device-config.c
  src/log.c
  src/power-request.c
  src/power-source.c
  src/powerd-client.c
  src/powerd-object.c
  src/powerd-sensors.cpp
  src/powerd-proximity.cpp
  src/spline.c
  src/stats.c
  src/util.c
  src/wakeup.cpp
  src/${GDBUS_NAME}.c
)

link_directories(
  ${GLIB_LIBRARY_DIRS}
  ${GIO_LIBRARY_DIRS}
  ${GIO-UNIX_LIBRARY_DIRS}
  ${UPOWER_GLIB_LIBRARY_DIRS}
  ${UUID_LIBRARY_DIRS}
)

include_directories(
  ${ANDROID_HEADERS_INCLUDE_DIRS}
  ${GLIB_INCLUDE_DIRS}
  ${GIO_INCLUDE_DIRS}
  ${GIO-UNIX_INCLUDE_DIRS}
  ${UPOWER_GLIB_INCLUDE_DIRS}
  ${UUID_INCLUDE_DIRS}
  ${PROJECT_SOURCE_DIR}/libsuspend
  ${CMAKE_CURRENT_BINARY_DIR}/src
)

add_subdirectory(libsuspend)
add_subdirectory(src)
add_subdirectory(cli)

add_executable(
  powerd

  ${SRCS}
)

add_dependencies(
  powerd

  dbus_bindings
)

target_link_libraries(
  powerd
  suspend

  ${CMAKE_THREAD_LIBS_INIT}
  ${GLIB_LIBRARIES}
  ${GIO_LIBRARIES}
  ${GIO-UNIX_LIBRARIES}
  ${PHABLET_LIBRARIES}
  "-lubuntu_platform_hardware_api"
  "-lubuntu_application_api"
  "-landroid-properties"
  "-lhardware"
  ${UPOWER_GLIB_LIBRARIES}
  ${UUID_LIBRARIES}
)

install(
  TARGETS powerd
  RUNTIME DESTINATION bin
  LIBRARY DESTINATION lib
  ARCHIVE DESTINATION lib/static
)

install(
  FILES ${device_config_files}
  DESTINATION ${POWERD_DEVICE_CONFIGS_PATH}
)
