CMAKE_MINIMUM_REQUIRED(VERSION 2.6)

PROJECT(DESKTOPNOVA C)
SET(DESKTOPNOVA_MAJOR "0")
SET(DESKTOPNOVA_MINOR "8")
SET(DESKTOPNOVA_PATCH "0")
SET(VERSION "${DESKTOPNOVA_MAJOR}.${DESKTOPNOVA_MINOR}.${DESKTOPNOVA_PATCH}")
SET(PACKAGE DesktopNova)

SET(CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake)

SET(GETTEXT_PACKAGE "desktopnova")
SET(GETTEXT_PACKAGE_MODULE_GNOME "desktopnova-module-gnome")
SET(GETTEXT_PACKAGE_MODULE_XFCE "desktopnova-module-xfce")
SET(GETTEXT_PACKAGE_TRAY "desktopnova-tray")

SET(DIRS_BINDIR "bin" CACHE STRING "Directory for executable files")
SET(DIRS_DATADIR "share" CACHE STRING "Directory for resource files")
SET(DIRS_LOCALEDIR "share/locale" CACHE STRING "Directory for locales")
SET(DIRS_PKGLIBDIR "lib/desktopnova" CACHE STRING "Directory for modules")

SET(VERSION_MODULE_GNOME "0.2")
SET(VERSION_MODULE_XFCE "0.1")
SET(VERSION_MODULE_XFCE_XFCONF "0.2")

IF(NOT UNIX)
	MESSAGE(FATAL_ERROR "Only unixoid operation systems are supported!")
ENDIF(NOT UNIX)

IF(NOT CMAKE_BUILD_TYPE)
  SET(CMAKE_BUILD_TYPE Release CACHE STRING "Choose the type of build, options are: None Debug Release RelWithDebInfo MinSizeRel." FORCE)
ENDIF(NOT CMAKE_BUILD_TYPE)

SET(RELEASE_BUILD 1 CACHE BOOL "Flag this build as an official release.")
SET(ENABLE_NLS 1 CACHE BOOL "** At the moment disabling has no effect! ** Define whether program translation should be supported.")
SET(ENABLE_MAIN 1 CACHE BOOL "Define whether the main programs (desktopnova and desktopnova-daemon) should be compiled.")
SET(ENABLE_DBUS 1 CACHE BOOL "Define whether dbus should be supported (dbus is required in order to use desktopnova-tray).")
SET(ENABLE_TRAY 1 CACHE BOOL "Define whether desktopnova-tray should be compiled (requires dbus-support).")
SET(ENABLE_MODULE_GNOME 1 CACHE BOOL "Define whether the gnome module should be compiled.")
SET(ENABLE_MODULE_XFCE 1 CACHE BOOL "Define whether the old xfce module (supports XFCE < 4.6) should be compiled.")
SET(ENABLE_MODULE_XFCE_XFCONF 1 CACHE BOOL "Define whether the new xfce module (supports XFCE >= 4.6) should be compiled.")

# Disabling of NLS is not implemented and causes compile errors
SET(ENABLE_NLS 1)

IF(ENABLE_TRAY)
	IF(NOT ENABLE_DBUS)
		MESSAGE(FATAL_ERROR "desktopnova-tray needs dbus-support!\nIf you enable ENABLE_TRAY you must also enable ENABLE_DBUS!")
	ENDIF(NOT ENABLE_DBUS)
ENDIF(ENABLE_TRAY)


IF(ENABLE_NLS)
	FIND_PACKAGE(Intltools REQUIRED)
	FIND_PROGRAM(INTLTOOL_EXTRACT intltool-extract)
	FIND_PROGRAM(INTLTOOL_MERGE intltool-merge)
	IF (NOT INTLTOOL_EXTRACT)
		MESSAGE(FATAL_ERROR "intltool-extract not found")
	ENDIF(NOT INTLTOOL_EXTRACT)
	IF (NOT INTLTOOL_MERGE)
		MESSAGE(FATAL_ERROR "intltool-merge not found")
	ENDIF(NOT INTLTOOL_MERGE)
