b8b18269dc8945f3ba2e1469eefe340793416ddf
[blender-staging.git] / build_files / cmake / data_to_c.cmake
1 # cmake script, to be called on its own with 3 defined args
2 #
3 # - FILE_FROM
4 # - FILE_TO
5 # - VAR_NAME
6
7 # not highly optimal, may replace with generated C program like makesdna
8 file(READ ${FILE_FROM} file_from_string HEX)
9 string(LENGTH ${file_from_string} _max_index)
10 math(EXPR size_on_disk ${_max_index}/2)
11
12 file(REMOVE ${FILE_TO})
13
14 file(APPEND ${FILE_TO} "int  ${VAR_NAME}_size = ${size_on_disk};\n")
15 file(APPEND ${FILE_TO} "char ${VAR_NAME}[] = {")
16
17 set(_index 0)
18
19 while(NOT _index EQUAL _max_index)
20     string(SUBSTRING "${file_from_string}" ${_index} 2 _pair)
21     file(APPEND ${FILE_TO} "0x${_pair},")
22     math(EXPR _index ${_index}+2)
23 endwhile()
24 # null terminator not essential but good if we want plane strings encoded
25 file(APPEND ${FILE_TO} "0x00};\n")