Alan Green | 9b7a93d | 2021-03-11 14:24:52 +1100 | [diff] [blame] | 1 | #!/bin/bash |
| 2 | |
David Lattimore | 3b6faa2 | 2022-10-18 14:10:43 +1100 | [diff] [blame] | 3 | # Copyright 2021 The ChromiumOS Authors |
Alan Green | 73b365c | 2021-05-05 20:22:37 +1000 | [diff] [blame] | 4 | # Use of this source code is governed by a BSD-style license that can be |
| 5 | # found in the LICENSE file. |
| 6 | |
Alan Green | 9b7a93d | 2021-03-11 14:24:52 +1100 | [diff] [blame] | 7 | # Builds code and prints binary sizes. For now, this only reports sizes of MCU |
| 8 | # binaries as that is by far the most space-constrained. |
| 9 | |
Alan Green | 73b365c | 2021-05-05 20:22:37 +1000 | [diff] [blame] | 10 | PROJECT_ROOT=$(realpath "$(dirname "${BASH_SOURCE[0]}")"/..) |
David Lattimore | bcc2d84 | 2021-03-19 14:28:26 +1100 | [diff] [blame] | 11 | |
Alan Green | 73b365c | 2021-05-05 20:22:37 +1000 | [diff] [blame] | 12 | source "${PROJECT_ROOT}/environment" |
David Lattimore | bcc2d84 | 2021-03-19 14:28:26 +1100 | [diff] [blame] | 13 | |
| 14 | set -e |
David Lattimore | 218f35e | 2022-01-21 09:03:28 +1100 | [diff] [blame] | 15 | STAGE0="${PROJECT_ROOT}/rust/mcu/target/thumbv6m-none-eabi/release/stage0.bin" |
| 16 | APPLICATION="${PROJECT_ROOT}/rust/mcu/target/thumbv6m-none-eabi/release/stage1_app.bin" |
Alan Green | 9b7a93d | 2021-03-11 14:24:52 +1100 | [diff] [blame] | 17 | ( |
David Lattimore | 218f35e | 2022-01-21 09:03:28 +1100 | [diff] [blame] | 18 | cd "${PROJECT_ROOT}/rust/mcu" |
Dan Callaghan | f1261f2 | 2022-05-27 15:01:52 +1000 | [diff] [blame] | 19 | cargo build -p stage0 --release |
Alan Green | 9b7a93d | 2021-03-11 14:24:52 +1100 | [diff] [blame] | 20 | arm-none-eabi-objcopy \ |
| 21 | -O binary \ |
| 22 | target/thumbv6m-none-eabi/release/stage0 \ |
Alan Green | 73b365c | 2021-05-05 20:22:37 +1000 | [diff] [blame] | 23 | "${STAGE0}" |
Alan Green | 9b7a93d | 2021-03-11 14:24:52 +1100 | [diff] [blame] | 24 | ) |
| 25 | ( |
David Lattimore | 218f35e | 2022-01-21 09:03:28 +1100 | [diff] [blame] | 26 | cd "${PROJECT_ROOT}/rust/mcu" |
Dan Callaghan | f1261f2 | 2022-05-27 15:01:52 +1000 | [diff] [blame] | 27 | cargo build -p stage1_app --release |
David Lattimore | bcc2d84 | 2021-03-19 14:28:26 +1100 | [diff] [blame] | 28 | arm-none-eabi-objcopy \ |
| 29 | -O binary \ |
Edward O'Callaghan | 9400239 | 2021-09-27 14:49:13 +1000 | [diff] [blame] | 30 | target/thumbv6m-none-eabi/release/stage1_app \ |
Alan Green | 73b365c | 2021-05-05 20:22:37 +1000 | [diff] [blame] | 31 | "${APPLICATION}" |
David Lattimore | bcc2d84 | 2021-03-19 14:28:26 +1100 | [diff] [blame] | 32 | ) |
Alan Green | 9b7a93d | 2021-03-11 14:24:52 +1100 | [diff] [blame] | 33 | echo |
Alan Green | 73b365c | 2021-05-05 20:22:37 +1000 | [diff] [blame] | 34 | STAGE0_SIZE=$(stat --printf='%s' "${STAGE0}") |
Alan Green | 73b365c | 2021-05-05 20:22:37 +1000 | [diff] [blame] | 35 | APPLICATION_SIZE=$(stat --printf='%s' "${APPLICATION}") |
Alan Green | 9b7a93d | 2021-03-11 14:24:52 +1100 | [diff] [blame] | 36 | echo "Stage0: ${STAGE0_SIZE} bytes" |
David Lattimore | bcc2d84 | 2021-03-19 14:28:26 +1100 | [diff] [blame] | 37 | echo "Application: ${APPLICATION_SIZE} bytes" |