Mercurial > molko
annotate cmake/MlkNls.cmake @ 595:793661cf1381
rpg: save -> mlk_save
author | David Demelier <markand@malikania.fr> |
---|---|
date | Sun, 26 Mar 2023 10:34:27 +0200 |
parents | 0bf939090d33 |
children |
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 | |
586 | 44 COMMAND NLS::msgfmt -o ${CMAKE_CURRENT_BINARY_DIR}/${name}.mo ${l} |
447 | 45 COMMENT "Generating NLS translation ${name}.mo" |
586 | 46 DEPENDS ${l} |
447 | 47 ) |
48 | |
49 list(APPEND ${_nls_OUTPUTS_VAR} ${CMAKE_CURRENT_BINARY_DIR}/${name}.mo) | |
50 install( | |
51 FILES ${CMAKE_CURRENT_BINARY_DIR}/${name}.mo | |
52 DESTINATION ${CMAKE_INSTALL_LOCALEDIR}/${name}/LC_MESSAGES | |
53 RENAME ${_nls_NAME}.mo | |
54 ) | |
55 | |
56 # Commands to update .po files. | |
57 list( | |
58 APPEND _nls_po_cmds | |
586 | 59 COMMAND NLS::msgmerge --backup=off -qU ${l} ${CMAKE_CURRENT_SOURCE_DIR}/nls/${_nls_NAME}.pot |
447 | 60 ) |
61 endforeach () | |
62 | |
63 add_custom_target( | |
64 po-${_nls_NAME} | |
65 COMMAND | |
586 | 66 NLS::xgettext |
67 --package-name "${LIB_NAME}" | |
68 --package-version "${CMAKE_PROJECT_VERSION}" | |
69 -cj | |
70 -k_ | |
71 -kN_ | |
72 -LC | |
73 -s | |
74 -o ${CMAKE_CURRENT_SOURCE_DIR}/nls/${_nls_NAME}.pot ${_nls_SOURCES} | |
447 | 75 ${_nls_po_cmds} |
76 COMMENT "Updating in-source .pot and .po files" | |
77 ) | |
78 set_target_properties(po-${_nls_NAME} PROPERTIES FOLDER "nls") | |
588
0bf939090d33
cmake: install all headers
David Demelier <markand@malikania.fr>
parents:
586
diff
changeset
|
79 source_group(build/mo FILES ${${_nls_OUTPUTS_VAR}}) |
447 | 80 endmacro() |