56 lines
1.7 KiB
CMake
56 lines
1.7 KiB
CMake
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}" [=[}
|
|
}
|
|
]=])
|