Alan Green | 9b7a93d | 2021-03-11 14:24:52 +1100 | [diff] [blame] | 1 | #!/bin/bash |
| 2 | |
Alan Green | 73b365c | 2021-05-05 20:22:37 +1000 | [diff] [blame^] | 3 | # Copyright 2021 The Chromium OS Authors. All rights reserved. |
| 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 |
Alan Green | 9b7a93d | 2021-03-11 14:24:52 +1100 | [diff] [blame] | 15 | STAGE0="${PROJECT_ROOT}/mcu_rom/stage0/target/thumbv6m-none-eabi/release/stage0.bin" |
| 16 | STAGE1="${PROJECT_ROOT}/mcu_rom/stage1/target/thumbv6m-none-eabi/release/stage1.bin" |
David Lattimore | 941f6b4 | 2021-04-26 15:53:01 +1000 | [diff] [blame] | 17 | APPLICATION="${PROJECT_ROOT}/mcu_rom/stm32g0_application/target/thumbv6m-none-eabi/release/stm32g0_application.bin" |
Alan Green | 9b7a93d | 2021-03-11 14:24:52 +1100 | [diff] [blame] | 18 | ( |
| 19 | cd "${PROJECT_ROOT}/mcu_rom/stage0" |
Alan Green | 73b365c | 2021-05-05 20:22:37 +1000 | [diff] [blame^] | 20 | cargo "+${RUST_VERSION}" build --release |
Alan Green | 9b7a93d | 2021-03-11 14:24:52 +1100 | [diff] [blame] | 21 | arm-none-eabi-objcopy \ |
| 22 | -O binary \ |
| 23 | target/thumbv6m-none-eabi/release/stage0 \ |
Alan Green | 73b365c | 2021-05-05 20:22:37 +1000 | [diff] [blame^] | 24 | "${STAGE0}" |
Alan Green | 9b7a93d | 2021-03-11 14:24:52 +1100 | [diff] [blame] | 25 | ) |
| 26 | ( |
| 27 | cd "${PROJECT_ROOT}/mcu_rom/stage1" |
Alan Green | 73b365c | 2021-05-05 20:22:37 +1000 | [diff] [blame^] | 28 | cargo "+${RUST_VERSION}" build --release |
Alan Green | 9b7a93d | 2021-03-11 14:24:52 +1100 | [diff] [blame] | 29 | arm-none-eabi-objcopy \ |
| 30 | -O binary \ |
| 31 | target/thumbv6m-none-eabi/release/stage1 \ |
Alan Green | 73b365c | 2021-05-05 20:22:37 +1000 | [diff] [blame^] | 32 | "${STAGE1}" |
Alan Green | 9b7a93d | 2021-03-11 14:24:52 +1100 | [diff] [blame] | 33 | ) |
David Lattimore | bcc2d84 | 2021-03-19 14:28:26 +1100 | [diff] [blame] | 34 | ( |
David Lattimore | 941f6b4 | 2021-04-26 15:53:01 +1000 | [diff] [blame] | 35 | cd "${PROJECT_ROOT}/mcu_rom/stm32g0_application" |
Alan Green | 73b365c | 2021-05-05 20:22:37 +1000 | [diff] [blame^] | 36 | cargo "+${RUST_VERSION}" build --release |
David Lattimore | bcc2d84 | 2021-03-19 14:28:26 +1100 | [diff] [blame] | 37 | arm-none-eabi-objcopy \ |
| 38 | -O binary \ |
David Lattimore | 941f6b4 | 2021-04-26 15:53:01 +1000 | [diff] [blame] | 39 | target/thumbv6m-none-eabi/release/stm32g0_application \ |
Alan Green | 73b365c | 2021-05-05 20:22:37 +1000 | [diff] [blame^] | 40 | "${APPLICATION}" |
David Lattimore | bcc2d84 | 2021-03-19 14:28:26 +1100 | [diff] [blame] | 41 | ) |
Alan Green | 9b7a93d | 2021-03-11 14:24:52 +1100 | [diff] [blame] | 42 | echo |
Alan Green | 73b365c | 2021-05-05 20:22:37 +1000 | [diff] [blame^] | 43 | STAGE0_SIZE=$(stat --printf='%s' "${STAGE0}") |
| 44 | STAGE1_SIZE=$(stat --printf='%s' "${STAGE1}") |
| 45 | APPLICATION_SIZE=$(stat --printf='%s' "${APPLICATION}") |
Alan Green | 9b7a93d | 2021-03-11 14:24:52 +1100 | [diff] [blame] | 46 | echo "Stage0: ${STAGE0_SIZE} bytes" |
| 47 | echo "Stage1: ${STAGE1_SIZE} bytes" |
David Lattimore | bcc2d84 | 2021-03-19 14:28:26 +1100 | [diff] [blame] | 48 | echo "Application: ${APPLICATION_SIZE} bytes" |