| # Dockerfile for SIMDe development |
| |
| FROM ubuntu:bionic |
| |
| ARG DEBIAN_FRONTEND=noninteractive |
| ARG QEMU_GIT=n |
| ARG ARCHS="arm64" |
| #"arm64 armel armhf i386 mips64el ppc64el s390x riscv64" |
| |
| COPY docker/bin /tmp/simde-bin |
| RUN \ |
| for script in simde-reset-build.sh; do \ |
| ln -s /usr/local/src/simde/docker/bin/"${script}" /usr/bin/"${script}"; \ |
| done |
| |
| # Common packages |
| RUN \ |
| apt-get update -y && \ |
| apt-get upgrade -y && \ |
| apt-get install -yq --no-install-recommends \ |
| git build-essential vim \ |
| ccache ninja-build \ |
| '^clang-[0-9\.]+$' \ |
| '^llvm-[0-9\.]+$' \ |
| '^g(cc|\+\+)-[0-9\.]+$' \ |
| gdb valgrind \ |
| binfmt-support qemu-user-static \ |
| creduce screen htop parallel nano rsync strace \ |
| npm \ |
| python3-pip wget curl python3-setuptools python3-wheel |
| |
| RUN pip3 install meson==1.3.2 |
| |
| # GCC cross-compilers |
| RUN \ |
| apt-get update -y && \ |
| apt-get upgrade -y && \ |
| apt-get install -y apt-file && \ |
| apt-file update |
| RUN \ |
| PACKAGES_TO_INSTALL=""; \ |
| for ARCH in ${ARCHS}; do \ |
| PACKAGES_TO_INSTALL="${PACKAGES_TO_INSTALL} libc6-${ARCH}-cross libstdc++-[0-9]*-dev-${ARCH}-cross"; \ |
| PACKAGES_TO_INSTALL="${PACKAGES_TO_INSTALL} $(apt-file search -x "/usr/bin/$(/tmp/simde-bin/arch2gcc.sh ${ARCH})-(ar|g(cc|\+\+)-[0-9\.]+)" | awk -F: '{ print $1}')"; \ |
| done; \ |
| echo ${PACKAGES_TO_INSTALL} ; \ |
| apt-get install -yq ${PACKAGES_TO_INSTALL} |
| |
| ENV PATH="/usr/lib/ccache:$PATH:/root/.local/bin:/root/.jsvu/bin" |
| |
| # ICC |
| # RUN \ |
| # apt-get update -y && \ |
| # apt-get upgrade -y && \ |
| # apt-get install -yq gpg && \ |
| # wget -O- https://apt.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB \ |
| # | gpg --dearmor > /usr/share/keyrings/oneapi-archive-keyring.gpg && \ |
| # echo "deb [signed-by=/usr/share/keyrings/oneapi-archive-keyring.gpg] https://apt.repos.intel.com/oneapi all main" > /etc/apt/sources.list.d/oneAPI.list && \ |
| # apt-get update && \ |
| # apt-get install -yq --no-install-recommends intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic intel-oneapi-compiler-dpcpp-cpp && \ |
| # for exe in icc icpc icx icpx; do \ |
| # printf '#!/bin/bash\nARGS="$@"\nsource /opt/intel/oneapi/compiler/latest/env/vars.sh >/dev/null\n%s ${ARGS}\n' "${exe}" > /usr/bin/"${exe}" && \ |
| # chmod 0755 /usr/bin/"${exe}" ; \ |
| # done |
| |
| # # xlc -- Install fails. |
| # # Once IBM releases a version for Ubuntu Focal (20.04) I hope I can |
| # # get this working. |
| # RUN \ |
| # curl -s 'https://public.dhe.ibm.com/software/server/POWER/Linux/xl-compiler/eval/ppc64le/ubuntu/public.gpg' | apt-key add - && \ |
| # echo "deb [arch=ppc64el] https://public.dhe.ibm.com/software/server/POWER/Linux/xl-compiler/eval/ppc64le/ubuntu/ bionic main" > /etc/apt/sources.list.d/xlc.list && \ |
| # apt-get update && \ |
| # XLC_VERSION="$(apt-cache search '^xlc\.[0-9]+\.[0-9]+\.[0-9]+$' | awk '{ print substr($1, 5) }')" && \ |
| # apt-get install "xlc.${XLC_VERSION}:ppc64el" "xlc-license-community.${XLC_VERSION}:ppc64el" && \ |
| # /opt/ibm/xlC/${XLC_VERSION}/bin/xlc_configure <<< 1 >/dev/null |
| |
| # Intel SDE |
| COPY test/download-sde.sh /tmp/simde-bin/download-sde.sh |
| RUN \ |
| "/tmp/simde-bin/download-sde.sh" "/opt/intel/sde" && \ |
| for executable in sde sde64; do \ |
| ln -s "/opt/intel/sde/${executable}" "/usr/bin/${executable}"; \ |
| done |
| |
| # Emscripten |
| # RUN \ |
| # git clone https://github.com/emscripten-core/emsdk.git /opt/emsdk && \ |
| # cd /opt/emsdk && ./emsdk install tot && ./emsdk activate tot && \ |
| # ln -s /opt/emsdk/upstream/bin/wasm-ld /usr/bin/wasm-ld && \ |
| # npm install jsvu -g && jsvu --os=linux64 --engines=v8 && ln -s "/root/.jsvu/v8" "/usr/bin/v8" |
| |
| # Meson cross files |
| RUN \ |
| mkdir -p "/usr/local/share/meson/cross" && ln -s /usr/local/src/simde/docker/cross-files /usr/local/share/meson/cross/simde |
| |
| # Install QEMU git (necessary for MIPS) |
| RUN \ |
| if [ ${QEMU_GIT} = "y" ]; then \ |
| apt-get install -y pkg-config libglib2.0-dev libpixman-1-dev && \ |
| git clone https://gitlab.com/qemu-project/qemu.git /usr/local/src/qemu && \ |
| mkdir -p /usr/local/src/qemu/build && cd /usr/local/src/qemu/build && \ |
| ../configure --prefix=/opt/qemu && \ |
| make -j$(nproc) && \ |
| make install; \ |
| rm -rf /usr/local/src/qemu; \ |
| fi |
| |
| RUN mkdir -p /opt/simde |
| WORKDIR /opt/simde |
| ENV CCACHE_DIR=/opt/simde/.ccache CCACHE_COMPRESS=1 |