#!/bin/sh
# SPDX-License-Identifier: BSD-3-Clause
# shellcheck disable=SC3043

set -e

die()
{
    # shellcheck disable=SC2059
    >&2 printf "$@"
    exit 1
}

fix_dir()
{
    local bd="$1"

    test -d "$bd"/build-sof-staging ||
        die 'No %s/build-sof-staging directory\n' "$bd"

    # config files have absolute paths
    find "$bd" \( -name 'config.gz' -o -name 'westconfig.ini' \) -exec rm '{}' \;

    # In case of a compression timestamp. Also gives better messages.
    find "$bd" -name '*.gz' -print0 | xargs -r -0 gunzip

    ( set -x

      # Native binaries
      rm -f "$bd"/build-sof-staging/tools/sof-logger*
      # Python and other scripts
      dos2unix "$bd"/build-sof-staging/tools/* || true

      # signature salt
      find "$bd" -name '*.ri' -exec rm '{}' \;

      # debug symbols
      find "$bd" -name main.mod   -exec rm '{}' \;
      find "$bd" -name zephyr.elf -exec rm '{}' \;

      # Unlike zephyr.lst, zephyr.map includes some debug information which is
      # as usual full of absolute paths, e.g.:
      #  /opt/toolchains/zephyr-sdk-0.15.2/xtensa-intel_s1000_..../libgcc.a(_divsf3.o)
      # Delete non-reproducible information inside zephyr.map.
      find "$bd" -name zephyr.map -exec sed -i'' -e \
        's#[^[:blank:]]*zephyr-sdk-[^/]*/xtensa#ZSDK/xtensa#; s#\\#/#g; /^ \.debug_/ d' \
        '{}' \;

      # The above search/replace normalizes MOST but unfortunately not
      # all the debug information! So let's delete zephyr.map after all :-(
      # Comparing "almost normalized" zephyr.map files can be very
      # useful to root cause differences: comment out this line in your
      # local workspace.
      find "$bd" -name zephyr.map -exec rm '{}' \;

      find "$bd" -name 'compile_commands.json' -exec rm '{}' \;
    )

}

main()
{
    for d in "$@"; do
        fix_dir "$d"
    done
}


main "$@"
