| file(READ ${BINARY_FILE} FILE_CONTENT HEX) | |
| string(LENGTH ${FILE_CONTENT} FILE_CONTENT_LENGTH) | |
| math(EXPR BIN_LENGTH "${FILE_CONTENT_LENGTH} / 2") | |
| math(EXPR offset "0") | |
| while(FILE_CONTENT_LENGTH GREATER 0) | |
| if(FILE_CONTENT_LENGTH GREATER 32) | |
| math(EXPR length "32") | |
| else() | |
| math(EXPR length "${FILE_CONTENT_LENGTH}") | |
| endif() | |
| string(SUBSTRING ${FILE_CONTENT} ${offset} ${length} line) | |
| set(lines "${lines}\n${line}") | |
| math(EXPR FILE_CONTENT_LENGTH "${FILE_CONTENT_LENGTH} - ${length}") | |
| math(EXPR offset "${offset} + ${length}") | |
| endwhile() | |
| set(FILE_CONTENT "${lines}") | |
| # adds '0x' prefix and comma suffix before and after every byte respectively | |
| string(REGEX REPLACE "([0-9a-f][0-9a-f])" "0x\\1, " FILE_CONTENT ${FILE_CONTENT}) | |
| string(MAKE_C_IDENTIFIER "${OUTPUT_NAME}" C_NAME) | |
| configure_file(${CMAKE_CURRENT_LIST_DIR}/bin.template.h ${CMAKE_CURRENT_BINARY_DIR}/${OUTPUT_NAME}.h @ONLY) |