#!/bin/bash

SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"

set -o errtrace
trap 'echo Fatal error: script $0 aborting at line $LINENO, command \"$BASH_COMMAND\" returned $?; exit 1' ERR

snapshot="2023.11.13.020100"

snapshot_year=`echo $snapshot | cut -d . -f 1`
snapshot_month=`echo $snapshot | cut -d . -f 2`
snapshot_day=`echo $snapshot | cut -d . -f 3`
snapshot_time=`echo $snapshot | cut -d . -f 4`
glibc_version=2.35-r25

# Upgrade CrOS toolchain to ${snapshot}

function build_toolchain_arm_none_eabi {
  pushd ${SCRIPT_DIR}
  rm -rf arm

  newlib_version=4.1.0-r6

  # 1. Obtain {toolchain,glibc} prebuilts from Chrome OS.
  gsutil.py cp gs://chromiumos-sdk/${snapshot_year}/${snapshot_month}/arm-none-eabi-${snapshot}.tar.xz .
  gsutil.py cp gs://chromeos-prebuilt/host/amd64/amd64-host/chroot-${snapshot}/packages/cross-arm-none-eabi/newlib-${newlib_version}.tbz2 .

  # 2. Extract downloaded toolchain (overwrite armv7a contents)
  rm -rf arm
  mkdir arm
  tar -C arm -xf arm-none-eabi-${snapshot}.tar.xz
  tar -C arm -I'zstd -f' -xf newlib-${newlib_version}.tbz2
  rm arm-none-eabi-${snapshot}.tar.xz newlib-${newlib_version}.tbz2

  # 3. Make copies of libgcc_s.so.1 to fit with chromecast build system.

  cp arm/lib/libgcc_s.so.1 arm/usr/arm-none-eabi/lib/

  # 4. Add NOTICE files.
  curl -L https://www.gnu.org/licenses/lgpl-2.1.txt > arm/usr/arm-none-eabi/NOTICE-eglibc
  curl -L https://gnu.org/licenses/gpl-3.0.txt > arm/usr/arm-none-eabi/NOTICE-gdb

  # 6. Customize default linker to be bfd, not gold.
  sed -i -e "s/-gold//g" arm/bin/arm-none-eabi-ld

  popd # ${SCRIPT_DIR}
}

# Upgrade CrOS toolchain to GCC 10.2.0 ${snapshot}

function build_toolchain {
  pushd ${SCRIPT_DIR}

  local readonly arch=${1}
  local readonly abi=${2}

  rm -rf ${arch}

  # 1. Obtain {toolchain,glibc} prebuilts from Chrome OS.
  gsutil.py cp gs://chromiumos-sdk/${snapshot_year}/${snapshot_month}/${arch}-cros-linux-${abi}-${snapshot}.tar.xz .
  gsutil.py cp gs://chromeos-prebuilt/host/amd64/amd64-host/chroot-${snapshot}/packages/cross-${arch}-cros-linux-${abi}/glibc-${glibc_version}.tbz2 .

  # 2. Extract downloaded toolchain (overwrite armv7a contents)
  rm -rf ${arch}
  mkdir ${arch}
  tar -C ${arch} -xf ${arch}-cros-linux-${abi}-${snapshot}.tar.xz
  tar -C ${arch} -I'zstd -f' -xf glibc-${glibc_version}.tbz2
  rm ${arch}-cros-linux-${abi}-${snapshot}.tar.xz glibc-${glibc_version}.tbz2

  # 3. Make copies of libgcc_s.so.1 to fit with chromecast build system.
  cp ${arch}/usr/lib/gcc/${arch}-cros-linux-${abi}/10.2.0/libgcc_s.so.1 ${arch}/usr/${arch}-cros-linux-${abi}/lib/

  # 4. Add NOTICE files.
  curl -L https://www.gnu.org/licenses/lgpl-2.1.txt > ${arch}/usr/${arch}-cros-linux-${abi}/NOTICE-eglibc
  curl -L https://gnu.org/licenses/gpl-3.0.txt > ${arch}/usr/${arch}-cros-linux-${abi}/NOTICE-gdb

  # 8. Apply our patches
  # Remove any empty folders created by unzipping the toolchains that are not
  # checked into git. Those can be problematic when applying patches.
  find . -type d -empty -delete
  pushd ${arch}
  patch -p1 < ${SCRIPT_DIR}/patches/eureka.patch
  popd
  if [ -f ${SCRIPT_DIR}/patches/${arch}.patch ]; then
    patch -p1 < ${SCRIPT_DIR}/patches/${arch}.patch
  fi

  popd # ${SCRIPT_DIR}
}

build_toolchain armv7a gnueabihf
build_toolchain aarch64 gnu
build_toolchain x86_64 gnu
build_toolchain_arm_none_eabi