ENDIF(ENABLE_NLS)

FIND_PACKAGE(PkgConfig REQUIRED)

PKG_CHECK_MODULES(GLIB2 REQUIRED glib-2.0)
IF(ENABLE_MAIN)
	PKG_CHECK_MODULES(XML2 REQUIRED libxml-2.0)
ENDIF(ENABLE_MAIN)
IF(ENABLE_MAIN OR ENABLE_TRAY)
	PKG_CHECK_MODULES(GTK2 REQUIRED gtk+-2.0)
ENDIF(ENABLE_MAIN OR ENABLE_TRAY)
IF(ENABLE_DBUS)
	PKG_CHECK_MODULES(GTHREAD2 REQUIRED gthread-2.0)
ENDIF(ENABLE_DBUS)
IF(ENABLE_MODULE_GNOME)
	PKG_CHECK_MODULES(GCONF2 REQUIRED gconf-2.0)
ENDIF(ENABLE_MODULE_GNOME)
IF(ENABLE_MODULE_XFCE_XFCONF)
	PKG_CHECK_MODULES(XFCONF REQUIRED libxfconf-0)
ENDIF(ENABLE_MODULE_XFCE_XFCONF)
IF(ENABLE_DBUS)
PKG_CHECK_MODULES(DBUS REQUIRED dbus-glib-1)
ENDIF(ENABLE_DBUS)

SET(TEMP_PRINT_DEBUG 0)
IF(NOT RELEASE_BUILD)
	SET(TEMP_PRINT_DEBUG 1)
	FIND_PROGRAM(BZR_EXECUTABLE bzr)
	IF(BZR_EXECUTABLE)
		EXECUTE_PROCESS(COMMAND ${BZR_EXECUTABLE} revno
		                WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
		                RESULT_VARIABLE BZR_RESULT
		                OUTPUT_VARIABLE BZR_REVNO
		                OUTPUT_STRIP_TRAILING_WHITESPACE)
		IF(BZR_RESULT EQUAL 0)
			MESSAGE(STATUS "Current bzr-revno: ${BZR_REVNO}")
			SET(VERSION "${VERSION}-bzr${BZR_REVNO}")
		ELSE(BZR_RESULT EQUAL 0)
			SET(BZR_REVNO)
		ENDIF(BZR_RESULT EQUAL 0)
		SET(BZR_EXECUTABLE)
		SET(BZR_EXECUTABLE_RESULT)
	ENDIF(BZR_EXECUTABLE)
ENDIF(NOT RELEASE_BUILD)
MESSAGE(STATUS "Version: ${VERSION}")

SET(PRINT_DEBUG ${TEMP_PRINT_DEBUG} CACHE BOOL "Define whether the programs should print usefull debug messages on stdout.")
SET(TEMP_PRINT_DEBUG)

CONFIGURE_FILE(config.h.cmake config.h)
INCLUDE_DIRECTORIES(${PROJECT_BINARY_DIR})

ADD_SUBDIRECTORY(src)
ADD_SUBDIRECTORY(res)

IF(ENABLE_MAIN)
	ADD_SUBDIRECTORY(po)
ENDIF(ENABLE_MAIN)

IF(ENABLE_MODULE_GNOME)
	ADD_SUBDIRECTORY(po-module-gnome)
ENDIF(ENABLE_MODULE_GNOME)

IF(ENABLE_MODULE_XFCE OR ENABLE_MODULE_XFCE_XFCONF)
	ADD_SUBDIRECTORY(po-module-xfce)
ENDIF(ENABLE_MODULE_XFCE OR ENABLE_MODULE_XFCE_XFCONF)

IF(ENABLE_TRAY)
	ADD_SUBDIRECTORY(po-tray)
ENDIF(ENABLE_TRAY)
