Kaydet (Commit) 02e6682e authored tarafından Colomban Wendling's avatar Colomban Wendling

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.
üst e22f0ca0
...@@ -5,20 +5,30 @@ compiler: ...@@ -5,20 +5,30 @@ compiler:
env: env:
- GTK3=no - GTK3=no
- GTK3=yes - GTK3=yes
- GTK3=no MINGW=yes
- GTK3=yes MINGW=yes
before_install: before_install:
- sudo apt-get update -qq - sudo apt-get update -qq
install: 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 - sudo apt-get install -y python-docutils rst2pdf
# try not to install doxygen-latex because we don't need it and it's huge # 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 - sudo apt-get install -y --no-install-recommends doxygen
before_script: before_script:
- export CFLAGS="-g -O2 -Werror=pointer-arith -Werror=aggregate-return -Werror=implicit-function-declaration" - export CFLAGS="-g -O2 -Werror=pointer-arith -Werror=aggregate-return -Werror=implicit-function-declaration"
script: script:
- NOCONFIGURE=1 ./autogen.sh
- > - >
NOCONFIGURE=1 ./autogen.sh && if [ -n "$MINGW" ]; then
mkdir _build && arg=-2; [ "$GTK3" = yes ] && arg=-3;
cd _build && unset CC CXX;
../configure --enable-gtk3=$GTK3 && sh ./scripts/cross-build-mingw.sh $arg;
make -j2 && else
make -j2 check mkdir _build &&
cd _build &&
../configure --enable-gtk3=$GTK3 &&
make -j2 &&
make -j2 check;
fi
#!/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
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment