summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.travis.yml6
-rwxr-xr-xpackaging/windows/mxe-based-build.sh67
-rw-r--r--scripts/windows/after_success.sh15
-rw-r--r--scripts/windows/before_install.sh79
-rw-r--r--scripts/windows/travisbuild.sh12
5 files changed, 118 insertions, 61 deletions
diff --git a/.travis.yml b/.travis.yml
index 5a1923a3c..eac6dc385 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -1,6 +1,12 @@
matrix:
include:
+ - env: SUBSURFACE_PLATFORM='windows'
+ os: linux
+ dist: trusty
+ sudo: required
+ language: c++
+
- env: SUBSURFACE_PLATFORM='linux'
os: linux
dist: trusty
diff --git a/packaging/windows/mxe-based-build.sh b/packaging/windows/mxe-based-build.sh
index 5dceed3ab..8f49582e8 100755
--- a/packaging/windows/mxe-based-build.sh
+++ b/packaging/windows/mxe-based-build.sh
@@ -41,8 +41,6 @@
#
# ~/src/mxe <- MXE git with Qt5, automake (see above)
# /grantlee <- Grantlee 5.0.0 sources from git
-# /libssh2 <- from git - v1.6 seems to work
-# /libcurl <- from git - 7.42.1 seems to work - rename folder!
# /subsurface <- current subsurface git
# /libdivecomputer <- appropriate libdc/Subsurface-branch branch
# /libgit2 <- libgit2 0.23.1 or similar
@@ -132,7 +130,7 @@ if [[ ! -d grantlee || -f build.grantlee ]] ; then
rm -f build.grantlee
mkdir -p grantlee
cd grantlee
- i686-w64-mingw32.shared-cmake -DCMAKE_TOOLCHAIN_FILE="$BASEDIR"/"$MXEDIR"/usr/i686-w64-mingw32.shared/share/cmake/mxe-conf.cmake \
+ i686-w64-mingw32.shared-cmake \
-DCMAKE_BUILD_TYPE=$RELEASE \
-DBUILD_TESTS=OFF \
"$BASEDIR"/grantlee
@@ -141,61 +139,6 @@ if [[ ! -d grantlee || -f build.grantlee ]] ; then
make install
fi
-
-# libssh2:
-
-cd "$BUILDDIR"
-if [[ ! -d libssh2 || -f build.libssh2 ]] ; then
- rm -f build.libssh2
- mkdir -p libssh2
- cd libssh2
-
- i686-w64-mingw32.shared-cmake -DCMAKE_TOOLCHAIN_FILE="$BASEDIR"/"$MXEDIR"/usr/i686-w64-mingw32.shared/share/cmake/mxe-conf.cmake \
- -DCMAKE_BUILD_TYPE=$RELEASE \
- -DBUILD_EXAMPLES=OFF \
- -DBUILD_TESTING=OFF \
- -DBUILD_SHARED_LIBS=ON \
- "$BASEDIR"/libssh2
- make $JOBS
- make install
- # don't install your dlls in bin, please
- cp "$BASEDIR"/"$MXEDIR"/usr/i686-w64-mingw32.shared/bin/libssh2.dll "$BASEDIR"/"$MXEDIR"/usr/i686-w64-mingw32.shared/lib
-fi
-
-
-# libcurl
-
-cd "$BUILDDIR"
-if [[ ! -d libcurl || -f build.libcurl ]] ; then
- rm -f build.libcurl
- mkdir -p libcurl
- cd libcurl
- ../../libcurl/configure --host=i686-w64-mingw32.shared \
- --prefix="$BASEDIR"/"$MXEDIR"/usr/i686-w64-mingw32.shared/ \
- --disable-ftp \
- --disable-ldap \
- --disable-ldaps \
- --disable-rtsp \
- --enable-proxy \
- --enable-dict \
- --disable-telnet \
- --disable-tftp \
- --disable-pop3 \
- --disable-imap \
- --disable-smb \
- --disable-smtp \
- --disable-gopher \
- --disable-manual \
- --with-libssh2="$BASEDIR"/"$MXEDIR"/usr/i686-w64-mingw32.shared/
-
- # now remove building the executable
- sed -i 's/SUBDIRS = lib src include/SUBDIRS = lib include/' Makefile
-
- make $JOBS
- make install
-fi
-
-
# libgit2:
cd "$BUILDDIR"
@@ -203,7 +146,7 @@ if [[ ! -d libgit2 || -f build.libgit2 ]] ; then
rm -f build.libgit2
mkdir -p libgit2
cd libgit2
- i686-w64-mingw32.shared-cmake -DCMAKE_TOOLCHAIN_FILE="$BASEDIR"/"$MXEDIR"/usr/i686-w64-mingw32.shared/share/cmake/mxe-conf.cmake \
+ i686-w64-mingw32.shared-cmake \
-DBUILD_CLAR=OFF -DTHREADSAFE=ON \
-DCMAKE_BUILD_TYPE=$RELEASE \
-DDLLTOOL="$BASEDIR"/"$MXEDIR"/usr/bin/i686-w64-mingw32.shared-dlltool \
@@ -228,7 +171,9 @@ if [[ ! -d libdivecomputer || -f build.libdivecomputer ]] ; then
mkdir -p libdivecomputer
cd libdivecomputer
- "$BASEDIR"/libdivecomputer/configure --host=i686-w64-mingw32.shared \
+ "$BASEDIR"/libdivecomputer/configure \
+ CC=i686-w64-mingw32.shared-gcc \
+ --host=i686-w64-mingw32.shared \
--enable-shared \
--prefix="$BASEDIR"/"$MXEDIR"/usr/i686-w64-mingw32.shared
make $JOBS
@@ -323,7 +268,7 @@ done
cd "$BUILDDIR"/subsurface
-i686-w64-mingw32.shared-cmake -DCMAKE_TOOLCHAIN_FILE="$BASEDIR"/"$MXEDIR"/usr/i686-w64-mingw32.shared/share/cmake/mxe-conf.cmake \
+i686-w64-mingw32.shared-cmake \
-DCMAKE_PREFIX_PATH="$BASEDIR"/"$MXEDIR"/usr/i686-w64-mingw32.shared/qt5 \
-DCMAKE_BUILD_TYPE=$RELEASE \
-DQT_TRANSLATION_DIR="$BASEDIR"/"$MXEDIR"/usr/i686-w64-mingw32.shared/qt5/translations \
diff --git a/scripts/windows/after_success.sh b/scripts/windows/after_success.sh
new file mode 100644
index 000000000..9fd38c475
--- /dev/null
+++ b/scripts/windows/after_success.sh
@@ -0,0 +1,15 @@
+#!/bin/bash
+
+if [ ! -z $TRAVIS_BRANCH ] && [ "$TRAVIS_BRANCH" != "master" ] ; then
+ export UPLOADTOOL_SUFFIX=$TRAVIS_BRANCH
+fi
+
+cd ${TRAVIS_BUILD_DIR}/../win32/subsurface
+
+echo "Submitting the folloing Windows installer for continuous build release:"
+find . -name subsurface\*.exe
+
+# get and run the upload script
+wget -c https://github.com/probonopd/uploadtool/raw/master/upload.sh
+bash ./upload.sh subsurface*.exe
+
diff --git a/scripts/windows/before_install.sh b/scripts/windows/before_install.sh
new file mode 100644
index 000000000..1d95206a0
--- /dev/null
+++ b/scripts/windows/before_install.sh
@@ -0,0 +1,79 @@
+#!/bin/bash
+
+set -x
+
+# Travis only pulls shallow repos. But that messes with git describe.
+# Sorry Travis, fetching the whole thing and the tags as well...
+git fetch --unshallow
+git pull --tags
+git describe
+
+# grab our own custom MXE environment
+cd ${TRAVIS_BUILD_DIR}/..
+echo "Downloading prebuilt MXE environment from Subsurface-divelog.org"
+wget -q http://subsurface-divelog.org/downloads/mxe-994ad473.tar.xz
+mkdir -p mxe
+cd mxe
+tar xJf ../mxe-994ad473.tar.xz
+
+# hack around path dependency - needs to be fixed
+sudo mkdir -p /data/winqt551/
+sudo ln -s ${TRAVIS_BUILD_DIR}/../mxe /data/winqt551/mxe-current
+ls -l /data/winqt551/mxe-current/usr
+
+# libdivecomputer uses the wrong include path for libusb
+# the pkgconfig file for libusb already gives the include path as
+# ../include/libusb-1.0 yet libdivecomputer wants to use
+# include <libusb-1.0/libusb.h>
+cd usr/i686-w64-mingw32.shared/include/libusb-1.0
+ln -s . libusb-1.0
+cd ${TRAVIS_BUILD_DIR}/..
+
+# now set up our other dependencies
+
+CURRENT_LIBZIP="1.2.0"
+CURRENT_HIDAPI="hidapi-0.7.0"
+CURRENT_LIBUSB="v1.0.21"
+CURRENT_LIBGIT2="v0.26.0"
+
+
+#this will soon be a git submodule
+echo "Get libdivecomputer"
+cd ${TRAVIS_BUILD_DIR}/..
+git clone -b Subsurface-branch https://github.com/Subsurface-divelog/libdc.git libdivecomputer
+cd libdivecomputer
+if [ ! -f ./configure ] ; then
+ autoreconf --install .
+ autoreconf --install . # not a typo - somehow/sometimes libdivecomputer needs to run this twice. Don't ask.
+fi
+
+echo "Get libusb"
+cd ${TRAVIS_BUILD_DIR}/..
+git clone https://github.com/libusb/libusb
+cd libusb
+if ! git checkout $CURRENT_LIBUSB ; then
+ echo "Can't find the right tag in libusb - giving up"
+ exit 1
+fi
+
+echo "Get libgit2"
+cd ${TRAVIS_BUILD_DIR}/..
+git clone https://github.com/libgit2/libgit2.git
+cd libgit2
+if ! git checkout $CURRENT_LIBGIT2 ; then
+ echo "Can't find the right tag in libgit2 - giving up"
+ exit 1
+fi
+
+echo "Get googlemaps"
+cd ${TRAVIS_BUILD_DIR}/..
+git clone https://github.com/Subsurface-divelog/googlemaps.git
+
+echo "Get Grantlee"
+cd ${TRAVIS_BUILD_DIR}/..
+git clone https://github.com/steveire/grantlee.git
+cd grantlee
+if ! git checkout v5.0.0 ; then
+ echo "can't check out v5.0.0 of grantlee -- giving up"
+ exit 1
+fi
diff --git a/scripts/windows/travisbuild.sh b/scripts/windows/travisbuild.sh
new file mode 100644
index 000000000..e8455ea87
--- /dev/null
+++ b/scripts/windows/travisbuild.sh
@@ -0,0 +1,12 @@
+#!/bin/bash
+
+# this gets executed by Travis when building an installer for Windows
+# it gets started from inside the subsurface directory
+# with all the other projects downloaded and installed in parralel to
+# subsurface; in order to be compatible with the assumed layout, we
+# need to create the secondary build directory
+cd ${TRAVIS_BUILD_DIR}/..
+mkdir win32
+ls -l
+cd win32
+bash -ex ${TRAVIS_BUILD_DIR}/packaging/windows/mxe-based-build.sh installer