From 883058b92bf81784bf51f4cf97066e57367cc81c Mon Sep 17 00:00:00 2001 From: Stefan Schmidt Date: Wed, 22 Aug 2018 14:51:12 +0200 Subject: [PATCH] ci: mingw build target to cross compile EFL for Windows We are using the EFL windows package installer (ewpi) from Vincent Torri here (thanks!) to setup all the needed cross compiled dependencies for EFL. The make target is disabled as we are not able to execute the windows binaries withour additional work to run check. Work is ongoing in ewpi to have the dependencies provided for soem of the disabled build options (gstreamer, webp, tiff, physics, etc). Once these are working well in ewpi we will enable them here as well. Differential Revision: https://phab.enlightenment.org/D7294 --- .ci/ci-configure.sh | 37 +++++++++++++++++++++++++++++++------ .ci/ci-make-check.sh | 4 ++++ .ci/ci-make-checkbuild.sh | 3 +++ .travis.yml | 4 ++++ 4 files changed, 42 insertions(+), 6 deletions(-) diff --git a/.ci/ci-configure.sh b/.ci/ci-configure.sh index 00f9e4b750..e69cddc3c6 100755 --- a/.ci/ci-configure.sh +++ b/.ci/ci-configure.sh @@ -29,6 +29,13 @@ MISC_DISABLED_LINUX_COPTS=" --disable-neon --disable-libeeze --disable-systemd - RELEASE_READY_LINUX_COPTS=" --with-profile=release" +MINGW_COPTS=" --prefix=/root/EFL/ewpi_64 --host=x86_64-w64-mingw32 --with-eolian-gen=/usr/bin/eolian_gen \ +--with-edje-cc=/usr/bin/edje_cc --with-eet-eet=/usr/bin/eet --with-bin-elm-prefs-cc=/usr/bin/elm_prefs_cc \ +--disable-static --with-tests=regular --with-crypto=openssl --disable-gstreamer1 \ +--disable-libmount --disable-valgrind --disable-avahi --disable-spectre --disable-libraw \ +--disable-librsvg --disable-pulseaudio --disable-cxx-bindings \ +--disable-physics --disable-image-loader-tiff" + patch -p1 < .ci/efl.m4.diff sed -i.orig 's/AC_INIT\(.*\)efl_version-[a-zA-Z0-9]\+/AC_INIT\1efl_version/g' configure.ac @@ -51,16 +58,34 @@ if [ "$DISTRO" != "" ] ; then if [ "$1" = "release-ready" ]; then OPTS="$OPTS $RELEASE_READY_LINUX_COPTS" fi + + if [ "$1" = "mingw" ]; then + OPTS="$OPTS $MINGW_COPTS" + docker exec $(cat $HOME/cid) sh -c 'rm -f /src/config.cache' + fi docker exec $(cat $HOME/cid) sh -c 'rm -f ~/.ccache/ccache.conf' travis_fold autoreconf autoreconf - docker exec --env MAKEFLAGS="-j5 -rR" --env EIO_MONITOR_POLL=1 --env CC="ccache gcc" \ - --env CXX="ccache g++" --env CFLAGS="-fdirectives-only" --env CXXFLAGS="-fdirectives-only" \ - --env LD="ld.gold" $(cat $HOME/cid) sh -c "LIBTOOLIZE_OPTIONS='--no-warn' autoreconf -iv" + if [ "$1" = "mingw" ]; then + docker exec $(cat $HOME/cid) sh -c 'rm -f /src/config.cache' + docker exec --env MAKEFLAGS="-j5 -rR" --env EIO_MONITOR_POLL=1 --env CFLAGS="-pipe" --env CXXFLAGS="-pipe" \ + --env CPPFLAGS="-I/root/EFL/ewpi_64/include -DECORE_WIN32_WIP_POZEFLKSD" --env LDFLAGS="-L/root/EFL/ewpi_64/lib/" --env PKG_CONFIG_PATH="/root/EFL/ewpi_64/lib/pkgconfig/" \ + $(cat $HOME/cid) sh -c "autoreconf -iv" + else + docker exec --env MAKEFLAGS="-j5 -rR" --env EIO_MONITOR_POLL=1 --env CC="ccache gcc" \ + --env CXX="ccache g++" --env CFLAGS="-fdirectives-only" --env CXXFLAGS="-fdirectives-only" \ + --env LD="ld.gold" $(cat $HOME/cid) sh -c "LIBTOOLIZE_OPTIONS='--no-warn' autoreconf -iv" + fi travis_endfold autoreconf travis_fold configure "configure $OPTS" - docker exec --env MAKEFLAGS="-j5 -rR" --env EIO_MONITOR_POLL=1 --env CC="ccache gcc" \ - --env CXX="ccache g++" --env CFLAGS="-fdirectives-only" --env CXXFLAGS="-fdirectives-only" \ - --env LD="ld.gold" $(cat $HOME/cid) sh -c ".ci/configure.sh $OPTS" + if [ "$1" = "mingw" ]; then + docker exec --env MAKEFLAGS="-j5 -rR" --env EIO_MONITOR_POLL=1 --env CFLAGS="-pipe" --env CXXFLAGS="-pipe" \ + --env CPPFLAGS="-I/root/EFL/ewpi_64/include -DECORE_WIN32_WIP_POZEFLKSD" --env LDFLAGS="-L/root/EFL/ewpi_64/lib/" --env PKG_CONFIG_PATH="/root/EFL/ewpi_64/lib/pkgconfig/" \ + $(cat $HOME/cid) sh -c ".ci/configure.sh $OPTS" + else + docker exec --env MAKEFLAGS="-j5 -rR" --env EIO_MONITOR_POLL=1 --env CC="ccache gcc" \ + --env CXX="ccache g++" --env CFLAGS="-fdirectives-only" --env CXXFLAGS="-fdirectives-only" \ + --env LD="ld.gold" $(cat $HOME/cid) sh -c ".ci/configure.sh $OPTS" + fi travis_endfold configure else OSX_COPTS="--disable-cxx-bindings --with-tests=regular --disable-dependency-tracking -C" diff --git a/.ci/ci-make-check.sh b/.ci/ci-make-check.sh index edb1752810..6cbb5433ad 100755 --- a/.ci/ci-make-check.sh +++ b/.ci/ci-make-check.sh @@ -5,6 +5,10 @@ if [ "$1" = "release-ready" ] ; then exit 0 fi +if [ "$1" = "mingw" ] ; then + exit 0 +fi + #T7151 if [ "$1" = "misc" ] || [ "$1" = "misc-disabled" ] ; then exit 0 diff --git a/.ci/ci-make-checkbuild.sh b/.ci/ci-make-checkbuild.sh index fab8a43635..0fb77b1ffc 100755 --- a/.ci/ci-make-checkbuild.sh +++ b/.ci/ci-make-checkbuild.sh @@ -5,6 +5,9 @@ set -e if [ "$1" = "release-ready" ] ; then exit 0 fi +if [ "$1" = "mingw" ] ; then + exit 0 +fi travis_fold check-build "make check-build" if [ "$DISTRO" != "" ] ; then docker exec --env MAKEFLAGS="-j5 -rR" --env EIO_MONITOR_POLL=1 $(cat $HOME/cid) make check-build diff --git a/.travis.yml b/.travis.yml index 8ef3386d04..32c5629691 100644 --- a/.travis.yml +++ b/.travis.yml @@ -32,6 +32,10 @@ jobs: - os: linux - DISTRO=Fedora28 - CI_BUILD_TYPE=misc-disabled + - env: + - os: linux + - DISTRO=Fedora28 + - CI_BUILD_TYPE=mingw - if: type = cron env: - os: linux