#!/usr/bin/env bash set -e SCRIPT_DIR="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd)" OUTPUT_TMP=$(mktemp) OUTPUT="$SCRIPT_DIR/../../include/bindings/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 echo "Compiling mgems..." "$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!"