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