[geany/geany] 02e668: travis: Enable Windows cross-compilation
Colomban Wendling
git-noreply at xxxxx
Fri Jul 10 21:32:56 UTC 2015
Branch: refs/heads/master
Author: Colomban Wendling <ban at herbesfolles.org>
Committer: Colomban Wendling <ban at herbesfolles.org>
Date: Fri, 10 Jul 2015 21:32:56 UTC
Commit: 02e6682ea65ad0094d2cee0b14a2c8c4afa738b6
https://github.com/geany/geany/commit/02e6682ea65ad0094d2cee0b14a2c8c4afa738b6
Log Message:
-----------
travis: Enable Windows cross-compilation
We unfortunately can't run tests as they require running the just build
(foreign) executable, but at least it tries and build the Windows code
paths.
Modified Paths:
--------------
.travis.yml
scripts/cross-build-mingw.sh
Modified: .travis.yml
24 lines changed, 17 insertions(+), 7 deletions(-)
===================================================================
@@ -5,20 +5,30 @@ compiler:
env:
- GTK3=no
- GTK3=yes
+ - GTK3=no MINGW=yes
+ - GTK3=yes MINGW=yes
before_install:
- sudo apt-get update -qq
install:
- - sudo apt-get install -y libgtk2.0-dev libgtk-3-dev intltool libtool
+ - sudo apt-get install -y intltool libtool
+ - test -n "$MINGW" || sudo apt-get install -y libgtk2.0-dev libgtk-3-dev
+ - test -z "$MINGW" || sudo apt-get install -y mingw-w64-tools g++-mingw-w64-i686 gcc-mingw-w64-i686 binutils-mingw-w64-i686
- sudo apt-get install -y python-docutils rst2pdf
# try not to install doxygen-latex because we don't need it and it's huge
- sudo apt-get install -y --no-install-recommends doxygen
before_script:
- export CFLAGS="-g -O2 -Werror=pointer-arith -Werror=aggregate-return -Werror=implicit-function-declaration"
script:
+ - NOCONFIGURE=1 ./autogen.sh
- >
- NOCONFIGURE=1 ./autogen.sh &&
- mkdir _build &&
- cd _build &&
- ../configure --enable-gtk3=$GTK3 &&
- make -j2 &&
- make -j2 check
+ if [ -n "$MINGW" ]; then
+ arg=-2; [ "$GTK3" = yes ] && arg=-3;
+ unset CC CXX;
+ sh ./scripts/cross-build-mingw.sh $arg;
+ else
+ mkdir _build &&
+ cd _build &&
+ ../configure --enable-gtk3=$GTK3 &&
+ make -j2 &&
+ make -j2 check;
+ fi
Modified: scripts/cross-build-mingw.sh
102 lines changed, 102 insertions(+), 0 deletions(-)
===================================================================
@@ -0,0 +1,102 @@
+#!/bin/sh
+# A script to automate setup and build for Windows cross-compilation
+#
+# What it does:
+# 1) prepare a build directory
+# 2) download and unpacked the dependencies
+# (see http://www.gtk.org/download/win32.php)
+# 2.1) fixup the unpacked pkg-config file paths
+# 3) setup the few required paths
+# 4) configure with sensible options for this
+# 5) build
+# 6) install in a local directory
+# 7) pack the installation in a ZIP file, ready to be used
+# (but does not pack the dependencies)
+
+# You may change those
+HOST=i686-w64-mingw32
+BUILDDIR=_build-cross-mingw
+GTK3=no
+CONFIGUREFLAGS="--enable-nls"
+MAKEFLAGS="${MAKEFLAGS:--j2}"
+
+while getopts '32h' o; do
+ case "$o" in
+ 3) GTK3=yes;;
+ 2) GTK3=no;;
+ h)
+ cat <<EOF
+USAGE: $0 [-2|-3] [-h]
+
+-2 Build against GTK2
+-3 Build against GTK3
+-h Show this help and exit
+EOF
+ exit 0;;
+ *) echo "Invalid option $o (see -h)">&2; exit 1;;
+ esac
+done
+shift $((OPTIND - 1))
+
+CONFIGUREFLAGS="$CONFIGUREFLAGS --enable-gtk3=$GTK3"
+if [ "$GTK3" = yes ]; then
+ BUNDLE_ZIP="http://win32builder.gnome.org/gtk+-bundle_3.8.2-20131001_win32.zip"
+else
+ BUNDLE_ZIP="http://ftp.gnome.org/pub/gnome/binaries/win32/gtk+/2.24/gtk+-bundle_2.24.10-20120208_win32.zip"
+fi
+
+# USAGE: fetch_and_unzip URL DEST_PREFIX
+fetch_and_unzip()
+{
+ local basename=${1##*/}
+ curl -L -# "$1" > "$basename"
+ unzip -q "$basename" -d "$2"
+ rm -f "$basename"
+}
+
+if test -d "$BUILDDIR"; then
+ cat >&2 <<EOF
+** Directory "$BUILDDIR/" already exists.
+If it was created by this tool and just want to build, simply run make:
+ $ make -C "$BUILDDIR/_build/"
+
+If however you want to recreate it, please remove it first:
+ $ rm -rf "$BUILDDIR/"
+EOF
+ exit 1
+fi
+
+set -e
+set -x
+
+
+test -f configure
+# check if the host tools are available, because configure falls back
+# on default non-prefixed tools if they are missing, and it can spit
+# quite a lot of subtle errors. also avoids going further if something
+# is obviously missing.
+type "$HOST-gcc"
+
+SRCDIR="$PWD"
+
+mkdir "$BUILDDIR"
+cd "$BUILDDIR"
+
+mkdir _deps
+fetch_and_unzip "$BUNDLE_ZIP" _deps
+# fixup the prefix= in the pkg-config files
+sed -i "s%^\(prefix=\).*$%\1$PWD/_deps%" _deps/lib/pkgconfig/*.pc
+
+export PKG_CONFIG_PATH="$PWD/_deps/lib/pkgconfig/"
+export CPPFLAGS="-I$PWD/_deps/include"
+export LDFLAGS="-L$PWD/_deps/lib"
+
+mkdir _build
+cd _build
+"$SRCDIR/configure" \
+ --host=$HOST \
+ --disable-silent-rules \
+ --prefix="$PWD/../_install" \
+ $CONFIGUREFLAGS
+make $MAKEFLAGS
+make $MAKEFLAGS install
--------------
This E-Mail was brought to you by github_commit_mail.py (Source: https://github.com/geany/infrastructure).
More information about the Commits
mailing list