Files
enter_the_fog/compile
2026-03-26 14:46:39 -05:00

54 lines
1.3 KiB
Bash
Executable File

#!/bin/sh
# Get the absolute path of the project root (where this script lives)
# This ensures the script works even if called from elsewhere
ROOT_DIR=$(cd "$(dirname "$0")" && pwd)
BUILD_DIR="$ROOT_DIR/build"
usage() {
echo "Usage: $0 {debug|release|test}"
exit 1
}
# Check if an argument was provided
if [ -z "$1" ]; then
usage
fi
TYPE="$1"
case "$TYPE" in
debug|release|test)
TARGET_DIR="$BUILD_DIR/$TYPE"
# Create directory structure if it doesn't exist
mkdir -p "$TARGET_DIR"
echo "--- Entering $TYPE build mode ---"
cd "$TARGET_DIR" || exit 1
# Set CMake build type based on argument
# We capitalize the first letter to match CMake conventions
if [ "$TYPE" = "debug" ]; then
CMAKE_TYPE="Debug"
elif [ "$TYPE" = "release" ]; then
CMAKE_TYPE="Release"
else
CMAKE_TYPE="Debug" # Tests usually run in debug mode
fi
# Run CMake and Make
cmake -DCMAKE_BUILD_TYPE="$CMAKE_TYPE" ../..
# If it's the test build, we target 'test_suite', otherwise 'all'
if [ "$TYPE" = "test" ]; then
make test_suite
else
make
fi
;;
*)
usage
;;
esac