Creating generic term renderer.
This commit is contained in:
6
tools/CMakeLists.txt
Normal file
6
tools/CMakeLists.txt
Normal file
@@ -0,0 +1,6 @@
|
||||
# Copyright (c) 2025 Dominic Masters
|
||||
#
|
||||
# This software is released under the MIT License.
|
||||
# https://opensource.org/licenses/MIT
|
||||
|
||||
add_subdirectory(embed)
|
||||
22
tools/embed/CMakeLists.txt
Normal file
22
tools/embed/CMakeLists.txt
Normal file
@@ -0,0 +1,22 @@
|
||||
# Copyright (c) 2025 Dominic Masters
|
||||
#
|
||||
# This software is released under the MIT License.
|
||||
# https://opensource.org/licenses/MIT
|
||||
|
||||
function(embed_file TARGET_NAME INPUT_FILE_ABS OUTPUT_FILE_HEADER C_VAR_NAME)
|
||||
set(OUTPUT_FILE_ABS "${CMAKE_BINARY_DIR}/generated_headers/${OUTPUT_FILE_HEADER}")
|
||||
|
||||
# Create a custom target
|
||||
add_custom_target(
|
||||
"${INPUT_FILE}_embed"
|
||||
COMMAND ${CMAKE_COMMAND} -E make_directory "${CMAKE_BINARY_DIR}/generated_headers"
|
||||
COMMAND ${CMAKE_COMMAND} -DINPUT_FILE="${INPUT_FILE_ABS}" -DOUTPUT_FILE="${OUTPUT_FILE_ABS}" -DC_VAR_NAME="${C_VAR_NAME}" -P "${TOOLS_DIR}/embed/embed.cmake"
|
||||
DEPENDS "${INPUT_FILE_ABS}"
|
||||
)
|
||||
|
||||
# Add the generated header to the target's include directories
|
||||
target_include_directories(${TARGET_NAME} PRIVATE "${CMAKE_BINARY_DIR}/generated_headers")
|
||||
|
||||
# Make the target depend on the custom target
|
||||
add_dependencies(${TARGET_NAME} "${INPUT_FILE}_embed")
|
||||
endfunction()
|
||||
21
tools/embed/embed.cmake
Normal file
21
tools/embed/embed.cmake
Normal file
@@ -0,0 +1,21 @@
|
||||
# Copyright (c) 2025 Dominic Masters
|
||||
#
|
||||
# This software is released under the MIT License.
|
||||
# https://opensource.org/licenses/MIT
|
||||
|
||||
# We are passed -DINPUT_FILE (absolute) and -DOUTPUT_FILE (absolute) and -DC_VAR_NAME (name of the C variable to hold the data)
|
||||
|
||||
file(READ "${INPUT_FILE}" RAW_DATA HEX)
|
||||
string(LENGTH "${RAW_DATA}" DATA_LENGTH)
|
||||
set(OUTPUT_CONTENT "/* This file is auto-generated. Do not edit directly. */\n")
|
||||
set(OUTPUT_CONTENT "${OUTPUT_CONTENT}#pragma once\n#include \"microrpg.h\"\n\n")
|
||||
set(OUTPUT_CONTENT "${OUTPUT_CONTENT}static const uint8_t ${C_VAR_NAME}_DATA[] = {\n ")
|
||||
set(INDEX 0)
|
||||
while(INDEX LESS DATA_LENGTH)
|
||||
string(SUBSTRING "${RAW_DATA}" ${INDEX} 2 BYTE)
|
||||
set(OUTPUT_CONTENT "${OUTPUT_CONTENT}0x${BYTE}, ")
|
||||
math(EXPR INDEX "${INDEX} + 2")
|
||||
endwhile()
|
||||
set(OUTPUT_CONTENT "${OUTPUT_CONTENT}\n};\n\n")
|
||||
set(OUTPUT_CONTENT "${OUTPUT_CONTENT}#define ${C_VAR_NAME}_SIZE ${DATA_LENGTH}u\n")
|
||||
file(WRITE "${OUTPUT_FILE}" "${OUTPUT_CONTENT}")
|
||||
Reference in New Issue
Block a user