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.
103 lines
2.4 KiB
Bash
Executable File
103 lines
2.4 KiB
Bash
Executable File
#!/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
|