diff options
author | Adrian Kummerlaender | 2021-05-17 00:15:33 +0200 |
---|---|---|
committer | Adrian Kummerlaender | 2021-05-17 00:15:33 +0200 |
commit | 4ec94c97879aafef15f7663135745e4ba61e62cf (patch) | |
tree | 322ae3f003892513f529842ff0b3fd100573b680 /assets.cmake | |
download | LiterateLB-4ec94c97879aafef15f7663135745e4ba61e62cf.tar LiterateLB-4ec94c97879aafef15f7663135745e4ba61e62cf.tar.gz LiterateLB-4ec94c97879aafef15f7663135745e4ba61e62cf.tar.bz2 LiterateLB-4ec94c97879aafef15f7663135745e4ba61e62cf.tar.lz LiterateLB-4ec94c97879aafef15f7663135745e4ba61e62cf.tar.xz LiterateLB-4ec94c97879aafef15f7663135745e4ba61e62cf.tar.zst LiterateLB-4ec94c97879aafef15f7663135745e4ba61e62cf.zip |
Extract first public LiterateLB version
Diffstat (limited to 'assets.cmake')
-rw-r--r-- | assets.cmake | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/assets.cmake b/assets.cmake new file mode 100644 index 0000000..11868f8 --- /dev/null +++ b/assets.cmake @@ -0,0 +1,42 @@ +function(serialize_folder name dir data header) + file(APPEND ${header} "namespace ${name} {\n") + file(APPEND ${data} "namespace ${name} {\n") + file(GLOB files ${dir}/*) + list(LENGTH files file_count) + foreach(file ${files}) + string(REGEX MATCH "([^/]+)$" filename ${file}) + string(REGEX REPLACE "\\.| |-" "_" filename ${filename}) + file(READ ${file} filedata HEX) + string(REGEX REPLACE "([0-9a-f][0-9a-f])" "0x\\1," filedata ${filedata}) + file(APPEND ${data} "const unsigned char file_${filename}[] = {${filedata}};\n") + file(APPEND ${data} "const unsigned file_${filename}_size = sizeof(file_${filename});\n") + file(APPEND ${header} "extern const unsigned char file_${filename}[];\n") + file(APPEND ${header} "extern const unsigned file_${filename}_size;\n") + endforeach() + file(APPEND ${data} "}\n") + file(APPEND ${header} "const File files[] {\n") + foreach(file ${files}) + string(REGEX MATCH "([^/]+)$" filename ${file}) + string(REGEX REPLACE "\\.| |-" "_" flat_filename ${filename}) + file(APPEND ${header} "File{\"${filename}\", file_${flat_filename}, file_${flat_filename}_size},\n") + endforeach() + file(APPEND ${header} "};\n") + file(APPEND ${header} "const unsigned file_count = ${file_count};\n") + file(APPEND ${header} "}\n") +endfunction() + +function(serialize_assets dir data header) + file(WRITE ${data} "") + file(APPEND ${data} "#include \"${header}\"\n") + file(APPEND ${data} "namespace assets {\n") + file(WRITE ${header} "") + file(APPEND ${header} "#pragma once\n") + file(APPEND ${header} "#include <string>\n") + file(APPEND ${header} "namespace assets {\n") + file(APPEND ${header} "struct File { const std::string name; const unsigned char* data; const unsigned size; };\n") + serialize_folder("palette" ${dir}/palette ${data} ${header}) + serialize_folder("noise" ${dir}/noise ${data} ${header}) + serialize_folder("shader" ${dir}/shader ${data} ${header}) + file(APPEND ${data} "}\n") + file(APPEND ${header} "}\n") +endfunction() |