CMAKE_MINIMUM_REQUIRED(VERSION 2.6.0)

PROJECT(gmpc-dynamic-playlist C)
SET(CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake")
SET(VERSION_MAJOR 0)
SET(VERSION_MINOR 19)
SET(VERSION_PATCH 0)
SET(VERSION "${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}")

FIND_PACKAGE(PkgConfig REQUIRED)
IF(NOT PKG_CONFIG_FOUND)
	MESSAGE(FATAL_ERROR "You need 'pkg-config' to build this plugin!")
ENDIF()

FILE(GLOB C_FILES "src/*.c")
FILE(GLOB PO_FILES "po/*.po")
FILE(GLOB UI_FILES "src/*.xml")
GET_FILENAME_COMPONENT(UI_OPTIONS ${UI_FILES} NAME)

ADD_LIBRARY(dynlist SHARED ${C_FILES})

FIND_PACKAGE(Gettext QUIET)
FIND_PROGRAM(GETTEXT_XGETTEXT_EXE xgettext)
IF(NOT GETTEXT_FOUND OR NOT GETTEXT_XGETTEXT_EXE)
	MESSAGE(STATUS "Translations won't be build... gettext isn't available!")
ELSE()
	SET(POT_FILE "${PROJECT_BINARY_DIR}/${PROJECT_NAME}.pot")
	ADD_CUSTOM_COMMAND(
		OUTPUT ${POT_FILE}
		COMMAND ${GETTEXT_XGETTEXT_EXE} --omit-header --keyword=_ --keyword=N_ ${C_FILES} -o ${POT_FILE}
		COMMAND ${GETTEXT_XGETTEXT_EXE} --omit-header -L Glade ${UI_FILES} -j -o ${POT_FILE}
		)

	IF(PO_FILES)
		MESSAGE(STATUS "Translations will be build!")
		GETTEXT_CREATE_TRANSLATIONS(${POT_FILE} ALL ${PO_FILES})
	ELSE()
		MESSAGE(STATUS "Translations not found!")
	ENDIF()
ENDIF()

pkg_check_modules(GMPC REQUIRED gmpc>=0.18.1)
pkg_check_modules(LIBMPD REQUIRED libmpd>=0.18)
pkg_check_modules(DEPS REQUIRED
	glib-2.0>=2.16
	gtk+-2.0>=2.12
	gobject-2.0>=2.4
	)

INCLUDE_DIRECTORIES(${DEPS_INCLUDE_DIRS} ${GMPC_INCLUDE_DIRS} ${LIBMPD_INCLUDE_DIRS})
LINK_DIRECTORIES(${DEPS_LIBRARY_DIRS} ${GMPC_LIBRARY_DIRS} ${LIBMPD_LIBRARY_DIRS})

SET_TARGET_PROPERTIES(dynlist PROPERTIES OUTPUT_NAME "dynlistplugin")
SET_TARGET_PROPERTIES(dynlist PROPERTIES PREFIX "")
TARGET_LINK_LIBRARIES(dynlist ${DEPS_LIBRARIES} ${GMPC_LIBRARIES} ${LIBMPD_LIBRARIES})

IF(NOT DEFINED plugindir)
	SET(plugindir "${GMPC_LIBDIR}/gmpc/plugins")
ENDIF()

INSTALL(TARGETS dynlist DESTINATION ${plugindir})
INSTALL(FILES ${UI_FILES} DESTINATION ${plugindir})

SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall")
ADD_DEFINITIONS(-D GETTEXT_PACKAGE="\\"${PROJECT_NAME}\\"")
ADD_DEFINITIONS(-D PACKAGE_LOCALE_DIR="\\"${CMAKE_INSTALL_PREFIX}/share/locale\\"")
ADD_DEFINITIONS(-D VERSION_MAJOR=${VERSION_MAJOR} -D VERSION_MINOR=${VERSION_MINOR} -D VERSION_PATCH=${VERSION_PATCH})
ADD_DEFINITIONS(-D UI_OPTIONS="\\"${plugindir}/${UI_OPTIONS}\\"")
SET_DIRECTORY_PROPERTIES(PROPERTIES COMPILE_DEFINITIONS G_LOG_DOMAIN="dynlist")

FIND_PROGRAM(MERCURIAL_EXE hg)
IF(MERCURIAL_EXE AND EXISTS "${PROJECT_SOURCE_DIR}/.hg")
	EXECUTE_PROCESS(COMMAND ${MERCURIAL_EXE} id -i ${PROJECT_SOURCE_DIR}
		OUTPUT_VARIABLE HG_REV
		RESULT_VARIABLE HG_RESULT
		OUTPUT_STRIP_TRAILING_WHITESPACE)
	IF(${HG_RESULT} EQUAL 0)
		ADD_DEFINITIONS(-D HG_REV="\\"${HG_REV}\\"")
		MESSAGE(STATUS "Revision: ${HG_REV}")
	ENDIF()
ENDIF()

MESSAGE(STATUS "Version: ${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}")
MESSAGE(STATUS "Using CMAKE_INSTALL_PREFIX: ${CMAKE_INSTALL_PREFIX}")
MESSAGE(STATUS "Using plugindir: ${plugindir}")

IF(tests)
	IF(${DEPS_glib-2.0_VERSION} VERSION_LESS 2.20 OR ${DEPS_gtk+-2.0_VERSION} VERSION_LESS 2.14)
		MESSAGE(STATUS "Tests won't be build: glib2 or gtk2 is too old for testing!")
	ELSE()
		MESSAGE(STATUS "Tests will be build!")
		ENABLE_TESTING()
		ADD_DEFINITIONS(-D TESTMODE)
		ADD_SUBDIRECTORY(${PROJECT_SOURCE_DIR}/tests)
		SET(debug on)
	ENDIF()
ENDIF()

IF(NOT DEFINED debug OR NOT debug)
	SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -D G_DISABLE_ASSERT")
	MESSAGE(STATUS "G_ASSERTs are disabled!")
ELSE()
	MESSAGE(STATUS "G_ASSERTs are enabled!")
ENDIF()

IF("${PROJECT_BINARY_DIR}" STREQUAL "${PROJECT_SOURCE_DIR}")
	MESSAGE(STATUS "Warning: in tree build is not recommended!")
ENDIF()

# CPack
SET(CPACK_PACKAGE_VERSION ${VERSION})
SET(CPACK_PACKAGE_VERSION_MAJOR ${VERSION_MAJOR})
SET(CPACK_PACKAGE_VERSION_MINOR ${VERSION_MINOR})
SET(CPACK_PACKAGE_VERSION_PATCH ${VERSION_PATCH})
SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Dynamic Playlist for gmpc")
SET(CPACK_PACKAGE_VENDOR "André Klitzing")
SET(CPACK_RESOURCE_FILE_LICENSE "${PROJECT_SOURCE_DIR}/COPYING")
SET(CPACK_SOURCE_PACKAGE_FILE_NAME "${PROJECT_NAME}-${VERSION}" CACHE INTERNAL "tarball basename")
SET(CPACK_SOURCE_GENERATOR TGZ)
SET(CPACK_SOURCE_IGNORE_FILES "\\\\.hgignore" "\\\\.hgtags" "/\\\\.hg/")
INCLUDE(CPack)

#vim:set ts=4 sw=4:
