Mercurial > molko
annotate cmake/MolkoBuildAssets.cmake @ 224:6f6c49b95f77
doc: add libcore API
author | David Demelier <markand@malikania.fr> |
---|---|
date | Wed, 18 Nov 2020 19:43:40 +0100 |
parents | 560303066120 |
children | 71b3b7036de7 |
rev | line source |
---|---|
118
3411daa26432
cmake: create macros for building assets, continue #2487 @1h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
1 # |
3411daa26432
cmake: create macros for building assets, continue #2487 @1h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
2 # MolkoBuildAssets.cmake -- CMake build system for molko |
3411daa26432
cmake: create macros for building assets, continue #2487 @1h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
3 # |
3411daa26432
cmake: create macros for building assets, continue #2487 @1h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
4 # Copyright (c) 2020 David Demelier <markand@malikania.fr> |
3411daa26432
cmake: create macros for building assets, continue #2487 @1h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
5 # |
3411daa26432
cmake: create macros for building assets, continue #2487 @1h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
6 # Permission to use, copy, modify, and/or distribute this software for any |
3411daa26432
cmake: create macros for building assets, continue #2487 @1h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
7 # purpose with or without fee is hereby granted, provided that the above |
3411daa26432
cmake: create macros for building assets, continue #2487 @1h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
8 # copyright notice and this permission notice appear in all copies. |
3411daa26432
cmake: create macros for building assets, continue #2487 @1h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
9 # |
3411daa26432
cmake: create macros for building assets, continue #2487 @1h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
10 # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES |
3411daa26432
cmake: create macros for building assets, continue #2487 @1h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
11 # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF |
3411daa26432
cmake: create macros for building assets, continue #2487 @1h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
12 # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR |
3411daa26432
cmake: create macros for building assets, continue #2487 @1h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
13 # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES |
3411daa26432
cmake: create macros for building assets, continue #2487 @1h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
14 # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN |
3411daa26432
cmake: create macros for building assets, continue #2487 @1h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
15 # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF |
3411daa26432
cmake: create macros for building assets, continue #2487 @1h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
16 # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. |
3411daa26432
cmake: create macros for building assets, continue #2487 @1h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
17 # |
3411daa26432
cmake: create macros for building assets, continue #2487 @1h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
18 |
3411daa26432
cmake: create macros for building assets, continue #2487 @1h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
19 macro(molko_build_assets assets outputs) |
3411daa26432
cmake: create macros for building assets, continue #2487 @1h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
20 set(${outputs}) |
3411daa26432
cmake: create macros for building assets, continue #2487 @1h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
21 |
3411daa26432
cmake: create macros for building assets, continue #2487 @1h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
22 foreach (a ${assets}) |
3411daa26432
cmake: create macros for building assets, continue #2487 @1h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
23 file(RELATIVE_PATH basename ${CMAKE_CURRENT_SOURCE_DIR} ${a}) |
3411daa26432
cmake: create macros for building assets, continue #2487 @1h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
24 string(REGEX REPLACE "\\..*$" ".h" output ${basename}) |
3411daa26432
cmake: create macros for building assets, continue #2487 @1h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
25 set(output ${CMAKE_CURRENT_BINARY_DIR}/${output}) |
3411daa26432
cmake: create macros for building assets, continue #2487 @1h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
26 get_filename_component(outputdir ${output} DIRECTORY) |
3411daa26432
cmake: create macros for building assets, continue #2487 @1h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
27 get_filename_component(name ${basename} NAME_WE) |
134
197374e9f0b2
cmake: prefix assets with their directory
David Demelier <markand@malikania.fr>
parents:
118
diff
changeset
|
28 get_filename_component(category ${outputdir} NAME) |
171
d841cff1017c
molko-bcc: allow -0 to NULL-terminate arrays
David Demelier <markand@malikania.fr>
parents:
170
diff
changeset
|
29 get_filename_Component(extension ${a} EXT) |
118
3411daa26432
cmake: create macros for building assets, continue #2487 @1h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
30 file(MAKE_DIRECTORY ${outputdir}) |
3411daa26432
cmake: create macros for building assets, continue #2487 @1h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
31 |
171
d841cff1017c
molko-bcc: allow -0 to NULL-terminate arrays
David Demelier <markand@malikania.fr>
parents:
170
diff
changeset
|
32 # For "text" files, we create a C array null-terminated. |
d841cff1017c
molko-bcc: allow -0 to NULL-terminate arrays
David Demelier <markand@malikania.fr>
parents:
170
diff
changeset
|
33 if (${extension} MATCHES "\\.(txt|sql)") |
d841cff1017c
molko-bcc: allow -0 to NULL-terminate arrays
David Demelier <markand@malikania.fr>
parents:
170
diff
changeset
|
34 set(arg0 -0) |
d841cff1017c
molko-bcc: allow -0 to NULL-terminate arrays
David Demelier <markand@malikania.fr>
parents:
170
diff
changeset
|
35 else () |
d841cff1017c
molko-bcc: allow -0 to NULL-terminate arrays
David Demelier <markand@malikania.fr>
parents:
170
diff
changeset
|
36 unset(arg0) |
d841cff1017c
molko-bcc: allow -0 to NULL-terminate arrays
David Demelier <markand@malikania.fr>
parents:
170
diff
changeset
|
37 endif () |
d841cff1017c
molko-bcc: allow -0 to NULL-terminate arrays
David Demelier <markand@malikania.fr>
parents:
170
diff
changeset
|
38 |
118
3411daa26432
cmake: create macros for building assets, continue #2487 @1h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
39 add_custom_command( |
3411daa26432
cmake: create macros for building assets, continue #2487 @1h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
40 OUTPUT ${output} |
223
560303066120
tools: sync latest bcc
David Demelier <markand@malikania.fr>
parents:
215
diff
changeset
|
41 COMMAND $<TARGET_FILE:mlk-bcc> ${arg0} -csu ${a} ${category}-${name} > ${output} |
170
e60a13969acb
cmake: fix rebuild when assets change
David Demelier <markand@malikania.fr>
parents:
134
diff
changeset
|
42 DEPENDS |
e60a13969acb
cmake: fix rebuild when assets change
David Demelier <markand@malikania.fr>
parents:
134
diff
changeset
|
43 ${a} |
223
560303066120
tools: sync latest bcc
David Demelier <markand@malikania.fr>
parents:
215
diff
changeset
|
44 $<TARGET_FILE:mlk-bcc> |
215
64f24b482722
rpg: implement tilesets separately, closes #2515 @4h
David Demelier <markand@malikania.fr>
parents:
171
diff
changeset
|
45 COMMENT "Generate header file from ${basename}" |
118
3411daa26432
cmake: create macros for building assets, continue #2487 @1h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
46 ) |
3411daa26432
cmake: create macros for building assets, continue #2487 @1h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
47 |
3411daa26432
cmake: create macros for building assets, continue #2487 @1h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
48 list(APPEND ${outputs} ${output}) |
3411daa26432
cmake: create macros for building assets, continue #2487 @1h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
49 endforeach () |
3411daa26432
cmake: create macros for building assets, continue #2487 @1h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
50 endmacro() |