51 lines
1.1 KiB
Bash
Executable File
51 lines
1.1 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -e
|
|
cd "$(dirname "${BASH_SOURCE[0]}")"
|
|
|
|
CC='cc -g'
|
|
CFLAGS='-Wall -fPIC'
|
|
BIN_FILE='libsm64.so'
|
|
LDFLAGS=''
|
|
|
|
prepare() {
|
|
git submodule update --init --recursive
|
|
./extract-decomp-source.py
|
|
}
|
|
|
|
c_to_obj() {
|
|
printf 'build/'
|
|
echo "$1" | sed 's/cp*$/o/;s:/:_:g'
|
|
}
|
|
|
|
make_cmd() {
|
|
local obj_file="$(c_to_obj "$1")"
|
|
$CC $CFLAGS -MM -MT "$obj_file" -c "$1"
|
|
echo -e "\t$CC $CFLAGS -o $obj_file -c $1"
|
|
}
|
|
|
|
file_list() {
|
|
find src -iname '*.c'
|
|
}
|
|
|
|
print_makefile() {
|
|
local all_objs=''
|
|
for f in $(file_list); do
|
|
all_objs="$all_objs $(c_to_obj $f)"
|
|
done
|
|
echo "$BIN_FILE: $all_objs"
|
|
echo -e "\t$CC -shared -o $BIN_FILE $all_objs $LDFLAGS"
|
|
|
|
for f in $(file_list); do
|
|
make_cmd "$f"
|
|
done
|
|
|
|
echo -e "src/mario/geo.inc.c: extract-decomp-source.py\n\t ./extract-decomp-source.py"
|
|
echo -e "src/mario/model.inc.c: extract-decomp-source.py\n\t ./extract-decomp-source.py"
|
|
|
|
echo '.PHONY: clean run .FORCE'
|
|
echo -e "clean:\n\t find . -iname '*.o' | xargs rm && rm -f ./$BIN_FILE"
|
|
}
|
|
|
|
prepare
|
|
mkdir -p build
|
|
print_makefile > Makefile |