# Check http://webdev.elementaryos.org/docs/developer-guide/cmake for documentation

project (wingpanel)
cmake_minimum_required (VERSION 2.8)
cmake_policy (VERSION 2.6)

list (APPEND CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake/vala)

#
# Base bits
#

enable_testing ()

set (DATADIR "${CMAKE_INSTALL_PREFIX}/share")
set (PKGDATADIR "${DATADIR}/wingpanel")
set (GETTEXT_PACKAGE "wingpanel")
set (RELEASE_NAME "A super sexy space-saving top panel.")
set (VERSION "0.4.0")
set (VERSION_INFO "Testing")
set (CMAKE_C_FLAGS "-ggdb")
set (PREFIX ${CMAKE_INSTALL_PREFIX})
set (DOLLAR "$")

# Set dependencies
set (WINGPANEL_DEPS "gobject-2.0;glib-2.0;gio-2.0;gee-1.0;gdk-x11-3.0;x11;gtk+-3.0;granite")
set (WINGPANEL_DEPS_NOVALA "gthread-2.0;indicator3-0.4")
find_package (PkgConfig)
pkg_check_modules (DEPS REQUIRED ${WINGPANEL_DEPS})
pkg_check_modules (DEPS_NOVALA REQUIRED ${WINGPANEL_DEPS_NOVALA})


list (APPEND CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake)

# Static Files
file (GLOB stylesheets "${CMAKE_CURRENT_SOURCE_DIR}/data/style/*.css")
file (GLOB desktop_entry "${CMAKE_CURRENT_SOURCE_DIR}/data/wingpanel.desktop")
file (GLOB icon "${CMAKE_CURRENT_SOURCE_DIR}/data/wingpanel.svg")

# Find the Indicator Directory
execute_process (COMMAND ${PKG_CONFIG_EXECUTABLE} indicator3-0.4 --variable=indicatordir OUTPUT_VARIABLE current_indicatordir OUTPUT_STRIP_TRAILING_WHITESPACE)
set (INDICATORDIR ${current_indicatordir})

# Configuration File and Translation
configure_file (${CMAKE_SOURCE_DIR}/config.h.cmake ${CMAKE_BINARY_DIR}/config.h)
add_definitions(-DGETTEXT_PACKAGE=\"${GETTEXT_PACKAGE}\")

# Setup C Libraries
add_definitions(${DEPS_CFLAGS} ${DEPS_NOVALA_CFLAGS} -include config.h)

link_libraries(${DEPS_LIBRARIES} ${DEPS_NOVALA_LIBRARIES})
link_directories(${DEPS_LIBRARY_DIRS} ${DEPS_NOVALA_DIRS})

# Handle Vala Compilation
find_package(Vala REQUIRED)
include(ValaVersion)
ensure_vala_version("0.16.0" MINIMUM)

include(ValaPrecompile)
vala_precompile (VALA_C
    src/Settings.vala
    src/Utils.vala
    src/WingpanelApp.vala
    src/Widgets/Panel.vala
    src/Widgets/IndicatorButton.vala
    src/Widgets/AppsButton.vala
    src/Services/WingpanelObjectEntry.vala
    src/Services/IndicatorFileModel.vala
    src/Services/AppLauncherService.vala
PACKAGES
	${WINGPANEL_DEPS}
CUSTOM_VAPIS
    vapi/config.vapi
    vapi/indicator-0.4.vapi
OPTIONS
	--thread
)

# Settings Schema
include (GSettings)
add_schema ("org.pantheon.desktop.wingpanel.gschema.xml")

# Add Translation Support
add_subdirectory (po)

# Create the Executable
add_executable(wingpanel ${VALA_C})

# Installation
install (TARGETS wingpanel RUNTIME DESTINATION bin)
install (FILES ${stylesheets} DESTINATION ${PKGDATADIR}/style)
install (FILES ${desktop_entry} DESTINATION ${DATADIR}/applications)
install (FILES ${icon} DESTINATION ${DATADIR}/icons/hicolor/scalable/apps)
