From c8ce514661476c027c2bd8b9f8c000810e105e67 Mon Sep 17 00:00:00 2001 From: Charles Kerr Date: Fri, 22 Mar 2013 16:57:58 -0500 Subject: add top-level cmake files to the repo --- cmake/FindIntltool.cmake | 23 ++++++ cmake/GCov.cmake | 50 +++++++++++++ cmake/GSettings.cmake | 108 ++++++++++++++++++++++++++++ cmake/Gettext.cmake | 179 +++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 360 insertions(+) create mode 100644 cmake/FindIntltool.cmake create mode 100644 cmake/GCov.cmake create mode 100644 cmake/GSettings.cmake create mode 100644 cmake/Gettext.cmake (limited to 'cmake') diff --git a/cmake/FindIntltool.cmake b/cmake/FindIntltool.cmake new file mode 100644 index 0000000..45318c4 --- /dev/null +++ b/cmake/FindIntltool.cmake @@ -0,0 +1,23 @@ +# FindIntltool.cmake +# +# Jim Nelson +# Copyright 2012 Yorba Foundation + +find_program (INTLTOOL_MERGE_EXECUTABLE intltool-merge) + +if (INTLTOOL_MERGE_EXECUTABLE) + set (INTLTOOL_MERGE_FOUND TRUE) +else (INTLTOOL_MERGE_EXECUTABLE) + set (INTLTOOL_MERGE_FOUND FALSE) +endif (INTLTOOL_MERGE_EXECUTABLE) + +if (INTLTOOL_MERGE_FOUND) + macro (INTLTOOL_MERGE_DESKTOP desktop_id po_dir) + add_custom_target (geary.desktop ALL + ${INTLTOOL_MERGE_EXECUTABLE} --desktop-style ${CMAKE_SOURCE_DIR}/${po_dir} + ${CMAKE_CURRENT_SOURCE_DIR}/${desktop_id}.desktop.in ${desktop_id}.desktop + ) + install (FILES ${CMAKE_CURRENT_BINARY_DIR}/geary.desktop DESTINATION /usr/share/applications) + endmacro (INTLTOOL_MERGE_DESKTOP desktop_id po_dir) +endif (INTLTOOL_MERGE_FOUND) + diff --git a/cmake/GCov.cmake b/cmake/GCov.cmake new file mode 100644 index 0000000..8df10ee --- /dev/null +++ b/cmake/GCov.cmake @@ -0,0 +1,50 @@ +if (CMAKE_BUILD_TYPE MATCHES coverage) + set(GCOV_FLAGS "${GCOV_FLAGS} --coverage") + set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${GCOV_FLAGS}") + set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} ${GCOV_FLAGS}") + set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} ${GCOV_FLAGS}") + set(GCOV_LIBS ${GCOV_LIBS} gcov) + + find_program(GCOVR_EXECUTABLE gcovr HINTS ${GCOVR_ROOT} "${GCOVR_ROOT}/bin") + if (NOT GCOVR_EXECUTABLE) + message(STATUS "Gcovr binary was not found, can not generate XML coverage info.") + else () + message(STATUS "Gcovr found, can generate XML coverage info.") + add_custom_target (coverage-xml + WORKING_DIRECTORY ${CMAKE_BINARY_DIR} + COMMAND "${GCOVR_EXECUTABLE}" --exclude="test.*" -x -r "${CMAKE_SOURCE_DIR}" + --object-directory=${CMAKE_BINARY_DIR} -o coverage.xml) + endif() + + find_program(LCOV_EXECUTABLE lcov HINTS ${LCOV_ROOT} "${GCOVR_ROOT}/bin") + find_program(GENHTML_EXECUTABLE genhtml HINTS ${GENHTML_ROOT}) + if (NOT LCOV_EXECUTABLE) + message(STATUS "Lcov binary was not found, can not generate HTML coverage info.") + else () + if(NOT GENHTML_EXECUTABLE) + message(STATUS "Genthml binary not found, can not generate HTML coverage info.") + else() + message(STATUS "Lcov and genhtml found, can generate HTML coverage info.") + add_custom_target (coverage-html + WORKING_DIRECTORY ${CMAKE_BINARY_DIR} + COMMAND "${CMAKE_CTEST_COMMAND}" --force-new-ctest-process --verbose + COMMAND "${LCOV_EXECUTABLE}" --directory ${CMAKE_BINARY_DIR} --capture | ${CMAKE_SOURCE_DIR}/trim-lcov.py > dconf-lcov.info + COMMAND LANG=C "${GENHTML_EXECUTABLE}" --prefix ${CMAKE_BINARY_DIR} --output-directory lcov-html --legend --show-details dconf-lcov.info + COMMAND ${CMAKE_COMMAND} -E echo "" + COMMAND ${CMAKE_COMMAND} -E echo "file://${CMAKE_BINARY_DIR}/lcov-html/index.html" + COMMAND ${CMAKE_COMMAND} -E echo "") + #COMMAND "${LCOV_EXECUTABLE}" --directory ${CMAKE_BINARY_DIR} --capture --output-file coverage.info --no-checksum + #COMMAND "${GENHTML_EXECUTABLE}" --prefix ${CMAKE_BINARY_DIR} --output-directory coveragereport --title "Code Coverage" --legend --show-details coverage.info + #COMMAND ${CMAKE_COMMAND} -E echo "\\#define foo \\\"bar\\\"" + #) + endif() + endif() +endif() + + + #$(MAKE) $(AM_MAKEFLAGS) check + #lcov --directory $(top_builddir) --capture --test-name dconf | $(top_srcdir)/trim-lcov.py > dconf-lcov.info + #LANG=C genhtml --prefix $(top_builddir) --output-directory lcov-html --legend --show-details dconf-lcov.info + #@echo + #@echo " file://$(abs_top_builddir)/lcov-html/index.html" + #@echo diff --git a/cmake/GSettings.cmake b/cmake/GSettings.cmake new file mode 100644 index 0000000..5902baa --- /dev/null +++ b/cmake/GSettings.cmake @@ -0,0 +1,108 @@ +# GSettings.cmake +# Originally based on CMake macros written for Marlin +# Updated by Yorba for newer versions of GLib. +# +# NOTE: This module does an in-place compilation of GSettings; the +# resulting gschemas.compiled file will end up in the same +# source folder as the original schema(s). + +option(GSETTINGS_COMPILE "Compile GSettings schemas. Can be disabled for packaging reasons." ON) +option(GSETTINGS_COMPILE_IN_PLACE "Compile GSettings schemas in the build folder. This is used for running an appliction without installing the GSettings systemwide. The application will need to set GSETTINGS_SCHEMA_DIR" ON) + +if (GSETTINGS_COMPILE) + message(STATUS "GSettings schemas will be compiled.") +endif () + +if (GSETTINGS_COMPILE_IN_PLACE) + message(STATUS "GSettings schemas will be compiled in-place.") +endif () + +macro(add_schemas GSETTINGS_TARGET SCHEMA_DIRECTORY) + set(PKG_CONFIG_EXECUTABLE pkg-config) + + # Locate all schema files. + file(GLOB all_schema_files + "${SCHEMA_DIRECTORY}/*.gschema.xml" + ) + + # Find the GLib path for schema installation + execute_process( + COMMAND + ${PKG_CONFIG_EXECUTABLE} + glib-2.0 + --variable prefix + OUTPUT_VARIABLE + _glib_prefix + OUTPUT_STRIP_TRAILING_WHITESPACE + ) + + set(GSETTINGS_DIR "${_glib_prefix}/share/glib-2.0/schemas/" CACHE INTERNAL "") + + # Fetch path for schema compiler from pkg-config + execute_process( + COMMAND + ${PKG_CONFIG_EXECUTABLE} + gio-2.0 + --variable + glib_compile_schemas + OUTPUT_VARIABLE + _glib_compile_schemas + OUTPUT_STRIP_TRAILING_WHITESPACE + ) + + set(glib_schema_compiler ${_glib_compile_schemas} CACHE INTERNAL "") + + if (GSETTINGS_COMPILE_IN_PLACE) + set(COMPILE_IN_PLACE_DIR ${CMAKE_BINARY_DIR}/gsettings) + add_custom_command( + TARGET + ${GSETTINGS_TARGET} + COMMAND + ${CMAKE_COMMAND} -E make_directory "${COMPILE_IN_PLACE_DIR}" + ) + + # Copy all schemas to the build folder. + foreach(schema_file ${all_schema_files}) + add_custom_command( + TARGET + ${GSETTINGS_TARGET} + COMMAND + ${CMAKE_COMMAND} -E copy "${schema_file}" "${COMPILE_IN_PLACE_DIR}" + COMMENT "Copying schema ${schema_file} to ${COMPILE_IN_PLACE_DIR}" + ) + endforeach() + + # Compile schema in-place. + add_custom_command( + TARGET + ${GSETTINGS_TARGET} + COMMAND + ${glib_schema_compiler} ${COMPILE_IN_PLACE_DIR} + COMMENT "Compiling schemas in folder: ${COMPILE_IN_PLACE_DIR}" + ) + endif () + + # Install and recompile schemas + message(STATUS "GSettings schemas will be installed into ${GSETTINGS_DIR}") + + install( + FILES + ${all_schema_files} + DESTINATION + ${GSETTINGS_DIR} + OPTIONAL + ) + + if (GSETTINGS_COMPILE) + install( + CODE + "message (STATUS \"Compiling GSettings schemas\")" + ) + + install( + CODE + "execute_process (COMMAND ${glib_schema_compiler} ${GSETTINGS_DIR})" + ) + endif () +endmacro(add_schemas) + diff --git a/cmake/Gettext.cmake b/cmake/Gettext.cmake new file mode 100644 index 0000000..9be4742 --- /dev/null +++ b/cmake/Gettext.cmake @@ -0,0 +1,179 @@ +# Gettext support: Create/Update pot file and +# +# To use: INCLUDE(Gettext) +# +# Most of the gettext support code is from FindGettext.cmake of cmake, +# but it is included here because: +# +# 1. Some system like RHEL5 does not have FindGettext.cmake +# 2. Bug of GETTEXT_CREATE_TRANSLATIONS make it unable to be include in 'All' +# 3. It does not support xgettext +# +#=================================================================== +# Constants: +# XGETTEXT_OPTIONS_DEFAULT: Default xgettext option: +#=================================================================== +# Variables: +# XGETTEXT_OPTIONS: Options pass to xgettext +# Default: XGETTEXT_OPTIONS_DEFAULT +# GETTEXT_MSGMERGE_EXECUTABLE: the full path to the msgmerge tool. +# GETTEXT_MSGFMT_EXECUTABLE: the full path to the msgfmt tool. +# GETTEXT_FOUND: True if gettext has been found. +# XGETTEXT_EXECUTABLE: the full path to the xgettext. +# XGETTEXT_FOUND: True if xgettext has been found. +# +#=================================================================== +# Macros: +# GETTEXT_CREATE_POT(potFile +# [OPTION xgettext_options] +# SRC list_of_source_file_that_contains_msgid +# ) +# +# Generate .pot file. +# OPTION xgettext_options: Override XGETTEXT_OPTIONS +# +# * Produced targets: pot_file +# +#------------------------------------------------------------------- +# GETTEXT_CREATE_TRANSLATIONS ( outputFile [ALL] locale1 ... localeN +# [COMMENT comment] ) +# +# This will create a target "translations" which will convert the +# given input po files into the binary output mo file. If the +# ALL option is used, the translations will also be created when +# building the default target. +# +# * Produced targets: translations +#------------------------------------------------------------------- + +FIND_PROGRAM(GETTEXT_MSGMERGE_EXECUTABLE msgmerge) +FIND_PROGRAM(GETTEXT_MSGFMT_EXECUTABLE msgfmt) +FIND_PROGRAM(GETTEXT_MSGCAT_EXECUTABLE msgcat) +FIND_PROGRAM(XGETTEXT_EXECUTABLE xgettext) + +SET(XGETTEXT_OPTIONS_DEFAULT + --language=C --keyword=_ --keyword=N_ --keyword=C_:1c,2 --keyword=NC_:1c,2 -s + --escape --add-comments="/" --package-name=${PROJECT_NAME} --package-version=${VERSION}) + +IF (GETTEXT_MSGMERGE_EXECUTABLE AND GETTEXT_MSGFMT_EXECUTABLE AND GETTEXT_MSGCAT_EXECUTABLE) + SET(GETTEXT_FOUND TRUE) +ELSE (GETTEXT_MSGMERGE_EXECUTABLE AND GETTEXT_MSGFMT_EXECUTABLE) + SET(GETTEXT_FOUND FALSE) + IF (GetText_REQUIRED) + MESSAGE(FATAL_ERROR "GetText not found") + ENDIF (GetText_REQUIRED) +ENDIF (GETTEXT_MSGMERGE_EXECUTABLE AND GETTEXT_MSGFMT_EXECUTABLE AND GETTEXT_MSGCAT_EXECUTABLE) + +IF(XGETTEXT_EXECUTABLE) + SET(XGETTEXT_FOUND TRUE) +ELSE(XGETTEXT_EXECUTABLE) + MESSAGE(STATUS "xgettext not found.") + SET(XGETTTEXT_FOUND FALSE) +ENDIF(XGETTEXT_EXECUTABLE) + +IF(NOT DEFINED XGETTEXT_OPTIONS) + SET(XGETTEXT_OPTIONS ${XGETTEXT_OPTIONS_DEFAULT}) +ENDIF(NOT DEFINED XGETTEXT_OPTIONS) + +IF(XGETTEXT_FOUND) + MACRO(GETTEXT_CREATE_POT _potFile _pot_options ) + SET(_xgettext_options_list) + SET(_src_list) + SET(_src_list_abs) + SET(_glade_list) + SET(_glade_list_abs) + SET(_stage "SRC") + FOREACH(_pot_option ${_pot_options} ${ARGN}) + IF(_pot_option STREQUAL "OPTION") + SET(_stage "OPTION") + ELSEIF(_pot_option STREQUAL "SRC") + SET(_stage "SRC") + ELSEIF(_pot_option STREQUAL "GLADE") + SET(_stage "GLADE") + ELSE(_pot_option STREQUAL "OPTION") + IF(_stage STREQUAL "OPTION") + SET(_xgettext_options_list ${_xgettext_options_list} ${_pot_option}) + ELSEIF(_stage STREQUAL "GLADE") + FILE(RELATIVE_PATH _relFile ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_SOURCE_DIR}/${_pot_option}) + GET_FILENAME_COMPONENT(_absFile ${_pot_option} ABSOLUTE) + SET(_glade_list ${_glade_list} ${_relFile}) + SET(_glade_list_abs ${_glade_list_abs} ${_absFile}) + ELSEIF(_stage STREQUAL "SRC") + FILE(RELATIVE_PATH _relFile ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/${_pot_option}) + GET_FILENAME_COMPONENT(_absFile ${_pot_option} ABSOLUTE) + SET(_src_list ${_src_list} ${_relFile}) + SET(_src_list_abs ${_src_list_abs} ${_absFile}) + ENDIF(_stage STREQUAL "OPTION") + ENDIF(_pot_option STREQUAL "OPTION") + ENDFOREACH(_pot_option ${_pot_options} ${ARGN}) + + IF (_xgettext_options_list) + SET(_xgettext_options ${_xgettext_options_list}) + ELSE(_xgettext_options_list) + SET(_xgettext_options ${XGETTEXT_OPTIONS}) + ENDIF(_xgettext_options_list) + + #MESSAGE("${XGETTEXT_EXECUTABLE} ${_xgettext_options_list} -o ${_potFile} ${_src_list}") + ADD_CUSTOM_COMMAND(OUTPUT pot_file + COMMAND ${XGETTEXT_EXECUTABLE} ${_xgettext_options} -o ${_potFile} ${_src_list} + DEPENDS ${_src_list_abs} ${GLADE_FILES} + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} + ) + + ADD_CUSTOM_TARGET(pot_file + COMMAND ${XGETTEXT_EXECUTABLE} ${_xgettext_options_list} -o _source.pot ${_src_list} + COMMAND ${XGETTEXT_EXECUTABLE} --language=Glade --omit-header -o _glade.pot ${_glade_list} + COMMAND ${GETTEXT_MSGCAT_EXECUTABLE} -o ${_potFile} --use-first _source.pot _glade.pot + DEPENDS ${_src_list_abs} + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} + COMMENT "Extract translatable messages to ${_potFile}" + ) + ENDMACRO(GETTEXT_CREATE_POT _potFile _pot_options) + + + MACRO(GETTEXT_CREATE_TRANSLATIONS _potFile _firstLang) + SET(_gmoFiles) + GET_FILENAME_COMPONENT(_potBasename ${_potFile} NAME_WE) + GET_FILENAME_COMPONENT(_absPotFile ${_potFile} ABSOLUTE) + + SET(_addToAll) + SET(_is_comment FALSE) + + FOREACH (_currentLang ${_firstLang} ${ARGN}) + IF(_currentLang STREQUAL "ALL") + SET(_addToAll "ALL") + ELSEIF(_currentLang STREQUAL "COMMENT") + SET(_is_comment TRUE) + ELSEIF(_is_comment) + SET(_is_comment FALSE) + SET(_comment ${_currentLang}) + ELSE() + SET(_lang ${_currentLang}) + GET_FILENAME_COMPONENT(_absFile ${_currentLang}.po ABSOLUTE) + GET_FILENAME_COMPONENT(_abs_PATH ${_absFile} PATH) + SET(_gmoFile ${CMAKE_CURRENT_BINARY_DIR}/${_lang}.mo) + + #MESSAGE("_absFile=${_absFile} _abs_PATH=${_abs_PATH} _lang=${_lang} curr_bin=${CMAKE_CURRENT_BINARY_DIR}") + ADD_CUSTOM_COMMAND( + OUTPUT ${_gmoFile} + COMMAND ${GETTEXT_MSGMERGE_EXECUTABLE} --quiet --update --backup=none -s ${_absFile} ${_absPotFile} + COMMAND ${GETTEXT_MSGFMT_EXECUTABLE} -o ${_gmoFile} ${_absFile} + DEPENDS ${_absPotFile} ${_absFile} + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} + ) + + INSTALL(FILES ${_gmoFile} DESTINATION share/locale/${_lang}/LC_MESSAGES RENAME ${_potBasename}.mo) + SET(_gmoFiles ${_gmoFiles} ${_gmoFile}) + ENDIF() + ENDFOREACH (_currentLang ) + + IF(DEFINED _comment) + ADD_CUSTOM_TARGET(translations ${_addToAll} DEPENDS ${_gmoFiles} COMMENT ${_comment}) + ELSE(DEFINED _comment) + ADD_CUSTOM_TARGET(translations ${_addToAll} DEPENDS ${_gmoFiles}) + ENDIF(DEFINED _comment) + ENDMACRO(GETTEXT_CREATE_TRANSLATIONS ) +ENDIF(XGETTEXT_FOUND) + + + -- cgit v1.2.3 From ca4b40ade7f432d98c21ac499a0de63244b1c3cc Mon Sep 17 00:00:00 2001 From: Charles Kerr Date: Sat, 23 Mar 2013 10:04:13 -0500 Subject: use pete woods' hud cmake code for the build.sh script to check for Ninja and to move the gdbus-codegen macros into a resuable file in the cmake/ directory. --- CMakeLists.txt | 66 ++++++++++------------- build.sh | 18 +++++++ cmake/GdbusCodegen.cmake | 36 +++++++++++++ src/backend-dbus/CMakeLists.txt | 115 +++++++++++++++------------------------- 4 files changed, 125 insertions(+), 110 deletions(-) create mode 100755 build.sh create mode 100644 cmake/GdbusCodegen.cmake (limited to 'cmake') diff --git a/CMakeLists.txt b/CMakeLists.txt index 9f8f026..feb332c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,43 +1,35 @@ project (indicator-session C CXX) -set (PROJECT_VERSION "13.10.1") cmake_minimum_required (VERSION 2.8.9) + list (APPEND CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake) -option (full_warnings "Full compiler warnings." ON) +set (PROJECT_VERSION "13.10.1") +set (PACKAGE ${CMAKE_PROJECT_NAME}) +set (GETTEXT_PACKAGE ${CMAKE_PROJECT_NAME}) + option (enable_tests "Build the package's automatic tests." ON) +option (full_warnings "Full compiler warnings." ON) option (enable_lcov "Generate lcov code coverage reports." ON) -set (ARCHIVE_NAME ${CMAKE_PROJECT_NAME}-${PROJECT_VERSION}) -set (CC_WARNING_ARGS " -Wall -pedantic -Wextra -Wno-missing-field-initializers") - -# -# Check for glib/gio -# +find_package(PkgConfig REQUIRED) include (FindPkgConfig) +include (GdbusCodegen) +include (GSettings) + +add_definitions( -DGETTEXT_PACKAGE="${GETTEXT_PACKAGE}" ) +add_definitions (-DGNOMELOCALEDIR=\"@CMAKE_INSTALL_PREFIX@/share/locale\") + pkg_check_modules (SERVICE REQUIRED glib-2.0>=2.35.4 gio-unix-2.0>=2.25.11) include_directories (${SERVICE_INCLUDE_DIRS}) -# -# Testing / Coverage -# +set (CC_WARNING_ARGS " -Wall -pedantic -Wextra -Wno-missing-field-initializers") -if (${enable_tests}) - set (GTEST_SOURCE_DIR /usr/src/gtest/src) - set (GTEST_INCLUDE_DIR ${GTEST_SOURCE_DIR}/..) - set (GTEST_LIBS -lpthread) - enable_testing () - if (${enable_lcov}) - include(cmake/GCov.cmake) - endif () -endif () -# -# Custom Targets -# +set (ARCHIVE_NAME ${CMAKE_PROJECT_NAME}-${PROJECT_VERSION}) add_custom_target (dist COMMAND bzr export --root=${ARCHIVE_NAME} ${CMAKE_BINARY_DIR}/${ARCHIVE_NAME}.tar.gz WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}) @@ -47,25 +39,21 @@ add_custom_target (clean-coverage add_custom_target (cppcheck COMMAND cppcheck --enable=all -q --error-exitcode=2 --inline-suppr ${CMAKE_SOURCE_DIR}/src - ${CMAKE_SOURCE_DIR}/test) - -# -# -# + ${CMAKE_SOURCE_DIR}/tests) +include_directories (${CMAKE_CURRENT_SOURCE_DIR}/src) +include_directories (${CMAKE_CURRENT_BINARY_DIR}/src) -add_definitions (-DGETTEXT_PACKAGE=\"indicator-session\") -add_definitions (-DPACKAGE_NAME=\"indicator-session\") -add_definitions (-DGNOMELOCALEDIR=\"@CMAKE_INSTALL_PREFIX@/share/locale\") - -# -# Directories -# +add_subdirectory (src) +add_subdirectory (data) -include_directories(${CMAKE_CURRENT_BINARY_DIR}/src) - -add_subdirectory(src) -add_subdirectory(data) if (${enable_tests}) + set (GTEST_SOURCE_DIR /usr/src/gtest/src) + set (GTEST_INCLUDE_DIR ${GTEST_SOURCE_DIR}/..) + set (GTEST_LIBS -lpthread) + enable_testing () + if (${enable_lcov}) + include(cmake/GCov.cmake) + endif () add_subdirectory(tests) endif () diff --git a/build.sh b/build.sh new file mode 100755 index 0000000..173ff8c --- /dev/null +++ b/build.sh @@ -0,0 +1,18 @@ +#! /bin/bash +set -e + +mkdir -p build + +if [ -f "/usr/bin/ninja" ] ; then + EXTRA_ARGS="-G Ninja" + BUILD_COMMAND="ninja" +else + BUILD_COMMAND="make" +fi + +echo "Using $BUILD_COMMAND to build" +( + cd build + cmake .. $EXTRA_ARGS -DCMAKE_INSTALL_PREFIX=../../install -Dlocal_install=ON + $BUILD_COMMAND +) diff --git a/cmake/GdbusCodegen.cmake b/cmake/GdbusCodegen.cmake new file mode 100644 index 0000000..ddb2995 --- /dev/null +++ b/cmake/GdbusCodegen.cmake @@ -0,0 +1,36 @@ +cmake_minimum_required(VERSION 2.6) +if(POLICY CMP0011) + cmake_policy(SET CMP0011 NEW) +endif(POLICY CMP0011) + +find_program(GDBUS_CODEGEN NAMES gdbus-codegen DOC "gdbus-codegen executable") +if(NOT GDBUS_CODEGEN) + message(FATAL_ERROR "Excutable gdbus-codegen not found") +endif() + +macro(add_gdbus_codegen outfiles name prefix service_xml) + add_custom_command( + OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/${name}.h" "${CMAKE_CURRENT_BINARY_DIR}/${name}.c" + COMMAND "${GDBUS_CODEGEN}" + --interface-prefix "${prefix}" + --generate-c-code "${name}" + "${service_xml}" + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} + DEPENDS ${ARGN} "${service_xml}" + ) + list(APPEND ${outfiles} "${CMAKE_CURRENT_BINARY_DIR}/${name}.c") +endmacro(add_gdbus_codegen) + +macro(add_gdbus_codegen_with_namespace outfiles name prefix namespace service_xml) + add_custom_command( + OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/${name}.h" "${CMAKE_CURRENT_BINARY_DIR}/${name}.c" + COMMAND "${GDBUS_CODEGEN}" + --interface-prefix "${prefix}" + --generate-c-code "${name}" + --c-namespace "${namespace}" + "${service_xml}" + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} + DEPENDS ${ARGN} "${service_xml}" + ) + list(APPEND ${outfiles} "${CMAKE_CURRENT_BINARY_DIR}/${name}.c") +endmacro(add_gdbus_codegen_with_namespace) diff --git a/src/backend-dbus/CMakeLists.txt b/src/backend-dbus/CMakeLists.txt index a477cfe..dd928cc 100644 --- a/src/backend-dbus/CMakeLists.txt +++ b/src/backend-dbus/CMakeLists.txt @@ -1,86 +1,59 @@ -# autogenerate source code files for our DBus proxies -function(gdbus_codegen XML_FILE INTERFACE_PREFIX SOURCE_PREFIX) +set(BACKEND_GENERATED_SOURCES +) - set (SRC_C, ${SOURCE_PREFIX}.c) - set (SRC_H, ${SOURCE_PREFIX}.h) +add_gdbus_codegen (BACKEND_GENERATED_SOURCES dbus-display-manager + org.freedesktop + ${CMAKE_CURRENT_SOURCE_DIR}/display-manager.xml) - # check for the app - find_program (GDBUS_CODEGEN_EXECUTABLE NAMES gdbus-codegen DOC "gdbus-codegen executable") - if(NOT GDBUS_CODEGEN_EXECUTABLE) - message(FATAL_ERROR "Executable gdbus-codegen not found") - endif() +add_gdbus_codegen (BACKEND_GENERATED_SOURCES dbus-webcredentials + com.canonical.indicators + ${CMAKE_CURRENT_SOURCE_DIR}/com.canonical.indicators.webcredentials.xml) - # generate the code - add_custom_command ( - OUTPUT ${SOURCE_PREFIX}.c ${SOURCE_PREFIX}.h - COMMAND gdbus-codegen ARGS --interface-prefix ${INTERFACE_PREFIX} --generate-c-code ${SOURCE_PREFIX} ${CMAKE_CURRENT_SOURCE_DIR}/${XML_FILE} - DEPENDS ${XML_FILE}) +add_gdbus_codegen (BACKEND_GENERATED_SOURCES dbus-accounts + org.freedesktop + ${CMAKE_CURRENT_SOURCE_DIR}/org.freedesktop.Accounts.xml) + +add_gdbus_codegen (BACKEND_GENERATED_SOURCES dbus-user + org.freedesktop + ${CMAKE_CURRENT_SOURCE_DIR}/org.freedesktop.Accounts.User.xml) - # update our variables - set_property (DIRECTORY APPEND PROPERTY ADDITIONAL_MAKE_CLEAN_FILES ${SRC_C}) - set_property (DIRECTORY APPEND PROPERTY ADDITIONAL_MAKE_CLEAN_FILES ${SRC_H}) - set_property (SOURCE ${SRC_C} ${SRC_H} PROPERTY GENERATED) +add_gdbus_codegen (BACKEND_GENERATED_SOURCES dbus-consolekit-manager + org.freedesktop + ${CMAKE_CURRENT_SOURCE_DIR}/org.freedesktop.ConsoleKit.Manager.xml) - # cleanup - unset (SRC_C) - unset (SRC_H) +add_gdbus_codegen (BACKEND_GENERATED_SOURCES dbus-consolekit-seat + org.freedesktop + ${CMAKE_CURRENT_SOURCE_DIR}/org.freedesktop.ConsoleKit.Seat.xml) -endfunction(gdbus_codegen) -gdbus_codegen ("display-manager.xml" "org.freedesktop" "dbus-display-manager") -gdbus_codegen ("com.canonical.indicators.webcredentials.xml" "com.canonical.indicators" "dbus-webcredentials") -gdbus_codegen ("org.freedesktop.Accounts.xml" "org.freedesktop" "dbus-accounts") -gdbus_codegen ("org.freedesktop.Accounts.User.xml" "org.freedesktop" "dbus-user") -gdbus_codegen ("org.freedesktop.ConsoleKit.Manager.xml" "org.freedesktop" "dbus-consolekit-manager") -gdbus_codegen ("org.freedesktop.ConsoleKit.Seat.xml" "org.freedesktop" "dbus-consolekit-seat") -gdbus_codegen ("org.freedesktop.ConsoleKit.Session.xml" "org.freedesktop" "dbus-consolekit-session") -gdbus_codegen ("org.gnome.ScreenSaver.xml" "org" "gnome-screen-saver") -gdbus_codegen ("org.gnome.SessionManager.xml" "org" "gnome-session-manager") -gdbus_codegen ("org.gnome.SessionManager.EndSessionDialog.xml" "org.gnome.SessionManager" "dbus-end-session-dialog") -gdbus_codegen ("upower.xml" "org.freedesktop" "dbus-upower") +add_gdbus_codegen (BACKEND_GENERATED_SOURCES dbus-consolekit-session + org.freedesktop + ${CMAKE_CURRENT_SOURCE_DIR}/org.freedesktop.ConsoleKit.Session.xml) + +add_gdbus_codegen (BACKEND_GENERATED_SOURCES gnome-screen-saver + org + ${CMAKE_CURRENT_SOURCE_DIR}/org.gnome.ScreenSaver.xml) + +add_gdbus_codegen (BACKEND_GENERATED_SOURCES gnome-session-manager + org + ${CMAKE_CURRENT_SOURCE_DIR}/org.gnome.SessionManager.xml) + +add_gdbus_codegen (BACKEND_GENERATED_SOURCES dbus-end-session-dialog + org.gnome.SessionManager + ${CMAKE_CURRENT_SOURCE_DIR}/org.gnome.SessionManager.EndSessionDialog.xml) + +add_gdbus_codegen (BACKEND_GENERATED_SOURCES dbus-upower + org.freedesktop + ${CMAKE_CURRENT_SOURCE_DIR}/upower.xml) + +set (SOURCES actions.c backend-dbus.c guest.c users.c utils.c) # add warnings/coverage info on handwritten files # but not the autogenerated ones... -set_source_files_properties (actions.c - backend-dbus.c - guest.c - users.c - utils.c +set_source_files_properties (${SOURCES} PROPERTIES COMPILE_FLAGS " -g ${CC_WARNING_ARGS} ${GCOV_FLAGS}") # add the bin dir to our include path s.t. our code can find the autogenerated header files include_directories (${CMAKE_CURRENT_BINARY_DIR} ${SERVICE_INCLUDE_DIRS}) -add_library (backenddbus STATIC - gnome-screen-saver.c - gnome-screen-saver.h - gnome-session-manager.c - gnome-session-manager.h - dbus-display-manager.c - dbus-display-manager.h - dbus-consolekit-manager.c - dbus-consolekit-manager.h - dbus-consolekit-seat.c - dbus-consolekit-seat.h - dbus-consolekit-session.c - dbus-consolekit-session.h - dbus-accounts.c - dbus-accounts.h - dbus-upower.c - dbus-upower.h - dbus-user.c - dbus-user.h - dbus-webcredentials.c - dbus-webcredentials.h - dbus-end-session-dialog.c - dbus-end-session-dialog.h - actions.c - actions.h - backend-dbus.c - backend-dbus.h - guest.c - guest.h - users.c - users.h - utils.c - utils.h) +add_library (backenddbus STATIC ${SOURCES} ${BACKEND_GENERATED_SOURCES}) -- cgit v1.2.3 From 78e8c39d7fb8cb50b7a3cf3cca088f2b5e433166 Mon Sep 17 00:00:00 2001 From: Charles Kerr Date: Sat, 23 Mar 2013 16:25:21 -0500 Subject: Add Translations.cmake for i18n files --- CMakeLists.txt | 1 + INSTALL | 1 + cmake/Gettext.cmake | 179 ----------------------------------------------- cmake/Translations.cmake | 41 +++++++++++ po/CMakeLists.txt | 3 + po/LINGUAS | 99 -------------------------- po/POTFILES.in | 14 ---- 7 files changed, 46 insertions(+), 292 deletions(-) delete mode 100644 cmake/Gettext.cmake create mode 100644 cmake/Translations.cmake create mode 100644 po/CMakeLists.txt delete mode 100644 po/LINGUAS delete mode 100644 po/POTFILES.in (limited to 'cmake') diff --git a/CMakeLists.txt b/CMakeLists.txt index feb332c..5f04214 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -46,6 +46,7 @@ include_directories (${CMAKE_CURRENT_BINARY_DIR}/src) add_subdirectory (src) add_subdirectory (data) +add_subdirectory (po) if (${enable_tests}) set (GTEST_SOURCE_DIR /usr/src/gtest/src) diff --git a/INSTALL b/INSTALL index ef5d8e5..1ca082b 100644 --- a/INSTALL +++ b/INSTALL @@ -18,6 +18,7 @@ Build dependencies ------------------ List of packages required to build and test the code: +- gettext (gettext 0.18.1.1-10ubuntu3 or later) - glib (libglib2.0, 2.35.4 or later) - cmake (cmake, 2.8.9 or later) - gcovr (gcovr, 2.4 or later) diff --git a/cmake/Gettext.cmake b/cmake/Gettext.cmake deleted file mode 100644 index 9be4742..0000000 --- a/cmake/Gettext.cmake +++ /dev/null @@ -1,179 +0,0 @@ -# Gettext support: Create/Update pot file and -# -# To use: INCLUDE(Gettext) -# -# Most of the gettext support code is from FindGettext.cmake of cmake, -# but it is included here because: -# -# 1. Some system like RHEL5 does not have FindGettext.cmake -# 2. Bug of GETTEXT_CREATE_TRANSLATIONS make it unable to be include in 'All' -# 3. It does not support xgettext -# -#=================================================================== -# Constants: -# XGETTEXT_OPTIONS_DEFAULT: Default xgettext option: -#=================================================================== -# Variables: -# XGETTEXT_OPTIONS: Options pass to xgettext -# Default: XGETTEXT_OPTIONS_DEFAULT -# GETTEXT_MSGMERGE_EXECUTABLE: the full path to the msgmerge tool. -# GETTEXT_MSGFMT_EXECUTABLE: the full path to the msgfmt tool. -# GETTEXT_FOUND: True if gettext has been found. -# XGETTEXT_EXECUTABLE: the full path to the xgettext. -# XGETTEXT_FOUND: True if xgettext has been found. -# -#=================================================================== -# Macros: -# GETTEXT_CREATE_POT(potFile -# [OPTION xgettext_options] -# SRC list_of_source_file_that_contains_msgid -# ) -# -# Generate .pot file. -# OPTION xgettext_options: Override XGETTEXT_OPTIONS -# -# * Produced targets: pot_file -# -#------------------------------------------------------------------- -# GETTEXT_CREATE_TRANSLATIONS ( outputFile [ALL] locale1 ... localeN -# [COMMENT comment] ) -# -# This will create a target "translations" which will convert the -# given input po files into the binary output mo file. If the -# ALL option is used, the translations will also be created when -# building the default target. -# -# * Produced targets: translations -#------------------------------------------------------------------- - -FIND_PROGRAM(GETTEXT_MSGMERGE_EXECUTABLE msgmerge) -FIND_PROGRAM(GETTEXT_MSGFMT_EXECUTABLE msgfmt) -FIND_PROGRAM(GETTEXT_MSGCAT_EXECUTABLE msgcat) -FIND_PROGRAM(XGETTEXT_EXECUTABLE xgettext) - -SET(XGETTEXT_OPTIONS_DEFAULT - --language=C --keyword=_ --keyword=N_ --keyword=C_:1c,2 --keyword=NC_:1c,2 -s - --escape --add-comments="/" --package-name=${PROJECT_NAME} --package-version=${VERSION}) - -IF (GETTEXT_MSGMERGE_EXECUTABLE AND GETTEXT_MSGFMT_EXECUTABLE AND GETTEXT_MSGCAT_EXECUTABLE) - SET(GETTEXT_FOUND TRUE) -ELSE (GETTEXT_MSGMERGE_EXECUTABLE AND GETTEXT_MSGFMT_EXECUTABLE) - SET(GETTEXT_FOUND FALSE) - IF (GetText_REQUIRED) - MESSAGE(FATAL_ERROR "GetText not found") - ENDIF (GetText_REQUIRED) -ENDIF (GETTEXT_MSGMERGE_EXECUTABLE AND GETTEXT_MSGFMT_EXECUTABLE AND GETTEXT_MSGCAT_EXECUTABLE) - -IF(XGETTEXT_EXECUTABLE) - SET(XGETTEXT_FOUND TRUE) -ELSE(XGETTEXT_EXECUTABLE) - MESSAGE(STATUS "xgettext not found.") - SET(XGETTTEXT_FOUND FALSE) -ENDIF(XGETTEXT_EXECUTABLE) - -IF(NOT DEFINED XGETTEXT_OPTIONS) - SET(XGETTEXT_OPTIONS ${XGETTEXT_OPTIONS_DEFAULT}) -ENDIF(NOT DEFINED XGETTEXT_OPTIONS) - -IF(XGETTEXT_FOUND) - MACRO(GETTEXT_CREATE_POT _potFile _pot_options ) - SET(_xgettext_options_list) - SET(_src_list) - SET(_src_list_abs) - SET(_glade_list) - SET(_glade_list_abs) - SET(_stage "SRC") - FOREACH(_pot_option ${_pot_options} ${ARGN}) - IF(_pot_option STREQUAL "OPTION") - SET(_stage "OPTION") - ELSEIF(_pot_option STREQUAL "SRC") - SET(_stage "SRC") - ELSEIF(_pot_option STREQUAL "GLADE") - SET(_stage "GLADE") - ELSE(_pot_option STREQUAL "OPTION") - IF(_stage STREQUAL "OPTION") - SET(_xgettext_options_list ${_xgettext_options_list} ${_pot_option}) - ELSEIF(_stage STREQUAL "GLADE") - FILE(RELATIVE_PATH _relFile ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_SOURCE_DIR}/${_pot_option}) - GET_FILENAME_COMPONENT(_absFile ${_pot_option} ABSOLUTE) - SET(_glade_list ${_glade_list} ${_relFile}) - SET(_glade_list_abs ${_glade_list_abs} ${_absFile}) - ELSEIF(_stage STREQUAL "SRC") - FILE(RELATIVE_PATH _relFile ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/${_pot_option}) - GET_FILENAME_COMPONENT(_absFile ${_pot_option} ABSOLUTE) - SET(_src_list ${_src_list} ${_relFile}) - SET(_src_list_abs ${_src_list_abs} ${_absFile}) - ENDIF(_stage STREQUAL "OPTION") - ENDIF(_pot_option STREQUAL "OPTION") - ENDFOREACH(_pot_option ${_pot_options} ${ARGN}) - - IF (_xgettext_options_list) - SET(_xgettext_options ${_xgettext_options_list}) - ELSE(_xgettext_options_list) - SET(_xgettext_options ${XGETTEXT_OPTIONS}) - ENDIF(_xgettext_options_list) - - #MESSAGE("${XGETTEXT_EXECUTABLE} ${_xgettext_options_list} -o ${_potFile} ${_src_list}") - ADD_CUSTOM_COMMAND(OUTPUT pot_file - COMMAND ${XGETTEXT_EXECUTABLE} ${_xgettext_options} -o ${_potFile} ${_src_list} - DEPENDS ${_src_list_abs} ${GLADE_FILES} - WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} - ) - - ADD_CUSTOM_TARGET(pot_file - COMMAND ${XGETTEXT_EXECUTABLE} ${_xgettext_options_list} -o _source.pot ${_src_list} - COMMAND ${XGETTEXT_EXECUTABLE} --language=Glade --omit-header -o _glade.pot ${_glade_list} - COMMAND ${GETTEXT_MSGCAT_EXECUTABLE} -o ${_potFile} --use-first _source.pot _glade.pot - DEPENDS ${_src_list_abs} - WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} - COMMENT "Extract translatable messages to ${_potFile}" - ) - ENDMACRO(GETTEXT_CREATE_POT _potFile _pot_options) - - - MACRO(GETTEXT_CREATE_TRANSLATIONS _potFile _firstLang) - SET(_gmoFiles) - GET_FILENAME_COMPONENT(_potBasename ${_potFile} NAME_WE) - GET_FILENAME_COMPONENT(_absPotFile ${_potFile} ABSOLUTE) - - SET(_addToAll) - SET(_is_comment FALSE) - - FOREACH (_currentLang ${_firstLang} ${ARGN}) - IF(_currentLang STREQUAL "ALL") - SET(_addToAll "ALL") - ELSEIF(_currentLang STREQUAL "COMMENT") - SET(_is_comment TRUE) - ELSEIF(_is_comment) - SET(_is_comment FALSE) - SET(_comment ${_currentLang}) - ELSE() - SET(_lang ${_currentLang}) - GET_FILENAME_COMPONENT(_absFile ${_currentLang}.po ABSOLUTE) - GET_FILENAME_COMPONENT(_abs_PATH ${_absFile} PATH) - SET(_gmoFile ${CMAKE_CURRENT_BINARY_DIR}/${_lang}.mo) - - #MESSAGE("_absFile=${_absFile} _abs_PATH=${_abs_PATH} _lang=${_lang} curr_bin=${CMAKE_CURRENT_BINARY_DIR}") - ADD_CUSTOM_COMMAND( - OUTPUT ${_gmoFile} - COMMAND ${GETTEXT_MSGMERGE_EXECUTABLE} --quiet --update --backup=none -s ${_absFile} ${_absPotFile} - COMMAND ${GETTEXT_MSGFMT_EXECUTABLE} -o ${_gmoFile} ${_absFile} - DEPENDS ${_absPotFile} ${_absFile} - WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} - ) - - INSTALL(FILES ${_gmoFile} DESTINATION share/locale/${_lang}/LC_MESSAGES RENAME ${_potBasename}.mo) - SET(_gmoFiles ${_gmoFiles} ${_gmoFile}) - ENDIF() - ENDFOREACH (_currentLang ) - - IF(DEFINED _comment) - ADD_CUSTOM_TARGET(translations ${_addToAll} DEPENDS ${_gmoFiles} COMMENT ${_comment}) - ELSE(DEFINED _comment) - ADD_CUSTOM_TARGET(translations ${_addToAll} DEPENDS ${_gmoFiles}) - ENDIF(DEFINED _comment) - ENDMACRO(GETTEXT_CREATE_TRANSLATIONS ) -ENDIF(XGETTEXT_FOUND) - - - diff --git a/cmake/Translations.cmake b/cmake/Translations.cmake new file mode 100644 index 0000000..476fb37 --- /dev/null +++ b/cmake/Translations.cmake @@ -0,0 +1,41 @@ +# Translations.cmake, CMake macros written for Marlin, feel free to re-use them + +macro(add_translations_directory NLS_PACKAGE) + add_custom_target (i18n ALL COMMENT “Building i18n messages.”) + find_program (MSGFMT_EXECUTABLE msgfmt) + file (GLOB PO_FILES ${CMAKE_CURRENT_SOURCE_DIR}/*.po) + foreach (PO_INPUT ${PO_FILES}) + get_filename_component (PO_INPUT_BASE ${PO_INPUT} NAME_WE) + set (MO_OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${PO_INPUT_BASE}.mo) + add_custom_command (TARGET i18n COMMAND ${MSGFMT_EXECUTABLE} -o ${MO_OUTPUT} ${PO_INPUT}) + + install (FILES ${MO_OUTPUT} DESTINATION + share/locale/${PO_INPUT_BASE}/LC_MESSAGES + RENAME ${NLS_PACKAGE}.mo) + endforeach (PO_INPUT ${PO_FILES}) +endmacro(add_translations_directory) + + +macro(add_translations_catalog NLS_PACKAGE) + add_custom_target (pot COMMENT “Building translation catalog.”) + find_program (XGETTEXT_EXECUTABLE xgettext) + + + set(C_SOURCE "") + + foreach(FILES_INPUT ${ARGN}) + file (GLOB_RECURSE SOURCE_FILES ${CMAKE_CURRENT_SOURCE_DIR}/${FILES_INPUT}/*.c) + foreach(C_FILE ${SOURCE_FILES}) + set(C_SOURCE ${C_SOURCE} ${C_FILE}) + endforeach() + file (GLOB_RECURSE SOURCE_FILES ${CMAKE_CURRENT_SOURCE_DIR}/${FILES_INPUT}/*.vala) + foreach(C_FILE ${SOURCE_FILES}) + set(C_SOURCE ${C_SOURCE} ${C_FILE}) + endforeach() + endforeach() + + add_custom_command (TARGET pot COMMAND + ${XGETTEXT_EXECUTABLE} -d ${NLS_PACKAGE} -o ${CMAKE_CURRENT_SOURCE_DIR}/${NLS_PACKAGE}.pot + ${VALA_SOURCE} ${C_SOURCE} --keyword="_" --keyword="N_" --from-code=UTF-8 + ) +endmacro() diff --git a/po/CMakeLists.txt b/po/CMakeLists.txt new file mode 100644 index 0000000..8325f6e --- /dev/null +++ b/po/CMakeLists.txt @@ -0,0 +1,3 @@ +include (Translations) +add_translations_directory ("${GETTEXT_PACKAGE}") +add_translations_catalog ("${GETTEXT_PACKAGE}" ../src/) diff --git a/po/LINGUAS b/po/LINGUAS deleted file mode 100644 index 2f49802..0000000 --- a/po/LINGUAS +++ /dev/null @@ -1,99 +0,0 @@ -af -am -an -ar -ast -az -be -bg -bn -bo -br -bs -ca -ca@valencia -crh -csb -cs -cv -cy -da -de -dv -el -en_AU -en_CA -en_GB -eo -es -et -eu -fa -fi -fr -fur -fy -gd -gl -gu -gv -he -hi -hr -hu -hy -id -is -it -ja -ka -kk -km -kn -ko -ku -ky -lb -lt -lv -mg -mk -ml -mr -ms -my -nb -ne -nl -nn -ny -oc -os -pa -pl -pt_BR -pt -ro -ru -sc -sd -si -sk -sl -sq -sr -sv -ta_LK -ta -te -th -tr -tt -ug -uk -ur -vec -vi -zh_CN -zh_HK -zh_TW diff --git a/po/POTFILES.in b/po/POTFILES.in deleted file mode 100644 index f2cafb0..0000000 --- a/po/POTFILES.in +++ /dev/null @@ -1,14 +0,0 @@ -[encoding: UTF-8] -data/com.canonical.indicator.session.gschema.xml.in -data/extra-sessions/classic-desktop.desktop.in.in -src/dialog.c -src/gen-session-dbus.xml.c -src/gtk-logout-helper.c -src/indicator-session.c -src/online-accounts-mgr.c -src/session-dbus.c -src/session-menu-mgr.c -src/session-service.c -src/users-service-dbus.c -src/user-widget.c - -- cgit v1.2.3 From 6def7fceae5ea55e6d44ede05146f6a95add317c Mon Sep 17 00:00:00 2001 From: Charles Kerr Date: Thu, 20 Jun 2013 17:31:07 -0500 Subject: install .schema.xml and indicator-session-service in the right places. --- CMakeLists.txt | 3 +- TODO | 2 + cmake/GSettings.cmake | 108 ----------------------------------------------- cmake/UseGSettings.cmake | 43 +++++++++++++++++++ data/CMakeLists.txt | 66 ++++++++++++++++++----------- src/CMakeLists.txt | 7 +-- 6 files changed, 93 insertions(+), 136 deletions(-) delete mode 100644 cmake/GSettings.cmake create mode 100644 cmake/UseGSettings.cmake (limited to 'cmake') diff --git a/CMakeLists.txt b/CMakeLists.txt index f656cb4..d90d6c9 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -16,7 +16,7 @@ find_package(PkgConfig REQUIRED) include (GNUInstallDirs) include (FindPkgConfig) include (GdbusCodegen) -include (GSettings) +include (UseGSettings) add_definitions( -DGETTEXT_PACKAGE="${GETTEXT_PACKAGE}" ) add_definitions (-DGNOMELOCALEDIR=\"@CMAKE_INSTALL_PREFIX@/share/locale\") @@ -51,6 +51,7 @@ if (EXISTS "/etc/debian_version") set(CMAKE_INSTALL_FULL_LIBEXECDIR "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBEXECDIR}") endif() message("Installing libexec files to ${CMAKE_INSTALL_FULL_LIBEXECDIR}") +set (PROJECT_LIBEXECDIR "${CMAKE_INSTALL_FULL_LIBEXECDIR}/${CMAKE_PROJECT_NAME}") if(${LOCAL_INSTALL}) set(DBUSSERVICEDIR "${CMAKE_INSTALL_DATADIR}/dbus-1/services/") diff --git a/TODO b/TODO index 56c6a68..3d79bab 100644 --- a/TODO +++ b/TODO @@ -6,5 +6,7 @@ code cmake x add cmake rule to install .indicator file x add cmake rule to install dbus service file + x add cmake rule to install indicator-session-service + x gsettings schema validation - icon installation - test schema installation diff --git a/cmake/GSettings.cmake b/cmake/GSettings.cmake deleted file mode 100644 index 5902baa..0000000 --- a/cmake/GSettings.cmake +++ /dev/null @@ -1,108 +0,0 @@ -# GSettings.cmake -# Originally based on CMake macros written for Marlin -# Updated by Yorba for newer versions of GLib. -# -# NOTE: This module does an in-place compilation of GSettings; the -# resulting gschemas.compiled file will end up in the same -# source folder as the original schema(s). - -option(GSETTINGS_COMPILE "Compile GSettings schemas. Can be disabled for packaging reasons." ON) -option(GSETTINGS_COMPILE_IN_PLACE "Compile GSettings schemas in the build folder. This is used for running an appliction without installing the GSettings systemwide. The application will need to set GSETTINGS_SCHEMA_DIR" ON) - -if (GSETTINGS_COMPILE) - message(STATUS "GSettings schemas will be compiled.") -endif () - -if (GSETTINGS_COMPILE_IN_PLACE) - message(STATUS "GSettings schemas will be compiled in-place.") -endif () - -macro(add_schemas GSETTINGS_TARGET SCHEMA_DIRECTORY) - set(PKG_CONFIG_EXECUTABLE pkg-config) - - # Locate all schema files. - file(GLOB all_schema_files - "${SCHEMA_DIRECTORY}/*.gschema.xml" - ) - - # Find the GLib path for schema installation - execute_process( - COMMAND - ${PKG_CONFIG_EXECUTABLE} - glib-2.0 - --variable prefix - OUTPUT_VARIABLE - _glib_prefix - OUTPUT_STRIP_TRAILING_WHITESPACE - ) - - set(GSETTINGS_DIR "${_glib_prefix}/share/glib-2.0/schemas/" CACHE INTERNAL "") - - # Fetch path for schema compiler from pkg-config - execute_process( - COMMAND - ${PKG_CONFIG_EXECUTABLE} - gio-2.0 - --variable - glib_compile_schemas - OUTPUT_VARIABLE - _glib_compile_schemas - OUTPUT_STRIP_TRAILING_WHITESPACE - ) - - set(glib_schema_compiler ${_glib_compile_schemas} CACHE INTERNAL "") - - if (GSETTINGS_COMPILE_IN_PLACE) - set(COMPILE_IN_PLACE_DIR ${CMAKE_BINARY_DIR}/gsettings) - add_custom_command( - TARGET - ${GSETTINGS_TARGET} - COMMAND - ${CMAKE_COMMAND} -E make_directory "${COMPILE_IN_PLACE_DIR}" - ) - - # Copy all schemas to the build folder. - foreach(schema_file ${all_schema_files}) - add_custom_command( - TARGET - ${GSETTINGS_TARGET} - COMMAND - ${CMAKE_COMMAND} -E copy "${schema_file}" "${COMPILE_IN_PLACE_DIR}" - COMMENT "Copying schema ${schema_file} to ${COMPILE_IN_PLACE_DIR}" - ) - endforeach() - - # Compile schema in-place. - add_custom_command( - TARGET - ${GSETTINGS_TARGET} - COMMAND - ${glib_schema_compiler} ${COMPILE_IN_PLACE_DIR} - COMMENT "Compiling schemas in folder: ${COMPILE_IN_PLACE_DIR}" - ) - endif () - - # Install and recompile schemas - message(STATUS "GSettings schemas will be installed into ${GSETTINGS_DIR}") - - install( - FILES - ${all_schema_files} - DESTINATION - ${GSETTINGS_DIR} - OPTIONAL - ) - - if (GSETTINGS_COMPILE) - install( - CODE - "message (STATUS \"Compiling GSettings schemas\")" - ) - - install( - CODE - "execute_process (COMMAND ${glib_schema_compiler} ${GSETTINGS_DIR})" - ) - endif () -endmacro(add_schemas) - diff --git a/cmake/UseGSettings.cmake b/cmake/UseGSettings.cmake new file mode 100644 index 0000000..3d8ae1c --- /dev/null +++ b/cmake/UseGSettings.cmake @@ -0,0 +1,43 @@ +# GSettings.cmake, CMake macros written for Marlin, feel free to re-use them. + +option (GSETTINGS_LOCALINSTALL "Install GSettings Schemas locally instead of to the GLib prefix" ${LOCAL_INSTALL}) + +option (GSETTINGS_COMPILE "Compile GSettings Schemas after installation" ${GSETTINGS_LOCALINSTALL}) + +if(GSETTINGS_LOCALINSTALL) + message(STATUS "GSettings schemas will be installed locally.") +endif() + +if(GSETTINGS_COMPILE) + message(STATUS "GSettings shemas will be compiled.") +endif() + +macro(add_schema SCHEMA_NAME) + + set(PKG_CONFIG_EXECUTABLE pkg-config) + # Have an option to not install the schema into where GLib is + if (GSETTINGS_LOCALINSTALL) + SET (GSETTINGS_DIR "${CMAKE_INSTALL_PREFIX}/share/glib-2.0/schemas/") + else (GSETTINGS_LOCALINSTALL) + execute_process (COMMAND ${PKG_CONFIG_EXECUTABLE} glib-2.0 --variable prefix OUTPUT_VARIABLE _glib_prefix OUTPUT_STRIP_TRAILING_WHITESPACE) + SET (GSETTINGS_DIR "${_glib_prefix}/share/glib-2.0/schemas/") + endif (GSETTINGS_LOCALINSTALL) + + # Run the validator and error if it fails + execute_process (COMMAND ${PKG_CONFIG_EXECUTABLE} gio-2.0 --variable glib_compile_schemas OUTPUT_VARIABLE _glib_comple_schemas OUTPUT_STRIP_TRAILING_WHITESPACE) + execute_process (COMMAND ${_glib_comple_schemas} --dry-run --schema-file=${SCHEMA_NAME} ERROR_VARIABLE _schemas_invalid OUTPUT_STRIP_TRAILING_WHITESPACE) + + if (_schemas_invalid) + message (SEND_ERROR "Schema validation error: ${_schemas_invalid}") + endif (_schemas_invalid) + + # Actually install and recomple schemas + message (STATUS "GSettings schemas will be installed into ${GSETTINGS_DIR}") + install (FILES ${SCHEMA_NAME} DESTINATION ${GSETTINGS_DIR} OPTIONAL) + + if (GSETTINGS_COMPILE) + install (CODE "message (STATUS \"Compiling GSettings schemas\")") + install (CODE "execute_process (COMMAND ${_glib_comple_schemas} ${GSETTINGS_DIR})") + endif () +endmacro() + diff --git a/data/CMakeLists.txt b/data/CMakeLists.txt index 84fe66c..d8f338b 100644 --- a/data/CMakeLists.txt +++ b/data/CMakeLists.txt @@ -1,24 +1,42 @@ -# schema -configure_file (com.canonical.indicator.session.gschema.xml.in - com.canonical.indicator.session.gschema.xml) -include (GSettings) -add_schemas(clinica-schemas ${CMAKE_SOURCE_DIR}/data/com.canonical.indicator.session.gschema.xml) - -# .service file -set(SERVICE_NAME "indicator-session.service") -set(SERVICE_PATH "${CMAKE_CURRENT_BINARY_DIR}/${SERVICE_NAME}") -set(pkglibexecdir "${CMAKE_INSTALL_FULL_LIBEXECDIR}/indicator-session") -configure_file ("${CMAKE_CURRENT_SOURCE_DIR}/${SERVICE_NAME}.in" "${SERVICE_PATH}") -install (FILES ${SERVICE_PATH} - DESTINATION ${DBUSSERVICEDIR}) - -# .indicator file -install(FILES com.canonical.indicator.session - DESTINATION ${CMAKE_INSTALL_PREFIX}/share/unity/indicators) - -# FIXME install files -# -#install(FILES -#datetime-dialog.ui -#DESTINATION share/indicatore-datetime # FIXME this too. -#) +## +## GSettings schema +## + +set (SCHEMA_NAME "com.canonical.indicator.session.gschema.xml") +set (SCHEMA_PATH "${CMAKE_CURRENT_BINARY_DIR}/${SCHEMA_NAME}") +set (SCHEMA_PATH_IN "${CMAKE_CURRENT_SOURCE_DIR}/${SCHEMA_NAME}.in") + +# generate the .xml file using intltool +set (ENV{LC_ALL} "C") +execute_process (COMMAND intltool-merge -x -u --no-translations ${SCHEMA_PATH_IN} ${SCHEMA_PATH}) + +# let UseGSettings do the rest +add_schema (${SCHEMA_PATH}) + + +## +## DBus Service File +## + +set (SERVICE_NAME "${CMAKE_PROJECT_NAME}.service") +set (SERVICE_PATH "${CMAKE_CURRENT_BINARY_DIR}/${SERVICE_NAME}") +set (SERVICE_PATH_IN "${CMAKE_CURRENT_SOURCE_DIR}/${SERVICE_NAME}.in") + +# build it +set (pkglibexecdir "${PROJECT_LIBEXECDIR}") +configure_file ("${SERVICE_PATH_IN}" "${SERVICE_PATH}") + +# install it +install (FILES ${SERVICE_PATH} DESTINATION ${DBUSSERVICEDIR}) + + +## +## Unity Indicator File +## + +set (UNITY_INDICATOR_NAME "com.canonical.indicator.session") +set (UNITY_INDICATOR_PATH "${CMAKE_CURRENT_SOURCE_DIR}/${UNITY_INDICATOR_NAME}") +set (UNITY_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}/share/unity") + +install (FILES ${UNITY_INDICATOR_PATH} DESTINATION "${UNITY_INSTALL_PREFIX}/indicators") + diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index efa704c..7b65629 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -14,6 +14,7 @@ set_target_properties (libindicatorsessionservice PROPERTIES COMPILE_FLAGS " -g include_directories(${SERVICE_INCLUDE_DIRS}) link_directories(${SERVICE_LIBRARY_DIRS}) -add_executable (indicator-session-service main.c) -target_link_libraries (indicator-session-service libindicatorsessionservice backenddbus ${SERVICE_LIBRARIES} ${GCOV_LIBS}) - +set (SERVICE_EXEC "indicator-session-service") +add_executable (${SERVICE_EXEC} main.c) +target_link_libraries (${SERVICE_EXEC} libindicatorsessionservice backenddbus ${SERVICE_LIBRARIES} ${GCOV_LIBS}) +install (TARGETS ${SERVICE_EXEC} RUNTIME DESTINATION ${PROJECT_LIBEXECDIR}) -- cgit v1.2.3 From 3d4daff706c39fb6ebdd29b950f3f0ea1402116d Mon Sep 17 00:00:00 2001 From: Charles Kerr Date: Thu, 20 Jun 2013 18:44:26 -0500 Subject: cmake: fix variables in data/CMakeLists.txt, make status messages more consistent --- cmake/UseGSettings.cmake | 7 ++++--- data/CMakeLists.txt | 52 +++++++++++++++++++++++++++++++----------------- 2 files changed, 38 insertions(+), 21 deletions(-) (limited to 'cmake') diff --git a/cmake/UseGSettings.cmake b/cmake/UseGSettings.cmake index 3d8ae1c..c8ea30c 100644 --- a/cmake/UseGSettings.cmake +++ b/cmake/UseGSettings.cmake @@ -15,12 +15,13 @@ endif() macro(add_schema SCHEMA_NAME) set(PKG_CONFIG_EXECUTABLE pkg-config) + set(SCHEMA_SUFFIX "share/glib-2.0/schemas") # Have an option to not install the schema into where GLib is if (GSETTINGS_LOCALINSTALL) - SET (GSETTINGS_DIR "${CMAKE_INSTALL_PREFIX}/share/glib-2.0/schemas/") + SET (GSETTINGS_DIR "${CMAKE_INSTALL_PREFIX}/${SCHEMA_SUFFIX}") else (GSETTINGS_LOCALINSTALL) execute_process (COMMAND ${PKG_CONFIG_EXECUTABLE} glib-2.0 --variable prefix OUTPUT_VARIABLE _glib_prefix OUTPUT_STRIP_TRAILING_WHITESPACE) - SET (GSETTINGS_DIR "${_glib_prefix}/share/glib-2.0/schemas/") + SET (GSETTINGS_DIR "${_glib_prefix}/${SCHEMA_SUFFIX}") endif (GSETTINGS_LOCALINSTALL) # Run the validator and error if it fails @@ -32,7 +33,7 @@ macro(add_schema SCHEMA_NAME) endif (_schemas_invalid) # Actually install and recomple schemas - message (STATUS "GSettings schemas will be installed into ${GSETTINGS_DIR}") + message (STATUS "${GSETTINGS_DIR} is the GSettings install dir") install (FILES ${SCHEMA_NAME} DESTINATION ${GSETTINGS_DIR} OPTIONAL) if (GSETTINGS_COMPILE) diff --git a/data/CMakeLists.txt b/data/CMakeLists.txt index de6942d..91f79a5 100644 --- a/data/CMakeLists.txt +++ b/data/CMakeLists.txt @@ -3,55 +3,71 @@ ## set (SCHEMA_NAME "com.canonical.indicator.session.gschema.xml") -set (SCHEMA_PATH "${CMAKE_CURRENT_BINARY_DIR}/${SCHEMA_NAME}") -set (SCHEMA_PATH_IN "${CMAKE_CURRENT_SOURCE_DIR}/${SCHEMA_NAME}.in") +set (SCHEMA_FILE "${CMAKE_CURRENT_BINARY_DIR}/${SCHEMA_NAME}") +set (SCHEMA_FILE_IN "${CMAKE_CURRENT_SOURCE_DIR}/${SCHEMA_NAME}.in") # generate the .xml file using intltool set (ENV{LC_ALL} "C") -execute_process (COMMAND intltool-merge -x -u --no-translations ${SCHEMA_PATH_IN} ${SCHEMA_PATH}) +execute_process (COMMAND intltool-merge -quiet --xml-style --utf8 --no-translations "${SCHEMA_FILE_IN}" "${SCHEMA_FILE}") # let UseGSettings do the rest -add_schema (${SCHEMA_PATH}) +add_schema (${SCHEMA_FILE}) ## ## DBus Service File ## +# where to install +if (${LOCAL_INSTALL}) + set (DBUS_SERVICE_DIR "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_DATADIR}/dbus-1/services") +else () + EXEC_PROGRAM (${PKG_CONFIG_EXECUTABLE} ARGS dbus-1 --variable session_bus_services_dir OUTPUT_VARIABLE DBUS_SERVICE_DIR) +endif () +message (STATUS "${DBUS_SERVICE_DIR} is the DBus Service File install dir") + set (SERVICE_NAME "${CMAKE_PROJECT_NAME}.service") -set (SERVICE_PATH "${CMAKE_CURRENT_BINARY_DIR}/${SERVICE_NAME}") -set (SERVICE_PATH_IN "${CMAKE_CURRENT_SOURCE_DIR}/${SERVICE_NAME}.in") +set (SERVICE_FILE "${CMAKE_CURRENT_BINARY_DIR}/${SERVICE_NAME}") +set (SERVICE_FILE_IN "${CMAKE_CURRENT_SOURCE_DIR}/${SERVICE_NAME}.in") # build it set (pkglibexecdir "${PROJECT_LIBEXECDIR}") -configure_file ("${SERVICE_PATH_IN}" "${SERVICE_PATH}") +configure_file ("${SERVICE_FILE_IN}" "${SERVICE_FILE}") # install it -install (FILES ${SERVICE_PATH} DESTINATION ${DBUSSERVICEDIR}) +install (FILES "${SERVICE_FILE}" + DESTINATION "${DBUS_SERVICE_DIR}") ## ## Unity Indicator File ## +# where to install +set (UNITY_INDICATOR_DIR "${CMAKE_INSTALL_PREFIX}/share/unity/indicators") +message (STATUS "${UNITY_INDICATOR_DIR} is the Unity Indicator install dir") + set (UNITY_INDICATOR_NAME "com.canonical.indicator.session") -set (UNITY_INDICATOR_PATH "${CMAKE_CURRENT_SOURCE_DIR}/${UNITY_INDICATOR_NAME}") -set (UNITY_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}/share/unity") +set (UNITY_INDICATOR_FILE "${CMAKE_CURRENT_SOURCE_DIR}/${UNITY_INDICATOR_NAME}") -install (FILES ${UNITY_INDICATOR_PATH} DESTINATION "${UNITY_INSTALL_PREFIX}/indicators") +install (FILES "${UNITY_INDICATOR_FILE}" + DESTINATION "${UNITY_INDICATOR_DIR}") ## ## Icons ## -if(${LOCAL_INSTALL}) - set (ICON_PREFIX "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_DATADIR}/libindicator/icons/") -else() - EXEC_PROGRAM(${PKG_CONFIG_EXECUTABLE} ARGS indicator3-0.4 --variable iconsdir OUTPUT_VARIABLE ICON_PREFIX) -endif() +# where to install +if (${LOCAL_INSTALL}) + set (ICON_PREFIX "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_DATADIR}/libindicator/icons") +else () + EXEC_PROGRAM (${PKG_CONFIG_EXECUTABLE} ARGS indicator3-0.4 --variable iconsdir OUTPUT_VARIABLE ICON_PREFIX) +endif () set (ICON_DIR "${ICON_PREFIX}/hicolor") -message ("Installing icons to ${ICON_DIR}") +message (STATUS "${ICON_DIR} is the Icon install dir") + install (DIRECTORY icons - DESTINATION ${ICON_DIR} + DESTINATION "${ICON_DIR}" FILES_MATCHING PATTERN "*.png" PATTERN "*.svg") + -- cgit v1.2.3 From ae41c0d677b3ba0be93bafacfb2c48ee36e60f86 Mon Sep 17 00:00:00 2001 From: Charles Kerr Date: Mon, 24 Jun 2013 17:04:08 -0500 Subject: copyediting: the COMMENT in this custom target was being misformatted in the make output --- cmake/Translations.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'cmake') diff --git a/cmake/Translations.cmake b/cmake/Translations.cmake index 476fb37..f069a15 100644 --- a/cmake/Translations.cmake +++ b/cmake/Translations.cmake @@ -1,7 +1,7 @@ # Translations.cmake, CMake macros written for Marlin, feel free to re-use them macro(add_translations_directory NLS_PACKAGE) - add_custom_target (i18n ALL COMMENT “Building i18n messages.”) + add_custom_target (i18n ALL) find_program (MSGFMT_EXECUTABLE msgfmt) file (GLOB PO_FILES ${CMAKE_CURRENT_SOURCE_DIR}/*.po) foreach (PO_INPUT ${PO_FILES}) -- cgit v1.2.3 From 0180339dd65daa9878b93e06ad8da3742999dd3d Mon Sep 17 00:00:00 2001 From: Charles Kerr Date: Fri, 28 Jun 2013 17:06:26 -0500 Subject: remove localinstall mode --- CMakeLists.txt | 1 - build.sh | 2 +- cmake/UseGSettings.cmake | 31 +++++-------------------------- data/CMakeLists.txt | 12 ++---------- 4 files changed, 8 insertions(+), 38 deletions(-) (limited to 'cmake') diff --git a/CMakeLists.txt b/CMakeLists.txt index 1299319..875de0f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -10,7 +10,6 @@ set (GETTEXT_PACKAGE ${CMAKE_PROJECT_NAME}) option (enable_tests "Build the package's automatic tests." ON) option (full_warnings "Full compiler warnings." ON) option (enable_lcov "Generate lcov code coverage reports." ON) -option (LOCAL_INSTALL "Support local installation." OFF) find_package(PkgConfig REQUIRED) include (GNUInstallDirs) diff --git a/build.sh b/build.sh index c98285e..b69687c 100755 --- a/build.sh +++ b/build.sh @@ -13,6 +13,6 @@ fi echo "Using $BUILD_COMMAND to build" ( cd build - cmake .. $EXTRA_ARGS -DCMAKE_INSTALL_PREFIX=../../install -DLOCAL_INSTALL=ON -DCMAKE_BUILD_TYPE=Debug + cmake .. $EXTRA_ARGS -DCMAKE_INSTALL_PREFIX=../../install -DCMAKE_BUILD_TYPE=Debug $BUILD_COMMAND ) diff --git a/cmake/UseGSettings.cmake b/cmake/UseGSettings.cmake index c8ea30c..4050b53 100644 --- a/cmake/UseGSettings.cmake +++ b/cmake/UseGSettings.cmake @@ -1,32 +1,13 @@ # GSettings.cmake, CMake macros written for Marlin, feel free to re-use them. -option (GSETTINGS_LOCALINSTALL "Install GSettings Schemas locally instead of to the GLib prefix" ${LOCAL_INSTALL}) - -option (GSETTINGS_COMPILE "Compile GSettings Schemas after installation" ${GSETTINGS_LOCALINSTALL}) - -if(GSETTINGS_LOCALINSTALL) - message(STATUS "GSettings schemas will be installed locally.") -endif() - -if(GSETTINGS_COMPILE) - message(STATUS "GSettings shemas will be compiled.") -endif() - macro(add_schema SCHEMA_NAME) set(PKG_CONFIG_EXECUTABLE pkg-config) - set(SCHEMA_SUFFIX "share/glib-2.0/schemas") - # Have an option to not install the schema into where GLib is - if (GSETTINGS_LOCALINSTALL) - SET (GSETTINGS_DIR "${CMAKE_INSTALL_PREFIX}/${SCHEMA_SUFFIX}") - else (GSETTINGS_LOCALINSTALL) - execute_process (COMMAND ${PKG_CONFIG_EXECUTABLE} glib-2.0 --variable prefix OUTPUT_VARIABLE _glib_prefix OUTPUT_STRIP_TRAILING_WHITESPACE) - SET (GSETTINGS_DIR "${_glib_prefix}/${SCHEMA_SUFFIX}") - endif (GSETTINGS_LOCALINSTALL) + set(GSETTINGS_DIR "${CMAKE_INSTALL_PREFIX}/share/glib-2.0/schemas") # Run the validator and error if it fails - execute_process (COMMAND ${PKG_CONFIG_EXECUTABLE} gio-2.0 --variable glib_compile_schemas OUTPUT_VARIABLE _glib_comple_schemas OUTPUT_STRIP_TRAILING_WHITESPACE) - execute_process (COMMAND ${_glib_comple_schemas} --dry-run --schema-file=${SCHEMA_NAME} ERROR_VARIABLE _schemas_invalid OUTPUT_STRIP_TRAILING_WHITESPACE) + execute_process (COMMAND ${PKG_CONFIG_EXECUTABLE} gio-2.0 --variable glib_compile_schemas OUTPUT_VARIABLE _glib_compile_schemas OUTPUT_STRIP_TRAILING_WHITESPACE) + execute_process (COMMAND ${_glib_compile_schemas} --dry-run --schema-file=${SCHEMA_NAME} ERROR_VARIABLE _schemas_invalid OUTPUT_STRIP_TRAILING_WHITESPACE) if (_schemas_invalid) message (SEND_ERROR "Schema validation error: ${_schemas_invalid}") @@ -36,9 +17,7 @@ macro(add_schema SCHEMA_NAME) message (STATUS "${GSETTINGS_DIR} is the GSettings install dir") install (FILES ${SCHEMA_NAME} DESTINATION ${GSETTINGS_DIR} OPTIONAL) - if (GSETTINGS_COMPILE) - install (CODE "message (STATUS \"Compiling GSettings schemas\")") - install (CODE "execute_process (COMMAND ${_glib_comple_schemas} ${GSETTINGS_DIR})") - endif () + install (CODE "message (STATUS \"Compiling GSettings schemas\")") + install (CODE "execute_process (COMMAND ${_glib_compile_schemas} ${GSETTINGS_DIR})") endmacro() diff --git a/data/CMakeLists.txt b/data/CMakeLists.txt index 6700163..6eb257c 100644 --- a/data/CMakeLists.txt +++ b/data/CMakeLists.txt @@ -19,11 +19,7 @@ add_schema (${SCHEMA_FILE}) ## # where to install -if (${LOCAL_INSTALL}) - set (DBUS_SERVICE_DIR "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_DATADIR}/dbus-1/services") -else () - EXEC_PROGRAM (${PKG_CONFIG_EXECUTABLE} ARGS dbus-1 --variable session_bus_services_dir OUTPUT_VARIABLE DBUS_SERVICE_DIR) -endif () +set (DBUS_SERVICE_DIR "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_DATADIR}/dbus-1/services") message (STATUS "${DBUS_SERVICE_DIR} is the DBus Service File install dir") set (SERVICE_NAME "${CMAKE_PROJECT_NAME}.service") @@ -59,11 +55,7 @@ install (FILES "${UNITY_INDICATOR_FILE}" ## # where to install -if (${LOCAL_INSTALL}) - set (ICON_PREFIX "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_DATADIR}/libindicator/icons") -else () - EXEC_PROGRAM (${PKG_CONFIG_EXECUTABLE} ARGS indicator3-0.4 --variable iconsdir OUTPUT_VARIABLE ICON_PREFIX) -endif () +set (ICON_PREFIX "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_DATADIR}/libindicator/icons") set (ICON_DIR "${ICON_PREFIX}/hicolor") message (STATUS "${ICON_DIR} is the Icon install dir") -- cgit v1.2.3 From 477dc6fa22bcd37b23deb45b57bec6518ba52ad9 Mon Sep 17 00:00:00 2001 From: Charles Kerr Date: Mon, 1 Jul 2013 19:02:47 -0500 Subject: in the cmake files, prefer the _FULL versions of the GNU variables --- CMakeLists.txt | 4 ++-- cmake/UseGSettings.cmake | 2 +- data/CMakeLists.txt | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) (limited to 'cmake') diff --git a/CMakeLists.txt b/CMakeLists.txt index 593d916..25c2be1 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -46,8 +46,8 @@ include_directories (${CMAKE_CURRENT_BINARY_DIR}/src) # Workaround for libexecdir on debian if (EXISTS "/etc/debian_version") - set (CMAKE_INSTALL_LIBEXECDIR ${CMAKE_INSTALL_LIBDIR}) - set (CMAKE_INSTALL_FULL_LIBEXECDIR "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBEXECDIR}") + set (CMAKE_INSTALL_LIBEXECDIR "${CMAKE_INSTALL_LIBDIR}") + set (CMAKE_INSTALL_FULL_LIBEXECDIR "${CMAKE_INSTALL_FULL_LIBDIR}") endif () set (PROJECT_LIBEXECDIR "${CMAKE_INSTALL_FULL_LIBEXECDIR}/${CMAKE_PROJECT_NAME}") message (STATUS "${PROJECT_LIBEXECDIR} is the libexec install dir") diff --git a/cmake/UseGSettings.cmake b/cmake/UseGSettings.cmake index 4050b53..3b61523 100644 --- a/cmake/UseGSettings.cmake +++ b/cmake/UseGSettings.cmake @@ -3,7 +3,7 @@ macro(add_schema SCHEMA_NAME) set(PKG_CONFIG_EXECUTABLE pkg-config) - set(GSETTINGS_DIR "${CMAKE_INSTALL_PREFIX}/share/glib-2.0/schemas") + set(GSETTINGS_DIR "${CMAKE_INSTALL_FULL_DATAROOTDIR}/glib-2.0/schemas") # Run the validator and error if it fails execute_process (COMMAND ${PKG_CONFIG_EXECUTABLE} gio-2.0 --variable glib_compile_schemas OUTPUT_VARIABLE _glib_compile_schemas OUTPUT_STRIP_TRAILING_WHITESPACE) diff --git a/data/CMakeLists.txt b/data/CMakeLists.txt index 335582c..3ddf422 100644 --- a/data/CMakeLists.txt +++ b/data/CMakeLists.txt @@ -19,7 +19,7 @@ add_schema (${SCHEMA_FILE}) ## # where to install -set (DBUS_SERVICE_DIR "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_DATADIR}/dbus-1/services") +set (DBUS_SERVICE_DIR "${CMAKE_INSTALL_FULL_DATADIR}/dbus-1/services") message (STATUS "${DBUS_SERVICE_DIR} is the DBus Service File install dir") set (SERVICE_NAME "${CMAKE_PROJECT_NAME}.service") @@ -40,7 +40,7 @@ install (FILES "${SERVICE_FILE}" ## # where to install -set (UNITY_INDICATOR_DIR "${CMAKE_INSTALL_PREFIX}/share/unity/indicators") +set (UNITY_INDICATOR_DIR "${CMAKE_INSTALL_FULL_DATAROOTDIR}/unity/indicators") message (STATUS "${UNITY_INDICATOR_DIR} is the Unity Indicator install dir") set (UNITY_INDICATOR_NAME "com.canonical.indicator.session") -- cgit v1.2.3 From ca86fd5c9dae0ef231394f5b1cf98645c7312f9a Mon Sep 17 00:00:00 2001 From: Charles Kerr Date: Mon, 1 Jul 2013 19:26:11 -0500 Subject: in cmake/Translations.cmake, use the GNUInstallDirs variables --- cmake/Translations.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'cmake') diff --git a/cmake/Translations.cmake b/cmake/Translations.cmake index f069a15..178bded 100644 --- a/cmake/Translations.cmake +++ b/cmake/Translations.cmake @@ -10,7 +10,7 @@ macro(add_translations_directory NLS_PACKAGE) add_custom_command (TARGET i18n COMMAND ${MSGFMT_EXECUTABLE} -o ${MO_OUTPUT} ${PO_INPUT}) install (FILES ${MO_OUTPUT} DESTINATION - share/locale/${PO_INPUT_BASE}/LC_MESSAGES + ${CMAKE_INSTALL_LOCALEDIR}/LC_MESSAGES RENAME ${NLS_PACKAGE}.mo) endforeach (PO_INPUT ${PO_FILES}) endmacro(add_translations_directory) -- cgit v1.2.3