This commit is contained in:
HP
2026-07-17 14:10:29 +08:00
parent ad63d5640b
commit f6f2a74e1d
28 changed files with 4174 additions and 39 deletions
+55
View File
@@ -0,0 +1,55 @@
if(NOT DEFINED OPEN_LIGHT_WAV OR
NOT DEFINED CLOSE_LIGHT_WAV OR
NOT DEFINED OUTPUT_HEADER OR
NOT DEFINED OUTPUT_SOURCE)
message(FATAL_ERROR "EmbedTomAudio.cmake is missing an input or output path")
endif()
get_filename_component(OUTPUT_DIRECTORY "${OUTPUT_HEADER}" DIRECTORY)
file(MAKE_DIRECTORY "${OUTPUT_DIRECTORY}")
file(WRITE "${OUTPUT_HEADER}" [=[#pragma once
#include <cstddef>
#include <cstdint>
namespace Game
{
namespace EmbeddedAudio
{
extern const uint8_t OpenLightWav[];
extern const size_t OpenLightWavSize;
extern const uint8_t CloseLightWav[];
extern const size_t CloseLightWavSize;
}
}
]=])
file(WRITE "${OUTPUT_SOURCE}" [=[#include "TomAudioData.h"
namespace Game
{
namespace EmbeddedAudio
{
]=])
function(append_embedded_wav SYMBOL INPUT_PATH)
file(READ "${INPUT_PATH}" WAV_HEX HEX)
string(TOLOWER "${WAV_HEX}" WAV_HEX)
string(LENGTH "${WAV_HEX}" WAV_HEX_LENGTH)
math(EXPR WAV_SIZE "${WAV_HEX_LENGTH} / 2")
string(REGEX REPLACE "([0-9a-f][0-9a-f])" "0x\\1," WAV_BYTES "${WAV_HEX}")
set(BYTE_TOKEN "0x[0-9a-f][0-9a-f],")
set(LINE_PATTERN "(${BYTE_TOKEN}${BYTE_TOKEN}${BYTE_TOKEN}${BYTE_TOKEN}${BYTE_TOKEN}${BYTE_TOKEN}${BYTE_TOKEN}${BYTE_TOKEN}${BYTE_TOKEN}${BYTE_TOKEN}${BYTE_TOKEN}${BYTE_TOKEN}${BYTE_TOKEN}${BYTE_TOKEN}${BYTE_TOKEN}${BYTE_TOKEN})")
string(REGEX REPLACE "${LINE_PATTERN}" "\\1\n\t" WAV_BYTES "${WAV_BYTES}")
file(APPEND "${OUTPUT_SOURCE}" "\tconst uint8_t ${SYMBOL}[] = {\n\t${WAV_BYTES}\n\t};\n")
file(APPEND "${OUTPUT_SOURCE}" "\tconst size_t ${SYMBOL}Size = ${WAV_SIZE}u;\n\n")
endfunction()
append_embedded_wav("OpenLightWav" "${OPEN_LIGHT_WAV}")
append_embedded_wav("CloseLightWav" "${CLOSE_LIGHT_WAV}")
file(APPEND "${OUTPUT_SOURCE}" [=[}
}
]=])