34 lines
918 B
Bash
Executable File
34 lines
918 B
Bash
Executable File
#!/bin/sh
|
|
|
|
# Convert standard input to a C char array, write to a file, then create an
|
|
# MD5 sum of that file and append said MD5 sum as char array to the file.
|
|
|
|
[ -n "$1" ] || exit 1
|
|
|
|
# Filter out whitespace, empty lines, and comments.
|
|
sanitize() {
|
|
sed 's/^[[:space:]]*//; /^$/d; /^\/\//d'
|
|
}
|
|
|
|
# Convert stdin to a \0-terminated char array.
|
|
dump() {
|
|
echo "static const char $1[] = {"
|
|
od -v -A n -t x1 | sed 's/[[:space:]]*\([[:alnum:]]\{2\}\)/0x\1, /g'
|
|
echo '0x00 };'
|
|
}
|
|
|
|
# Print MD5 hash w/o newline character to not embed the character in the array.
|
|
hash() {
|
|
# md5sum is not standard, so try different platform-specific alternatives.
|
|
{ md5sum "$1" || md5 -q "$1" || digest -a md5 "$1"; } 2>/dev/null |
|
|
cut -b -32 | tr -d '\n\r'
|
|
}
|
|
|
|
trap 'rm -f "$1.temp"' EXIT
|
|
|
|
sanitize | tee "$1.temp" |
|
|
dump 'x264_opencl_source' > "$1"
|
|
|
|
hash "$1.temp" |
|
|
dump 'x264_opencl_source_hash' >> "$1"
|