#!/bin/sh

set -e

# This Script Assumes An x86_64 Host
if [ "$(uname -m)" != "x86_64" ]; then
    echo 'Invalid Build Architecture'
    exit 1
fi

# Add ARM Repository
if [ ! -z "${ARM_PACKAGES_SUPPORTED}" ]; then
    sudo dpkg --add-architecture armhf
    sudo dpkg --add-architecture arm64
fi

# Update APT
sudo apt-get update
sudo apt-get dist-upgrade -y

# Install Everything In One Go
PKG_QUEUE=''
queue_pkg() {
    PKG_QUEUE="${PKG_QUEUE} $@"
}

# Build Tools
queue_pkg \
    git \
    cmake \
    ninja-build \
    crossbuild-essential-armhf \
    gcc g++ \
    nodejs

# Dependencies
queue_pkg \
    libfreeimage3 libfreeimage-dev \
    libopenal-dev \
    qemu-user \
    patchelf

# GLFW Dependencies
queue_pkg \
    libwayland-dev \
    libxkbcommon-dev \
    wayland-protocols \
    libx11-dev \
    libxcursor-dev \
    libxi-dev \
    libxinerama-dev \
    libxrandr-dev \
    libxext-dev

# Zenity Dependencies
queue_pkg \
    libgtk-3-dev \
    libglib2.0-dev

# ARM Packages
if [ ! -z "${ARM_PACKAGES_SUPPORTED}" ]; then
    # Build Tools
    queue_pkg \
        crossbuild-essential-arm64

    # Dependencies
    queue_pkg \
        libfreeimage3:armhf libfreeimage3:arm64 \
        libopenal-dev:armhf libopenal-dev:arm64

    # GLFW Dependencies
    queue_pkg \
        libwayland-dev:armhf libwayland-dev:arm64 \
        libxkbcommon-dev:armhf libxkbcommon-dev:arm64 \
        libx11-dev:armhf libx11-dev:arm64 \
        libxcursor-dev:armhf libxcursor-dev:arm64 \
        libxi-dev:armhf libxi-dev:arm64 \
        libxinerama-dev:armhf libxinerama-dev:arm64 \
        libxrandr-dev:armhf libxrandr-dev:arm64 \
        libxext-dev:armhf libxext-dev:arm64

    # Zenity Dependencies
    queue_pkg \
        libgtk-3-dev:armhf libgtk-3-dev:arm64 \
        libglib2.0-dev:armhf libglib2.0-dev:arm64
fi

# Install appimagetool & appimage-builder Dependencies
queue_pkg \
    python3-pip \
    python3-setuptools \
    python3-wheel \
    patchelf \
    desktop-file-utils \
    libgdk-pixbuf2.0-dev \
    fakeroot \
    strace \
    fuse \
    gtk-update-icon-cache \
    shared-mime-info \
    sed

# Install Queue
sudo apt-get install --no-install-recommends -y ${PKG_QUEUE}

# Download appimagetool
sudo mkdir -p /opt
sudo wget https://github.com/AppImage/AppImageKit/releases/download/continuous/appimagetool-x86_64.AppImage -O /opt/appimagetool
sudo chmod +x /opt/appimagetool
# Workaround AppImage Issues With Docker
cd /opt
sudo sed -i '0,/AI\x02/{s|AI\x02|\x00\x00\x00|}' ./appimagetool
sudo rm -rf /opt/squashfs-root /opt/appimagetool.AppDir
sudo ./appimagetool --appimage-extract
sudo rm -f ./appimagetool
sudo mv /opt/squashfs-root /opt/appimagetool.AppDir
sudo rm -f /usr/local/bin/appimagetool
sudo ln -s /opt/appimagetool.AppDir/AppRun /usr/local/bin/appimagetool

# Install appimage-builder
sudo pip3 install 'git+https://github.com/AppImageCrafters/appimage-builder.git'