Scott E. Graves 1b8de3b097
All checks were successful
BlockStorage/repertory_osx_builds/pipeline/head This commit looks good
BlockStorage/repertory_linux_builds/pipeline/head This commit looks good
v2.0.1-rc (#13)
Reviewed-on: #13
2023-12-10 18:11:20 +00:00

202 lines
5.7 KiB
Plaintext

# https://github.com/mmozeiko/docker-mingw-w64
FROM ubuntu:22.04
WORKDIR /mnt
ENV MINGW=/mingw
ARG BINUTILS_VERSION=2.41
ARG CMAKE_VERSION=3.27.1
ARG GCC_VERSION=13.2.0
ARG MINGW_VERSION=11.0.1
ARG NASM_VERSION=2.16.01
ARG NVCC_VERSION=12.2.1
ARG PKG_CONFIG_VERSION=0.29.2
SHELL [ "/bin/bash", "-c" ]
RUN set -ex \
\
&& apt-get update \
&& DEBIAN_FRONTEND=noninteractive apt-get upgrade --no-install-recommends -y \
&& DEBIAN_FRONTEND=noninteractive apt-get install --no-install-recommends -y \
ca-certificates \
gcc \
g++ \
zlib1g-dev \
libssl-dev \
libgmp-dev \
libmpfr-dev \
libmpc-dev \
libisl-dev \
libssl3 \
libgmp10 \
libmpfr6 \
libmpc3 \
libisl23 \
xz-utils \
ninja-build \
texinfo \
meson \
gnupg \
bzip2 \
patch \
gperf \
bison \
file \
flex \
make \
yasm \
wget \
zip \
git
RUN set -ex \
\
&& wget -q https://pkg-config.freedesktop.org/releases/pkg-config-${PKG_CONFIG_VERSION}.tar.gz -O - | tar -xz \
&& wget -q https://github.com/Kitware/CMake/releases/download/v${CMAKE_VERSION}/cmake-${CMAKE_VERSION}.tar.gz -O - | tar -xz \
&& wget -q https://ftp.gnu.org/gnu/binutils/binutils-${BINUTILS_VERSION}.tar.xz -O - | tar -xJ \
&& wget -q https://sourceforge.net/projects/mingw-w64/files/mingw-w64/mingw-w64-release/mingw-w64-v${MINGW_VERSION}.tar.bz2 -O - | tar -xj \
&& wget -q https://ftp.gnu.org/gnu/gcc/gcc-${GCC_VERSION}/gcc-${GCC_VERSION}.tar.xz -O - | tar -xJ \
&& wget -q https://www.nasm.us/pub/nasm/releasebuilds/${NASM_VERSION}/nasm-${NASM_VERSION}.tar.xz -O - | tar -xJ
RUN set -ex \
\
&& mkdir -p ${MINGW}/include ${MINGW}/lib/pkgconfig \
&& chmod 0777 -R /mnt ${MINGW} \
\
&& cd pkg-config-${PKG_CONFIG_VERSION} \
&& ./configure \
--prefix=/usr/local \
--with-pc-path=${MINGW}/lib/pkgconfig \
--with-internal-glib \
--disable-shared \
--disable-nls \
&& make -j`nproc` \
&& make install
RUN set -ex \
\
&& cd cmake-${CMAKE_VERSION} \
&& ./configure \
--prefix=/usr/local \
--parallel=`nproc` \
&& make -j`nproc` \
&& make install
RUN set -ex \
\
&& cd binutils-${BINUTILS_VERSION} \
&& ./configure \
--prefix=/usr/local \
--target=x86_64-w64-mingw32 \
--disable-shared \
--enable-static \
--disable-lto \
--disable-plugins \
--disable-multilib \
--disable-nls \
--disable-werror \
--with-system-zlib \
&& make -j`nproc` \
&& make install
RUN set -ex \
\
&& mkdir mingw-w64 \
&& cd mingw-w64 \
&& ../mingw-w64-v${MINGW_VERSION}/mingw-w64-headers/configure \
--prefix=/usr/local/x86_64-w64-mingw32 \
--host=x86_64-w64-mingw32 \
--enable-sdk=all \
&& make install
RUN set -ex \
\
&& mkdir gcc \
&& cd gcc \
&& ../gcc-${GCC_VERSION}/configure \
--prefix=/usr/local \
--target=x86_64-w64-mingw32 \
--enable-languages=c,c++ \
--disable-shared \
--enable-static \
--enable-threads=posix \
--with-system-zlib \
--enable-libgomp \
--enable-libatomic \
--enable-graphite \
--disable-libstdcxx-pch \
--disable-libstdcxx-debug \
--disable-multilib \
--disable-lto \
--disable-nls \
--disable-werror \
&& make -j`nproc` all-gcc \
&& make install-gcc
RUN set -ex \
\
&& cd mingw-w64 \
&& ../mingw-w64-v${MINGW_VERSION}/mingw-w64-crt/configure \
--prefix=/usr/local/x86_64-w64-mingw32 \
--host=x86_64-w64-mingw32 \
--enable-wildcard \
--disable-lib32 \
--enable-lib64 \
&& (make || make || make || make) \
&& make install
RUN set -ex \
\
&& cd mingw-w64 \
&& ../mingw-w64-v${MINGW_VERSION}/mingw-w64-libraries/winpthreads/configure \
--prefix=/usr/local/x86_64-w64-mingw32 \
--host=x86_64-w64-mingw32 \
--enable-static \
--disable-shared \
&& make -j`nproc` \
&& make install
RUN set -ex \
\
&& cd gcc \
&& make -j`nproc` \
&& make install
RUN set -ex \
\
&& cd nasm-${NASM_VERSION} \
&& ./configure --prefix=/usr/local \
&& make -j`nproc` \
&& make install
RUN set -ex \
\
&& rm -r pkg-config-${PKG_CONFIG_VERSION} \
&& rm -r cmake-${CMAKE_VERSION} \
&& rm -r binutils-${BINUTILS_VERSION} \
&& rm -r mingw-w64 mingw-w64-v${MINGW_VERSION} \
&& rm -r gcc gcc-${GCC_VERSION} \
&& rm -r nasm-${NASM_VERSION}
RUN set -ex \
\
&& apt-get remove --purge -y file gcc g++ zlib1g-dev libssl-dev libgmp-dev libmpfr-dev libmpc-dev libisl-dev \
&& apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/3bf863cc.pub \
&& echo "deb https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/ /" > /etc/apt/sources.list.d/cuda.list \
&& apt-get update \
&& DEBIAN_FRONTEND=noninteractive apt-get install --no-install-recommends -y \
cuda-nvcc-${NVCC_VERSION:0:2}-${NVCC_VERSION:3:1}
RUN set -ex \
\
&& ln -s /usr/bin/gcc /usr/local/cuda/bin/gcc \
&& ln -s /usr/bin/g++ /usr/local/cuda/bin/g++
RUN set -ex \
\
&& apt-get remove --purge -y gnupg \
&& apt-get autoremove --purge -y \
&& apt-get clean