aboutsummaryrefslogtreecommitdiffstats
path: root/scripts/build.sh
blob: 6027e754e7fa27242d42a66ae73bc39918a5f207 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#!/usr/bin/env bash
# Build and run the Forts Clone inside a podman container.
# Usage: ./scripts/build.sh [--shell]

set -euo pipefail

SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
PROJECT_DIR="$(dirname "$SCRIPT_DIR")"
IMAGE_NAME="forts-clone-dev"

cd "$PROJECT_DIR"

# Build container image (cached)
echo "==> Building container image..."
podman build -t "$IMAGE_NAME" .

if [ "${1:-}" = "--shell" ]; then
    echo "==> Starting shell in container..."
    exec podman run -it --rm \
        -v "$PROJECT_DIR":/src:Z \
        --userns=keep-id \
        "$IMAGE_NAME" \
        bash
else
    echo "==> Configuring and building..."
    podman run -it --rm \
        -v "$PROJECT_DIR":/src:Z \
        --userns=keep-id \
        "$IMAGE_NAME" \
        bash -c "
            meson setup builddir \
                --buildtype=debugoptimized \
                -Dwarning_level=3 \
                -Dcpp_std=c++20 \
                --wipe
            meson compile -C builddir -j$(nproc)
        "
    echo
    echo "==> Build complete. Run with: ./builddir/forts-clone"
fi