74 lines
1.2 KiB
Bash
Executable File
74 lines
1.2 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
set -e
|
|
|
|
CC="gcc"
|
|
CFLAGS="-DWRATHINT -I./include -fPIC"
|
|
OBJ_BUILD="build/"
|
|
BIN_DIR="bin/"
|
|
HED_DIR="include"
|
|
|
|
build() {
|
|
echo "Building stdWullie..."
|
|
|
|
# Find all C source files
|
|
mapfile -t SRC < <(find src -type f -name '*.c')
|
|
|
|
# Compile each source file
|
|
OBJ=()
|
|
|
|
for src in "${SRC[@]}"; do
|
|
obj="${src%.c}.o"
|
|
|
|
echo "Compiling $src -> $obj"
|
|
"$CC" $CFLAGS -c "$src" -o "$obj"
|
|
|
|
OBJ+=("$obj")
|
|
done
|
|
|
|
# Create output directories
|
|
mkdir "$OBJ_BUILD"
|
|
mkdir "$BIN_DIR"
|
|
|
|
# Link shared library
|
|
echo "Linking libstdWullie.so..."
|
|
"$CC" -nostdlib -shared -o libstdWullie.so \
|
|
-fno-stack-protector \
|
|
"${OBJ[@]}"
|
|
|
|
# Move object files
|
|
mv "${OBJ[@]}" "$OBJ_BUILD"
|
|
|
|
# Move library
|
|
mv libstdWullie.so "$BIN_DIR"
|
|
|
|
# Copy header
|
|
cp "$HED_DIR/stdWullie.h" "$BIN_DIR"
|
|
|
|
# Copy header directory
|
|
cp -r "$HED_DIR/stdWullie/" "$BIN_DIR"
|
|
|
|
echo "Build complete."
|
|
}
|
|
|
|
clean() {
|
|
echo "Cleaning..."
|
|
|
|
rm -rf "$OBJ_BUILD" "$BIN_DIR"
|
|
|
|
build
|
|
}
|
|
|
|
case "${1:-build}" in
|
|
build|stdWullie)
|
|
build
|
|
;;
|
|
clean)
|
|
clean
|
|
;;
|
|
*)
|
|
echo "Usage: $0 {build|stdWullie|clean}"
|
|
exit 1
|
|
;;
|
|
esac
|