v01
This commit is contained in:
32
thirdparty/Pangolin/CMakeModules/EmbedBinaryFiles.cmake
vendored
Normal file
32
thirdparty/Pangolin/CMakeModules/EmbedBinaryFiles.cmake
vendored
Normal file
@@ -0,0 +1,32 @@
|
||||
# Creates C resources file from files in given directory
|
||||
# Based on http://stackoverflow.com/a/27206982
|
||||
function(embed_binary_files file_glob output)
|
||||
# Collect input files
|
||||
file(GLOB bins ${file_glob})
|
||||
# Stop when output file is newer than all binary files
|
||||
set(output_newer_than_bins 1)
|
||||
foreach(bin ${bins})
|
||||
if(bin IS_NEWER_THAN output)
|
||||
set(output_newer_than_bins 0)
|
||||
break()
|
||||
endif()
|
||||
endforeach()
|
||||
if(output_newer_than_bins)
|
||||
return()
|
||||
endif()
|
||||
# Create empty output file
|
||||
file(WRITE ${output} "")
|
||||
# Iterate through input files
|
||||
foreach(bin ${bins})
|
||||
# Get short filename
|
||||
string(REGEX MATCH "([^/]+)$" filename ${bin})
|
||||
# Replace filename spaces & extension separator for C compatibility
|
||||
string(REGEX REPLACE "\\.| " "_" filename ${filename})
|
||||
# Read hex data from file
|
||||
file(READ ${bin} filedata HEX)
|
||||
# Convert hex data for C compatibility
|
||||
string(REGEX REPLACE "([0-9a-f][0-9a-f])" "0x\\1," filedata ${filedata})
|
||||
# Append data to output file
|
||||
file(APPEND ${output} "extern const unsigned char ${filename}[] = {${filedata}};\nextern const unsigned ${filename}_size = sizeof(${filename});\n")
|
||||
endforeach()
|
||||
endfunction()
|
||||
Reference in New Issue
Block a user