summaryrefslogtreecommitdiffstatshomepage
path: root/tools/autobuild/build-boards.sh
diff options
context:
space:
mode:
authorDamien George <damien@micropython.org>2021-12-10 21:26:08 +1100
committerDamien George <damien@micropython.org>2021-12-10 21:29:27 +1100
commit3f589e2f39aeb6734962c2eadb3da8a2ca2f65c8 (patch)
treee84db9e9b4daf3f558d6547d23e69a35d0068d87 /tools/autobuild/build-boards.sh
parentc613f5bb49bd83137c11912260c7691f4b284a90 (diff)
downloadmicropython-3f589e2f39aeb6734962c2eadb3da8a2ca2f65c8.tar.gz
micropython-3f589e2f39aeb6734962c2eadb3da8a2ca2f65c8.zip
tools/autobuild: Automatically build all esp32 boards.
Any board with a board.json file will be built. ESP32-based boards will be built using the IDF at $IDF_PATH_V42, all other MCU variants (S2, S3, C3) will be built using the IDF at $IDF_PATH_V44. Signed-off-by: Damien George <damien@micropython.org>
Diffstat (limited to 'tools/autobuild/build-boards.sh')
-rwxr-xr-xtools/autobuild/build-boards.sh98
1 files changed, 78 insertions, 20 deletions
diff --git a/tools/autobuild/build-boards.sh b/tools/autobuild/build-boards.sh
index bb5d8d344e..4b5259b667 100755
--- a/tools/autobuild/build-boards.sh
+++ b/tools/autobuild/build-boards.sh
@@ -6,53 +6,111 @@
# $ source build-boards.sh
# $ MICROPY_AUTOBUILD_MAKE=make build_rp2_boards -latest /tmp
-function build_boards {
+function build_board {
# check/get parameters
if [ $# -lt 4 ]; then
- echo "usage: $0 <fw-tag> <dest-dir> <check-file> <exts...>"
+ echo "usage: $0 <board-json-file> <fw-tag> <dest-dir> <exts...>"
return 1
fi
- fw_tag=$1
- dest_dir=$2
- check_file=$3
+ board_json=$1
+ fw_tag=$2
+ dest_dir=$3
shift
shift
shift
+ board=$(echo $board_json | awk -F '/' '{ print $2 }')
+ descr=$(cat $board_json | python3 -c "import json,sys; print(json.load(sys.stdin).get('id', '$board'))")
+ build_dir=/tmp/micropython-build-$board
+
+ echo "building $descr $board"
+ $MICROPY_AUTOBUILD_MAKE BOARD=$board BUILD=$build_dir && (
+ for ext in $@; do
+ dest=$dest_dir/$descr$fw_tag.$ext
+ if [ -r $build_dir/firmware.$ext ]; then
+ mv $build_dir/firmware.$ext $dest
+ else
+ # esp32 has micropython.elf and micropython.map
+ mv $build_dir/micropython.$ext $dest
+ fi
+ done
+ )
+ rm -rf $build_dir
+}
+
+function build_boards {
+ # check/get parameters
+ if [ $# -lt 4 ]; then
+ echo "usage: $0 <check-file> <fw-tag> <dest-dir> <exts...>"
+ return 1
+ fi
+
+ check_file=$1
+ shift
+
# check we are in the correct directory
if [ ! -r $check_file ]; then
echo "must be in directory containing $check_file"
return 1
fi
+ # build all boards that have a board.json file
+ for board_json in $(find boards/ -name board.json | sort); do
+ build_board $board_json $@
+ done
+}
+
+function build_esp32_boards {
+ # check/get parameters
+ if [ $# != 2 ]; then
+ echo "usage: $0 <fw-tag> <dest-dir>"
+ return 1
+ fi
+
+ fw_tag=$1
+ dest_dir=$2
+
+ # check we are in the correct directory
+ if [ ! -r modesp32.c ]; then
+ echo "must be in esp32 directory"
+ return 1
+ fi
+
+ # build the boards, based on the IDF version
for board_json in $(find boards/ -name board.json | sort); do
- board=$(echo $board_json | awk -F '/' '{ print $2 }')
- descr=$(cat $board_json | python3 -c "import json,sys; print(json.load(sys.stdin).get('id', '$board'))")
- build_dir=/tmp/micropython-build-$board
-
- echo "building $descr $board"
- $MICROPY_AUTOBUILD_MAKE BOARD=$board BUILD=$build_dir && (
- for ext in $@; do
- mv $build_dir/firmware.$ext $dest_dir/$descr$fw_tag.$ext
- done
- )
- rm -rf $build_dir
+ mcu=$(cat $board_json | python3 -c "import json,sys; print(json.load(sys.stdin).get('mcu', 'unknown'))")
+ if idf.py --version | grep -q v4.2; then
+ if [ $mcu = esp32 ]; then
+ # build standard esp32-based boards with IDF v4.2
+ if echo $board_json | grep -q GENERIC; then
+ # traditionally, GENERIC and GENERIC_SPIRAM boards used manifest_release.py
+ MICROPY_AUTOBUILD_MAKE="$MICROPY_AUTOBUILD_MAKE FROZEN_MANIFEST=$(pwd)/boards/manifest_release.py" build_board $board_json $fw_tag $dest_dir bin elf map
+ else
+ build_board $board_json $fw_tag $dest_dir bin elf map
+ fi
+ fi
+ else
+ if [ $mcu != esp32 ]; then
+ # build esp32-s2/s3/c3 based boards with IDF v4.4+
+ build_board $board_json $fw_tag $dest_dir bin elf map
+ fi
+ fi
done
}
function build_mimxrt_boards {
- build_boards $1 $2 modmimxrt.c bin hex
+ build_boards modmimxrt.c $1 $2 bin hex
}
function build_rp2_boards {
- build_boards $1 $2 modrp2.c uf2
+ build_boards modrp2.c $1 $2 uf2
}
function build_samd_boards {
- build_boards $1 $2 samd_soc.c uf2
+ build_boards samd_soc.c $1 $2 uf2
}
function build_stm32_boards {
- build_boards $1 $2 modpyb.c dfu hex
+ build_boards modpyb.c $1 $2 dfu hex
}