Commit f55cd919 authored by Ralf Habacker's avatar Ralf Habacker Committed by Simon McVittie

travis-ci: Add cross building support for mingw 64 bit compiler

Signed-off-by: Ralf Habacker's avatarRalf Habacker <ralf.habacker@freenet.de>
Reviewed-by: Simon McVittie's avatarSimon McVittie <smcv@collabora.com>
Bug: https://bugs.freedesktop.org/show_bug.cgi?id=105662
(cherry picked from commit d22e7901)
parent 53a9a153
......@@ -35,9 +35,10 @@ env:
- ci_variant=reduced
- ci_variant=legacy
- ci_buildsys=cmake
- ci_host=mingw
- ci_host=mingw ci_variant=debug
- ci_host=mingw ci_buildsys=cmake
- ci_host=i686-w64-mingw32
- ci_host=i686-w64-mingw32 ci_buildsys=cmake ci_variant=debug
- ci_host=x86_64-w64-mingw32 ci_variant=debug
- ci_host=x86_64-w64-mingw32 ci_buildsys=cmake
- ci_docker=ubuntu:xenial ci_distro=ubuntu ci_suite=xenial
- ci_docker=debian:jessie-slim ci_distro=debian ci_suite=jessie
- ci_docker=debian:stretch-slim ci_distro=debian ci_suite=stretch
......
# Toolchain for mingw-w64 64-bit compilers, as shipped in Debian/Ubuntu.
set(GNU_HOST x86_64-w64-mingw32)
set(CMAKE_SYSTEM_PROCESSOR "x86_64")
set(COMPILER_PREFIX "${GNU_HOST}-")
set(CMAKE_SYSTEM_NAME "Windows")
set(CMAKE_CROSSCOMPILING TRUE)
set(WIN32 TRUE)
set(MINGW TRUE)
set(CMAKE_C_COMPILER ${COMPILER_PREFIX}gcc)
set(CMAKE_CXX_COMPILER ${COMPILER_PREFIX}g++)
set(CMAKE_RC_COMPILER ${COMPILER_PREFIX}windres)
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
......@@ -94,9 +94,13 @@ cd ci-build-${ci_variant}-${ci_host}
make="make -j${ci_parallel} V=1 VERBOSE=1"
case "$ci_host" in
(mingw)
mirror=http://repo.msys2.org/mingw/i686
mingw="$(pwd)/mingw32"
(*-w64-mingw32)
mirror=http://repo.msys2.org/mingw/${ci_host%%-*}
if [ "${ci_host%%-*}" = i686 ]; then
mingw="$(pwd)/mingw32"
else
mingw="$(pwd)/mingw64"
fi
install -d "${mingw}"
export PKG_CONFIG_LIBDIR="${mingw}/lib/pkgconfig"
export PKG_CONFIG_PATH=
......@@ -111,8 +115,8 @@ case "$ci_host" in
libffi-3.2.1-3 \
zlib-1.2.8-9 \
; do
wget ${mirror}/mingw-w64-i686-${pkg}-any.pkg.tar.xz
tar -xvf mingw-w64-i686-${pkg}-any.pkg.tar.xz
wget ${mirror}/mingw-w64-${ci_host%%-*}-${pkg}-any.pkg.tar.xz
tar -xvf mingw-w64-${ci_host%%-*}-${pkg}-any.pkg.tar.xz
done
export TMPDIR=/tmp
;;
......@@ -126,9 +130,13 @@ case "$ci_buildsys" in
set _ "$@"
set "$@" --enable-developer --enable-tests
# Enable optional features that are off by default
if [ "$ci_host" != mingw ]; then
set "$@" --enable-user-session
fi
case "$ci_host" in
*-w64-mingw32)
;;
*)
set "$@" --enable-user-session
;;
esac
shift
# The test coverage for OOM-safety is too
# verbose to be useful on travis-ci.
......@@ -191,10 +199,10 @@ case "$ci_buildsys" in
esac
case "$ci_host" in
(mingw)
(*-w64-mingw32)
set _ "$@"
set "$@" --build="$(build-aux/config.guess)"
set "$@" --host=i686-w64-mingw32
set "$@" --host="${ci_host}"
set "$@" LDFLAGS=-L"${mingw}/lib"
set "$@" CPPFLAGS=-I"${mingw}/include"
set "$@" CFLAGS=-static-libgcc
......@@ -247,9 +255,9 @@ case "$ci_buildsys" in
(cmake)
case "$ci_host" in
(mingw)
(*-w64-mingw32)
set _ "$@"
set "$@" -D CMAKE_TOOLCHAIN_FILE="${srcdir}/cmake/i686-w64-mingw32.cmake"
set "$@" -D CMAKE_TOOLCHAIN_FILE="${srcdir}/cmake/${ci_host}.cmake"
set "$@" -D CMAKE_PREFIX_PATH="${mingw}"
set "$@" -D CMAKE_INCLUDE_PATH="${mingw}/include"
set "$@" -D CMAKE_LIBRARY_PATH="${mingw}/lib"
......
......@@ -82,19 +82,33 @@ case "$ci_distro" in
# travis-ci has a sources list for Chrome which doesn't support i386
: | $sudo tee /etc/apt/sources.list.d/google-chrome.list
if [ "$ci_host" = mingw ]; then
$sudo dpkg --add-architecture i386
fi
case "$ci_host" in
(i686-w64-mingw32)
$sudo dpkg --add-architecture i386
;;
(x86_64-w64-mingw32)
# nothing required, travis-ci is an amd64 system
;;
esac
$sudo apt-get -qq -y update
if [ "$ci_host" = mingw ]; then
$sudo apt-get -qq -y install \
binutils-mingw-w64-i686 \
g++-mingw-w64-i686 \
wine:i386 \
${NULL}
fi
case "$ci_host" in
(i686-w64-mingw32)
$sudo apt-get -qq -y install \
binutils-mingw-w64-i686 \
g++-mingw-w64-i686 \
wine:i386 \
${NULL}
;;
(x86_64-w64-mingw32)
$sudo apt-get -qq -y install \
binutils-mingw-w64-x86-64\
g++-mingw-w64-x86-64 \
wine:amd64 \
${NULL}
;;
esac
$sudo apt-get -qq -y install \
autoconf-archive \
......
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