Add/Update translations
[gmpc-dynamic-playlist.git] / CMakeLists.txt
blob6565159df2ce44b53f63b372c0dcee58fcd6239c
1 CMAKE_MINIMUM_REQUIRED(VERSION 2.6.0)
3 PROJECT(gmpc-dynamic-playlist C)
4 SET(CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake")
5 SET(VERSION_MAJOR 0)
6 SET(VERSION_MINOR 19)
7 SET(VERSION_PATCH 96)
8 SET(VERSION "${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}")
9 SET(SRC_DIR "${PROJECT_SOURCE_DIR}/src")
10 SET(TEST_DIR "${PROJECT_SOURCE_DIR}/tests")
11 SET(PO_DIR "${PROJECT_SOURCE_DIR}/po")
13 FIND_PACKAGE(PkgConfig REQUIRED)
14 IF(NOT PKG_CONFIG_FOUND)
15         MESSAGE(FATAL_ERROR "You need 'pkg-config' to build this plugin!")
16 ENDIF()
18 FILE(GLOB C_FILES "${SRC_DIR}/*.c")
19 FILE(GLOB PO_FILES "${PO_DIR}/*.po")
20 FILE(GLOB UI_FILES "${SRC_DIR}/*.xml")
21 GET_FILENAME_COMPONENT(UI_OPTIONS ${UI_FILES} NAME)
23 ADD_LIBRARY(dynlist SHARED ${C_FILES})
25 FIND_PACKAGE(Gettext QUIET)
26 FIND_PROGRAM(GETTEXT_XGETTEXT_BIN xgettext)
27 IF(NOT GETTEXT_FOUND OR NOT GETTEXT_XGETTEXT_BIN)
28         MESSAGE(STATUS "Translations won't be build... gettext isn't available!")
29 ELSE()
30         SET(POT_FILE "${PROJECT_BINARY_DIR}/${PROJECT_NAME}.pot")
31         ADD_CUSTOM_COMMAND(
32                 OUTPUT ${POT_FILE}
33                 COMMAND ${GETTEXT_XGETTEXT_BIN} --omit-header --keyword=_ --keyword=N_ ${C_FILES} -o ${POT_FILE}
34                 COMMAND ${GETTEXT_XGETTEXT_BIN} -L Glade ${UI_FILES} -j -o ${POT_FILE}
35                         --package-name=${PROJECT_NAME} --package-version=${VERSION} --msgid-bugs-address=andre@incubo.de
36                 )
38         IF(PO_FILES)
39                 MESSAGE(STATUS "Translations will be build!")
40                 GETTEXT_CREATE_TRANSLATIONS(${POT_FILE} ALL ${PO_FILES})
41         ELSE()
42                 MESSAGE(STATUS "Translations not found!")
43         ENDIF()
44 ENDIF()
46 pkg_check_modules(GMPC REQUIRED gmpc>=11.8.90)
47 pkg_check_modules(LIBMPD REQUIRED libmpd>=11.8.90)
48 pkg_check_modules(DEPS REQUIRED
49         glib-2.0>=2.16
50         gtk+-3.0>=3.7
51         gobject-2.0>=2.4
52         )
54 INCLUDE_DIRECTORIES(${DEPS_INCLUDE_DIRS} ${GMPC_INCLUDE_DIRS} ${LIBMPD_INCLUDE_DIRS})
55 LINK_DIRECTORIES(${DEPS_LIBRARY_DIRS} ${GMPC_LIBRARY_DIRS} ${LIBMPD_LIBRARY_DIRS})
57 SET_TARGET_PROPERTIES(dynlist PROPERTIES OUTPUT_NAME "dynlistplugin")
58 SET_TARGET_PROPERTIES(dynlist PROPERTIES PREFIX "")
59 TARGET_LINK_LIBRARIES(dynlist ${DEPS_LIBRARIES} ${GMPC_LIBRARIES} ${LIBMPD_LIBRARIES})
61 IF(NOT DEFINED plugindir)
62         SET(plugindir "${GMPC_LIBDIR}/gmpc/plugins")
63 ENDIF()
65 INSTALL(TARGETS dynlist DESTINATION ${plugindir})
66 INSTALL(FILES ${UI_FILES} DESTINATION ${plugindir})
68 SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Wextra -Wshadow -Wfloat-equal -Wconversion")
69 ADD_DEFINITIONS(-D GETTEXT_PACKAGE="\\"${PROJECT_NAME}\\"")
70 ADD_DEFINITIONS(-D PACKAGE_LOCALE_DIR="\\"${CMAKE_INSTALL_PREFIX}/share/locale\\"")
71 ADD_DEFINITIONS(-D VERSION_MAJOR=${VERSION_MAJOR} -D VERSION_MINOR=${VERSION_MINOR} -D VERSION_PATCH=${VERSION_PATCH})
72 ADD_DEFINITIONS(-D UI_OPTIONS="\\"${plugindir}/${UI_OPTIONS}\\"")
73 SET_DIRECTORY_PROPERTIES(PROPERTIES COMPILE_DEFINITIONS G_LOG_DOMAIN="dynlist")
75 FIND_PROGRAM(MERCURIAL_BIN hg)
76 IF(MERCURIAL_BIN AND EXISTS "${PROJECT_SOURCE_DIR}/.hg")
77         EXECUTE_PROCESS(COMMAND ${MERCURIAL_BIN} id -i ${PROJECT_SOURCE_DIR}
78                 OUTPUT_VARIABLE HG_REV
79                 RESULT_VARIABLE HG_RESULT
80                 OUTPUT_STRIP_TRAILING_WHITESPACE)
81         IF(${HG_RESULT} EQUAL 0)
82                 ADD_DEFINITIONS(-D HG_REV="\\"${HG_REV}\\"")
83                 MESSAGE(STATUS "Revision: ${HG_REV}")
84         ENDIF()
85 ENDIF()
87 MESSAGE(STATUS "Version: ${VERSION}")
88 MESSAGE(STATUS "Using CMAKE_INSTALL_PREFIX: ${CMAKE_INSTALL_PREFIX}")
89 MESSAGE(STATUS "Using plugindir: ${plugindir}")
91 IF(tests)
92         IF(${DEPS_glib-2.0_VERSION} VERSION_LESS 2.20 OR ${DEPS_gtk+-2.0_VERSION} VERSION_LESS 2.14)
93                 MESSAGE(STATUS "Tests won't be build: glib2 or gtk2 is too old for testing!")
94         ELSE()
95                 MESSAGE(STATUS "Tests will be build!")
96                 SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fprofile-arcs -ftest-coverage -O0")
97                 SET(debug on)
98                 ENABLE_TESTING()
99                 ADD_SUBDIRECTORY(${TEST_DIR})
100         ENDIF()
101 ENDIF()
103 IF(NOT DEFINED debug OR NOT debug)
104         SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -D G_DISABLE_ASSERT")
105         MESSAGE(STATUS "G_ASSERTs are disabled!")
106 ELSE()
107         MESSAGE(STATUS "G_ASSERTs are enabled!")
108 ENDIF()
110 IF("${PROJECT_BINARY_DIR}" STREQUAL "${PROJECT_SOURCE_DIR}")
111         MESSAGE(STATUS "Warning: in tree build is not recommended!")
112 ENDIF()
114 INCLUDE(Tools)
116 #vim:set ts=4 sw=4: