Skip to content

Commit a0fd2b3

Browse files
committed
DaemonFileEmbedder: make it fully standalone, do not expose unsigned char
1 parent 4885b09 commit a0fd2b3

File tree

4 files changed

+27
-46
lines changed

4 files changed

+27
-46
lines changed

cmake/DaemonFileEmbedder.cmake

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,10 +29,15 @@ string(REGEX REPLACE
2929

3030
# A bit more of beautification.
3131
string(REGEX REPLACE ",$" ",\n" contents "${contents}")
32+
set(DATA_VARIABLE_NAME "data_${VARIABLE_NAME}")
3233

3334
file(WRITE ${OUTPUT_FILE}
34-
"constexpr unsigned char ${VARIABLE_NAME}[] =\n"
35+
"constexpr unsigned char ${DATA_VARIABLE_NAME}[] =\n"
3536
"{\n"
3637
"${contents}"
3738
"};\n"
39+
"const embeddedFileMapEntry_t ${VARIABLE_NAME} = {\n"
40+
"reinterpret_cast<const char*>( ${DATA_VARIABLE_NAME} ),\n"
41+
"sizeof( ${DATA_VARIABLE_NAME} ) - 1\n"
42+
"};\n"
3843
)

cmake/DaemonSourceGenerator.cmake

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -89,11 +89,27 @@ macro(daemon_embed_files basename dir list format targetname)
8989
)
9090

9191
string(APPEND embed_H_text
92-
"#include \"common/Common.h\"\n"
93-
"\n"
9492
"namespace ${basename} {\n"
9593
)
9694

95+
set(embed_header_file "${DAEMON_GENERATED_DIR}/${DAEMON_EMBEDDED_SUBDIR}}/EmbeddedFile.h")
96+
file(GENERATE OUTPUT "${embed_header_file}" CONTENT "${embed_header_text}")
97+
98+
string(APPEND embed_header_text
99+
"#ifndef DAEMON_EMBEDDED_FILE_H_\n"
100+
"#define DAEMON_EMBEDDED_FILE_H_\n"
101+
"#include <string>\n"
102+
"\n"
103+
"struct embeddedFileMapEntry_t\n"
104+
"{\n"
105+
" const char* data;\n"
106+
" size_t size;\n"
107+
"};\n"
108+
"\n"
109+
"using embeddedFileMap_t = std::unordered_map<std::string, const embeddedFileMapEntry_t>;\n"
110+
"#endif // DAEMON_EMBEDDED_FILE_H_\n"
111+
)
112+
97113
set(embed_map_text "")
98114

99115
foreach(filename ${list})
@@ -123,11 +139,11 @@ macro(daemon_embed_files basename dir list format targetname)
123139
)
124140

125141
string(APPEND embed_H_text
126-
"extern const unsigned char ${filename_symbol}[];\n"
142+
"extern const embeddedFileMapEntry_t ${filename_symbol};\n"
127143
)
128144

129145
string(APPEND embed_map_text
130-
"\t{ \"${filename}\", { ${filename_symbol}, sizeof( ${filename_symbol}) - 1 } },\n"
146+
"\t{ \"${filename}\", ${filename_symbol} },\n"
131147
)
132148
endforeach()
133149

src/common/EmbeddedFile.h

Lines changed: 0 additions & 40 deletions
This file was deleted.

src/engine/renderer/gl_shader.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ namespace // Implementation details
9494
{
9595
auto it = EngineShaders::FileMap.find(filename);
9696
if (it != EngineShaders::FileMap.end())
97-
return (const char*) it->second.data;
97+
return it->second.data;
9898
return nullptr;
9999
}
100100

0 commit comments

Comments
 (0)