Permalink
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Browse files
Merge pull request #8176 from elpaso/mxe-reborn-docker
mxe: couldn't be easier now
- Loading branch information
Showing
with
118 additions
and 48 deletions.
- +24 −10 doc/mxe.t2t
- +0 −30 ms-windows/mxe/README
- +51 −0 ms-windows/mxe/README.md
- +9 −8 ms-windows/mxe/build-mxe.sh
- +11 −0 ms-windows/mxe/build.sh
- +23 −0 ms-windows/mxe/mxe.Dockerfile
@@ -1,26 +1,40 @@ | ||
|
||
== Building on Linux with mxe == | ||
|
||
With this approach you can build a windows binary on Linux using mxe MXE (M cross environment). | ||
You can find the build script and a README file in the ms-windows/mxe directory. | ||
With this approach you can cross build a Windows binary on Linux using MXE (M cross environment). | ||
You can find the build script and a README.md file in the ms-windows/mxe directory. | ||
|
||
For now, Python buildings cannot be built with mxe. | ||
|
||
=== Initial setup === | ||
=== Building with Docker === | ||
|
||
This is the simplest way, but you need to have Docker installed | ||
on your system. | ||
|
||
You can use a Docker image to cross build QGIS by calling | ||
the script ms-windows/mxe/build.sh from the root directory of QGIS repository. | ||
|
||
=== Building without Docker ==== | ||
|
||
This requires to install mxe toolchain on your system and build | ||
all dependencies by yourself. | ||
|
||
==== Initial setup ==== | ||
|
||
Please follow the instructions on mxe website to setup your building toolchain http://mxe.cc/, | ||
take note of the path where you have installed mxe. | ||
|
||
=== Building the dependencies === | ||
==== Building the dependencies ==== | ||
|
||
Please see the README under ms-windows/mxe for a list of the dependencies that need to be | ||
built in mxe before attempting to build QGIS. | ||
Please see README.md under ms-windows/mxe for detailed instructions and for the | ||
list of dependencies that need to be built in mxe before attempting to build QGIS. | ||
|
||
=== Cross-Building QGIS === | ||
==== Cross-Building QGIS ==== | ||
|
||
Edit the build-mxe.sh script and change the path where your mxe installation is located, you | ||
can also change the build and release directory. | ||
Edit the build-mxe.sh script and optionally adjust the path where your mxe installation is located, you | ||
can also change the build and release directories. | ||
|
||
=== Testing QGIS === | ||
|
||
Copy and unzip the release package on a Windows machine and launch it! | ||
Copy and unzip on the Windows machine package produced by the build and launch the qgis binary: no installation | ||
is required. |
@@ -0,0 +1,51 @@ | ||
# MXE cross build | ||
|
||
Scripts to cross build a windows QGIS binary from Linux using MXE: | ||
(M cross environment) http://mxe.cc/ | ||
|
||
The product is a zip file that contains a Windows build of QGIS, | ||
ready to be unzipped on a Windows machine, it does not require | ||
installation, just run the `qgis` binary. | ||
|
||
Unfortunately it has some... | ||
|
||
## Limitations | ||
|
||
- No Python support | ||
- No OpenCL support | ||
- No support for the new native Windows overrides (notifications etc.) | ||
|
||
## The easy way (requires docker) | ||
|
||
From the main directory of QGIS repo issue the following command: | ||
|
||
``` | ||
ms-windows/mxe/build.sh | ||
``` | ||
|
||
## The hard way | ||
|
||
Follow the instructions on the website to prepare the mxe environment, you | ||
will need to build all required dependencies for QGIS (or see `mxe.Dockerfile` to get an idea). | ||
|
||
The following command will select the posix threads enabled target and install | ||
the dependencies required by QGIS: | ||
|
||
``` | ||
make MXE_TARGETS=i686-w64-mingw32.shared.posix -j 16 \ | ||
qca \ | ||
qtlocation \ | ||
qscintilla2 \ | ||
qwt \ | ||
gdal \ | ||
qtkeychain \ | ||
qtserialport \ | ||
qtwebkit \ | ||
qtwinextras \ | ||
libzip \ | ||
gsl \ | ||
libspatialindex | ||
``` | ||
|
||
When done, you can check and edit the `build-mxe.sh` script and set the `MXE` path to your mxe installation directory, `MXE` can also be passed as an environment variable. | ||
|
@@ -0,0 +1,11 @@ | ||
#!/bin/bash | ||
|
||
# Location of current script | ||
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" | ||
|
||
docker run \ | ||
-v $(pwd):$(pwd) \ | ||
-w $(pwd) --rm \ | ||
--user $(id -u):$(id -g) \ | ||
-it elpaso/mxe-qt5-builder \ | ||
${DIR}/build-mxe.sh |
@@ -0,0 +1,23 @@ | ||
FROM buildpack-deps:stretch | ||
|
||
RUN apt-get update | ||
RUN apt-get install -y --no-install-recommends autopoint bison flex gperf libtool ruby scons unzip p7zip-full intltool libtool libtool-bin nsis zip | ||
|
||
WORKDIR /mxe | ||
|
||
RUN git clone https://github.com/mxe/mxe . || git pull origin master | ||
RUN make MXE_TARGETS=i686-w64-mingw32.shared.posix -j 16 \ | ||
qca \ | ||
qtlocation \ | ||
qscintilla2 \ | ||
qwt \ | ||
gdal \ | ||
qtkeychain \ | ||
qtserialport \ | ||
qtwebkit \ | ||
qtwinextras \ | ||
libzip \ | ||
gsl \ | ||
libspatialindex | ||
|
||
RUN chmod -R a+rw /mxe/usr/i686-w64-mingw32.shared.posix |