BirdNet-goMikrofon/Arduino-audio-tools-main/arduino-audio-tools-main/examples/build-examples.sh

111 lines
4.7 KiB
Bash
Raw Permalink Normal View History

2026-09-26 01:20:55 +02:00
#!/bin/bash
##
# We compile all examples using arduino-cli in order to identify compile errors
# The return codes are made available in the build-examples-log.txt file.
# -> rc=0: success
# -> rc=1: error
##
#arduino-cli lib upgrade
#arduino-cli lib linstall
git -C .. pull
git -C ../../ESP32-A2DP pull
git -C ../../arduino-audio-driver pull
git -C ../../codec-helix pull
# Examples that are not buildable for esp32:esp32:esp32 by design (wrong
# platform, or not an arduino-cli sketch at all) and are therefore skipped
# rather than reported as a build failure.
EXCLUDE_LIST=(
"streams-mp34dt05-serial" # Nano 33 BLE Sense only (needs PDM.h)
"fft-cmsis" # ARM Cortex-M only (STM32/RP2040/Renesas)
"streams-stk-desktop" # desktop build via CMake/PortAudio, not an ESP32 sketch
"python-post-server" # Python script, not an Arduino sketch
)
function is_excluded {
local name
name=$(basename "$1")
for ex in "${EXCLUDE_LIST[@]}"; do
if [[ "$name" == "$ex" ]]; then
return 0
fi
done
return 1
}
function compile_example {
ARCH=$1
FILES=$2
for f in $FILES
do
# Skip README.md files
if [[ $(basename "$f") == "README.md" ]]; then
echo "Skipping README.md file: $f"
continue
fi
if is_excluded "$f"; then
echo "Skipping excluded example: $f"
continue
fi
# A sketch directory must contain a .ino file with the same base name.
# If it doesn't, it's a container of sub-sketches (e.g.
# serial/mp3/{send-mp3,receive-mp3}) - recurse into it one level instead
# of trying to compile the container itself.
if [[ -d "$f" && ! -f "$f/$(basename "$f").ino" ]]; then
compile_example "$ARCH" "$f/*"
continue
fi
echo "Processing $f ..."
# take action on each file. $f store current file name
#arduino-cli compile -b "$ARCH" "$f"
arduino-cli compile -b "$ARCH" --build-property "build.partitions=rainmaker" --build-property "upload.maximum_size=3145728" "$f"
EC=$?
#if [ $EC -ne 0 ]; then
#break
echo -e "$f -> rc=$EC" >> "build-examples-log.txt"
#fi
done
}
rm build-examples-log.txt
compile_example "esp32:esp32:esp32" "../examples/examples-basic-api/base*"
compile_example "esp32:esp32:esp32" "../examples/examples-player/player*"
compile_example "esp32:esp32:esp32" "../examples/examples-stream/streams*"
compile_example "esp32:esp32:esp32" "../examples/examples-audiokit/*"
compile_example "esp32:esp32:esp32" "../examples/examples-tts/streams*"
compile_example "esp32:esp32:esp32" "../examples/examples-dsp/examples-maximilian/*"
compile_example "esp32:esp32:esp32" "../examples/examples-dsp/examples-mozzi/*"
compile_example "esp32:esp32:esp32" "../examples/examples-dsp/examples-pd/*"
compile_example "esp32:esp32:esp32" "../examples/examples-dsp/examples-stk/*"
compile_example "esp32:esp32:esp32" "../examples/examples-dsp/examples-faust/streams*"
compile_example "esp32:esp32:esp32" "../examples/examples-communication/a2dp/*"
compile_example "esp32:esp32:esp32" "../examples/examples-communication/esp-now/codec/*"
compile_example "esp32:esp32:esp32" "../examples/examples-communication/esp-now/pcm/*"
compile_example "esp32:esp32:esp32" "../examples/examples-communication/esp-now/speed-test/*"
compile_example "esp32:esp32:esp32" "../examples/examples-communication/ip/*"
compile_example "esp32:esp32:esp32" "../examples/examples-communication/udp/*"
compile_example "esp32:esp32:esp32" "../examples/examples-communication/vban/*"
compile_example "esp32:esp32:esp32" "../examples/examples-communication/rtsp/*"
compile_example "esp32:esp32:esp32" "../examples/examples-communication/serial/*"
compile_example "esp32:esp32:esp32" "../examples/examples-communication/snapcast/*"
compile_example "esp32:esp32:esp32" "../examples/examples-communication/http-client/*"
compile_example "esp32:esp32:esp32" "../examples/examples-communication/http-server/*"
compile_example "esp32:esp32:esp32" "../examples/tests/adc/*"
compile_example "esp32:esp32:esp32" "../examples/tests/basic/*"
compile_example "esp32:esp32:esp32" "../examples/tests/codecs/*"
compile_example "esp32:esp32:esp32" "../examples/tests/concurrency/*"
compile_example "esp32:esp32:esp32" "../examples/tests/conversion/*"
compile_example "esp32:esp32:esp32" "../examples/tests/effects/*"
compile_example "esp32:esp32:esp32" "../examples/tests/etc/*"
compile_example "esp32:esp32:esp32" "../examples/tests/fft/*"
compile_example "esp32:esp32:esp32" "../examples/tests/filters/*"
compile_example "esp32:esp32:esp32" "../examples/tests/performance/*"
compile_example "esp32:esp32:esp32" "../examples/tests/player/*"
compile_example "esp32:esp32:esp32" "../examples/tests/timer/*"
rm -rf /tmp/arduino
./cleanup.sh