#!/bin/bash
#
#  Copyright (c) 2019, The OpenThread Authors.
#  All rights reserved.
#
#  Redistribution and use in source and binary forms, with or without
#  modification, are permitted provided that the following conditions are met:
#  1. Redistributions of source code must retain the above copyright
#     notice, this list of conditions and the following disclaimer.
#  2. Redistributions in binary form must reproduce the above copyright
#     notice, this list of conditions and the following disclaimer in the
#     documentation and/or other materials provided with the distribution.
#  3. Neither the name of the copyright holder nor the
#     names of its contributors may be used to endorse or promote products
#     derived from this software without specific prior written permission.
#
#  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
#  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
#  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
#  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
#  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
#  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
#  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
#  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
#  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
#  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
#  POSSIBILITY OF SUCH DAMAGE.
#

set -euo pipefail

readonly OT_TMP_DIR=/tmp/ot-size-report
readonly OT_SHA_NEW=${GITHUB_SHA:-$(git rev-parse HEAD)}
readonly OT_SHA_OLD="$(git cat-file -p "${OT_SHA_NEW}" | grep 'parent ' | head -n1 | cut -d' ' -f2)"
readonly OT_REPORT_FILE=/tmp/size_report

setup_arm_gcc_7()
{
    if arm-none-eabi-gcc --version | grep -q 'Arm Embedded Processors 7'; then
        return 0
    fi

    (cd /tmp/ \
        && 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 \
        && tar xjf gcc-arm-none-eabi-7-2018-q2-update-linux.tar.bz2)
    export PATH=/tmp/gcc-arm-none-eabi-7-2018-q2-update/bin:$PATH

    arm-none-eabi-gcc --version
}

setup_ninja_build()
{
    sudo apt-get --no-install-recommends install -y ninja-build
}

setup()
{
    setup_arm_gcc_7
    setup_ninja_build
}

markdown_init()
{
    echo '|  name  |  branch  |  text  | data  | bss  | total |'
    echo '| :----: | :------: | -----: | ----: | ---: | ----: |'
}

markdown_size()
{
    local name
    name=$(basename "$1")

    read -r -a size_old <<<"$(size "$1" | awk '{text+=$1} {bss+=$2} {data+=$3} {total+=$4} END {printf "%d %d %d %d", text, bss, data, total}')"
    read -r -a size_new <<<"$(size "$2" | awk '{text+=$1} {bss+=$2} {data+=$3} {total+=$4} END {printf "%d %d %d %d", text, bss, data, total}')"

    local -a size_diff

    for i in 0 1 2 3; do
        size_diff[$i]="$((size_new["$i"] - size_old["$i"]))"
        if [[ ${size_diff["$i"]} != 0 ]]; then
            size_diff["$i"]=$(printf '%+d' "${size_diff["$i"]}")
        fi
    done

    echo "| ${name} | -${OT_SHA_OLD:0:7} | ${size_old[0]} | ${size_old[1]} | ${size_old[2]} | ${size_old[3]} |"
    echo "|  | +${OT_SHA_NEW:0:7} | ${size_new[0]} | ${size_new[1]} | ${size_new[2]} | ${size_new[3]} |"
    echo "|  | +/- | ${size_diff[0]} | ${size_diff[1]} | ${size_diff[2]} | ${size_diff[3]} |"
}

markdown()
{
    case "$1" in
        init)
            shift
            markdown_init "$@" >"${OT_REPORT_FILE}"
            ;;
        size)
            shift
            markdown_size "$@" >>"${OT_REPORT_FILE}"
            ;;
        post)
            mdv "${OT_REPORT_FILE}"
            ;;
    esac
}

nm_size()
{
    arm-none-eabi-nm --print-size --defined-only -C "$1" | cut -d' ' -f2- >nmsize_old
    arm-none-eabi-nm --print-size --defined-only -C "$2" | cut -d' ' -f2- >nmsize_new
    diff -Nuar nmsize_old nmsize_new || true
}

