################################################################################
# Build all of the platforms manually since the `all_platforms' target
# doesn't preserve all of the build outputs and overrides CFLAGS.
set -e
set -u

################################################################################
# Prevent a warning from shellcheck:
out=${out:-/tmp}

################################################################################
export CFLAGS=$NIX_CFLAGS_COMPILE
export MAKEFLAGS="\
  ${enableParallelBuilding:+-j${NIX_BUILD_CORES} -l${NIX_BUILD_CORES}}"

################################################################################
PRODUCTS="blackmagic.bin blackmagic.hex blackmagic_dfu.bin blackmagic_dfu.hex"

################################################################################
make_platform() {
  echo "Building for hardware platform $1"

  make clean
  make PROBE_HOST="$1"

  if [ "$1" = "hosted" ]; then
    install -m 0555 blackmagic "$out/bin"
  fi

  for f in $PRODUCTS; do
    if [ -r "$f" ]; then
      mkdir -p "$out/firmware/$1"
      install -m 0444 "$f" "$out/firmware/$1"
    fi
  done

}

################################################################################
# Start by building libopencm3:
make -C libopencm3

################################################################################
# And now all of the platforms:
cd src

mkdir -p "$out/bin"

for platform in platforms/*/Makefile.inc; do
  probe=$(basename "$(dirname "$platform")")
  make_platform "$probe"
done