-#! /bin/bash
-mkdir .build
-cp -r * .build/
-cd .build/
-mkdir build
-cd build
-if ! (cmake -B . -S ../src -DCMAKE_BUILD_TYPE=Release -DRESSOURCE_PATH="" && make clean && make -j$(nproc)); then
- cd ../..
- rm -rf .build
- exit 1
+#!/bin/bash
+set -e
+
+version="$(git describe --tags)"
+
+mkdir -p "snapshot"
+cd "snapshot"
+
+build="build"
+snapshot="dragonblocks_alpha-$version"
+toolchain=""
+dotexe=""
+dotsh=".sh"
+flags="-O2"
+
+if [[ "$1" != "" ]]; then
+ build="$build-$1"
+ snapshot="$snapshot-$1"
+ toolchain="$1.cmake"
+ dotexe=".exe"
+ dotsh=".bat"
+ flags="$flags -static"
fi
-cp Dragonblocks DragonblocksServer ..
-cd ..
-rm -rf .git* deps src build BUILDING.md snapshot.sh upload.sh DragonblocksAlpha-*.zip screenshot-*.png
-cd ..
-mv .build DragonblocksAlpha
-VERSION=`git tag --points-at HEAD`
-if [[ $VERSION = "" ]]; then
- VERSION=`git rev-parse --short HEAD`
-fi
-zip -r DragonblocksAlpha-$VERSION.zip DragonblocksAlpha/*
-rm -rf DragonblocksAlpha
+
+mkdir -p "$build"
+
+cmake -B "$build" -S ../src \
+ -DCMAKE_BUILD_TYPE="Release" \
+ -DASSET_PATH="assets/" \
+ -DCMAKE_C_FLAGS="$flags" \
+ -DCMAKE_CXX_FLAGS="$flags" \
+ -DCMAKE_TOOLCHAIN_FILE="$toolchain"
+
+make --no-print-directory -C "$build" -j"$(nproc)"
+
+rm -rf "$snapshot"
+mkdir "$snapshot"
+
+cp -r \
+ "../assets" \
+ "$build/dragonblocks_client$dotexe" \
+ "$build/dragonblocks_server$dotexe" \
+ "../singleplayer$dotsh" \
+ "../LICENSE" \
+ "../README.md" \
+ "$snapshot"
+
+rm -f "$snapshot.zip"
+zip -r "$snapshot.zip" "$snapshot"/*