diff options
author | Dirk Hohndel <dirk@hohndel.org> | 2014-12-31 10:20:28 -0800 |
---|---|---|
committer | Dirk Hohndel <dirk@hohndel.org> | 2014-12-31 10:20:28 -0800 |
commit | 1d39df092253916474b927b3df665d4b1b2245fa (patch) | |
tree | c09556ba67a0077ef78ad97cba35fc2b645e467a /packaging/windows | |
parent | 1169d7dd352428ce2acb139121f98d785e7bd2a0 (diff) | |
download | subsurface-1d39df092253916474b927b3df665d4b1b2245fa.tar.gz |
Add a new script to create cross built Windows installer
This script is based on the mxe package and builds everything from source
instead of using the mingw packages from Fedora as I did in the past.
I'm keeping the old script around for now, but eventually I should remove it as
this is the current way to create a working installer that supports both 32 and
64 bit Windows and is Qt5 based.
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Diffstat (limited to 'packaging/windows')
-rwxr-xr-x | packaging/windows/mxe-based-build.sh | 163 |
1 files changed, 163 insertions, 0 deletions
diff --git a/packaging/windows/mxe-based-build.sh b/packaging/windows/mxe-based-build.sh new file mode 100755 index 000000000..0eb634a98 --- /dev/null +++ b/packaging/windows/mxe-based-build.sh @@ -0,0 +1,163 @@ +#!/bin/bash + +# build Subsurface for Win32 +# +# this file assumes that you have installed mxe on your system +# and installed a number of dependencies as well +# it also makes some assumption about the filesystem layout based +# on the way things are setup on my system so I can build Ubuntu PPA, +# OBS and Windows out of the same sources. +# Something like this: +# +# ~/src/win/mxe <- current MXE git with Qt5, automake +# /win/libxml2 <- libxml from git +# /win/libxslt <- libxslt from git +# /win/libzip-0.11.2 <- libzip sources from their latest distribution tar ball +# /subsurface <- current subsurface git +# /subsurface/libdivecomputer <- appropriate libdc branch +# /subsurface/marble-source <- appropriate marble branch +# /subsurface/libgit2 <- appropriate libgit2 branch +# +# ~/src/win/win32 <- build directory +# /libxml2 +# /libxslt +# /libzip +# /libgit2 +# /marble +# /subsurface +# +# then start this script from ~/src/win/win32 +# +# cd ~/src/win/win32 +# bash ../../subsurface/packaging/windows/mxe-based-build.sh installer +# +# this should create the latest daily installer + +if [[ ! -d libgit2 || ! -d marble || ! -d subsurface ]] ; then + echo "Please start this from the right directory" + exit 1 +fi + +BASEDIR=$(cd "`dirname $0`/.."; pwd) + +echo "Building in $BASEDIR ..." + +export PATH=$BASEDIR/mxe/usr/bin:$PATH:$BASEDIR/mxe/usr/i686-w64-mingw32.shared/qt5/bin/ + +#################### +if false; then +#################### + +# libxml2 + +cd libxml2 || exit 1 +../../libxml2/configure --host=i686-w64-mingw32.shared \ + --without-python \ + --prefix=$BASEDIR/mxe/usr/i686-w64-mingw32.shared/ +make -j12 +make install +cd .. + +# libxslt + +cd libxslt || exit 1 +../../libxslt/autogen.sh --host=i686-w64-mingw32.shared \ + --without-python \ + --prefix=$BASEDIR/mxe/usr/i686-w64-mingw32.shared/ +make -j12 +make install +cd .. + +# libzip + +cd libzip || exit 1 +../../libzip-0.11.2/configure --host=i686-w64-mingw32.shared \ + --enable-static \ + --prefix=$BASEDIR/mxe/usr/i686-w64-mingw32.shared/ +make -j12 +make install +cd .. + +# libgit2: + +cd libgit2 || exit 1 +cmake -DCMAKE_TOOLCHAIN_FILE=$BASEDIR/mxe/usr/i686-w64-mingw32.shared/share/cmake/mxe-conf.cmake \ + -DBUILD_CLAR=OFF \ + $BASEDIR/../subsurface/libgit2 +make -j12 + +# fake install +if [ ! -h include ] ; then + ln -s $BASEDIR/../subsurface/libgit2/include . +fi +if [ ! -h build ] ; then + ln -s . build +fi +cd .. + +# libdivecomputer (can't figure out how to do out-of tree builds?) + +cd libdivecomputer || exit 1 +git pull +autoreconf --install +./configure --host=i686-w64-mingw32.shared --enable-static --disable-shared +make -j12 +cd .. + +# marble: + +cd marble +cmake -DCMAKE_TOOLCHAIN_FILE=$BASEDIR/mxe/usr/i686-w64-mingw32.shared/share/cmake/mxe-conf.cmake \ + -DCMAKE_PREFIX_PATH=$BASEDIR/mxe/usr/i686-w64-mingw32.shared/qt5 \ + -DQTONLY=ON -DQT5BUILD=ON \ + -DBUILD_MARBLE_APPS=OFF -DBUILD_MARBLE_EXAMPLES=OFF \ + -DBUILD_MARBLE_TESTS=OFF -DBUILD_MARBLE_TOOLS=OFF \ + -DBUILD_TESTING=OFF -DWITH_DESIGNER_PLUGIN=OFF \ + -DBUILD_WITH_DBUS=OFF $BASEDIR/../subsurface/marble-source +make -j12 + +# fake install +if [ ! -d include ] ; then + mkdir include + cd include + for i in $(find $BASEDIR/../subsurface/marble-source -name \*.h); do ln -s $i .; done + ln -s . marble + cd .. +fi +if [ ! -d lib ] ; then + mkdir lib +fi +cp src/lib/marble/libssrfmarblewidget.dll lib +cd .. + +############### +fi +############### + +# subsurface: + +cd subsurface || exit 1 + +if [ ! -d staging ] ; then + mkdir -p staging/plugins + cd staging/plugins + cp -a $BASEDIR/mxe/usr/i686-w64-mingw32.shared/qt5/plugins/iconengines . + cp -a $BASEDIR/mxe/usr/i686-w64-mingw32.shared/qt5/plugins/imageformats . + cp -a $BASEDIR/mxe/usr/i686-w64-mingw32.shared/qt5/plugins/platforms . + cp -a $BASEDIR/mxe/usr/i686-w64-mingw32.shared/qt5/plugins/printsupport . + cd ../.. +fi + +export objdump=$BASEDIR/mxe/usr/bin/i686-w64-mingw32.shared-objdump + +i686-w64-mingw32.shared-qmake-qt5 \ + LIBMARBLEDEVEL=../marble \ + LIBGIT2DEVEL=../libgit2 CONFIG+=libgit21-api \ + LIBDCDEVEL=../libdivecomputer \ + QMAKE_LRELEASE=$BASEDIR/mxe/usr/i686-w64-mingw32.shared/qt5/bin/lrelease \ + SPECIAL_MARBLE_PREFIX=1 \ + MAKENSIS=i686-w64-mingw32.shared-makensis \ + $BASEDIR/../subsurface/subsurface.pro + + +make -j12 $@ |