[feat]: initial commit
This commit is contained in:
commit
7b48f34e94
24 changed files with 1354 additions and 0 deletions
56
build_hot_reload.sh
Executable file
56
build_hot_reload.sh
Executable file
|
|
@ -0,0 +1,56 @@
|
|||
#!/usr/bin/env bash
|
||||
set -eu
|
||||
|
||||
# OUT_DIR is for everything except the exe. The exe needs to stay in root
|
||||
# folder so it sees the assets folder, without having to copy it.
|
||||
OUT_DIR=build/hot_reload
|
||||
EXE=game_hot_reload.bin
|
||||
|
||||
mkdir -p $OUT_DIR
|
||||
|
||||
# root is a special command of the odin compiler that tells you where the Odin
|
||||
# compiler is located.
|
||||
ROOT=$(odin root)
|
||||
|
||||
# Figure out which DLL extension to use based on platform. Also copy the Linux
|
||||
# so libs.
|
||||
case $(uname) in
|
||||
"Darwin")
|
||||
DLL_EXT=".dylib"
|
||||
EXTRA_LINKER_FLAGS="-Wl,-rpath $ROOT/vendor/raylib/macos"
|
||||
;;
|
||||
*)
|
||||
DLL_EXT=".so"
|
||||
EXTRA_LINKER_FLAGS="'-Wl,-rpath=\$ORIGIN/linux'"
|
||||
|
||||
# Copy the linux libraries into the project automatically.
|
||||
if [ ! -d "$OUT_DIR/linux" ]; then
|
||||
mkdir -p $OUT_DIR/linux
|
||||
cp -r $ROOT/vendor/raylib/linux/libraylib*.so* $OUT_DIR/linux
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
|
||||
# Build the game. Note that the game goes into $OUT_DIR while the exe stays in
|
||||
# the root folder.
|
||||
echo "Building game$DLL_EXT"
|
||||
odin build source -extra-linker-flags:"$EXTRA_LINKER_FLAGS" -define:RAYLIB_SHARED=true -build-mode:dll -out:$OUT_DIR/game_tmp$DLL_EXT -strict-style -vet -debug
|
||||
|
||||
# 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 $OUT_DIR/game_tmp$DLL_EXT $OUT_DIR/game$DLL_EXT
|
||||
|
||||
# If the executable is already running, then don't try to build and start it.
|
||||
# -f is there to make sure we match against full name, including .bin
|
||||
if pgrep -f $EXE > /dev/null; then
|
||||
echo "Hot reloading..."
|
||||
exit 0
|
||||
fi
|
||||
|
||||
echo "Building $EXE"
|
||||
odin build source/main_hot_reload -out:$EXE -strict-style -vet -debug
|
||||
|
||||
if [ $# -ge 1 ] && [ $1 == "run" ]; then
|
||||
echo "Running $EXE"
|
||||
./$EXE &
|
||||
fi
|
||||
Loading…
Add table
Add a link
Reference in a new issue