1
# Copyright (C) 2013 Canonical Ltd
3
# This program is free software: you can redistribute it and/or modify
4
# it under the terms of the GNU Lesser General Public License version 3 as
5
# published by the Free Software Foundation.
7
# This program is distributed in the hope that it will be useful,
8
# but WITHOUT ANY WARRANTY; without even the implied warranty of
9
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10
# GNU Lesser General Public License for more details.
12
# You should have received a copy of the GNU Lesser General Public License
13
# along with this program. If not, see <http://www.gnu.org/licenses/>.
15
# This package provides macros that wrap the xgettext program.
17
# An example of common usage is:
21
# "${CMAKE_CURRENT_SOURCE_DIR}/${GETTEXT_PACKAGE}.pot"
25
# GLOB_RECURSE SRC_FILES
26
# RELATIVE ${CMAKE_SOURCE_DIR}
32
# xgettext_create_pot_file(
37
# WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
38
# ADD_COMMENTS "TRANSLATORS"
40
# PACKAGE_NAME ${GETTEXT_PACKAGE}
41
# COPYRIGHT_HOLDER "Canonical Ltd."
44
find_package(Gettext REQUIRED)
46
find_program(XGETTEXT_EXECUTABLE xgettext)
48
if(XGETTEXT_EXECUTABLE)
50
COMMAND ${XGETTEXT_EXECUTABLE} --version
51
OUTPUT_VARIABLE xgettext_version
53
OUTPUT_STRIP_TRAILING_WHITESPACE)
54
if (xgettext_version MATCHES "^xgettext \\(.*\\) [0-9]")
56
REGEX REPLACE "^xgettext \\([^\\)]*\\) ([0-9\\.]+[^ \n]*).*" "\\1"
57
XGETTEXT_VERSION_STRING "${xgettext_version}"
60
unset(xgettext_version)
63
include(FindPackageHandleStandardArgs)
65
find_package_handle_standard_args(
67
REQUIRED_VARS XGETTEXT_EXECUTABLE
68
VERSION_VAR XGETTEXT_VERSION_STRING
71
function(APPEND_EACH LISTNAME GLUE OUTPUT)
73
foreach(VAL ${${LISTNAME}})
74
list(APPEND _tmp_list "${GLUE}${VAL}")
75
endforeach(VAL ${${LISTNAME}})
76
set(${OUTPUT} "${_tmp_list}" PARENT_SCOPE)
79
function(XGETTEXT_CREATE_POT_FILE _potFile)
80
set(_options ALL QT CPP)
81
set(_oneValueArgs ADD_COMMENTS PACKAGE_NAME COPYRIGHT_HOLDER WORKING_DIRECTORY)
82
set(_multiValueArgs INPUT KEYWORDS)
84
cmake_parse_arguments(_ARG "${_options}" "${_oneValueArgs}" "${_multiValueArgs}" ${ARGN})
98
append_each(_ARG_KEYWORDS "--keyword=" _KEYWORD)
101
set(_ADD_COMMENTS "")
102
if(_ARG_ADD_COMMENTS)
103
set(_ADD_COMMENTS --add-comments="${_ARG_ADD_COMMENTS}")
106
set(_PACKAGE_NAME "")
107
if(_ARG_PACKAGE_NAME)
108
set(_PACKAGE_NAME --package-name="${_ARG_PACKAGE_NAME}")
111
set(_COPYRIGHT_HOLDER "")
112
if(_ARG_COPYRIGHT_HOLDER)
113
set(_COPYRIGHT_HOLDER --copyright-holder="${_ARG_COPYRIGHT_HOLDER}")
118
COMMAND ${XGETTEXT_EXECUTABLE} --output="${_potFile}" ${_KEYWORD} ${_PACKAGE_NAME} ${_COPYRIGHT_HOLDER} ${_QT} ${_CPP} ${_ADD_COMMENTS} ${_ARG_INPUT}
119
WORKING_DIRECTORY ${_ARG_WORKING_DIRECTORY}
122
_GETTEXT_GET_UNIQUE_TARGET_NAME(_potFile _uniqueTargetName)
125
add_custom_target(${_uniqueTargetName} ALL DEPENDS ${_potFile})
127
add_custom_target(${_uniqueTargetName} DEPENDS ${_potFile})