diff --git a/Makefile b/Makefile index e31755b..1fd718a 100644 --- a/Makefile +++ b/Makefile @@ -22,7 +22,7 @@ linux-armv7: windows-x86: base windows-x86/Dockerfile windows-x86/settings.mk $(DOCKER) build -t $(IMAGE)-windows-x86 windows-x86 -windows-x64: +windows-x64: base windows-x64/Dockerfile windows-x64/settings.mk $(DOCKER) build -t $(IMAGE)-windows-x64 windows-x64 base: Dockerfile diff --git a/windows-x64/Dockerfile b/windows-x64/Dockerfile index 3bd1a1e..119518b 100644 --- a/windows-x64/Dockerfile +++ b/windows-x64/Dockerfile @@ -1,12 +1,61 @@ -FROM steeve/cross-compiler:base -MAINTAINER Steeve Morin "steeve.morin@gmail.com" +FROM thewtex/cross-compiler-base +MAINTAINER Matt McCormick "matt.mccormick@kitware.com" -RUN apt-get update && apt-get -y install mingw-w64 +# 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 \ + libtool-bin \ + libltdl-dev \ + libssl-dev \ + libxml-parser-perl \ + libc6-dev-i386 \ + make \ + openssl \ + 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 -ENV CROSS_TRIPLE x86_64-w64-mingw32 -ENV CROSS_ROOT /usr/${CROSS_TRIPLE} -ENV PATH ${PATH}:${CROSS_ROOT}/bin -ENV LD_LIBRARY_PATH ${CROSS_ROOT}/lib:${LD_LIBRARY_PATH} +WORKDIR /usr/src +# mxe master 2015-03-12, prior to mingw-w64 update, based on GCC 4 +RUN git clone https://github.com/mxe/mxe.git && \ + cd mxe && \ + git checkout 149afe17a43c50c234dcadeb4a69e61e272a747a +WORKDIR /usr/src/mxe +COPY settings.mk /usr/src/mxe/ +RUN make -j$(nproc) -RUN cd /usr/bin && \ - ln -s ${CROSS_TRIPLE}-gcc ${CROSS_TRIPLE}-cc +ENV PATH ${PATH}:/usr/src/mxe/usr/bin +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} + +WORKDIR /usr/src diff --git a/windows-x64/settings.mk b/windows-x64/settings.mk new file mode 100644 index 0000000..1f8e4ef --- /dev/null +++ b/windows-x64/settings.mk @@ -0,0 +1,4 @@ +MXE_TARGETS := x86_64-w64-mingw32.static +LOCAL_PKG_LIST := gcc +.DEFAULT local-pkg-list: +local-pkg-list: $(LOCAL_PKG_LIST) diff --git a/windows-x86/Dockerfile b/windows-x86/Dockerfile index 4896e1d..2af443d 100644 --- a/windows-x86/Dockerfile +++ b/windows-x86/Dockerfile @@ -41,11 +41,12 @@ RUN apt-get update && apt-get -y install \ # Set up wine RUN dpkg --add-architecture i386 && \ apt-get update && \ - apt-get install -y wine32 && \ - wine hostname + apt-get install -y wine32 +ENV WINEARCH win32 +RUN wine hostname WORKDIR /usr/src -# mxe master 2015-03-12, prior to mingw-w64 update, which is based on GCC 5 +# mxe master 2015-03-12, prior to mingw-w64 update, based on GCC 4 RUN git clone https://github.com/mxe/mxe.git && \ cd mxe && \ git checkout 149afe17a43c50c234dcadeb4a69e61e272a747a