#!/usr/bin/env bash OUT_FILE=ctx.c GCC=gcc FLAGS="-E -P -dD -undef" INCLUDES="-Iinclude -Iinclude/library -Ifiles -Ilib/include -include global.h" DEFINES="-DGAME_REMASTER=0 -DENGLISH -DPM_KEEP_ASSERTS -DSDK_ARM9 -DSDK_CODE_ARM -DSDK_FINALROM" generate-ctx () { # Remove any line containing a predefined macro. If not removed, mwccarm # generates compiler warnings. grep "^#include " "$1" | $GCC $FLAGS $INCLUDES $DEFINES -x c - | sed '/__STDC__\|__STDC_VERSION__\|__STDC_VERSION__\|__STDC_HOSTED__/d' > $OUT_FILE } usage () { echo "Generate a context file for decomp.me." echo "Usage: $0 [-h] [FILEPATH]" echo "" echo "Arguments:" echo " FILEPATH Source file used to generate ctx.c" echo "" echo "Options:" echo " -h Show this message and exit" } while [[ $# -gt 0 ]]; do key="$1" case $key in -h) usage exit 0 ;; *) generate-ctx "$1" exit 0 ;; esac done