mirror of
https://github.com/godotengine/build-containers.git
synced 2025-12-31 21:48:41 +03:00
To get WebAssembly templates to actually work, we need to use Mono 6.6 (currently in preview), which doesn't have tags yet but is in the `2019-08` branch. So I dehardcoded the `mono-` prefix for the git tree-ish to allow using `./build.sh 2019-08`. 6.6 doesn't build with msbuild 16.0, so I'm upgrading to its matching version 16.3. There are no DEB files for 16.3 on the EOL'ed Ubuntu 14.04, but it seems that the 16.04 packages install cleanly. We also backport a patch from mono's master branch to fix wasm support further, and enable parallel build jobs for make.
45 lines
2.4 KiB
Docker
45 lines
2.4 KiB
Docker
ARG mono_version
|
|
FROM godot-mono:${mono_version}
|
|
ARG mono_version
|
|
|
|
RUN if [ -z "${mono_version}" ]; then echo -e "\n\nargument mono-version is mandatory!\n\n"; exit 1; fi && \
|
|
dnf -y install --setopt=install_weak_deps=False \
|
|
mingw32-gcc mingw32-gcc-c++ mingw32-winpthreads-static mingw64-gcc mingw64-gcc-c++ mingw64-winpthreads-static yasm && \
|
|
dnf clean all && \
|
|
rpm -Uvh --force /root/files/mingw-binutils-generic-2.30-5.fc29.godot.x86_64.rpm \
|
|
/root/files/mingw64-binutils-2.30-5.fc29.godot.x86_64.rpm \
|
|
/root/files/mingw32-binutils-2.30-5.fc29.godot.x86_64.rpm
|
|
|
|
RUN git clone https://github.com/mono/mono --branch ${mono_version} --single-branch && \
|
|
cd mono && git submodule update --init && \
|
|
NOCONFIGURE=1 ./autogen.sh && \
|
|
./configure --prefix=/root/dependencies/mono-64 --host=x86_64-w64-mingw32 --disable-boehm --disable-mcs-build --disable-executables && \
|
|
echo '#define HAVE_STRUCT_SOCKADDR_IN6 1' >> config.h && \
|
|
make -j && \
|
|
make install && \
|
|
git clean -fdx && \
|
|
cp /root/dependencies/mono-64/bin/libMonoPosixHelper.dll /root/dependencies/mono-64/bin/MonoPosixHelper.dll && \
|
|
rm -f /root/dependencies/mono-64/bin/mono /root/dependencies/mono-64/bin/mono-sgen && \
|
|
ln -s /usr/bin/mono /root/dependencies/mono-64/bin/mono && \
|
|
ln -s /usr/bin/mono-sgen /root/dependencies/mono-64/bin/mono-sgen && \
|
|
ln -sf /usr/lib/mono/* /root/dependencies/mono-64/lib/mono || /bin/true && \
|
|
cp -rvp /etc/mono /root/dependencies/mono-64/etc && \
|
|
NOCONFIGURE=1 ./autogen.sh && \
|
|
./configure --prefix=/root/dependencies/mono-32 --host=i686-w64-mingw32 --disable-boehm --disable-mcs-build --disable-executables && \
|
|
echo '#define HAVE_STRUCT_SOCKADDR_IN6 1' >> config.h && \
|
|
make -j && \
|
|
make install && \
|
|
cd .. && \
|
|
cp /root/dependencies/mono-32/bin/libMonoPosixHelper.dll /root/dependencies/mono-32/bin/MonoPosixHelper.dll && \
|
|
rm -f /root/dependencies/mono-32/bin/mono /root/dependencies/mono-32/bin/mono-sgen && \
|
|
ln -s /usr/bin/mono /root/dependencies/mono-32/bin/mono && \
|
|
ln -s /usr/bin/mono-sgen /root/dependencies/mono-32/bin/mono-sgen && \
|
|
ln -sf /usr/lib/mono/* /root/dependencies/mono-32/lib/mono || /bin/true && \
|
|
cp -rvp /etc/mono /root/dependencies/mono-32/etc && \
|
|
rm -rf /root/mono
|
|
|
|
ENV MONO32_PREFIX=/root/dependencies/mono-32
|
|
ENV MONO64_PREFIX=/root/dependencies/mono-64
|
|
|
|
CMD /bin/bash
|