summaryrefslogtreecommitdiff
path: root/assets.cmake
diff options
context:
space:
mode:
authorAdrian Kummerlaender2021-05-17 00:15:33 +0200
committerAdrian Kummerlaender2021-05-17 00:15:33 +0200
commit4ec94c97879aafef15f7663135745e4ba61e62cf (patch)
tree322ae3f003892513f529842ff0b3fd100573b680 /assets.cmake
downloadLiterateLB-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.cmake42
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()