mirror of
https://github.com/bensuperpc/dockcross.git
synced 2024-12-23 17:14:26 +01:00
b41256cc2f
Code-signing of generated executables is usually done with "signtool" on Windows. When cross-compiling on Linux this tool is not avaiilable, however, osslsigncode can be used as an replacement.
138 lines
3.9 KiB
Plaintext
138 lines
3.9 KiB
Plaintext
|
|
#
|
|
# Before including this script, make sure to set:
|
|
#
|
|
# WINEARCH environment variable to either "win64" or "win32"
|
|
# MXE_TARGET_ARCH argument to either "x86_64" or "i686". See http://mxe.cc/
|
|
# MXE_TARGET_THREAD argument to either "" or ".posix". Default is win32. See http://mxe.cc/
|
|
# MXE_TARGET_LINK argument to either "static" or "shared"
|
|
#
|
|
# For example:
|
|
#
|
|
# ENV WINEARCH win64
|
|
# ARG MXE_TARGET_ARCH=x86_64
|
|
# ARG MXE_TARGET_THREAD=
|
|
# ARG MXE_TARGET_LINK=shared
|
|
#
|
|
|
|
# mxe master 2021-10-18
|
|
ARG MXE_GIT_TAG=8838ac3938cd8e47424a4cb5d3676d1ae9a4d670
|
|
|
|
ENV CMAKE_TOOLCHAIN_FILE /usr/src/mxe/usr/${MXE_TARGET_ARCH}-w64-mingw32.${MXE_TARGET_LINK}${MXE_TARGET_THREAD}/share/cmake/mxe-conf.cmake
|
|
|
|
ARG DEBIAN_FRONTEND=noninteractive
|
|
|
|
#
|
|
# WINE is used as an emulator for try_run and tests with CMake.
|
|
#
|
|
# Other dependencies are from the listed MXE requirements:
|
|
# http://mxe.cc/#requirements
|
|
# 'cmake' is omitted because it is installed from source in the base image
|
|
#
|
|
RUN \
|
|
apt-get update && \
|
|
apt-get install --no-install-recommends --yes \
|
|
autoconf \
|
|
automake \
|
|
autopoint \
|
|
bash \
|
|
bison \
|
|
bzip2 \
|
|
flex \
|
|
gettext \
|
|
git \
|
|
g++ \
|
|
g++-multilib \
|
|
gperf \
|
|
intltool \
|
|
libffi-dev \
|
|
libgdk-pixbuf2.0-dev \
|
|
libtool-bin \
|
|
libltdl-dev \
|
|
libssl-dev \
|
|
libxml-parser-perl \
|
|
libc6-dev-i386 \
|
|
lzip \
|
|
make \
|
|
nsis \
|
|
openssl \
|
|
osslsigncode \
|
|
p7zip-full \
|
|
patch \
|
|
perl \
|
|
pkg-config \
|
|
python \
|
|
ruby \
|
|
scons \
|
|
sed \
|
|
unzip \
|
|
wget \
|
|
wine \
|
|
xz-utils \
|
|
&& \
|
|
#
|
|
# Install Wine
|
|
#
|
|
dpkg --add-architecture i386 && \
|
|
apt-get update && \
|
|
apt-get install -y wine32 && \
|
|
wine hostname && \
|
|
#
|
|
# Download MXE sources
|
|
#
|
|
cd /usr/src && \
|
|
git clone https://github.com/mxe/mxe.git && \
|
|
cd mxe && \
|
|
git checkout ${MXE_GIT_TAG} && \
|
|
#
|
|
# Configure "settings.mk" required to build MXE
|
|
#
|
|
cd /usr/src/mxe && \
|
|
echo "MXE_TARGETS := ${MXE_TARGET_ARCH}-w64-mingw32.${MXE_TARGET_LINK}${MXE_TARGET_THREAD}" > settings.mk && \
|
|
echo "MXE_USE_CCACHE :=" >> settings.mk && \
|
|
echo "MXE_PLUGIN_DIRS := plugins/gcc11" >> settings.mk && \
|
|
echo "LOCAL_PKG_LIST := cc cmake" >> settings.mk && \
|
|
echo ".DEFAULT local-pkg-list:" >> settings.mk && \
|
|
echo "local-pkg-list: \$(LOCAL_PKG_LIST)" >> settings.mk && \
|
|
#
|
|
# Build MXE
|
|
#
|
|
cd /usr/src/mxe && \
|
|
make JOBS=$(nproc) && \
|
|
#
|
|
# Cleanup: By keeping the MXE build system (Makefile, ...), derived images will be able to install
|
|
# additional packages.
|
|
#
|
|
rm -rf log pkg && \
|
|
#
|
|
# Update MXE toolchain file
|
|
#
|
|
echo 'set(CMAKE_CROSSCOMPILING_EMULATOR "/usr/bin/wine")' >> ${CMAKE_TOOLCHAIN_FILE} && \
|
|
#
|
|
# Add a sysmbolic link for makensis
|
|
#
|
|
ln -s /usr/bin/makensis /usr/bin/${MXE_TARGET_ARCH}-w64-mingw32.${MXE_TARGET_LINK}${MXE_TARGET_THREAD}-makensis && \
|
|
#
|
|
# Replace cmake and cpack binaries
|
|
#
|
|
cd /usr/bin && \
|
|
rm cmake cpack && \
|
|
ln -s /usr/src/mxe/usr/bin/${MXE_TARGET_ARCH}-w64-mingw32.${MXE_TARGET_LINK}${MXE_TARGET_THREAD}-cmake cmake && \
|
|
ln -s /usr/src/mxe/usr/bin/${MXE_TARGET_ARCH}-w64-mingw32.${MXE_TARGET_LINK}${MXE_TARGET_THREAD}-cpack cpack && \
|
|
#
|
|
# clean up temporary wine files
|
|
#
|
|
rm -rf /tmp/wine-*
|
|
|
|
ENV PATH ${PATH}:/usr/src/mxe/usr/bin
|
|
ENV CROSS_TRIPLE ${MXE_TARGET_ARCH}-w64-mingw32.${MXE_TARGET_LINK}${MXE_TARGET_THREAD}
|
|
ENV AS=/usr/src/mxe/usr/bin/${CROSS_TRIPLE}-as \
|
|
AR=/usr/src/mxe/usr/bin/${CROSS_TRIPLE}-ar \
|
|
CC=/usr/src/mxe/usr/bin/${CROSS_TRIPLE}-gcc \
|
|
CPP=/usr/src/mxe/usr/bin/${CROSS_TRIPLE}-cpp \
|
|
CXX=/usr/src/mxe/usr/bin/${CROSS_TRIPLE}-g++ \
|
|
LD=/usr/src/mxe/usr/bin/${CROSS_TRIPLE}-ld \
|
|
FC=/usr/src/mxe/usr/bin/${CROSS_TRIPLE}-gfortran
|
|
|
|
WORKDIR /work
|