47 lines
1.1 KiB
Bash
Executable File
47 lines
1.1 KiB
Bash
Executable File
#!/bin/bash
|
|
# Baut die ampel-Firmware und flasht sie optional gleich auf den Pico.
|
|
#
|
|
# ./build.sh -> nur bauen
|
|
# ./build.sh -f -> bauen und flashen (Pico muss im BOOTSEL-Modus sein)
|
|
# ./build.sh --clean -> vorher build/ loeschen
|
|
|
|
set -euo pipefail
|
|
|
|
HERE="$(cd "$(dirname "$0")" && pwd)"
|
|
SDK_PATH="/home/irrlicht/Projekte/pico/reference/pico-sdk"
|
|
FLASH_SCRIPT="$HERE/../flash.sh"
|
|
|
|
DO_FLASH=0
|
|
DO_CLEAN=0
|
|
for arg in "$@"; do
|
|
case "$arg" in
|
|
-f|--flash) DO_FLASH=1 ;;
|
|
--clean) DO_CLEAN=1 ;;
|
|
*) echo "Unbekanntes Argument: $arg" >&2; exit 1 ;;
|
|
esac
|
|
done
|
|
|
|
cd "$HERE"
|
|
|
|
if [ $DO_CLEAN -eq 1 ]; then
|
|
echo "Loesche build/ ..."
|
|
rm -rf build
|
|
fi
|
|
|
|
# cmake nur bei fehlendem Build-Ordner explizit aufrufen — sonst reicht ninja,
|
|
# das erkennt CMakeLists.txt-Aenderungen selbst.
|
|
if [ ! -f build/build.ninja ]; then
|
|
cmake -S . -B build -G Ninja -DPICO_SDK_PATH="$SDK_PATH"
|
|
fi
|
|
|
|
ninja -C build
|
|
|
|
UF2="$HERE/build/ampel.uf2"
|
|
echo
|
|
echo "Fertig: $UF2 ($(stat -c%s "$UF2") Byte)"
|
|
|
|
if [ $DO_FLASH -eq 1 ]; then
|
|
echo
|
|
"$FLASH_SCRIPT" "$UF2"
|
|
fi
|