#
# Docker all cross-compiler target (tests only)
#
# While the normal cross builds take care to setup proper multiarch
# build environments which can cross build QEMU this just installs the
# basic compilers for as many targets as possible. We shall use this
# to build and run linux-user tests on GitLab
#
FROM docker.io/library/debian:11-slim

# Duplicate deb line as deb-src
RUN cat /etc/apt/sources.list | sed "s/^deb\ /deb-src /" >> /etc/apt/sources.list

RUN export DEBIAN_FRONTEND=noninteractive && \
    apt-get update && \
    apt-get install -y eatmydata && \
    eatmydata apt-get dist-upgrade -y && \
    apt build-dep -yy qemu

# Add extra build tools and as many cross compilers as we can for testing
RUN DEBIAN_FRONTEND=noninteractive eatmydata \
        apt install -y --no-install-recommends \
        bison \
        ccache \
        clang  \
        flex \
        git \
        ninja-build \
        gcc-aarch64-linux-gnu \
        libc6-dev-arm64-cross \
        gcc-alpha-linux-gnu \
        libc6.1-dev-alpha-cross \
        gcc-arm-linux-gnueabihf \
        libc6-dev-armhf-cross \
        gcc-hppa-linux-gnu \
        libc6-dev-hppa-cross \
        gcc-m68k-linux-gnu \
        libc6-dev-m68k-cross \
        gcc-mips-linux-gnu \
        libc6-dev-mips-cross \
        gcc-mips64-linux-gnuabi64 \
        libc6-dev-mips64-cross \
        gcc-mips64el-linux-gnuabi64 \
        libc6-dev-mips64el-cross \
        gcc-mipsel-linux-gnu \
        libc6-dev-mipsel-cross \
        gcc-powerpc-linux-gnu \
        libc6-dev-powerpc-cross \
        gcc-powerpc64-linux-gnu \
        libc6-dev-ppc64-cross \
        gcc-powerpc64le-linux-gnu \
        libc6-dev-ppc64el-cross \
        gcc-riscv64-linux-gnu \
        libc6-dev-riscv64-cross \
        gcc-s390x-linux-gnu \
        libc6-dev-s390x-cross \
        gcc-sh4-linux-gnu \
        libc6-dev-sh4-cross \
        gcc-sparc64-linux-gnu \
        libc6-dev-sparc64-cross \
        python3-pip \
        python3-setuptools \
        python3-venv \
        python3-wheel

RUN /usr/bin/pip3 install tomli

ENV QEMU_CONFIGURE_OPTS --disable-system --disable-docs --disable-tools
ENV DEF_TARGET_LIST aarch64-linux-user,alpha-linux-user,arm-linux-user,hppa-linux-user,i386-linux-user,m68k-linux-user,mips-linux-user,mips64-linux-user,mips64el-linux-user,mipsel-linux-user,ppc-linux-user,ppc64-linux-user,ppc64le-linux-user,riscv64-linux-user,s390x-linux-user,sh4-linux-user,sparc64-linux-user
# As a final step configure the user (if env is defined)
ARG USER
ARG UID
RUN if [ "${USER}" ]; then \
  id ${USER} 2>/dev/null || useradd -u ${UID} -U ${USER}; fi
