#!/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