142 lines
4.6 KiB
Bash
Executable File
142 lines
4.6 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
set -ex
|
|
|
|
function install_libraries()
|
|
{
|
|
mkdir -p $HOME/Arduino/libraries
|
|
cp -a $GITHUB_WORKSPACE $HOME/Arduino/libraries/ESP8266Audio
|
|
git clone https://github.com/earlephilhower/ESP8266SAM $HOME/Arduino/libraries/ESP8266SAM
|
|
}
|
|
|
|
function install_ide()
|
|
{
|
|
local ide_path=$1
|
|
wget -q -O arduino.tar.xz https://downloads.arduino.cc/arduino-nightly-linux64.tar.xz
|
|
tar xf arduino.tar.xz
|
|
mv arduino-nightly $ide_path
|
|
export PATH="$ide_path:$PATH"
|
|
}
|
|
|
|
function install_esp8266()
|
|
{
|
|
local ide_path=$1
|
|
mkdir -p $ide_path/hardware
|
|
cd $ide_path/hardware
|
|
mkdir esp8266com
|
|
cd esp8266com
|
|
git clone https://github.com/esp8266/Arduino esp8266
|
|
pushd esp8266/tools
|
|
# Set custom warnings for all builds (i.e. could add -Wextra at some point)
|
|
echo "compiler.c.extra_flags=-Wall -Wextra -Werror $debug_flags" > ../platform.local.txt
|
|
echo "compiler.cpp.extra_flags=-Wall -Wextra -Werror $debug_flags" >> ../platform.local.txt
|
|
echo "mkbuildoptglobals.extra_flags=--ci --cache_core" >> ../platform.local.txt
|
|
echo -e "\n----platform.local.txt----"
|
|
cat ../platform.local.txt
|
|
git submodule init
|
|
git submodule update
|
|
python3 get.py -q
|
|
export PATH="$ide_path/hardware/esp8266com/esp8266/tools/xtensa-lx106-elf/bin:$PATH"
|
|
popd
|
|
cd esp8266
|
|
}
|
|
|
|
function install_rp2040()
|
|
{
|
|
local ide_path=$1
|
|
mkdir -p $ide_path/hardware
|
|
cd $ide_path/hardware
|
|
mkdir pico
|
|
cd pico
|
|
git clone https://github.com/earlephilhower/arduino-pico rp2040
|
|
pushd rp2040/tools
|
|
# Set custom warnings for all builds (i.e. could add -Wextra at some point)
|
|
echo "compiler.c.extra_flags=-Wall -Wextra -Werror $debug_flags" > ../platform.local.txt
|
|
echo "compiler.cpp.extra_flags=-Wall -Wextra -Werror $debug_flags" >> ../platform.local.txt
|
|
echo -e "\n----platform.local.txt----"
|
|
cat ../platform.local.txt
|
|
git submodule update --init
|
|
cd ../pico-sdk
|
|
git submodule update --init
|
|
cd ../tools
|
|
python3 get.py -q
|
|
export PATH="$ide_path/hardware/pico/rp2040/system/arm-none-eabi/bin:$PATH"
|
|
popd
|
|
cd rp2040
|
|
}
|
|
|
|
function install_esp32()
|
|
{
|
|
local ide_path=$1
|
|
pip install pyserial
|
|
pip3 install pyserial
|
|
mkdir -p ~/bin
|
|
pushd ~/bin
|
|
wget -q https://downloads.arduino.cc/arduino-cli/arduino-cli_latest_Linux_64bit.tar.gz
|
|
tar xvf arduino-cli_latest_Linux_64bit.tar.gz
|
|
export PATH=$PATH:$PWD
|
|
popd
|
|
arduino-cli core install --additional-urls https://espressif.github.io/arduino-esp32/package_esp32_index.json esp32:esp32
|
|
}
|
|
|
|
function install_arduino()
|
|
{
|
|
# Install Arduino IDE and required libraries
|
|
cd "$GITHUB_WORKSPACE"
|
|
install_ide "$HOME/arduino_ide" "$GITHUB_WORKSPACE"
|
|
which arduino
|
|
cd "$GITHUB_WORKSPACE"
|
|
install_libraries
|
|
}
|
|
|
|
function skip_esp32()
|
|
{
|
|
local ino=$1
|
|
local skiplist=""
|
|
# Add items to the following list with "\n" netween them to skip running. No spaces, tabs, etc. allowed
|
|
read -d '' skiplist << EOL || true
|
|
/MixerSample/
|
|
EOL
|
|
echo $ino | grep -q -F "$skiplist"
|
|
echo $(( 1 - $? ))
|
|
}
|
|
|
|
|
|
|
|
if [ "$BUILD_MOD" == "" ]; then
|
|
export BUILD_MOD=1
|
|
export BUILD_REM=0
|
|
fi
|
|
|
|
export cache_dir=$(mktemp -d)
|
|
if [ "$BUILD_TYPE" = "build" ]; then
|
|
install_arduino
|
|
install_esp8266 "$HOME/arduino_ide"
|
|
source "$HOME/arduino_ide/hardware/esp8266com/esp8266/tests/common.sh"
|
|
export ESP8266_ARDUINO_SKETCHES=$(find $HOME/Arduino/libraries/ESP8266Audio -name *.ino | sort)
|
|
# ESP8266 scripts now expect tools in wrong spot. Use simple and dumb fix
|
|
mkdir -p "$HOME/work/ESP8266Audio/ESP8266Audio"
|
|
ln -s "$HOME/arduino_ide/hardware/esp8266com/esp8266/tools" "$HOME/work/ESP8266Audio/ESP8266Audio/tools"
|
|
build_sketches "$TRAVIS_BUILD_DIR" "$HOME/arduino_ide" "$HOME/arduino_ide/hardware" "$HOME/Arduino/libraries" "$BUILD_MOD" "$BUILD_REM" "lm2f"
|
|
elif [ "$BUILD_TYPE" = "build_esp32" ]; then
|
|
install_arduino
|
|
install_esp32 "$HOME/arduino_ide"
|
|
export testcnt=0
|
|
for i in $(find ~/Arduino/libraries/ESP8266Audio -name "*.ino"); do
|
|
testcnt=$(( ($testcnt + 1) % $BUILD_MOD ))
|
|
if [ $testcnt -ne $BUILD_REM ]; then
|
|
continue # Not ours to do
|
|
fi
|
|
if [[ $(skip_esp32 $i) = 1 ]]; then
|
|
echo -e "\n ------------ Skipping $i ------------ \n";
|
|
continue
|
|
fi
|
|
arduino-cli compile --fqbn esp32:esp32:esp32 --warnings all $i
|
|
done
|
|
elif [ "$BUILD_TYPE" = "build_rp2040" ]; then
|
|
install_arduino
|
|
install_rp2040 "$HOME/arduino_ide"
|
|
source "$HOME/arduino_ide/hardware/pico/rp2040/tests/common.sh"
|
|
build_sketches "$HOME/arduino_ide" "$TRAVIS_BUILD_DIR" "-l $HOME/Arduino/libraries" "$BUILD_MOD" "$BUILD_REM"
|
|
fi
|