annotate cmake/MolkoBuildAssets.cmake @ 215:64f24b482722

rpg: implement tilesets separately, closes #2515 @4h While here: - Add CMake macros, - Update maps, - Add more tests.
author David Demelier <markand@malikania.fr>
date Tue, 17 Nov 2020 20:08:42 +0100
parents d841cff1017c
children 560303066120
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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}
171
d841cff1017c molko-bcc: allow -0 to NULL-terminate arrays
David Demelier <markand@malikania.fr>
parents: 170
diff changeset
41 COMMAND $<TARGET_FILE:bcc> ${arg0} -s ${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}
e60a13969acb cmake: fix rebuild when assets change
David Demelier <markand@malikania.fr>
parents: 134
diff changeset
44 $<TARGET_FILE: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()