Mercurial > molko
annotate cmake/MlkBcc.cmake @ 329:ea4a3af71c18
rpg: change save_stmt_next API
author | David Demelier <markand@malikania.fr> |
---|---|
date | Mon, 04 Oct 2021 13:30:09 +0200 |
parents | 42a6710629f5 |
children | 19782ea1cf4a |
rev | line source |
---|---|
313
dbfe05b88627
cmake: bring back for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
1 # |
dbfe05b88627
cmake: bring back for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
2 # CMakeLists.txt -- CMake build system for Molko's Adventure |
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_bcc) |
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 OUTPUTS_VAR) |
dbfe05b88627
cmake: bring back for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
22 set(multiValueArgs ASSETS) |
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(_bcc "${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 _bcc_OUTPUTS_VAR) |
dbfe05b88627
cmake: bring back for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
27 message(FATAL_ERROR "Missing OUTPUTS_VAR") |
dbfe05b88627
cmake: bring back for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
28 elseif (NOT _bcc_ASSETS) |
dbfe05b88627
cmake: bring back for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
29 message(FATAL_ERROR "Missing ASSETS") |
dbfe05b88627
cmake: bring back for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
30 endif () |
dbfe05b88627
cmake: bring back for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
31 |
dbfe05b88627
cmake: bring back for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
32 foreach (a ${_bcc_ASSETS}) |
dbfe05b88627
cmake: bring back for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
33 cmake_path( |
dbfe05b88627
cmake: bring back for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
34 RELATIVE_PATH a |
dbfe05b88627
cmake: bring back for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
35 BASE_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} |
dbfe05b88627
cmake: bring back for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
36 OUTPUT_VARIABLE output |
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 cmake_path(GET output PARENT_PATH outputdir) |
dbfe05b88627
cmake: bring back for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
39 cmake_path(GET output EXTENSION extension) |
dbfe05b88627
cmake: bring back for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
40 cmake_path(REPLACE_EXTENSION output .h) |
dbfe05b88627
cmake: bring back for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
41 cmake_path(REMOVE_EXTENSION output OUTPUT_VARIABLE outputname) |
dbfe05b88627
cmake: bring back for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
42 |
dbfe05b88627
cmake: bring back for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
43 if (extension MATCHES ".sql") |
dbfe05b88627
cmake: bring back for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
44 set(args "-0csu") |
dbfe05b88627
cmake: bring back for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
45 else () |
dbfe05b88627
cmake: bring back for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
46 set(args "-csu") |
dbfe05b88627
cmake: bring back for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
47 endif () |
dbfe05b88627
cmake: bring back for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
48 |
dbfe05b88627
cmake: bring back for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
49 set(outputfile ${CMAKE_CURRENT_BINARY_DIR}/${output}) |
dbfe05b88627
cmake: bring back for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
50 |
dbfe05b88627
cmake: bring back for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
51 add_custom_command( |
dbfe05b88627
cmake: bring back for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
52 OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${output} |
dbfe05b88627
cmake: bring back for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
53 COMMAND |
dbfe05b88627
cmake: bring back for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
54 ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_BINARY_DIR}/${outputdir} |
dbfe05b88627
cmake: bring back for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
55 COMMAND |
dbfe05b88627
cmake: bring back for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
56 $<TARGET_FILE:mlk-bcc> ${args} ${a} ${outputname} > ${outputfile} |
dbfe05b88627
cmake: bring back for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
57 COMMENT "Generating ${output}" |
327
42a6710629f5
ui: implement notifications
David Demelier <markand@malikania.fr>
parents:
314
diff
changeset
|
58 DEPENDS $<TARGET_FILE:mlk-bcc> ${a} |
313
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 |
dbfe05b88627
cmake: bring back for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
61 list(APPEND ${_bcc_OUTPUTS_VAR} ${CMAKE_CURRENT_BINARY_DIR}/${output}) |
dbfe05b88627
cmake: bring back for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
62 endforeach () |
dbfe05b88627
cmake: bring back for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
63 endmacro() |