1- #! /bin/bash
1+ #! /usr/bin/env bash
2+
3+ function print_size_info()
4+ {
5+ elf_file=$1
6+
7+ if [ -z " $elf_file " ]; then
8+ printf " sketch data rodata bss text irom0.text dram flash\n"
9+ return 0
10+ fi
11+
12+ elf_name=$( basename $elf_file )
13+ sketch_name=" ${elf_name% .* } "
14+ # echo $sketch_name
15+ declare -A segments
16+ while read -a tokens; do
17+ seg=${tokens[0]}
18+ seg=${seg// ./ }
19+ size=${tokens[1]}
20+ addr=${tokens[2]}
21+ if [ " $addr " -eq " $addr " -a " $addr " -ne " 0" ] 2> /dev/null; then
22+ segments[$seg ]=$size
23+ fi
24+
25+
26+ done < <( xtensa-lx106-elf-size --format=sysv $elf_file )
27+
28+ total_ram=$(( ${segments[data]} + ${segments[rodata]} + ${segments[bss]} ))
29+ total_flash=$(( ${segments[data]} + ${segments[rodata]} + ${segments[text]} + ${segments[irom0text]} ))
30+
31+ printf " %-28s %-8d %-8d %-8d %-8d %-8d %-8d %-8d\n" $sketch_name ${segments[data]} ${segments[rodata]} ${segments[bss]} ${segments[text]} ${segments[irom0text]} $total_ram $total_flash
32+ return 0
33+ }
234
335function build_sketches()
436{
537 set +e
638 local arduino=$1
739 local srcpath=$2
8- local build_cmd=$3
9- echo $build_cmd
40+ local build_arg=$3
41+ local build_dir=build.tmp
42+ mkdir -p $build_dir
43+ rm -rf $build_dir /*
44+ local build_cmd=" python tools/build.py -b generic -v -k -p $PWD /$build_dir $build_arg "
1045 local sketches=$( find $srcpath -name * .ino)
46+ print_size_info > size.log
1147 export ARDUINO_IDE_PATH=$arduino
1248 for sketch in $sketches ; do
1349 local sketchdir=$( dirname $sketch )
@@ -33,8 +69,12 @@ function build_sketches()
3369 return $result
3470 fi
3571 rm build.log
72+ print_size_info $build_dir /* .elf >> size.log
3673 done
3774 set -e
75+ echo -e " \n ------------ Size report ------------ \n"
76+ cat size.log
77+ echo -e " \n ------------------------------------- \n"
3878}
3979
4080function install_libraries()
0 commit comments