Mercurial > molko
annotate cmake/MlkNls.cmake @ 581:cedfdbc0e9a7
misc: update copyright years
author | David Demelier <markand@malikania.fr> |
---|---|
date | Sun, 12 Mar 2023 21:25:14 +0100 |
parents | e1fa1b867281 |
children | 4349b591c3ac |
rev | line source |
---|---|
447 | 1 # |
2 # CMakeLists.txt -- CMake build system for Molko's Engine | |
3 # | |
581
cedfdbc0e9a7
misc: update copyright years
David Demelier <markand@malikania.fr>
parents:
447
diff
changeset
|
4 # Copyright (c) 2020-2023 David Demelier <markand@malikania.fr> |
447 | 5 # |
6 # Permission to use, copy, modify, and/or distribute this software for any | |
7 # purpose with or without fee is hereby granted, provided that the above | |
8 # copyright notice and this permission notice appear in all copies. | |
9 # | |
10 # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES | |
11 # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF | |
12 # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR | |
13 # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES | |
14 # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN | |
15 # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF | |
16 # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | |
17 # | |
18 | |
19 macro(mlk_nls) | |
20 set(options "") | |
21 set(oneValueArgs "NAME") | |
22 set(multiValueArgs "LANGS;SOURCES;OUTPUTS_VAR") | |
23 | |
24 cmake_parse_arguments(_nls "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) | |
25 | |
26 if (NOT _nls_NAME) | |
27 message(FATAL_ERROR "Missing NAME") | |
28 elseif (NOT _nls_OUTPUTS_VAR) | |
29 message(FATAL_ERROR "Missing OUTPUTS_VAR") | |
30 elseif (NOT _nls_LANGS) | |
31 message(FATAL_ERROR "Missing LANGS") | |
32 elseif (NOT _nls_SOURCES) | |
33 message(FATAL_ERROR "Missing SOURCES") | |
34 endif () | |
35 | |
36 set(_nls_po_cmds) | |
37 | |
38 foreach (l ${_nls_LANGS}) | |
39 cmake_path(GET l FILENAME name) | |
40 cmake_path(REMOVE_EXTENSION name) | |
41 | |
42 add_custom_command( | |
43 OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${name}.mo | |
44 COMMAND ${MSGFMT} -o ${CMAKE_CURRENT_BINARY_DIR}/${name}.mo ${l} | |
45 COMMENT "Generating NLS translation ${name}.mo" | |
46 ) | |
47 | |
48 list(APPEND ${_nls_OUTPUTS_VAR} ${CMAKE_CURRENT_BINARY_DIR}/${name}.mo) | |
49 install( | |
50 FILES ${CMAKE_CURRENT_BINARY_DIR}/${name}.mo | |
51 DESTINATION ${CMAKE_INSTALL_LOCALEDIR}/${name}/LC_MESSAGES | |
52 RENAME ${_nls_NAME}.mo | |
53 ) | |
54 | |
55 # Commands to update .po files. | |
56 list( | |
57 APPEND _nls_po_cmds | |
58 COMMAND ${MSGMERGE} --backup=off -qU ${l} ${CMAKE_CURRENT_SOURCE_DIR}/nls/${_nls_NAME}.pot | |
59 ) | |
60 endforeach () | |
61 | |
62 add_custom_target( | |
63 po-${_nls_NAME} | |
64 COMMAND | |
65 ${XGETTEXT} -cj -k_ -kN_ -LC -s -o ${CMAKE_CURRENT_SOURCE_DIR}/nls/${_nls_NAME}.pot ${_nls_SOURCES} | |
66 ${_nls_po_cmds} | |
67 COMMENT "Updating in-source .pot and .po files" | |
68 ) | |
69 set_target_properties(po-${_nls_NAME} PROPERTIES FOLDER "nls") | |
70 endmacro() |