- os: osx
env: HOST=arm-apple-darwin
- os: linux
+ env: HOST=ppc64le-linux-gnu LIBFFI_TEST_OPTIMIZATION="-O0"
+ - os: linux
+ env: HOST=ppc64le-linux-gnu LIBFFI_TEST_OPTIMIZATION="-O2"
+ - os: linux
+ env: HOST=ppc64le-linux-gnu LIBFFI_TEST_OPTIMIZATION="-O2 -fomit-frame-pointer"
+ - os: linux
+ env: HOST=arm32v7-linux-gnu LIBFFI_TEST_OPTIMIZATION="-O0"
+ - os: linux
+ env: HOST=arm32v7-linux-gnu LIBFFI_TEST_OPTIMIZATION="-O2"
+ - os: linux
+ env: HOST=arm32v7-linux-gnu LIBFFI_TEST_OPTIMIZATION="-O2 -fomit-frame-pointer"
+ - os: linux
+ env: HOST=aarch64-linux-gnu LIBFFI_TEST_OPTIMIZATION="-O0"
+ - os: linux
+ env: HOST=aarch64-linux-gnu LIBFFI_TEST_OPTIMIZATION="-O2"
+ - os: linux
+ env: HOST=aarch64-linux-gnu LIBFFI_TEST_OPTIMIZATION="-O2 -fomit-frame-pointer"
+ - os: linux
compiler: gcc
env: HOST=i386-pc-linux-gnu MEVAL='export CC="$CC -m32" && CXX="$CXX -m32"'
- os: linux
- if test x"$MEVAL" != x; then eval ${MEVAL}; fi
install:
- - ./.travis/install.sh
+ - travis_wait 30 ./.travis/install.sh
script:
- if ! test x"$MEVAL" = x; then eval ${MEVAL}; fi
--- /dev/null
+#!/bin/bash
+
+cd /opt
+
+./configure
+make
+make dist
+make check RUNTESTFLAGS="-a $RUNTESTFLAGS"
+EXITCODE=$?
+gzip -c -9 */testsuite/libffi.log > libffi.log.gz
+echo ================================================================
+echo The logs are too long for travis to handle, so we compress and
+echo uuencode them. Download, decode and uncompress if you need to
+echo read them.
+echo ================================================================
+uuencode libffi.log.gz -
+echo ================================================================
+echo ================================================================
+exit $EXITCODE
+
#!/bin/bash
-# exit this script if any commmand fails
-# set -e
-
function build_linux()
{
./autogen.sh
make
make dist
make check RUNTESTFLAGS="-a $RUNTESTFLAGS"
+ EXITCODE=$?
gzip -c -9 */testsuite/libffi.log > libffi.log.gz
echo ================================================================
echo The logs are too long for travis to handle, so we compress and
echo uuencode them. Download, decode and uncompress if you need to
- echo read them.
+ echo read them. For example, if you select and save this text
+ echo as libffi.uu, run: 'cat libffi.uu | uudecode | gzip -d | less'.
echo ================================================================
uuencode libffi.log.gz -
echo ================================================================
echo ================================================================
+
+ exit $EXITCODE
+}
+
+function build_foreign_linux()
+{
+ docker run --rm -t -i -v `pwd`:/opt --rm -ti -e LIBFFI_TEST_OPTIMIZATION="${LIBFFI_TEST_OPTIMIZATION}" $2 bash -c /opt/.travis/build-in-container.sh
+ exit $?
}
function build_ios()
# export PYTHON_BIN=/usr/local/bin/python
./generate-darwin-source-and-headers.py
xcodebuild -showsdks
- xcodebuild -project libffi.xcodeproj -target "libffi-iOS" -configuration Release -sdk iphoneos10.3
- find ./
+ xcodebuild -project libffi.xcodeproj -target "libffi-iOS" -configuration Release -sdk iphoneos11.4
+ exit $?
}
./autogen.sh
arm-apple-darwin*)
build_ios
;;
+ arm32v7-linux-gnu)
+ build_foreign_linux arm moxielogic/arm32v7-ci-build-container:latest
+ ;;
+ aarch64-linux-gnu)
+ build_foreign_linux aarch64 moxielogic/aarch64-ci-build-container:latest
+ ;;
+ ppc64le-linux-gnu)
+ build_foreign_linux ppc64le moxielogic/ppc64le-ci-build-container:latest
+ ;;
+ s390x-linux-gnu)
+ build_foreign_linux s390x s390x/ubuntu
+ ;;
*)
build_linux
;;
set -x
if [[ $TRAVIS_OS_NAME != 'linux' ]]; then
- brew update
+ brew update > brew-update.log 2>&1
# fix an issue with libtool on travis by reinstalling it
brew uninstall libtool;
brew install libtool dejagnu;
else
+ sudo apt-get clean # clear the cache
sudo apt-get update
- sudo apt-get install dejagnu texinfo sharutils
- case "$HOST" in
- i386-pc-linux-gnu)
- sudo apt-get install gcc-multilib g++-multilib
- ;;
- moxie-elf)
- echo 'deb https://repos.moxielogic.org:7114/MoxieLogic moxiedev main' | sudo tee -a /etc/apt/sources.list
- sudo apt-get clean # clear the cache
- sudo apt-get update ## -qq
- # debug...
- curl https://repos.moxielogic.org:7114/MoxieLogic/dists/moxiedev/main/binary-amd64/Packages
- sudo apt-get install -y --allow-unauthenticated moxielogic-moxie-elf-gcc moxielogic-moxie-elf-gcc-c++ moxielogic-moxie-elf-gcc-libstdc++ moxielogic-moxie-elf-gdb-sim
- ;;
+ case $HOST in
+ arm32v7-linux-gnu | aarch64-linux-gnu | ppc64le-linux-gnu | s390x-linux-gnu)
+ sudo apt-get install qemu-user-static
+ ;;
+ i386-pc-linux-gnu)
+ sudo apt-get install gcc-multilib g++-multilib;
+ ;;
+ moxie-elf)
+ echo 'deb https://repos.moxielogic.org:7114/MoxieLogic moxiedev main' | sudo tee -a /etc/apt/sources.list
+ sudo apt-get clean # clear the cache
+ sudo apt-get update ## -qq
+ # debug...
+ curl https://repos.moxielogic.org:7114/MoxieLogic/dists/moxiedev/main/binary-amd64/Packages
+ sudo apt-get update
+ sudo apt-get install -y --allow-unauthenticated moxielogic-moxie-elf-gcc moxielogic-moxie-elf-gcc-c++ moxielogic-moxie-elf-gcc-libstdc++ moxielogic-moxie-elf-gdb-sim
+ ;;
+ i686-w64-mingw32)
+ sudo apt-get install gcc-mingw-w64-i686 binutils-mingw-w64-i686 wine;
+ ;;
+ esac
+ case $HOST in
+ arm32v7-linux-gnu | aarch64-linux-gnu | ppc64le-linux-gnu | s390x-linux-gnu)
+ # don't install host tools
+ ;;
+ *)
+ sudo apt-get install dejagnu texinfo sharutils
+ ;;
esac
fi
return [libffi-dg-test-1 target_compile $prog $do_what $extra_tool_flags]
}
+proc libffi-dg-prune { target_triplet text } {
+ # We get this with some qemu emulated systems (eg. ppc64le-linux-gnu)
+ regsub -all "(^|\n)\[^\n\]*unable to perform all requested operations" $text "" text
+ return $text
+}
+
proc libffi-init { args } {
global gluefile wrap_flags;
global srcdir
proc run-many-tests { testcases extra_flags } {
global compiler_vendor
global has_gccbug
+ global env
switch $compiler_vendor {
"clang" {
- set common "-W -Wall"
- set optimizations { "-O0" "-O2" }
+ set common "-W -Wall"
+ if [info exists env(LIBFFI_TEST_OPTIMIZATION)] {
+ set optimizations [ list $env(LIBFFI_TEST_OPTIMIZATION) ]
+ } else {
+ set optimizations { "-O0" "-O2" }
+ }
}
"gnu" {
set common "-W -Wall -Wno-psabi"
- set optimizations { "-O0" "-O2" "-O2 -fomit-frame-pointer" }
+ if [info exists env(LIBFFI_TEST_OPTIMIZATION)] {
+ set optimizations [ list $env(LIBFFI_TEST_OPTIMIZATION) ]
+ } else {
+ set optimizations { "-O0" "-O2" "-O2 -fomit-frame-pointer" }
+ }
}
default {
# Assume we are using the vendor compiler.
set common ""
- set optimizations { "" }
+ if [info exists env(LIBFFI_TEST_OPTIMIZATION)] {
+ set optimizations [ list $env(LIBFFI_TEST_OPTIMIZATION) ]
+ } else {
+ set optimizations { "" }
+ }
}
}
+ info exists env(LD_LIBRARY_PATH)
+
set targetabis { "" }
if [string match $compiler_vendor "gnu"] {
if [libffi_feature_test "#ifdef __i386__"] {