size_nrf52840_version()
{
    local options=(
        "-DOT_ANYCAST_LOCATOR=ON"
        "-DOT_BORDER_AGENT=ON"
        "-DOT_BORDER_ROUTER=ON"
        "-DOT_CHANNEL_MANAGER=ON"
        "-DOT_CHANNEL_MONITOR=ON"
        "-DOT_CHILD_SUPERVISION=ON"
        "-DOT_COAP=ON"
        "-DOT_COAPS=ON"
        "-DOT_COMMISSIONER=ON"
        "-DOT_DATASET_UPDATER=ON"
        "-DOT_DHCP6_CLIENT=ON"
        "-DOT_DHCP6_SERVER=ON"
        "-DOT_DIAGNOSTIC=ON"
        "-DOT_DNSSD_SERVER=ON"
        "-DOT_DNS_CLIENT=ON"
        "-DOT_ECDSA=ON"
        "-DOT_FULL_LOGS=ON"
        "-DOT_JAM_DETECTION=ON"
        "-DOT_JOINER=ON"
        "-DOT_LINK_RAW=ON"
        "-DOT_MAC_FILTER=ON"
        "-DOT_MESSAGE_USE_HEAP=ON"
        "-DOT_MTD_NETDIAG=ON"
        "-DOT_NETDATA_PUBLISHER=ON"
        "-DOT_PING_SENDER=ON"
        "-DOT_SERVICE=ON"
        "-DOT_SLAAC=ON"
        "-DOT_SNTP_CLIENT=ON"
        "-DOT_SRP_CLIENT=ON"
        "-DOT_SRP_SERVER=ON"
        "-DOT_TIME_SYNC=ON"
        "-DOT_UDP_FORWARD=ON"
        "-DOT_UPTIME=ON"
    )

    local thread_version=$1

    if [[ ${thread_version} == "1.2" ]]; then
        options+=(
            "-DOT_THREAD_VERSION=1.2"
            "-DOT_BACKBONE_ROUTER=ON"
            "-DOT_DUA=ON"
            "-DOT_MLR=ON"
            "-DOT_CSL_RECEIVER=ON"
            "-DOT_LINK_METRICS_INITIATOR=ON"
            "-DOT_LINK_METRICS_SUBJECT=ON"
        )
    fi

    rm -rf "${OT_TMP_DIR}"

    local build_dir="build"

    # new commit
    mkdir -p "${OT_TMP_DIR}/b"
    script/git-tool clone https://github.com/openthread/ot-nrf528xx.git "${OT_TMP_DIR}/b"
    rm -rf "${OT_TMP_DIR}/b/openthread/*" # replace openthread submodule with latest commit
    git archive "${OT_SHA_NEW}" | tar x -C "${OT_TMP_DIR}/b/openthread"

    (cd "${OT_TMP_DIR}/b" \
        && OT_CMAKE_BUILD_DIR=${build_dir} script/build nrf52840 UART_trans "${options[@]}")

    # old commit
    if [[ "${GITHUB_ACTIONS+x}" ]]; then
        git fetch --depth 1 --no-recurse-submodules origin "${OT_SHA_OLD}"
    fi

    mkdir -p "${OT_TMP_DIR}/a"
    git clone https://github.com/openthread/ot-nrf528xx.git "${OT_TMP_DIR}/a"
    rm -rf "${OT_TMP_DIR}/a/openthread/*" # replace openthread submodule with last commit
    git archive "${OT_SHA_OLD}" | tar x -C "${OT_TMP_DIR}/a/openthread"

    (cd "${OT_TMP_DIR}/a" \
        && OT_CMAKE_BUILD_DIR=${build_dir} script/build nrf52840 UART_trans "${options[@]}")

    # rename the generated files to be ready for size-report
    # shellcheck disable=SC2011
    (
        cd "${OT_TMP_DIR}"/a/"${build_dir}"/bin
        ls | xargs -I{} mv {} {}_"${thread_version}"
        cd "${OT_TMP_DIR}"/b/"${build_dir}"/bin
        ls | xargs -I{} mv {} {}_"${thread_version}"

        cd "${OT_TMP_DIR}"/a/"${build_dir}"/lib
        ls ./*.a | xargs -I{} mv {} {}_"${thread_version}"
        cd "${OT_TMP_DIR}"/b/"${build_dir}"/lib
        ls ./*.a | xargs -I{} mv {} {}_"${thread_version}"
    )

    local bins=(
        "ot-cli-ftd"
        "ot-cli-mtd"
        "ot-ncp-ftd"
        "ot-ncp-mtd"
        "ot-rcp"
    )

    local libs=(
        "libopenthread-cli-ftd.a"
        "libopenthread-cli-mtd.a"
        "libopenthread-ftd.a"
        "libopenthread-mtd.a"
        "libopenthread-ncp-ftd.a"
        "libopenthread-ncp-mtd.a"
        "libopenthread-rcp.a"
        "libopenthread-radio.a"
    )

    for file in "${bins[@]}"; do
        "${reporter}" size "${OT_TMP_DIR}"/a/"${build_dir}"/bin/"${file}"_"${thread_version}" "${OT_TMP_DIR}"/b/"${build_dir}"/bin/"${file}"_"${thread_version}"
        echo nm_size "${OT_TMP_DIR}"/a/"${build_dir}"/bin/"${file}"_"${thread_version}" "${OT_TMP_DIR}"/b/"${build_dir}"/bin/"${file}"_"${thread_version}"
        nm_size "${OT_TMP_DIR}"/a/"${build_dir}"/bin/"${file}"_"${thread_version}" "${OT_TMP_DIR}"/b/"${build_dir}"/bin/"${file}"_"${thread_version}"
    done

    for file in "${libs[@]}"; do
        "${reporter}" size "${OT_TMP_DIR}"/a/"${build_dir}"/lib/"${file}"_"${thread_version}" "${OT_TMP_DIR}"/b/"${build_dir}"/lib/"${file}"_"${thread_version}"
        echo nm_size "${OT_TMP_DIR}"/a/"${build_dir}"/lib/"${file}"_"${thread_version}" "${OT_TMP_DIR}"/b/"${build_dir}"/lib/"${file}"_"${thread_version}"
        nm_size "${OT_TMP_DIR}"/a/"${build_dir}"/lib/"${file}"_"${thread_version}" "${OT_TMP_DIR}"/b/"${build_dir}"/lib/"${file}"_"${thread_version}"
    done
}

size_nrf52840()
{
    export OT_SHA_NEW OT_SHA_OLD

    local reporter="${OT_SIZE_REPORTER:-markdown}"
    "${reporter}" init OpenThread

    size_nrf52840_version 1.1
    size_nrf52840_version 1.2

    "${reporter}" post
}

main()
{
    if [[ $# == 0 ]]; then
        setup
        size_nrf52840
    elif [[ $1 == setup ]]; then
        setup
    elif [[ $1 == nrf52840 ]]; then
        size_nrf52840
    else
        echo "USAGE: $0 [setup|nrf52840]"
        exit 128
    fi
}

main "$@"
