xemu/ubuntu-win64-cross/Dockerfile

108 lines
2.5 KiB
Docker

#
# Environment to cross-compile xemu for Windows
#
FROM ubuntu:24.04
ENV MXE_PATH=/opt/mxe
ENV MXE_REPO=https://github.com/mxe/mxe.git
ENV MXE_VERSION=7f054f14930d109412d2d61d019c12fa80816b8c
ENV MXE_LLVM_MINGW_REPO=https://github.com/libvips/build-win64-mxe
ENV MXE_LLVM_MINGW_VERSION=8a4e0ab8a3b574287378459356f6bdaecc727de2
ENV MXE_LLVM_MINGW_PATH=/opt/build-win64-mxe
ARG PLUGIN_DIRS="${MXE_LLVM_MINGW_PATH} ${MXE_LLVM_MINGW_PATH}/build/plugins/llvm-mingw"
ARG TARGETS="x86_64-w64-mingw32.static aarch64-w64-mingw32.static"
ARG JOBS=6
RUN apt-get update \
&& DEBIAN_FRONTEND=noninteractive \
apt-get -qy install \
autoconf \
automake \
autopoint \
bash \
bison \
bzip2 \
flex \
g++ \
g++-multilib \
gettext \
git \
gperf \
intltool \
libc6-dev-i386 \
libgdk-pixbuf2.0-dev \
libgl-dev \
libltdl-dev \
libssl-dev \
libtool-bin \
libxml-parser-perl \
lsb-release \
lzip \
make \
ninja-build \
openssl \
p7zip-full \
patch \
perl \
python-is-python3 \
python3 \
python3-mako \
python3-pip \
python3-pkg-resources \
python3-yaml \
ruby \
sed \
software-properties-common \
unzip \
wget \
xz-utils
RUN git clone ${MXE_LLVM_MINGW_REPO} ${MXE_LLVM_MINGW_PATH} \
&& cd ${MXE_LLVM_MINGW_PATH} \
&& git checkout ${MXE_LLVM_MINGW_VERSION} \
\
&& git clone ${MXE_REPO} ${MXE_PATH} \
&& cd ${MXE_PATH} \
&& git checkout ${MXE_VERSION} \
&& git apply ${MXE_LLVM_MINGW_PATH}/build/patches/mxe-fixes.patch
RUN make \
MXE_TARGETS="${TARGETS}" \
MXE_PLUGIN_DIRS="${PLUGIN_DIRS}" \
JOBS=${JOBS} \
-C ${MXE_PATH} \
cc
RUN rm ${MXE_PATH}/src/sdl2*.patch
COPY vulkan-headers.mk \
glib.mk \
sdl2.mk \
libsamplerate.mk \
libressl.mk \
${MXE_PATH}/src/
RUN make \
MXE_TARGETS="${TARGETS}" \
MXE_PLUGIN_DIRS="${PLUGIN_DIRS}" \
JOBS=${JOBS} \
CFLAGS=-O2 \
-C ${MXE_PATH} \
glib \
libepoxy \
pixman \
libsamplerate \
libressl \
cmake \
libslirp \
sdl2 \
vulkan-headers
RUN find ${MXE_PATH}/usr -executable -type f -exec chmod a+x {} \;
ENV CROSSPREFIX=x86_64-w64-mingw32.static-
ENV CROSSAR=${CROSSPREFIX}ar
ENV PATH="${MXE_PATH}/.ccache/bin:${MXE_PATH}/usr/x86_64-pc-linux-gnu/bin:${MXE_PATH}/usr/bin:${PATH}"