You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

37 lines
1.2 KiB

# cmake -DETH_RES_FILE=... -DETH_DST_NAME=... -P scripts/resources.cmake
# cmake -DETH_RES_FILE=test.cmake -DETH_DST_NAME=dst -P resources.cmake
# should define ETH_RESOURCES
include(${ETH_RES_FILE})
set(ETH_RESULT_DATA)
set(ETH_RESULT_INIT)
# resource is a name visible for cpp application
foreach(resource ${ETH_RESOURCES})
# filename is the name of file which will be used in app
set(filename ${${resource}})
# filedata is a file content
file(READ ${filename} filedata HEX)
# Convert hex data for C compatibility
string(REGEX REPLACE "([0-9a-f][0-9a-f])" "0x\\1," filedata ${filedata})
# append static variables to result variable
list(APPEND ${ETH_RESULT_DATA} "static const unsigned char eth_${resource}[] = {\n // ${filename}\n ${filedata}\n};\n")
# append init resources
list(APPEND ${ETH_RESULT_INIT} " eth_resources[\"${resource}\"] = (char const*)eth_${resource};\n")
list(APPEND ${ETH_RESULT_INIT} " eth_sizes[\"${resource}\"] = sizeof(eth_${resource});\n")
endforeach(resource)
configure_file("resource.cpp.in" "${ETH_DST_NAME}.cpp.tmp")
include("../EthUtils.cmake")
replace_if_different("${ETH_DST_NAME}.cpp.tmp" "${ETH_DST_NAME}.cpp")
replace_if_different("resource.h" "${ETH_DST_NAME}.h")