Example scene working
This commit is contained in:
@@ -0,0 +1,43 @@
|
||||
# Copyright (c) 2026 Dominic Masters
|
||||
#
|
||||
# This software is released under the MIT License.
|
||||
# https://opensource.org/licenses/MIT
|
||||
|
||||
# dusk_embed_js(TARGET JS_FILE [NAME identifier])
|
||||
#
|
||||
# Converts a JS file into a C string header in DUSK_GENERATED_HEADERS_DIR.
|
||||
# The generated header defines:
|
||||
# static const char <NAME>[] = "...";
|
||||
# static const size_t <NAME>_SIZE = sizeof(<NAME>) - 1;
|
||||
#
|
||||
# NAME defaults to the uppercase stem + "_JS" (e.g. scene.js -> SCENE_JS).
|
||||
function(dusk_embed_js TARGET JS_FILE)
|
||||
cmake_parse_arguments(ARG "" "NAME" "" ${ARGN})
|
||||
|
||||
get_filename_component(JS_ABS "${JS_FILE}" ABSOLUTE)
|
||||
get_filename_component(JS_STEM "${JS_FILE}" NAME_WE)
|
||||
|
||||
set(OUTPUT_HEADER "${DUSK_GENERATED_HEADERS_DIR}/${JS_STEM}_js.h")
|
||||
|
||||
set(NAME_ARG "")
|
||||
if(ARG_NAME)
|
||||
set(NAME_ARG "--name" "${ARG_NAME}")
|
||||
endif()
|
||||
|
||||
add_custom_command(
|
||||
OUTPUT "${OUTPUT_HEADER}"
|
||||
COMMAND ${Python3_EXECUTABLE} -m tools.js2c
|
||||
--input "${JS_ABS}"
|
||||
--output "${OUTPUT_HEADER}"
|
||||
${NAME_ARG}
|
||||
WORKING_DIRECTORY "${DUSK_ROOT_DIR}"
|
||||
DEPENDS "${JS_ABS}"
|
||||
COMMENT "js2c: ${JS_STEM}.js -> ${JS_STEM}_js.h"
|
||||
VERBATIM
|
||||
)
|
||||
|
||||
file(RELATIVE_PATH JS_REL "${DUSK_ROOT_DIR}" "${JS_ABS}")
|
||||
string(MAKE_C_IDENTIFIER "dusk_js2c_${JS_REL}" JS_TARGET)
|
||||
add_custom_target(${JS_TARGET} DEPENDS "${OUTPUT_HEADER}")
|
||||
add_dependencies(${TARGET} ${JS_TARGET})
|
||||
endfunction()
|
||||
Reference in New Issue
Block a user