447
|
1 # |
|
2 # CMakeLists.txt -- CMake build system for Molko's Engine |
|
3 # |
|
4 # Copyright (c) 2020-2022 David Demelier <markand@malikania.fr> |
|
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_bcc) |
|
20 set(options "") |
|
21 set(oneValueArgs OUTPUTS_VAR) |
|
22 set(multiValueArgs ASSETS) |
|
23 |
|
24 cmake_parse_arguments(_bcc "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) |
|
25 |
|
26 if (NOT _bcc_OUTPUTS_VAR) |
|
27 message(FATAL_ERROR "Missing OUTPUTS_VAR") |
|
28 elseif (NOT _bcc_ASSETS) |
|
29 message(FATAL_ERROR "Missing ASSETS") |
|
30 endif () |
|
31 |
|
32 foreach (a ${_bcc_ASSETS}) |
|
33 cmake_path( |
|
34 RELATIVE_PATH a |
|
35 BASE_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} |
|
36 OUTPUT_VARIABLE output |
|
37 ) |
|
38 cmake_path(GET output PARENT_PATH outputdir) |
|
39 cmake_path(GET output EXTENSION extension) |
|
40 cmake_path(REPLACE_EXTENSION output .h) |
|
41 cmake_path(REMOVE_EXTENSION output OUTPUT_VARIABLE outputname) |
|
42 |
|
43 if (extension MATCHES ".sql") |
|
44 set(args "-0cs") |
|
45 else () |
|
46 set(args "-cs") |
|
47 endif () |
|
48 |
|
49 set(outputfile ${CMAKE_CURRENT_BINARY_DIR}/${output}) |
|
50 |
|
51 add_custom_command( |
|
52 OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${output} |
|
53 COMMAND |
|
54 ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_BINARY_DIR}/${outputdir} |
|
55 COMMAND |
|
56 $<TARGET_FILE:mlk-bcc> ${args} ${a} ${outputname} > ${outputfile} |
|
57 COMMENT "Generating ${output}" |
|
58 DEPENDS $<TARGET_FILE:mlk-bcc> ${a} |
|
59 ) |
|
60 |
|
61 list(APPEND ${_bcc_OUTPUTS_VAR} ${CMAKE_CURRENT_BINARY_DIR}/${output}) |
|
62 endforeach () |
|
63 endmacro() |