53 lines
1.9 KiB
Bash
Executable File
53 lines
1.9 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
# NOTE: this is a recent addition to the Odin compiler, if you don't have this command
|
|
# you can change this to the path to the Odin folder that contains vendor, eg: "~/Odin".
|
|
ROOT=$(odin root)
|
|
if [ ! $? -eq 0 ]; then
|
|
echo "Your Odin compiler does not have the 'odin root' command, please update or hardcode it in the script."
|
|
exit 1
|
|
fi
|
|
|
|
set -eu
|
|
|
|
# Figure out the mess that is dynamic libraries.
|
|
case $(uname) in
|
|
"Darwin")
|
|
case $(uname -m) in
|
|
"arm64") LIB_PATH="macos-arm64" ;;
|
|
*) LIB_PATH="macos" ;;
|
|
esac
|
|
|
|
DLL_EXT=".dylib"
|
|
EXTRA_LINKER_FLAGS="-Wl,-rpath $ROOT/vendor/raylib/$LIB_PATH"
|
|
;;
|
|
*)
|
|
DLL_EXT=".so"
|
|
EXTRA_LINKER_FLAGS="'-Wl,-rpath=\$ORIGIN/linux'"
|
|
|
|
# Copy the linux libraries into the project automatically.
|
|
if [ ! -d "linux" ]; then
|
|
mkdir linux
|
|
cp -r $ROOT/vendor/raylib/linux/libraylib*.so* linux
|
|
cp -r libs/physfs/libphysfs.so* linux
|
|
fi
|
|
;;
|
|
esac
|
|
|
|
# Build the game.
|
|
echo "Building game$DLL_EXT"
|
|
odin build game -extra-linker-flags:"$EXTRA_LINKER_FLAGS" -define:RAYLIB_SHARED=true -define:PHYSFS_SHARED=true -define:TRACY_ENABLE=true -collection:libs=./libs -collection:common=./common -collection:game=./game -build-mode:dll -out:game_tmp$DLL_EXT -strict-style -vet -debug -o:speed
|
|
|
|
# Need to use a temp file on Linux because it first writes an empty `game.so`, which the game will load before it is actually fully written.
|
|
mv game_tmp$DLL_EXT game$DLL_EXT
|
|
|
|
# Do not build the game_hot_reload.bin if it is already running.
|
|
# -f is there to make sure we match against full name, including .bin
|
|
if pgrep -f game_hot_reload.bin > /dev/null; then
|
|
echo "Game running, hot reloading..."
|
|
exit 1
|
|
else
|
|
echo "Building game_hot_reload.bin"
|
|
odin build main_hot_reload -define:TRACY_ENABLE=true -collection:libs=./libs -out:game_hot_reload.bin -strict-style -vet -debug
|
|
fi
|