summaryrefslogtreecommitdiffstats
path: root/scripts
diff options
context:
space:
mode:
authorGravatar Dirk Hohndel <dirk@hohndel.org>2019-01-25 10:45:54 +1300
committerGravatar Dirk Hohndel <dirk@hohndel.org>2019-01-25 10:46:39 +1300
commitf2187686380eb9df74189486d1d9d913fab0587d (patch)
treefed153ad494f2e7683b6ac5ffd2b05d4b50e0dcf /scripts
parent9f433aa7590f568a9b1dbbc7d80443201656d940 (diff)
downloadsubsurface-f2187686380eb9df74189486d1d9d913fab0587d.tar.gz
build system: Docker image creation
Just like Android, Windows binaries are best created in a container. I still need to push the latest version to docker hub and use it on Travis, but this way at least the Dockerfile is here. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Diffstat (limited to 'scripts')
-rw-r--r--scripts/docker/mxe-build-container/Dockerfile75
-rw-r--r--scripts/docker/mxe-build-container/settings.mk15
2 files changed, 90 insertions, 0 deletions
diff --git a/scripts/docker/mxe-build-container/Dockerfile b/scripts/docker/mxe-build-container/Dockerfile
new file mode 100644
index 000000000..ec55b1e22
--- /dev/null
+++ b/scripts/docker/mxe-build-container/Dockerfile
@@ -0,0 +1,75 @@
+From ubuntu:18.04
+
+RUN mkdir -p /win
+ADD settings.mk /win
+RUN apt-get update && apt-get upgrade -y && \
+ apt-get install -y \
+ autoconf \
+ automake \
+ autopoint \
+ bash \
+ binutils \
+ bison \
+ bzip2 \
+ flex \
+ g++ \
+ g++-multilib \
+ gettext \
+ git \
+ gperf \
+ intltool \
+ libc6-dev-i386 \
+ libgdk-pixbuf2.0-dev \
+ libltdl-dev \
+ libssl-dev \
+ libtool-bin \
+ libxml-parser-perl \
+ make \
+ openssl \
+ p7zip-full \
+ patch \
+ perl \
+ pkg-config \
+ python \
+ ruby \
+ sed \
+ unzip \
+ wget \
+ xz-utils \
+ lzip \
+ scons ; \
+ cd /win ; git clone git://github.com/mxe/mxe ; \
+ cd mxe ; \
+ git checkout 9f6b9c6f58510bedfa0bf9f87de9a214abe6b653 ; \
+ mv ../settings.mk . ; \
+ make -j 6 2>&1 | tee build.log ; \
+ mkdir -p neolit ; cd neolit ; git clone -b wip/win http://code.qt.io/cgit/qt/qtconnectivity.git ; \
+ cd qtconnectivity ; \
+ PATH=/win/mxe/usr/bin/:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin /win/mxe/usr/i686-w64-mingw32.shared/qt5/bin/qmake qtconnectivity.pro ; \
+ PATH=/win/mxe/usr/bin/:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin make -j 6 ; \
+ PATH=/win/mxe/usr/bin/:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin make install ; \
+ rm -rf /win/mxe/pkg ; \
+ apt-get purge -y --auto-remove \
+ autopoint \
+ bison \
+ flex \
+ g++ \
+ g++-multilib \
+ gettext \
+ gperf \
+ intltool \
+ libc6-dev-i386 \
+ libgdk-pixbuf2.0-dev \
+ libltdl-dev \
+ libssl-dev \
+ libtool-bin \
+ libxml-parser-perl \
+ openssl \
+ p7zip-full \
+ perl \
+ python \
+ ruby \
+ unzip \
+ xz-utils \
+ lzip \
+ scons
diff --git a/scripts/docker/mxe-build-container/settings.mk b/scripts/docker/mxe-build-container/settings.mk
new file mode 100644
index 000000000..aadfc4c6f
--- /dev/null
+++ b/scripts/docker/mxe-build-container/settings.mk
@@ -0,0 +1,15 @@
+# This is a template of configuration file for MXE. See
+# index.html for more extensive documentations.
+
+# This variable controls the number of compilation processes
+# within one package ("intra-package parallelism").
+JOBS := 6
+
+# This variable controls the targets that will build.
+MXE_TARGETS := i686-w64-mingw32.shared
+
+# The three lines below makes `make` build these "local packages" instead of all packages.
+LOCAL_PKG_LIST := qtbase qtconnectivity qtdeclarative qtimageformats qtlocation qtmultimedia qtquickcontrols qtquickcontrols2 qtscript qtsvg qttools qttranslations qtwebview qtwebkit libxml2 libxslt libusb1 libgit2 nsis curl libzip libftdi1
+.DEFAULT local-pkg-list:
+local-pkg-list: $(LOCAL_PKG_LIST)
+