#!/usr/bin/env bash set -euo pipefail # Build script for custom ESP-IDF bootloader with rollback enabled. # Requirements: # - ESP-IDF installed # - IDF_PATH exported # - Python env prepared (the usual ESP-IDF setup) # Usage: # ./build_bootloader.sh [esp32|esp32s3|esp32c3|esp32s2|esp32c2|esp32c6|esp32h2] # If target is omitted, the last configured target will be used. TARGET=${1:-} if [[ -z "${IDF_PATH:-}" ]]; then echo "ERROR: IDF_PATH is not set. Please install ESP-IDF and export the environment (source export.sh)." >&2 exit 1 fi # shellcheck source=/dev/null source "$IDF_PATH/export.sh" if [[ -n "$TARGET" ]]; then idf.py set-target "$TARGET" fi # Ensure sdkconfig.defaults is considered (ESP-IDF does this automatically). # Build only the bootloader. idf.py bootloader echo BOOTLOADER_BIN="build/bootloader/bootloader.bin" if [[ -f "$BOOTLOADER_BIN" ]]; then echo "Bootloader built: $BOOTLOADER_BIN" echo "You can use this with espflash via:" echo " espflash flash --bootloader $BOOTLOADER_BIN [--partition-table partitions.csv] " else echo "ERROR: Bootloader binary not found. Check build logs above." >&2 exit 2 fi cp build/bootloader/bootloader.bin ../rust/bootloader.bin