77 lines
2.0 KiB
Bash
Executable File
77 lines
2.0 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
if [ "$#" -lt 7 ] || [ "$#" -gt 8 ]; then
|
|
echo "usage: build_pico_firmware.sh BUILD_DIR OUTPUT_UF2 SDK_VERSION WIFI_SSID WIFI_PASSPHRASE ZERO_HOST ZERO_PORT [MODULUS_INCLUDE_DIR]" >&2
|
|
exit 2
|
|
fi
|
|
|
|
source_dir=$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)
|
|
build_dir=$1
|
|
output_uf2=$2
|
|
sdk_version=$3
|
|
wifi_ssid=$4
|
|
wifi_passphrase=$5
|
|
zero_host=$6
|
|
zero_port=$7
|
|
modulus_include_dir=${8:-}
|
|
|
|
pico_sdk_path=${VAMP_PICO_SDK_PATH:-${PICO_SDK_PATH:-}}
|
|
sdk_args=(
|
|
-DPICO_SDK_FETCH_FROM_GIT=ON
|
|
"-DPICO_SDK_FETCH_FROM_GIT_TAG=${sdk_version}"
|
|
)
|
|
if [ -n "$pico_sdk_path" ]; then
|
|
pico_sdk_path=$(cd "$pico_sdk_path" && pwd)
|
|
sdk_args=(
|
|
"-DPICO_SDK_PATH=${pico_sdk_path}"
|
|
-DPICO_SDK_FETCH_FROM_GIT=OFF
|
|
)
|
|
fi
|
|
modulus_args=()
|
|
if [ -n "$modulus_include_dir" ]; then
|
|
modulus_include_dir=$(cd "$modulus_include_dir" && pwd)
|
|
modulus_args=(
|
|
"-DVAMP_MODULUS_INCLUDE_DIR=${modulus_include_dir}"
|
|
)
|
|
fi
|
|
|
|
mkdir -p "$(dirname "$output_uf2")"
|
|
|
|
unset CC CXX CPP AS AR LD RANLIB STRIP CFLAGS CXXFLAGS CPPFLAGS LDFLAGS
|
|
|
|
for tool in cmake ninja; do
|
|
if ! command -v "$tool" >/dev/null 2>&1; then
|
|
echo "missing required tool: $tool" >&2
|
|
exit 1
|
|
fi
|
|
done
|
|
if [ -z "${PICO_TOOLCHAIN_PATH:-}" ]; then
|
|
for tool in arm-none-eabi-gcc arm-none-eabi-g++; do
|
|
if ! command -v "$tool" >/dev/null 2>&1; then
|
|
echo "missing required tool: $tool, or set PICO_TOOLCHAIN_PATH" >&2
|
|
exit 1
|
|
fi
|
|
done
|
|
fi
|
|
|
|
cmake -E rm -f "$build_dir/CMakeCache.txt"
|
|
cmake -E rm -rf "$build_dir/CMakeFiles"
|
|
|
|
cmake \
|
|
-S "$source_dir" \
|
|
-B "$build_dir" \
|
|
-G Ninja \
|
|
-DVAMP_PICO_FIRMWARE_PROJECT=ON \
|
|
-DPICO_BOARD=pico2_w \
|
|
-DPICO_GCC_TRIPLE=arm-none-eabi \
|
|
"${sdk_args[@]}" \
|
|
"${modulus_args[@]}" \
|
|
"-DVAMP_PICO_WIFI_SSID=${wifi_ssid}" \
|
|
"-DVAMP_PICO_WIFI_PASSPHRASE=${wifi_passphrase}" \
|
|
"-DVAMP_ZERO_HOST=${zero_host}" \
|
|
"-DVAMP_ZERO_PORT=${zero_port}"
|
|
|
|
cmake --build "$build_dir" --target product-vamp-pico2w --parallel "${VAMP_BUILD_JOBS:-2}"
|
|
cmake -E copy "$build_dir/product-vamp-pico2w.uf2" "$output_uf2"
|