Skip to content

Commit

Permalink
first pass at Docker cross-compiling for Win64 - not working
Browse files Browse the repository at this point in the history
  • Loading branch information
jcschaff committed Sep 1, 2017
1 parent cb936d5 commit cbe8808
Show file tree
Hide file tree
Showing 5 changed files with 363 additions and 8 deletions.
86 changes: 86 additions & 0 deletions Dockcross/win64/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
FROM dockcross/base:latest
MAINTAINER Matt McCormick "[email protected]"

# 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 -y install \
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 \
make \
openssl \
p7zip-full \
patch \
perl \
pkg-config \
python \
ruby \
scons \
sed \
unzip \
wget \
wine \
xz-utils
# Set up wine
RUN dpkg --add-architecture i386 && \
apt-get update && \
apt-get install -y wine32
ENV WINEARCH win64
RUN wine hostname

WORKDIR /usr/src
# mxe master 2016-10-25
RUN git clone https://github.com/mxe/mxe.git && \
cd mxe && \
git checkout e87e441bbfa01bac3af2465fb6432e4969654a65

# git checkout 2c8b747d9cf58672040ff7443d2c365dba978fa5 (previous checkout from official dockcross ... grabing latest instead.

WORKDIR /usr/src/mxe
COPY settings.mk /usr/src/mxe/
RUN make -j$(nproc)

ENV PATH ${PATH}:/usr/src/mxe/usr/bin
ENV CROSS_TRIPLE x86_64-w64-mingw32.static
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

ENV DEFAULT_DOCKCROSS_IMAGE dockcross/windows-x64
WORKDIR /work

ENV CMAKE_TOOLCHAIN_FILE /usr/src/mxe/usr/x86_64-w64-mingw32.static/share/cmake/mxe-conf.cmake
RUN echo 'set(CMAKE_CROSSCOMPILING_EMULATOR "/usr/bin/wine")' >> ${CMAKE_TOOLCHAIN_FILE}

# Build-time metadata as defined at http://label-schema.org
ARG BUILD_DATE
ARG IMAGE
ARG VCS_REF
ARG VCS_URL
LABEL org.label-schema.build-date=$BUILD_DATE \
org.label-schema.name=$IMAGE \
org.label-schema.vcs-ref=$VCS_REF \
org.label-schema.vcs-url=$VCS_URL \
org.label-schema.schema-version="1.0"
7 changes: 7 additions & 0 deletions Dockcross/win64/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# Dockcross - VCell - Win64

Win64 MinGW cross compilation using Docker (dockcross).

Status: not building yet, need more recent toolchain (e.g. gcc) than provide by latest MXE used in dockcross Win64.

Please use Vagrant build and test boxes in vcell-solvers/VagrantBoxes directory.
38 changes: 30 additions & 8 deletions Dockcross/win64/build.sh
Original file line number Diff line number Diff line change
Expand Up @@ -11,26 +11,47 @@
# build-dockcross-win64 (build dir - maps to /work/vcell-solvers/build-dockcross-win64)
# bin
#
# vcell-solvers/Dockcross/win64
#
SCRIPTDIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"

shopt -s -o nounset

if [ $# -eq 0 ]; then
echo "usage: build.sh <path-to-dockcross-script>"
echo "example: build.sh /Users/schaff/build/dockcross/windows-x64/dockcross-win64"
exit -1
else
DOCKCROSS=$1
echo "using dockcross script $DOCKCROSS"
fi


if [ ! -e $DOCKCROSS ]; then
echo "could not find dockcross script $DOCKCROSS"
exit -1
fi


SOLVERSDIR=$SCRIPTDIR/../..
BUILDDIR=$SOLVERSDIR/build-dockcross-win64
BINDIR=$BUILDDIR/bin

mkdir $BUILDDIR
mkdir $BINDIR

cd $SOLVERSDIR/..
cd $SOLVERSDIR

# -G "Unix Makefiles" \
# --trace --debug --debug-output \

DOCKCROSS=/Users/schaff/build/dockcross/windows-x64/dockcross-win64

$DOCKCROSS bash -c "cmake \
-Bvcell-solvers/build-dockcross-win64 \
-Hvcell-solvers \
-Wdev \
--warn-uninitialized --warn-unused-vars and --check-system-vars \
-debug-output \
--trace \
-DCMAKE_VERBOSE_MAKEFILE:BOOL=ON \
-B/work/build-dockcross-win64 \
-H/work \
-DCMAKE_BUILD_TYPE="Release" \
-DOPTION_TARGET_MESSAGING=OFF \
-DOPTION_TARGET_PARALLEL=OFF \
Expand All @@ -40,11 +61,12 @@ $DOCKCROSS bash -c "cmake \
-DOPTION_TARGET_FV_SOLVER=ON \
-DOPTION_TARGET_STOCHASTIC_SOLVER=ON \
-DOPTION_TARGET_NFSIM_SOLVER=ON \
-DOPTION_TARGET_MOVINGBOUNDARY_SOLVER=ON \
-DOPTION_TARGET_MOVINGBOUNDARY_SOLVER=OFF \
-DOPTION_TARGET_SUNDIALS_SOLVER=ON \
-DOPTION_TARGET_HY3S_SOLVERS=OFF"

#$dockcross make
cd $SOLVERSDIR
$DOCKCROSS bash -c "cd /work/build-dockcross-win64 ; make"

#Write-Host "install standard mingw dlls"
#copy c:\tools\msys64\mingw64\bin\*.dll bin
Loading

0 comments on commit cbe8808

Please sign in to comment.