1#!/bin/bash
2
3PYTHON3=python3
4yaota8266=$HOME/yaota8266
5
6# for debugging
7#exec &> /tmp/esp-log-$$.txt
8
9# function for building firmware
10function do_build() {
11    descr=$1
12    board=$2
13    shift
14    shift
15    echo "building $descr $board"
16    #build_dir=/tmp/esp8266-build-$board
17    build_dir=build-$board # until esp8266.ld is fixed
18    rm -rf $build_dir # be sure we don't have anything leftover from a previous build
19    $MICROPY_AUTOBUILD_MAKE $@ BOARD=$board BUILD=$build_dir || exit 1
20    mv $build_dir/firmware-combined.bin $dest_dir/$descr$fw_tag.bin
21    mv $build_dir/firmware.elf $dest_dir/$descr$fw_tag.elf
22    mv $build_dir/firmware.map $dest_dir/$descr$fw_tag.map
23    rm -rf $build_dir
24}
25
26function do_build_ota() {
27    descr=$1
28    board=$2
29    shift
30    shift
31    echo "building $descr $board"
32    #build_dir=/tmp/esp8266-build-$board
33    build_dir=build-$board # until esp8266.ld is fixed
34    rm -rf $build_dir # be sure we don't have anything leftover from a previous build
35    $MICROPY_AUTOBUILD_MAKE $@ BOARD=$board BUILD=$build_dir || exit 1
36    cat $yaota8266/yaota8266.bin $build_dir/firmware-ota.bin > $dest_dir/$descr$fw_tag.bin
37    cwd=$(pwd)
38    pushd $yaota8266/ota-client
39    $PYTHON3 ota_client.py sign $cwd/$build_dir/firmware-ota.bin
40    popd
41    mv $build_dir/firmware-ota.bin.ota $dest_dir/$descr$fw_tag.ota
42    mv $build_dir/firmware.elf $dest_dir/$descr$fw_tag.elf
43    mv $build_dir/firmware.map $dest_dir/$descr$fw_tag.map
44    #rm -rf $build_dir
45}
46
47# check/get parameters
48if [ $# != 2 ]; then
49    echo "usage: $0 <fw-tag> <dest-dir>"
50    exit 1
51fi
52
53fw_tag=$1
54dest_dir=$2
55
56# check we are in the correct directory
57if [ ! -r boards/esp8266_common.ld ]; then
58    echo "must be in esp8266 directory"
59    exit 1
60fi
61
62# build the versions
63do_build esp8266 GENERIC
64do_build esp8266-512k GENERIC_512K
65do_build esp8266-1m GENERIC_1M
66do_build_ota esp8266-ota GENERIC ota
67