#!/bin/bash

set -e

# Packages - Build Environment
declare -a BUILD_PACKAGES=(
  "ccache"
  "cmake"
  "g++-10-multilib"
)

declare -a GCC_PACKAGES=(
  # Nothing Unique Needed
)

declare -a CLANG_PACKAGES=(
  "clang-format"
  "clang-tidy"
  "clang-tools"
  "clang"
  "clangd"
  "libc++-dev"
  "libc++1"
  "libc++abi-dev"
  "libc++abi1"
  "libclang-dev"
  "libclang1"
  "liblldb-dev"
  "libllvm-ocaml-dev"
  "libomp-dev"
  "libomp5"
  "lld"
  "lldb"
  "llvm-dev"
  "llvm-runtime"
  "llvm"
  "python-clang"
)

# Packages - PCSX2
declare -a PCSX2_PACKAGES=(
  "libaio-dev"
  "libasound2-dev"
  "libcairo2-dev"
  "libegl-dev"
  "libegl1-mesa-dev"
  "libgdk-pixbuf2.0-dev"
  "libgirepository-1.0-1"
  "libgl-dev"
  "libgl1-mesa-dev"
  "libgl1-mesa-dri"
  "libgl1"
  "libgles-dev"
  "libgles-dev"
  "libgles2-mesa-dev"
  "libglib2.0-dev"
  "libglu1-mesa-dev"
  "libglu1-mesa"
  "libglvnd-dev"
  "libglx-dev"
  "libglx-mesa0"
  "libglx0"
  "libgtk-3-dev"
  "libgtk2.0-dev"
  "libharfbuzz-dev"
  "libllvm10"
  "liblzma-dev"
  "libpango1.0-dev"
  "libpcap0.8-dev"
  "libpulse-dev"
  "libsdl2-dev"
  "libsamplerate0-dev"
  "libsoundtouch-dev"
  "libwxgtk3.0-gtk3-0v5"
  "libwxgtk3.0-gtk3-dev"
  "libx11-xcb-dev"
  "libxext-dev"
  "libxft-dev"
  "libxml2-dev"
  "portaudio19-dev"
  "zlib1g-dev"
)

# - https://github.com/actions/virtual-environments/blob/main/images/linux/Ubuntu2004-README.md
ARCH=""
echo "${PLATFORM}"
if [ "${PLATFORM}" == "x86" ]; then
  ARCH=":i386"
  sudo dpkg --add-architecture i386
fi

sudo apt-get -qq update

# Install packages needed for building
BUILD_PACKAGE_STR=""
for i in "${BUILD_PACKAGES[@]}"; do
  BUILD_PACKAGE_STR="${BUILD_PACKAGE_STR} ${i}"
done

if [ "${COMPILER}" = "gcc" ]; then
  for i in "${GCC_PACKAGES[@]}"; do
    BUILD_PACKAGE_STR="${BUILD_PACKAGE_STR} ${i}"
  done
else
  for i in "${CLANG_PACKAGES[@]}"; do
    BUILD_PACKAGE_STR="${BUILD_PACKAGE_STR} ${i}"
  done
fi

echo "Will install the following packages for building - ${BUILD_PACKAGE_STR}"
sudo apt remove gcc-9 g++-9
sudo apt-get -y install ${BUILD_PACKAGE_STR}

sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-10 10
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-10 10
sudo update-alternatives --install /usr/bin/cc cc /usr/bin/gcc 30
sudo update-alternatives --install /usr/bin/c++ c++ /usr/bin/g++ 30

# Install packages needed by pcsx2
PCSX2_PACKAGES_STR=""
for i in "${PCSX2_PACKAGES[@]}"; do
  PCSX2_PACKAGES_STR="${PCSX2_PACKAGES_STR} ${i}${ARCH}"
done
if [ "${PLATFORM}" == "x86" ]; then
echo "Installing workaround attempt"
sudo apt-get -y install libgcc-s1:i386
fi
echo "Will install the following packages for pcsx2 - ${PCSX2_PACKAGES_STR}"
sudo apt-get -y install ${PCSX2_PACKAGES_STR}