Skip to content

Commit 5c7bc3f

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

File tree

5 files changed

+34
-46
lines changed

5 files changed

+34
-46
lines changed

cmake/DaemonFileEmbedder.cmake

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,10 +29,16 @@ 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+
"{\n"
41+
"reinterpret_cast<const char*>( ${DATA_VARIABLE_NAME} ),\n"
42+
"sizeof( ${DATA_VARIABLE_NAME} ) - 1,\n"
43+
"};\n"
3844
)

cmake/DaemonSourceGenerator.cmake

Lines changed: 26 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -82,14 +82,37 @@ macro(daemon_embed_files basename dir list format targetname)
8282
set_property(TARGET "${targetname}" APPEND PROPERTY SOURCES "${embed_${kind}_src_file}")
8383
endforeach()
8484

85+
if (NOT DAEMON_EMBEDDED_FILES_HEADER)
86+
set(DAEMON_EMBEDDED_FILES_HEADER "${DAEMON_EMBEDDED_SUBDIR}/DaemonEmbeddedFiles.h")
87+
88+
string(APPEND embed_header_text
89+
"#ifndef DAEMON_EMBEDDED_FILES_H_\n"
90+
"#define DAEMON_EMBEDDED_FILES_H_\n"
91+
"#include <unordered_map>\n"
92+
"#include <string>\n"
93+
"\n"
94+
"struct embeddedFileMapEntry_t\n"
95+
"{\n"
96+
" const char* data;\n"
97+
" size_t size;\n"
98+
"};\n"
99+
"\n"
100+
"using embeddedFileMap_t = std::unordered_map<std::string, const embeddedFileMapEntry_t>;\n"
101+
"#endif // DAEMON_EMBEDDED_FILES_H_\n"
102+
)
103+
104+
set(embed_header_file "${DAEMON_GENERATED_DIR}/${DAEMON_EMBEDDED_FILES_HEADER}")
105+
file(GENERATE OUTPUT "${embed_header_file}" CONTENT "${embed_header_text}")
106+
endif()
107+
85108
string(APPEND embed_CPP_text
86109
"#include \"${embed_H_file}\"\n"
87110
"\n"
88111
"namespace ${basename} {\n"
89112
)
90113

91114
string(APPEND embed_H_text
92-
"#include \"common/Common.h\"\n"
115+
"#include \"${DAEMON_EMBEDDED_FILES_HEADER}\"\n"
93116
"\n"
94117
"namespace ${basename} {\n"
95118
)
@@ -123,11 +146,11 @@ macro(daemon_embed_files basename dir list format targetname)
123146
)
124147

125148
string(APPEND embed_H_text
126-
"extern const unsigned char ${filename_symbol}[];\n"
149+
"extern const embeddedFileMapEntry_t ${filename_symbol};\n"
127150
)
128151

129152
string(APPEND embed_map_text
130-
"\t{ \"${filename}\", { ${filename_symbol}, sizeof( ${filename_symbol}) - 1 } },\n"
153+
"\t{ \"${filename}\", ${filename_symbol} },\n"
131154
)
132155
endforeach()
133156

src/common/Common.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,6 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
4848
#include "Color.h"
4949
#include "Serialize.h"
5050
#include "DisjointSets.h"
51-
#include "EmbeddedFile.h"
5251

5352
using Math::Vec2;
5453
using Math::Vec3;

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)