project (switchboard)
cmake_minimum_required (VERSION 2.8)
list (APPEND CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake/)
#

# Base bits

include (GNUInstallDirs)
set (DATADIR ${CMAKE_INSTALL_FULL_DATAROOTDIR})
set (GSETTINGSDIR "${DATADIR}/glib-2.0/schemas/")
set (PKGDATADIR "${DATADIR}/${CMAKE_PROJECT_NAME}")
set (GETTEXT_PACKAGE "${CMAKE_PROJECT_NAME}")
set (RELEASE_NAME "Preferences with piazzaz.")
set (PLUGS_DIR ${CMAKE_INSTALL_FULL_LIBDIR}/${CMAKE_PROJECT_NAME})
set (VERSION "2.0.0")
set (VERSION_INFO "Stable Release")

add_definitions ("-DGETTEXT_PACKAGE=\"${GETTEXT_PACKAGE}\"")

# Comment this out to enable C compiler warnings
add_definitions (-w)

option (BUILD_SHARED_LIBS "Switch between shared and static libraries" ON)
option (BUILD_SAMPLE "Build an example that shows how it works" OFF)

if (BUILD_SHARED_LIBS)
  message ("-- Shared libraries enabled")
else ()
  message ("-- Shared libraries disabled")
endif ()

# Do not override library search path, so that plugs can be loaded to even if
# Switchboard is run from the source code tree.
# This is also required by Debian policy,
# see http://wiki.debian.org/RpathIssue for details
set (CMAKE_SKIP_BUILD_RPATH TRUE)

#

# Niceties

#

set (ARCHIVE_NAME ${CMAKE_PROJECT_NAME}-${VERSION})
add_custom_target (dist
    COMMAND bzr export --root=${ARCHIVE_NAME} ${CMAKE_BINARY_DIR}/${ARCHIVE_NAME}.tar.bz2
    WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
    )
add_custom_target (distcheck
    COMMAND cd ${CMAKE_BINARY_DIR}
    && rm -rf ${ARCHIVE_NAME}
    && tar xf ${ARCHIVE_NAME}.tar.bz2
    && mkdir ${ARCHIVE_NAME}/build
    && cd ${ARCHIVE_NAME}/build
    && cmake -DCMAKE_INSTALL_PREFIX=../install -DGSETTINGS_LOCALINSTALL=ON .. -DCMAKE_MODULE_PATH=/usr/share/cmake
    && make -j8
    && make -j8 install
    && make check
    )
add_dependencies(distcheck dist)
add_custom_target (uninstall "${CMAKE_COMMAND}" -P
  "${CMAKE_SOURCE_DIR}/cmake/uninstall.cmake")

#

# Data

#

install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/data/${CMAKE_PROJECT_NAME}.desktop DESTINATION ${DATADIR}/applications)
add_subdirectory(po)
#

# Switchboard

#

option (USE_UNITY "Use Unity integration" ON)

if (USE_UNITY)
  message ("-- Unity integration enabled")
  set (UNITY_DEPS unity)
  set (UNITY_OPTIONS --define=HAVE_UNITY)
else ()
  message ("-- Unity integration disabled")
endif ()

set (LIB_PACKAGES
  glib-2.0
  gio-2.0
  gee-0.8
  gmodule-2.0
  gtk+-3.0
  gio-unix-2.0
)

set (LIB_PKG
  glib-2.0>=2.32
  gio-2.0
  gee-0.8
  gmodule-2.0
  gtk+-3.0>=3.10
  gio-unix-2.0
  # cheese is required for the GCC panels to work
  cheese-gtk
)
find_package(PkgConfig)

pkg_check_modules (LIB REQUIRED ${LIB_PKG})

set (GLOBAL_VALAC_OPTIONS
  --vapidir=${CMAKE_BINARY_DIR}/lib
  --target-glib=2.32
  --thread
  ${UNITY_OPTIONS}
)

find_package (Vala REQUIRED)
include (ValaVersion)
ensure_vala_version ("0.21.0" MINIMUM)
include (ValaPrecompile)

add_subdirectory (lib)

set (DEPS_PACKAGES
  ${LIB_NAME}
  ${LIB_PACKAGES} # this is needed until we provide a ${CMAKE_PROJECT_NAME}.deps file
  granite
  ${UNITY_DEPS}
)

set (DEPS_PKG
  granite
  ${UNITY_DEPS}
)

pkg_check_modules (DEPS REQUIRED ${DEPS_PKG} ${LIB_PKG})
set (DEPS_LIBRARIES ${DEPS_LIBRARIES} -lm)

# 'src' and 'plugins' depend on the core library
include_directories (${CMAKE_BINARY_DIR}/lib)
set (DEPS_LIBRARIES ${DEPS_LIBRARIES} ${LIB_NAME})
add_subdirectory (src)


if (BUILD_SAMPLE)
  add_subdirectory (sample)
endif ()

add_subdirectory (schemas)
install (FILES ${CMAKE_CURRENT_SOURCE_DIR}/schemas/org.pantheon.switchboard.gschema.xml DESTINATION ${GSETTINGSDIR})
