#!/bin/bash

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

# Build agnostic variables
readonly LOCAL_PATH=external/nss

if [ ! -d "${LOCAL_PATH}" ]; then
  echo "Must be run from Eureka root"
  exit 1
fi

export CURDIR=${PWD}

export NSS_SRC_TAR_GZ=${LOCAL_PATH}/nss-3.41-with-nspr-4.20.tar.gz
export NSS_TOP_DIR=nss-3.41

readonly GENERIC_CFLAGS="\
  -Wa,--noexecstack \
  -Werror=format-security \
  -fno-short-enums \
  -D_FORTIFY_SOURCE=2 \
  -fPIC \
  -Wno-psabi \
  -Wall \
  -Wno-unused \
  -Winit-self \
  -Wpointer-arith \
  -Werror=return-type \
  -Werror=non-virtual-dtor \
  -Werror=address \
  -Werror=sequence-point \
  -fgcse-after-reload \
  -frerun-cse-after-loop \
  -frename-registers \
  -fomit-frame-pointer \
  -fstrict-aliasing"

export TARGET_LDFLAGS="\
  -static-libstdc++ \
  -static-libgcc \
  -Wl,-z,noexecstack \
  -Wl,-z,relro,-z,now \
  -Wl,--hash-style=both \
  -ldl \
  -lc \
  -lrt \
  -lpthread"


# Set build specific variables and execute build script
build_nss() {
  DEVICE_TYPE=$1
  export TARGET_ARCH=$2
  SYSROOT_SOURCE=$3
  export TARGET_CC=$4
  export TARGET_AR=$5

  local PREBUILT_DIR=${LOCAL_PATH}/prebuilt/${TARGET_ARCH}

  export TARGET_CFLAGS="${GENERIC_CFLAGS} $6"
  export TARGET_OUT=${LOCAL_PATH}/out/${DEVICE_TYPE}
  export HOST_OUT=${LOCAL_PATH}/out/host
  TARGET_SYSROOT=${TARGET_OUT}/build_sysroot
  export INSTALL_SYSROOT=${PREBUILT_DIR}/${DEVICE_TYPE}/files

  mkdir -p ${HOST_OUT} ${TARGET_SYSROOT}

  # Install the sysroot
  rsync -a ${SYSROOT_SOURCE}/ ${TARGET_SYSROOT} --delete-excluded

  # Update the sysroot
  rsync -a ${PREBUILT_DIR}/${DEVICE_TYPE}/sysroot/ ${TARGET_SYSROOT}

  ${LOCAL_PATH}/build.sh
}

readonly armv7a_sysroot=prebuilt/toolchain/armv7a/usr/armv7a-cros-linux-gnueabi
readonly armv7a_CC=prebuilt/toolchain/armv7a/bin/armv7a-cros-linux-gnueabi-gcc
readonly armv7a_AR=prebuilt/toolchain/armv7a/bin/armv7a-cros-linux-gnueabi-ar
readonly armv7a_ARCH=arm
readonly armv7a_CFLAGS=${GENERIC_CFLAGS}

readonly aarch64_sysroot=prebuilt/toolchain/aarch64/usr/aarch64-cros-linux-gnu
readonly aarch64_CC=prebuilt/toolchain/aarch64/bin/aarch64-cros-linux-gnu-gcc
readonly aarch64_AR=prebuilt/toolchain/aarch64/bin/aarch64-cros-linux-gnu-ar
readonly aarch64_ARCH=arm64
readonly aarch64_CFLAGS="${GENERIC_CFLAGS} -march=armv8-a -Wno-overflow -Wno-missing-braces -DNSS_USE_64 -DUSE_64 -fuse-ld=gold"

build_nss armv7-a-neon arm ${armv7a_sysroot} ${armv7a_CC} ${armv7a_AR} \
  "${armv7a_CFLAGS} -mfpu=neon"

build_nss armv7-a arm ${armv7a_sysroot} ${armv7a_CC} ${armv7a_AR} \
  ${armv7a_CFLAGS}

build_nss armv8-a-neon arm ${armv7a_sysroot} ${armv7a_CC} ${armv7a_AR} \
  "${armv7a_CFLAGS} -march=armv8-a -mfpu=crypto-neon-fp-armv8"

build_nss armv8-a-neon arm64 ${aarch64_sysroot} ${aarch64_CC} ${aarch64_AR} \
  "${aarch64_CFLAGS} "

# Skip the vendor portion. As of right now. There are no vendors needing NSS
# prebuilts.
exit

# Some vendors build nss with custom toolchains. Find scripts in the vendor
# directories named update_nss_prebuilts.sh and run them to update the prebuilt
# binaries. Note that the resulting binaries may end up in a vendor project.
# Please do not forget to submit the updated binaries to git.
for vendor_script in `find vendor/ -name update_nss_prebuilts.sh`; do
  echo "Running ${vendor_script}";
  $vendor_script;
done;
