1*cfb92d14SAndroid Build Coastguard Worker#!/bin/bash 2*cfb92d14SAndroid Build Coastguard Worker# 3*cfb92d14SAndroid Build Coastguard Worker# Copyright (c) 2019, The OpenThread Authors. 4*cfb92d14SAndroid Build Coastguard Worker# All rights reserved. 5*cfb92d14SAndroid Build Coastguard Worker# 6*cfb92d14SAndroid Build Coastguard Worker# Redistribution and use in source and binary forms, with or without 7*cfb92d14SAndroid Build Coastguard Worker# modification, are permitted provided that the following conditions are met: 8*cfb92d14SAndroid Build Coastguard Worker# 1. Redistributions of source code must retain the above copyright 9*cfb92d14SAndroid Build Coastguard Worker# notice, this list of conditions and the following disclaimer. 10*cfb92d14SAndroid Build Coastguard Worker# 2. Redistributions in binary form must reproduce the above copyright 11*cfb92d14SAndroid Build Coastguard Worker# notice, this list of conditions and the following disclaimer in the 12*cfb92d14SAndroid Build Coastguard Worker# documentation and/or other materials provided with the distribution. 13*cfb92d14SAndroid Build Coastguard Worker# 3. Neither the name of the copyright holder nor the 14*cfb92d14SAndroid Build Coastguard Worker# names of its contributors may be used to endorse or promote products 15*cfb92d14SAndroid Build Coastguard Worker# derived from this software without specific prior written permission. 16*cfb92d14SAndroid Build Coastguard Worker# 17*cfb92d14SAndroid Build Coastguard Worker# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 18*cfb92d14SAndroid Build Coastguard Worker# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 19*cfb92d14SAndroid Build Coastguard Worker# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 20*cfb92d14SAndroid Build Coastguard Worker# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE 21*cfb92d14SAndroid Build Coastguard Worker# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 22*cfb92d14SAndroid Build Coastguard Worker# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 23*cfb92d14SAndroid Build Coastguard Worker# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 24*cfb92d14SAndroid Build Coastguard Worker# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 25*cfb92d14SAndroid Build Coastguard Worker# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 26*cfb92d14SAndroid Build Coastguard Worker# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 27*cfb92d14SAndroid Build Coastguard Worker# POSSIBILITY OF SUCH DAMAGE. 28*cfb92d14SAndroid Build Coastguard Worker# 29*cfb92d14SAndroid Build Coastguard Worker 30*cfb92d14SAndroid Build Coastguard Workerset -euo pipefail 31*cfb92d14SAndroid Build Coastguard Worker 32*cfb92d14SAndroid Build Coastguard WorkerOT_TMP_DIR=/tmp/ot-size-report 33*cfb92d14SAndroid Build Coastguard Workerreadonly OT_TMP_DIR 34*cfb92d14SAndroid Build Coastguard Worker 35*cfb92d14SAndroid Build Coastguard WorkerOT_SHA_NEW=${GITHUB_SHA:-$(git rev-parse HEAD)} 36*cfb92d14SAndroid Build Coastguard Workerreadonly OT_SHA_NEW 37*cfb92d14SAndroid Build Coastguard Worker 38*cfb92d14SAndroid Build Coastguard WorkerOT_SHA_OLD="$(git cat-file -p "${OT_SHA_NEW}" | grep 'parent ' | head -n1 | cut -d' ' -f2)" 39*cfb92d14SAndroid Build Coastguard Workerreadonly OT_SHA_OLD 40*cfb92d14SAndroid Build Coastguard Worker 41*cfb92d14SAndroid Build Coastguard WorkerOT_REPORT_FILE_TABLE="${OT_TMP_DIR}/report_table" 42*cfb92d14SAndroid Build Coastguard Workerreadonly OT_REPORT_FILE_TABLE 43*cfb92d14SAndroid Build Coastguard Worker 44*cfb92d14SAndroid Build Coastguard WorkerOT_REPORT_FILE_PR="${OT_TMP_DIR}/report_pr" 45*cfb92d14SAndroid Build Coastguard Workerreadonly OT_REPORT_FILE_TABLE 46*cfb92d14SAndroid Build Coastguard Worker 47*cfb92d14SAndroid Build Coastguard WorkerOT_REPORTER="${OT_SIZE_REPORTER-}" 48*cfb92d14SAndroid Build Coastguard Workerreadonly OT_REPORTER 49*cfb92d14SAndroid Build Coastguard Worker 50*cfb92d14SAndroid Build Coastguard Workersetup_arm_gcc_7() 51*cfb92d14SAndroid Build Coastguard Worker{ 52*cfb92d14SAndroid Build Coastguard Worker if arm-none-eabi-gcc --version | grep -q 'Arm Embedded Processors 7'; then 53*cfb92d14SAndroid Build Coastguard Worker return 0 54*cfb92d14SAndroid Build Coastguard Worker fi 55*cfb92d14SAndroid Build Coastguard Worker 56*cfb92d14SAndroid Build Coastguard Worker (cd /tmp/ \ 57*cfb92d14SAndroid Build Coastguard Worker && wget --tries 4 --no-check-certificate --quiet https://developer.arm.com/-/media/Files/downloads/gnu-rm/7-2018q2/gcc-arm-none-eabi-7-2018-q2-update-linux.tar.bz2 \ 58*cfb92d14SAndroid Build Coastguard Worker && tar xjf gcc-arm-none-eabi-7-2018-q2-update-linux.tar.bz2) 59*cfb92d14SAndroid Build Coastguard Worker export PATH=/tmp/gcc-arm-none-eabi-7-2018-q2-update/bin:$PATH 60*cfb92d14SAndroid Build Coastguard Worker 61*cfb92d14SAndroid Build Coastguard Worker arm-none-eabi-gcc --version 62*cfb92d14SAndroid Build Coastguard Worker} 63*cfb92d14SAndroid Build Coastguard Worker 64*cfb92d14SAndroid Build Coastguard Workersetup_ninja_build() 65*cfb92d14SAndroid Build Coastguard Worker{ 66*cfb92d14SAndroid Build Coastguard Worker sudo apt-get --no-install-recommends install -y ninja-build 67*cfb92d14SAndroid Build Coastguard Worker} 68*cfb92d14SAndroid Build Coastguard Worker 69*cfb92d14SAndroid Build Coastguard Workersetup() 70*cfb92d14SAndroid Build Coastguard Worker{ 71*cfb92d14SAndroid Build Coastguard Worker setup_arm_gcc_7 72*cfb92d14SAndroid Build Coastguard Worker setup_ninja_build 73*cfb92d14SAndroid Build Coastguard Worker} 74*cfb92d14SAndroid Build Coastguard Worker 75*cfb92d14SAndroid Build Coastguard Workernm_size() 76*cfb92d14SAndroid Build Coastguard Worker{ 77*cfb92d14SAndroid Build Coastguard Worker arm-none-eabi-nm --print-size --defined-only -C "$1" | cut -d' ' -f2- >nmsize_old 78*cfb92d14SAndroid Build Coastguard Worker arm-none-eabi-nm --print-size --defined-only -C "$2" | cut -d' ' -f2- >nmsize_new 79*cfb92d14SAndroid Build Coastguard Worker diff -Nuar nmsize_old nmsize_new || true 80*cfb92d14SAndroid Build Coastguard Worker} 81*cfb92d14SAndroid Build Coastguard Worker 82*cfb92d14SAndroid Build Coastguard Workerbuild_nrf52840() 83*cfb92d14SAndroid Build Coastguard Worker{ 84*cfb92d14SAndroid Build Coastguard Worker case "$1" in 85*cfb92d14SAndroid Build Coastguard Worker ftd) 86*cfb92d14SAndroid Build Coastguard Worker local ot_ftd=ON 87*cfb92d14SAndroid Build Coastguard Worker local ot_mtd=OFF 88*cfb92d14SAndroid Build Coastguard Worker local ot_rcp=ON 89*cfb92d14SAndroid Build Coastguard Worker ;; 90*cfb92d14SAndroid Build Coastguard Worker mtd) 91*cfb92d14SAndroid Build Coastguard Worker local ot_ftd=OFF 92*cfb92d14SAndroid Build Coastguard Worker local ot_mtd=ON 93*cfb92d14SAndroid Build Coastguard Worker local ot_rcp=ON 94*cfb92d14SAndroid Build Coastguard Worker ;; 95*cfb92d14SAndroid Build Coastguard Worker br) 96*cfb92d14SAndroid Build Coastguard Worker local ot_ftd=ON 97*cfb92d14SAndroid Build Coastguard Worker local ot_mtd=OFF 98*cfb92d14SAndroid Build Coastguard Worker local ot_rcp=OFF 99*cfb92d14SAndroid Build Coastguard Worker ;; 100*cfb92d14SAndroid Build Coastguard Worker *) 101*cfb92d14SAndroid Build Coastguard Worker exit 128 102*cfb92d14SAndroid Build Coastguard Worker ;; 103*cfb92d14SAndroid Build Coastguard Worker esac 104*cfb92d14SAndroid Build Coastguard Worker 105*cfb92d14SAndroid Build Coastguard Worker case "$2" in 106*cfb92d14SAndroid Build Coastguard Worker new) 107*cfb92d14SAndroid Build Coastguard Worker local sha=${OT_SHA_NEW} 108*cfb92d14SAndroid Build Coastguard Worker local clone_options=("clone") 109*cfb92d14SAndroid Build Coastguard Worker ;; 110*cfb92d14SAndroid Build Coastguard Worker old) 111*cfb92d14SAndroid Build Coastguard Worker local sha=${OT_SHA_OLD} 112*cfb92d14SAndroid Build Coastguard Worker local clone_options=("clone" "no-depend") 113*cfb92d14SAndroid Build Coastguard Worker ;; 114*cfb92d14SAndroid Build Coastguard Worker *) 115*cfb92d14SAndroid Build Coastguard Worker exit 128 116*cfb92d14SAndroid Build Coastguard Worker ;; 117*cfb92d14SAndroid Build Coastguard Worker esac 118*cfb92d14SAndroid Build Coastguard Worker 119*cfb92d14SAndroid Build Coastguard Worker local folder="$1_$2" 120*cfb92d14SAndroid Build Coastguard Worker local config_name="ot-core-config-check-size-$1.h" 121*cfb92d14SAndroid Build Coastguard Worker local config_file="../examples/config/${config_name}" 122*cfb92d14SAndroid Build Coastguard Worker 123*cfb92d14SAndroid Build Coastguard Worker mkdir -p "${OT_TMP_DIR}/${folder}" 124*cfb92d14SAndroid Build Coastguard Worker script/git-tool "${clone_options[@]}" https://github.com/openthread/ot-nrf528xx.git "${OT_TMP_DIR}/${folder}" 125*cfb92d14SAndroid Build Coastguard Worker rm -rf "${OT_TMP_DIR}/${folder}/openthread/*" # replace openthread submodule with latest commit 126*cfb92d14SAndroid Build Coastguard Worker git archive "${sha}" | tar x -C "${OT_TMP_DIR}/${folder}/openthread" 127*cfb92d14SAndroid Build Coastguard Worker 128*cfb92d14SAndroid Build Coastguard Worker if [ ! -e "${OT_TMP_DIR}/${folder}/openthread/examples/config/${config_name}" ]; then 129*cfb92d14SAndroid Build Coastguard Worker # Check if the the config headers are not present, copy from 130*cfb92d14SAndroid Build Coastguard Worker # the main sha. 131*cfb92d14SAndroid Build Coastguard Worker case "$1" in 132*cfb92d14SAndroid Build Coastguard Worker br) 133*cfb92d14SAndroid Build Coastguard Worker rm -rf "${OT_TMP_DIR}/${folder}/openthread/*" 134*cfb92d14SAndroid Build Coastguard Worker git archive "${OT_SHA_NEW}" | tar x -C "${OT_TMP_DIR}/${folder}/openthread" 135*cfb92d14SAndroid Build Coastguard Worker ;; 136*cfb92d14SAndroid Build Coastguard Worker *) 137*cfb92d14SAndroid Build Coastguard Worker mkdir -p "${OT_TMP_DIR}/${folder}/openthread/examples/config" 138*cfb92d14SAndroid Build Coastguard Worker cp "./examples/config/${config_name}" "${OT_TMP_DIR}/${folder}/openthread/examples/config" 139*cfb92d14SAndroid Build Coastguard Worker ;; 140*cfb92d14SAndroid Build Coastguard Worker esac 141*cfb92d14SAndroid Build Coastguard Worker fi 142*cfb92d14SAndroid Build Coastguard Worker 143*cfb92d14SAndroid Build Coastguard Worker local cur_dir 144*cfb92d14SAndroid Build Coastguard Worker 145*cfb92d14SAndroid Build Coastguard Worker cur_dir=$(pwd) 146*cfb92d14SAndroid Build Coastguard Worker 147*cfb92d14SAndroid Build Coastguard Worker cd "${OT_TMP_DIR}/${folder}" 148*cfb92d14SAndroid Build Coastguard Worker OT_CMAKE_BUILD_DIR=build script/build nrf52840 UART_trans \ 149*cfb92d14SAndroid Build Coastguard Worker -DOT_APP_CLI=ON -DOT_APP_NCP=ON -DOT_APP_RCP=${ot_rcp} \ 150*cfb92d14SAndroid Build Coastguard Worker -DOT_FTD=${ot_ftd} -DOT_MTD=${ot_mtd} -DOT_RCP=${ot_rcp} \ 151*cfb92d14SAndroid Build Coastguard Worker -DBUILD_TESTING=OFF \ 152*cfb92d14SAndroid Build Coastguard Worker -DOT_PROJECT_CONFIG="${config_file}" 153*cfb92d14SAndroid Build Coastguard Worker 154*cfb92d14SAndroid Build Coastguard Worker if [[ $1 == "br" ]]; then 155*cfb92d14SAndroid Build Coastguard Worker mv ./build/bin/ot-cli-ftd ./build/bin/ot-cli-ftd-br 156*cfb92d14SAndroid Build Coastguard Worker mv ./build/lib/libopenthread-ftd.a ./build/lib/libopenthread-ftd-br.a 157*cfb92d14SAndroid Build Coastguard Worker mv ./build/lib/libopenthread-cli-ftd.a ./build/lib/libopenthread-cli-ftd-br.a 158*cfb92d14SAndroid Build Coastguard Worker fi 159*cfb92d14SAndroid Build Coastguard Worker 160*cfb92d14SAndroid Build Coastguard Worker cd "${cur_dir}" 161*cfb92d14SAndroid Build Coastguard Worker} 162*cfb92d14SAndroid Build Coastguard Worker 163*cfb92d14SAndroid Build Coastguard Workergenerate_table_header() 164*cfb92d14SAndroid Build Coastguard Worker{ 165*cfb92d14SAndroid Build Coastguard Worker { 166*cfb92d14SAndroid Build Coastguard Worker printf "+----------------------------+----------+----------+----------+----------+----------+\n" 167*cfb92d14SAndroid Build Coastguard Worker printf "| name | branch | text | data | bss | total |\n" 168*cfb92d14SAndroid Build Coastguard Worker printf "+============================+==========+==========+==========+==========+==========+\n" 169*cfb92d14SAndroid Build Coastguard Worker } >>"${OT_REPORT_FILE_TABLE}" 170*cfb92d14SAndroid Build Coastguard Worker 171*cfb92d14SAndroid Build Coastguard Worker { 172*cfb92d14SAndroid Build Coastguard Worker printf "# Size Report of **OpenThread**\n" 173*cfb92d14SAndroid Build Coastguard Worker printf "Merging PR into main\n\n" 174*cfb92d14SAndroid Build Coastguard Worker printf "| name | branch | text | data | bss | total |\n" 175*cfb92d14SAndroid Build Coastguard Worker printf "| :----: | :------: | -----: | ----: | ---: | ----: |\n" 176*cfb92d14SAndroid Build Coastguard Worker } >>"${OT_REPORT_FILE_PR}" 177*cfb92d14SAndroid Build Coastguard Worker 178*cfb92d14SAndroid Build Coastguard Worker { 179*cfb92d14SAndroid Build Coastguard Worker printf "\n<details><summary>Library files</summary>\n\n\n" 180*cfb92d14SAndroid Build Coastguard Worker printf "| name | branch | text | data | bss | total |\n" 181*cfb92d14SAndroid Build Coastguard Worker printf "| :----: | :------: | -----: | ----: | ---: | ----: |\n" 182*cfb92d14SAndroid Build Coastguard Worker } >>"${OT_REPORT_FILE_PR}_libs" 183*cfb92d14SAndroid Build Coastguard Worker 184*cfb92d14SAndroid Build Coastguard Worker if [ -n "${OT_REPORTER}" ]; then 185*cfb92d14SAndroid Build Coastguard Worker "${OT_REPORTER}" init OpenThread 186*cfb92d14SAndroid Build Coastguard Worker fi 187*cfb92d14SAndroid Build Coastguard Worker 188*cfb92d14SAndroid Build Coastguard Worker} 189*cfb92d14SAndroid Build Coastguard Worker 190*cfb92d14SAndroid Build Coastguard Workergenerate_size_diff() 191*cfb92d14SAndroid Build Coastguard Worker{ 192*cfb92d14SAndroid Build Coastguard Worker local name 193*cfb92d14SAndroid Build Coastguard Worker local old_file 194*cfb92d14SAndroid Build Coastguard Worker local new_file 195*cfb92d14SAndroid Build Coastguard Worker 196*cfb92d14SAndroid Build Coastguard Worker old_file="$1" 197*cfb92d14SAndroid Build Coastguard Worker new_file="$2" 198*cfb92d14SAndroid Build Coastguard Worker 199*cfb92d14SAndroid Build Coastguard Worker name=$(basename "${old_file}") 200*cfb92d14SAndroid Build Coastguard Worker 201*cfb92d14SAndroid Build Coastguard Worker case "${name}" in 202*cfb92d14SAndroid Build Coastguard Worker lib*) 203*cfb92d14SAndroid Build Coastguard Worker table_report_file="${OT_REPORT_FILE_TABLE}_libs" 204*cfb92d14SAndroid Build Coastguard Worker pr_report_file="${OT_REPORT_FILE_PR}"_libs 205*cfb92d14SAndroid Build Coastguard Worker ;; 206*cfb92d14SAndroid Build Coastguard Worker *) 207*cfb92d14SAndroid Build Coastguard Worker table_report_file="${OT_REPORT_FILE_TABLE}" 208*cfb92d14SAndroid Build Coastguard Worker pr_report_file="${OT_REPORT_FILE_PR}" 209*cfb92d14SAndroid Build Coastguard Worker ;; 210*cfb92d14SAndroid Build Coastguard Worker esac 211*cfb92d14SAndroid Build Coastguard Worker 212*cfb92d14SAndroid Build Coastguard Worker read -r -a size_old <<<"$(size "${old_file}" | awk '{text+=$1} {bss+=$2} {data+=$3} {total+=$4} END {printf "%d %d %d %d", text, bss, data, total}')" 213*cfb92d14SAndroid Build Coastguard Worker read -r -a size_new <<<"$(size "${new_file}" | awk '{text+=$1} {bss+=$2} {data+=$3} {total+=$4} END {printf "%d %d %d %d", text, bss, data, total}')" 214*cfb92d14SAndroid Build Coastguard Worker 215*cfb92d14SAndroid Build Coastguard Worker local -a size_diff 216*cfb92d14SAndroid Build Coastguard Worker 217*cfb92d14SAndroid Build Coastguard Worker for i in 0 1 2 3; do 218*cfb92d14SAndroid Build Coastguard Worker size_diff[$i]="$((size_new["$i"] - size_old["$i"]))" 219*cfb92d14SAndroid Build Coastguard Worker if [[ ${size_diff["$i"]} != 0 ]]; then 220*cfb92d14SAndroid Build Coastguard Worker size_diff["$i"]=$(printf '%+d' "${size_diff["$i"]}") 221*cfb92d14SAndroid Build Coastguard Worker fi 222*cfb92d14SAndroid Build Coastguard Worker done 223*cfb92d14SAndroid Build Coastguard Worker 224*cfb92d14SAndroid Build Coastguard Worker # Generate table format report 225*cfb92d14SAndroid Build Coastguard Worker 226*cfb92d14SAndroid Build Coastguard Worker { 227*cfb92d14SAndroid Build Coastguard Worker printf "| %-26s | %-8s " "${name}" "${OT_SHA_OLD:0:8}" 228*cfb92d14SAndroid Build Coastguard Worker printf "| %8u | %8u | %8u | %8u |" "${size_old[0]}" "${size_old[1]}" "${size_old[2]}" "${size_old[3]}" 229*cfb92d14SAndroid Build Coastguard Worker printf "\n" 230*cfb92d14SAndroid Build Coastguard Worker 231*cfb92d14SAndroid Build Coastguard Worker printf "| %-26s | %-8s " "" "${OT_SHA_NEW:0:8}" 232*cfb92d14SAndroid Build Coastguard Worker printf "| %8u | %8u | %8u | %8u |" "${size_new[0]}" "${size_new[1]}" "${size_new[2]}" "${size_new[3]}" 233*cfb92d14SAndroid Build Coastguard Worker printf "\n" 234*cfb92d14SAndroid Build Coastguard Worker 235*cfb92d14SAndroid Build Coastguard Worker printf "| %-26s | %-8s " "" "+/-" 236*cfb92d14SAndroid Build Coastguard Worker printf "| %+8d | %+8d | %+8d | %+8d |" "${size_diff[0]}" "${size_diff[1]}" "${size_diff[2]}" "${size_diff[3]}" 237*cfb92d14SAndroid Build Coastguard Worker printf "\n" >>"${table_report_file}" 238*cfb92d14SAndroid Build Coastguard Worker 239*cfb92d14SAndroid Build Coastguard Worker printf "+----------------------------+----------+----------+----------+----------+----------+\n" 240*cfb92d14SAndroid Build Coastguard Worker } >>"${table_report_file}" 241*cfb92d14SAndroid Build Coastguard Worker 242*cfb92d14SAndroid Build Coastguard Worker # Generate PR post format report 243*cfb92d14SAndroid Build Coastguard Worker 244*cfb92d14SAndroid Build Coastguard Worker { 245*cfb92d14SAndroid Build Coastguard Worker printf "| %s | %s " "${name}" "${OT_SHA_OLD:0:8}" 246*cfb92d14SAndroid Build Coastguard Worker printf "| %u | %u | %u | %u |" "${size_old[0]}" "${size_old[1]}" "${size_old[2]}" "${size_old[3]}" 247*cfb92d14SAndroid Build Coastguard Worker printf "\n" 248*cfb92d14SAndroid Build Coastguard Worker 249*cfb92d14SAndroid Build Coastguard Worker printf "| | %s " "${OT_SHA_NEW:0:8}" 250*cfb92d14SAndroid Build Coastguard Worker printf "| %u | %u | %u | %u |" "${size_new[0]}" "${size_new[1]}" "${size_new[2]}" "${size_new[3]}" 251*cfb92d14SAndroid Build Coastguard Worker printf "\n" 252*cfb92d14SAndroid Build Coastguard Worker 253*cfb92d14SAndroid Build Coastguard Worker printf "| | %s " "+/-" 254*cfb92d14SAndroid Build Coastguard Worker printf "| %+d | %+d | %+d | %+d |" "${size_diff[0]}" "${size_diff[1]}" "${size_diff[2]}" "${size_diff[3]}" 255*cfb92d14SAndroid Build Coastguard Worker printf "\n" 256*cfb92d14SAndroid Build Coastguard Worker } >>"${pr_report_file}" 257*cfb92d14SAndroid Build Coastguard Worker 258*cfb92d14SAndroid Build Coastguard Worker if [ -n "${OT_REPORTER}" ]; then 259*cfb92d14SAndroid Build Coastguard Worker "${OT_REPORTER}" size "${old_file}" "${new_file}" 260*cfb92d14SAndroid Build Coastguard Worker fi 261*cfb92d14SAndroid Build Coastguard Worker} 262*cfb92d14SAndroid Build Coastguard Worker 263*cfb92d14SAndroid Build Coastguard Workergenerate_report() 264*cfb92d14SAndroid Build Coastguard Worker{ 265*cfb92d14SAndroid Build Coastguard Worker local type="${1}" 266*cfb92d14SAndroid Build Coastguard Worker shift 267*cfb92d14SAndroid Build Coastguard Worker 268*cfb92d14SAndroid Build Coastguard Worker local old_file 269*cfb92d14SAndroid Build Coastguard Worker local new_file 270*cfb92d14SAndroid Build Coastguard Worker 271*cfb92d14SAndroid Build Coastguard Worker for file in "$@"; do 272*cfb92d14SAndroid Build Coastguard Worker case "${file}" in 273*cfb92d14SAndroid Build Coastguard Worker lib*) 274*cfb92d14SAndroid Build Coastguard Worker old_file="${OT_TMP_DIR}"/${type}_old/build/lib/"${file}" 275*cfb92d14SAndroid Build Coastguard Worker new_file="${OT_TMP_DIR}"/${type}_new/build/lib/"${file}" 276*cfb92d14SAndroid Build Coastguard Worker ;; 277*cfb92d14SAndroid Build Coastguard Worker *) 278*cfb92d14SAndroid Build Coastguard Worker old_file="${OT_TMP_DIR}"/${type}_old/build/bin/"${file}" 279*cfb92d14SAndroid Build Coastguard Worker new_file="${OT_TMP_DIR}"/${type}_new/build/bin/"${file}" 280*cfb92d14SAndroid Build Coastguard Worker ;; 281*cfb92d14SAndroid Build Coastguard Worker esac 282*cfb92d14SAndroid Build Coastguard Worker 283*cfb92d14SAndroid Build Coastguard Worker generate_size_diff "${old_file}" "${new_file}" 284*cfb92d14SAndroid Build Coastguard Worker 285*cfb92d14SAndroid Build Coastguard Worker echo "nm_size ${old_file} ${new_file}" 286*cfb92d14SAndroid Build Coastguard Worker nm_size "${old_file}" "${new_file}" 287*cfb92d14SAndroid Build Coastguard Worker done 288*cfb92d14SAndroid Build Coastguard Worker} 289*cfb92d14SAndroid Build Coastguard Worker 290*cfb92d14SAndroid Build Coastguard Workerfinalize_report() 291*cfb92d14SAndroid Build Coastguard Worker{ 292*cfb92d14SAndroid Build Coastguard Worker cat "${OT_REPORT_FILE_TABLE}" 293*cfb92d14SAndroid Build Coastguard Worker cat "${OT_REPORT_FILE_TABLE}_libs" 294*cfb92d14SAndroid Build Coastguard Worker 295*cfb92d14SAndroid Build Coastguard Worker printf "</details>" >>${OT_REPORT_FILE_PR}_libs 296*cfb92d14SAndroid Build Coastguard Worker cat "${OT_REPORT_FILE_PR}_libs" >>${OT_REPORT_FILE_PR} 297*cfb92d14SAndroid Build Coastguard Worker 298*cfb92d14SAndroid Build Coastguard Worker if [ -n "${OT_REPORTER}" ]; then 299*cfb92d14SAndroid Build Coastguard Worker "${OT_REPORTER}" post 300*cfb92d14SAndroid Build Coastguard Worker fi 301*cfb92d14SAndroid Build Coastguard Worker} 302*cfb92d14SAndroid Build Coastguard Worker 303*cfb92d14SAndroid Build Coastguard Workersize_nrf52840() 304*cfb92d14SAndroid Build Coastguard Worker{ 305*cfb92d14SAndroid Build Coastguard Worker export OT_SHA_NEW OT_SHA_OLD 306*cfb92d14SAndroid Build Coastguard Worker 307*cfb92d14SAndroid Build Coastguard Worker rm -rf "${OT_TMP_DIR}" 308*cfb92d14SAndroid Build Coastguard Worker mkdir -p "${OT_TMP_DIR}" 309*cfb92d14SAndroid Build Coastguard Worker 310*cfb92d14SAndroid Build Coastguard Worker if [[ "${GITHUB_ACTIONS+x}" ]]; then 311*cfb92d14SAndroid Build Coastguard Worker git fetch --depth 1 --no-recurse-submodules origin "${OT_SHA_OLD}" 312*cfb92d14SAndroid Build Coastguard Worker fi 313*cfb92d14SAndroid Build Coastguard Worker 314*cfb92d14SAndroid Build Coastguard Worker generate_table_header 315*cfb92d14SAndroid Build Coastguard Worker 316*cfb92d14SAndroid Build Coastguard Worker build_nrf52840 ftd new 317*cfb92d14SAndroid Build Coastguard Worker build_nrf52840 mtd new 318*cfb92d14SAndroid Build Coastguard Worker build_nrf52840 br new 319*cfb92d14SAndroid Build Coastguard Worker 320*cfb92d14SAndroid Build Coastguard Worker build_nrf52840 ftd old 321*cfb92d14SAndroid Build Coastguard Worker build_nrf52840 mtd old 322*cfb92d14SAndroid Build Coastguard Worker build_nrf52840 br old 323*cfb92d14SAndroid Build Coastguard Worker 324*cfb92d14SAndroid Build Coastguard Worker local ftd_files=( 325*cfb92d14SAndroid Build Coastguard Worker "ot-cli-ftd" 326*cfb92d14SAndroid Build Coastguard Worker "ot-ncp-ftd" 327*cfb92d14SAndroid Build Coastguard Worker "libopenthread-ftd.a" 328*cfb92d14SAndroid Build Coastguard Worker "libopenthread-cli-ftd.a" 329*cfb92d14SAndroid Build Coastguard Worker "libopenthread-ncp-ftd.a" 330*cfb92d14SAndroid Build Coastguard Worker ) 331*cfb92d14SAndroid Build Coastguard Worker 332*cfb92d14SAndroid Build Coastguard Worker local mtd_files=( 333*cfb92d14SAndroid Build Coastguard Worker "ot-cli-mtd" 334*cfb92d14SAndroid Build Coastguard Worker "ot-ncp-mtd" 335*cfb92d14SAndroid Build Coastguard Worker "libopenthread-mtd.a" 336*cfb92d14SAndroid Build Coastguard Worker "libopenthread-cli-mtd.a" 337*cfb92d14SAndroid Build Coastguard Worker "libopenthread-ncp-mtd.a" 338*cfb92d14SAndroid Build Coastguard Worker ) 339*cfb92d14SAndroid Build Coastguard Worker 340*cfb92d14SAndroid Build Coastguard Worker local br_files=( 341*cfb92d14SAndroid Build Coastguard Worker "ot-cli-ftd-br" 342*cfb92d14SAndroid Build Coastguard Worker "libopenthread-ftd-br.a" 343*cfb92d14SAndroid Build Coastguard Worker "libopenthread-cli-ftd-br.a" 344*cfb92d14SAndroid Build Coastguard Worker ) 345*cfb92d14SAndroid Build Coastguard Worker 346*cfb92d14SAndroid Build Coastguard Worker # `rcp`` is using same config as `ftd`. 347*cfb92d14SAndroid Build Coastguard Worker local rcp_files=( 348*cfb92d14SAndroid Build Coastguard Worker "ot-rcp" 349*cfb92d14SAndroid Build Coastguard Worker "libopenthread-rcp.a" 350*cfb92d14SAndroid Build Coastguard Worker "libopenthread-radio.a" 351*cfb92d14SAndroid Build Coastguard Worker ) 352*cfb92d14SAndroid Build Coastguard Worker 353*cfb92d14SAndroid Build Coastguard Worker generate_report ftd "${ftd_files[@]}" 354*cfb92d14SAndroid Build Coastguard Worker generate_report mtd "${mtd_files[@]}" 355*cfb92d14SAndroid Build Coastguard Worker generate_report br "${br_files[@]}" 356*cfb92d14SAndroid Build Coastguard Worker generate_report ftd "${rcp_files[@]}" 357*cfb92d14SAndroid Build Coastguard Worker 358*cfb92d14SAndroid Build Coastguard Worker finalize_report 359*cfb92d14SAndroid Build Coastguard Worker} 360*cfb92d14SAndroid Build Coastguard Worker 361*cfb92d14SAndroid Build Coastguard Workermain() 362*cfb92d14SAndroid Build Coastguard Worker{ 363*cfb92d14SAndroid Build Coastguard Worker if [[ $# == 0 ]]; then 364*cfb92d14SAndroid Build Coastguard Worker setup 365*cfb92d14SAndroid Build Coastguard Worker size_nrf52840 366*cfb92d14SAndroid Build Coastguard Worker cd 367*cfb92d14SAndroid Build Coastguard Worker elif [[ $1 == setup ]]; then 368*cfb92d14SAndroid Build Coastguard Worker setup 369*cfb92d14SAndroid Build Coastguard Worker elif [[ $1 == nrf52840 ]]; then 370*cfb92d14SAndroid Build Coastguard Worker size_nrf52840 371*cfb92d14SAndroid Build Coastguard Worker else 372*cfb92d14SAndroid Build Coastguard Worker echo "USAGE: $0 [setup|nrf52840]" 373*cfb92d14SAndroid Build Coastguard Worker exit 128 374*cfb92d14SAndroid Build Coastguard Worker fi 375*cfb92d14SAndroid Build Coastguard Worker} 376*cfb92d14SAndroid Build Coastguard Worker 377*cfb92d14SAndroid Build Coastguard Workermain "$@" 378