40 lines
915 B
Bash
Executable File
40 lines
915 B
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
set -e
|
|
|
|
SCRIPT_DIR="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd)"
|
|
OUTPUT_TMP=$(mktemp)
|
|
OUTPUT="$SCRIPT_DIR/../../include/binding/ruby_compiled.h"
|
|
|
|
if test "$1" = "clean"; then
|
|
rm -f "$OUTPUT"
|
|
exit 0
|
|
fi
|
|
|
|
trap 'rm -f "$OUTPUT_TMP"' EXIT
|
|
|
|
mapfile -t FILES < <(find "$SCRIPT_DIR" -name "*.rb" | sort)
|
|
|
|
LATEST_FILE_TIME=$(for file in "${FILES[@]}"; do
|
|
echo $(stat -c "%Y" "$file")
|
|
done | sort -n | tail -1)
|
|
|
|
OUTPUT_TIME=$(stat -c "%Y" "$OUTPUT" 2>/dev/null || echo 0)
|
|
|
|
if test "$OUTPUT_TIME" -ge "$LATEST_FILE_TIME"; then
|
|
echo "mgems is up to date."
|
|
exit 0
|
|
fi
|
|
|
|
"$SCRIPT_DIR/../mruby/bin/mrbc" -o "$OUTPUT_TMP" "${FILES[@]}"
|
|
|
|
{
|
|
echo "#ifndef MGEMS_H"
|
|
echo "#define MGEMS_H"
|
|
xxd -i -n mgems $OUTPUT_TMP \
|
|
| sed -e 's/^unsigned char /constexpr unsigned char /' \
|
|
-e 's/^unsigned int /constexpr unsigned int /'
|
|
echo "#endif"
|
|
} > "$OUTPUT"
|
|
|
|
echo "Compiled mgems!" |