grim/guifications2

a bunch of work on gettext support
cmake
2013-05-14, Gary Kramlich
b6c10fc22852
Parents cdf109a7d35f
Children a35a821ef420
a bunch of work on gettext support
--- a/CMakeLists.txt Mon May 13 23:55:47 2013 -0500
+++ b/CMakeLists.txt Tue May 14 02:10:43 2013 -0500
@@ -1,5 +1,7 @@
cmake_minimum_required(VERSION 2.8)
+set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake)
+
project(guifications2 C)
@@ -13,7 +15,7 @@
###############################################################################
# Dependencies
###############################################################################
-include(FindPkgConfig)
+find_package(PkgConfig)
pkg_check_modules(GLIB REQUIRED glib-2.0>=2.28.0)
pkg_check_modules(GTK3 REQUIRED gtk+-3.0 gdk-3.0)
@@ -31,6 +33,19 @@
"Yes"
)
+option(
+ NLS
+ "Install translation files"
+ "Yes"
+)
+
+###############################################################################
+# i18n
+###############################################################################
+if(NLS)
+ include(Gettextize)
+endif(NLS)
+
###############################################################################
# Build Info
###############################################################################
@@ -46,6 +61,8 @@
set(PIDGIN_DATADIR ${CMAKE_INSTALL_PREFIX}/share/pidgin)
endif(INSTALL_TO_PIDGIN)
+set(GETTEXT_PACKAGE guifications)
+
include_directories(
${CMAKE_SOURCE_DIR}
${CMAKE_BINARY_DIR}
@@ -72,6 +89,7 @@
add_subdirectory(src)
+add_subdirectory(po)
message(STATUS "Installing plugin to ${PIDGIN_LIBDIR}")
message(STATUS "Installing data to ${PIDGIN_DATADIR}")
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/cmake/Gettextize.cmake Tue May 14 02:10:43 2013 -0500
@@ -0,0 +1,57 @@
+include(CMakeParseArguments)
+
+find_package(Gettext)
+
+find_program(XGETTEXT_EXECUTABLE xgettext)
+if(NOT XGETTEXT_EXECUTABLE)
+ message(FATAL_ERROR "Failed to find xgettext")
+endif(NOT XGETTEXT_EXECUTABLE)
+
+set(DEFAULT_XGETTEXT_OPTIONS
+ --language=C --keyword=_ --keyword=N_ --keyword=C_:1c,2 --keyword=NC_:1c,2 -s
+ --escape --add-comments="/" --package-name=${PROJECT_NAME}
+ --package-version=${VERSION}
+)
+
+function(gettextize_pot_file _FIRST_ARG)
+ set(options)
+ set(oneValueArgs FILENAME)
+ set(multiValueArgs SOURCES BUILT_SOURCES OPTIONS)
+
+ cmake_parse_arguments(POT "${options}" "${oneValueArgs}" "${multiValueArgs}" ${_FIRST_ARG} ${ARGN})
+
+ if(POT_UNPARSED_ARGUMENTS)
+ message(FATAL_ERROR "Unknown keys given to pot_file(): \"${POT_UNPARSED_ARGUMENTS}\"")
+ endif(POT_UNPARSED_ARGUMENTS)
+
+ if(NOT POT_FILENAME)
+ message(FATAL_ERROR "No filename specified")
+ endif(NOT POT_FILENAME)
+
+ if(NOT POT_SOURCES)
+ message(FATAL_ERROR "No sources specified")
+ endif(NOT POT_SOURCES)
+
+ if(NOT POT_OPTIONS)
+ set(POT_OPTIONS ${DEFAULT_XGETTEXT_OPTIONS})
+ endif(NOT POT_OPTIONS)
+
+ # now tweak the sources
+ if(POT_BUILT_SOURCES)
+ foreach(ITEM ${POT_BUILT_SOURCES})
+ endforeach(ITEM)
+ endif(POT_BUILT_SOURCES)
+
+ add_custom_command(
+ OUTPUT ${POT_FILENAME}
+ COMMAND ${XGETTEXT_EXECUTABLE} ${POT_OPTIONS}
+ -o ${CMAKE_CURRENT_BINARY_DIR}/${POT_FILENAME}
+ ${POT_SOURCES} ${POT_BUILT_SOURCES}
+ DEPENDS ${POT_SOURCES} ${POT_BUILT_SOURCES}
+ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
+ VERBATIM
+ )
+
+ add_custom_target("${POT_FILENAME} potfile" ALL DEPENDS ${POT_FILENAME})
+endfunction(gettextize_pot_file)
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/po/CMakeLists.txt Tue May 14 02:10:43 2013 -0500
@@ -0,0 +1,1 @@
+
--- a/src/CMakeLists.txt Mon May 13 23:55:47 2013 -0500
+++ b/src/CMakeLists.txt Tue May 14 02:10:43 2013 -0500
@@ -67,3 +67,8 @@
${PANGOFT2_LIBRARIES}
)
+gettextize_pot_file(
+ FILENAME "${GETTEXT_PACKAGE}.pot"
+ SOURCES ${SOURCES}
+)
+