#!/bin/sh

set -ex

# Install cppcheck
wget -q https://github.com/danmar/cppcheck/archive/refs/tags/2.7.tar.gz -O /tmp/cppcheck.tar.gz
tar -xf /tmp/cppcheck.tar.gz -C /opt
(cd /opt/cppcheck-*; make FILESDIR=/opt/cppcheck-2.7/cfg; make FILESDIR=/opt/cppcheck-2.7/cfg install; make clean)

# Install PlantUML
curl --connect-timeout 5 --retry 5 --create-dirs -fsSLo ${PLANTUML_JAR_PATH} \
  https://repo1.maven.org/maven2/net/sourceforge/plantuml/plantuml/1.2019.6/plantuml-1.2019.6.jar
cat << EOF > /usr/bin/plantuml
#!/bin/sh
/usr/bin/java -jar ${PLANTUML_JAR_PATH} \${@}
EOF
chmod 0755 /usr/bin/plantuml

# Install CMake
curl --connect-timeout 5 --retry 5 --create-dirs -fsSLo /tmp/cmake-Linux-x86_64.tar.gz \
  https://github.com/Kitware/CMake/releases/download/v3.15.7/cmake-3.15.7-Linux-x86_64.tar.gz
tar -xf /tmp/cmake-Linux-x86_64.tar.gz -C ${TOOLS_DIR} --strip-components=1

# Install Arm GCC toolchain (arm-none-eabi GNU-A)
curl --connect-timeout 15 --retry 5 --create-dirs -fsSLo /tmp/gcc-arm-x86_64-arm-none-eabi.tar.xz \
  https://developer.arm.com/-/media/Files/downloads/gnu/12.3.Rel1/binrel/arm-gnu-toolchain-12.3.rel1-x86_64-arm-none-eabi.tar.xz
tar -Jxf /tmp/gcc-arm-x86_64-arm-none-eabi.tar.xz -C ${TOOLS_DIR} --strip-components=1

# Install Arm GCC toolchain (arm-none-eabi GNU-RM)
curl --connect-timeout 15 --retry 5 --create-dirs -fsSLo /tmp/gcc-arm-x86_64-arm-none-eabi.tar.bz2 \
  https://developer.arm.com/-/media/Files/downloads/gnu-rm/10-2020q4/gcc-arm-none-eabi-10-2020-q4-major-x86_64-linux.tar.bz2
mkdir -p ${TOOLS_DIR}/gnu-rm
tar xjf /tmp/gcc-arm-x86_64-arm-none-eabi.tar.bz2 -C ${TOOLS_DIR}/gnu-rm --strip-components=1

# Install Arm GCC toolchain (aarch64-none-elf)
curl --connect-timeout 15 --retry 5 --create-dirs -fsSLo /tmp/gcc-arm-x86_64-aarch64-none-elf.tar.xz \
  https://developer.arm.com/-/media/Files/downloads/gnu/12.3.Rel1/binrel/arm-gnu-toolchain-12.3.rel1-x86_64-aarch64-none-elf.tar.xz
tar -Jxf /tmp/gcc-arm-x86_64-aarch64-none-elf.tar.xz -C ${TOOLS_DIR} --strip-components=1

# Install Linaro GCC 6.2.1 toolchain (aarch64-none-elf), which is required by some platforms, i.e. marvell
# NOTE: Toolchain is not available through PATH so to use it, CROSS_COMPILE should point to
# CROSS_COMPILE=${TOOLS_DIR}/gcc-linaro-6.2.1-2016.11-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-
curl --connect-timeout 5 --retry 5 --create-dirs -fsSLo /tmp/gcc-linaro-x86_64_aarch64-linux-gnu.tar.xz \
  https://releases.linaro.org/components/toolchain/binaries/6.2-2016.11/aarch64-linux-gnu/gcc-linaro-6.2.1-2016.11-x86_64_aarch64-linux-gnu.tar.xz
tar -Jxf /tmp/gcc-linaro-x86_64_aarch64-linux-gnu.tar.xz -C ${TOOLS_DIR}

# Install Arm Clang 6.18 toolchain (armclang)
mkdir -p /tmp/armclang-6.18
tar -xf /tmp/ARMCompiler6.18_standalone_linux-x86_64.tar.gz -C /tmp/armclang-6.18
/tmp/armclang-6.18/install_x86_64.sh --no-interactive --i-agree-to-the-contained-eula -d ${TOOLS_DIR}/armclang-6.18

# Install package for "clang" binary. Mainline image switched to downloading
# newer Clang tarball and relies on "clang" from it, but for LTS, we need
# Ubuntu package.
apt install -q=2 --yes --no-install-recommends clang

# Additional binaries required
mkdir -p nfs/downloads/linaro/20.01
cd nfs/downloads/linaro/20.01
wget -q -c -m -A .zip -np -nd https://releases.linaro.org/members/arm/platforms/20.01/
rm -f fvp*-android-*.zip sg*.zip
for file in *.zip; do
  unzip -q ${file} -d $(basename ${file} .zip)
done
rm -f *.zip

# Install OpenSSL 3.0
OPENSSL_VER="3.0.7"
OPENSSL_DIRNAME="openssl-${OPENSSL_VER}"
OPENSSL_FILENAME="openssl-${OPENSSL_VER}"
OPENSSL_CHECKSUM="83049d042a260e696f62406ac5c08bf706fd84383f945cf21bd61e9ed95c396e"
curl --connect-timeout 5 --retry 5 --create-dirs -fsSLo /tmp/${OPENSSL_FILENAME}.tar.gz \
  https://www.openssl.org/source/${OPENSSL_FILENAME}.tar.gz
echo "${OPENSSL_CHECKSUM}  /tmp/${OPENSSL_FILENAME}.tar.gz" | sha256sum -c
mkdir -p ${TOOLS_DIR}/${OPENSSL_DIRNAME} && tar -xzf /tmp/${OPENSSL_FILENAME}.tar.gz -C ${TOOLS_DIR}/${OPENSSL_DIRNAME} --strip-components=1
cd ${TOOLS_DIR}/${OPENSSL_DIRNAME}
./Configure --libdir=lib --prefix=/usr --api=1.0.1
cd ${TOOLS_DIR}
make -C ${TOOLS_DIR}/${OPENSSL_DIRNAME}
make -C ${TOOLS_DIR}/${OPENSSL_DIRNAME} install
