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
+ }
2
34
3
35
function build_sketches()
4
36
{
5
37
set +e
6
38
local arduino=$1
7
39
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 "
10
45
local sketches=$( find $srcpath -name * .ino)
46
+ print_size_info > size.log
11
47
export ARDUINO_IDE_PATH=$arduino
12
48
for sketch in $sketches ; do
13
49
local sketchdir=$( dirname $sketch )
@@ -33,8 +69,12 @@ function build_sketches()
33
69
return $result
34
70
fi
35
71
rm build.log
72
+ print_size_info $build_dir /* .elf >> size.log
36
73
done
37
74
set -e
75
+ echo -e " \n ------------ Size report ------------ \n"
76
+ cat size.log
77
+ echo -e " \n ------------------------------------- \n"
38
78
}
39
79
40
80
function install_libraries()
0 commit comments