language: c
matrix:
include:
# Linux
- os: linux
compiler: clang
dist: precise
sudo: required
- os: linux
compiler: gcc
dist: precise
sudo: required
- os: linux
arch: arm64
compiler: clang
dist: precise
sudo: required
- os: linux
arch: arm64
compiler: gcc
dist: precise
sudo: required
- os: linux
arch: ppc64le
compiler: clang
dist: precise
sudo: required
- os: linux
arch: ppc64le
compiler: gcc
dist: precise
sudo: required
# Clang seems to have broken exceptions on s390x
#- os: linux
# arch: s390x
# compiler: clang
# dist: precise
# sudo: required
- os: linux
arch: s390x
compiler: gcc
dist: precise
sudo: required
- os: linux
compiler: clang
dist: trusty
sudo: required
- os: linux
compiler: gcc
dist: trusty
sudo: required
- os: linux
compiler: clang
dist: xenial
sudo: required
- os: linux
compiler: gcc
dist: xenial
sudo: required
- os: linux
compiler: clang
dist: bionic
sudo: required
- os: linux
compiler: gcc
dist: bionic
sudo: required
# macOS
- os: osx
osx_image: xcode11.2
language: objective-c
env:
- no32bit=1
- noruntime=1 # Broken compiler in this version of Xcode
- os: osx
osx_image: xcode11.1
language: objective-c
env:
- no32bit=1
- noruntime=1 # Broken compiler in this version of Xcode
- os: osx
osx_image: xcode11
language: objective-c
env:
- no32bit=1
- noruntime=1 # Broken compiler in this version of Xcode
- os: osx
osx_image: xcode10.3
language: objective-c
env:
- no32bit=1
- os: osx
osx_image: xcode10.2
language: objective-c
env:
- no32bit=1
- os: osx
osx_image: xcode10.1
language: objective-c
- os: osx
osx_image: xcode10
language: objective-c
- os: osx
osx_image: xcode9.4
language: objective-c
- os: osx
osx_image: xcode9.3
language: objective-c
- os: osx
osx_image: xcode9.2
language: objective-c
- os: osx
osx_image: xcode9.1
language: objective-c
- os: osx
osx_image: xcode9
language: objective-c
- os: osx
osx_image: xcode8.3
language: objective-c
- os: osx
osx_image: xcode8
language: objective-c
- os: osx
osx_image: xcode7.3
language: objective-c
# iOS
- os: osx
osx_image: xcode11.2
language: objective-c
env:
- config=ios
- os: osx
osx_image: xcode11.1
language: objective-c
env:
- config=ios
- os: osx
osx_image: xcode11
language: objective-c
env:
- config=ios
- os: osx
osx_image: xcode10.3
language: objective-c
env:
- config=ios
- os: osx
osx_image: xcode10.2
language: objective-c
env:
- config=ios
- os: osx
osx_image: xcode10.1
language: objective-c
env:
- config=ios
- os: osx
osx_image: xcode10
language: objective-c
env:
- config=ios
- os: osx
osx_image: xcode9.4
language: objective-c
env:
- config=ios
- os: osx
osx_image: xcode9.3
language: objective-c
env:
- config=ios
- os: osx
osx_image: xcode9.2
language: objective-c
env:
- config=ios
- os: osx
osx_image: xcode9.1
language: objective-c
env:
- config=ios
- os: osx
osx_image: xcode9
language: objective-c
env:
- config=ios
- os: osx
osx_image: xcode8.3
language: objective-c
env:
- config=ios
- os: osx
osx_image: xcode8
language: objective-c
env:
- config=ios
- os: osx
osx_image: xcode7.3
language: objective-c
env:
- config=ios
# AmigaOS
- os: linux
dist: trusty
env:
- config=amigaos
# Nintendo 3DS
- os: linux
dist: bionic
env:
- config=nintendo_3ds
# Nintendo DS
- os: linux
dist: bionic
env:
- config=nintendo_ds
# Nintendo Wii
- os: linux
dist: bionic
env:
- config=wii
services: docker
before_install:
- if [ "$TRAVIS_OS_NAME" = "linux" -a -z "$config" ]; then
case "$TRAVIS_CPU_ARCH" in
amd64 | s390x)
pkgs="gobjc-multilib";
;;
*)
pkgs="gobjc";
;;
esac;
pkgs="$pkgs libsctp-dev";
if grep precise /etc/lsb-release >/dev/null; then
pkgs="$pkgs ipx";
fi;
if ! sudo apt-get -qq install -y $pkgs >/tmp/apt_log 2>&1; then
cat /tmp/apt_log;
exit 1;
fi;
if grep precise /etc/lsb-release >/dev/null; then
sudo ipx_internal_net add 1234 123456;
fi;
fi
- if [ "$config" = "nintendo_3ds" -o "$config" = "nintendo_ds" ]; then
docker pull devkitpro/devkitarm;
fi
- if [ "$config" = "wii" ]; then
docker pull devkitpro/devkitppc;
fi
- if [ "$config" = "amigaos" ]; then
wget -q https://franke.ms/download/amiga-gcc.tgz;
tar -C / -xzf amiga-gcc.tgz;
fi
script:
- build() {
if ! git clean -fxd >/tmp/clean_log 2>&1; then
cat /tmp/clean_log;
exit 1;
fi;
./autogen.sh;
.travis/build.sh "$@";
}
- if [ "$TRAVIS_OS_NAME" = "linux" -a -z "$config" ]; then
build_32_64() {
build OBJC="$CC" $@;
case "$TRAVIS_CPU_ARCH" in
amd64)
build OBJC="$CC -m32"
--host=i686-pc-linux-gnu $@;
;;
s390x)
build OBJC="$CC -m31"
--host=s390-pc-linux-gnu $@;
;;
esac
};
build_32_64;
build_32_64 --enable-seluid24;
build_32_64 --disable-compiler-tls;
true The following are not CPU-dependent, so only run them on amd64;
if [ "$TRAVIS_CPU_ARCH" = "amd64" ]; then
build_32_64 --disable-threads;
build_32_64 --disable-threads --disable-sockets;
build_32_64 --disable-threads --disable-files;
build_32_64 --disable-threads --disable-sockets
--disable-files;
build_32_64 --disable-sockets;
build_32_64 --disable-sockets --disable-files;
build_32_64 --disable-files;
build_32_64 --disable-shared;
build_32_64 --disable-shared --enable-seluid24;
build_32_64 --disable-compiler-tls --disable-threads;
fi;
fi
- if [ "$TRAVIS_OS_NAME" = "osx" -a -z "$config" ]; then
build_mac_32_64() {
build $@;
if [ -z "$no32bit" ]; then
build OBJC="clang -m32" --host=i386-apple-darwin $@;
fi;
};
if xcodebuild -version | grep 'Xcode 6' >/dev/null; then
export CPPFLAGS="-D_Nullable=__nullable
-D_Nonnull=__nonnull
-D_Null_unspecified=__null_unspecified";
fi;
build_mac_32_64;
build_mac_32_64 --disable-threads;
build_mac_32_64 --disable-threads --disable-sockets;
build_mac_32_64 --disable-threads --disable-files;
build_mac_32_64 --disable-threads --disable-sockets --disable-files;
build_mac_32_64 --disable-sockets;
build_mac_32_64 --disable-sockets --disable-files;
build_mac_32_64 --disable-files;
build_mac_32_64 --disable-shared;
if [ -z "$noruntime" ]; then
build_mac_32_64 --enable-runtime;
build_mac_32_64 --enable-runtime --enable-seluid24;
build_mac_32_64 --enable-runtime --disable-threads;
build_mac_32_64 --enable-runtime --disable-threads
--disable-sockets;
build_mac_32_64 --enable-runtime --disable-threads
--disable-files;
build_mac_32_64 --enable-runtime --disable-threads
--disable-sockets --disable-files;
build_mac_32_64 --enable-runtime --disable-sockets;
build_mac_32_64 --enable-runtime --disable-sockets
--disable-files;
build_mac_32_64 --enable-runtime --disable-files;
build_mac_32_64 --enable-runtime --disable-shared;
build_mac_32_64 --enable-runtime --disable-shared
--enable-seluid24;
fi;
fi
- if [ "$config" = "ios" ]; then
if xcodebuild -version | grep 'Xcode 6' >/dev/null; then
export CPPFLAGS="-D_Nullable=__nullable
-D_Nonnull=__nonnull
-D_Null_unspecified=__null_unspecified";
fi;
export IPHONEOS_DEPLOYMENT_TARGET="9.0";
clang="clang -isysroot $(xcrun --sdk iphoneos --show-sdk-path)";
export OBJC="$clang -arch armv7 -arch arm64";
export OBJCPP="$clang -arch armv7 -E";
build --host=arm-apple-darwin --enable-static;
sysroot="$(xcrun --sdk iphonesimulator --show-sdk-path)";
clang="clang -isysroot $sysroot";
export OBJC="$clang -arch i386 -arch x86_64";
export OBJCPP="$clang -arch i386 -E";
build WRAPPER=true --host=i386-apple-darwin --enable-static;
fi
- if [ "$config" = "amigaos" ]; then
export PATH="/opt/amiga/bin:$PATH";
build --host=m68k-amigaos;
build --host=m68k-amigaos --disable-amiga-lib;
build --host=m68k-amigaos --enable-static;
fi
- if [ "$config" = "nintendo_3ds" ]; then
./autogen.sh;
docker run -e DEVKITPRO=/opt/devkitpro
-e PATH="/opt/devkitpro/devkitARM/bin:$PATH"
-v $TRAVIS_BUILD_DIR:/objfw devkitpro/devkitarm
/objfw/.travis/build.sh --host=arm-none-eabi --with-3ds;
fi
- if [ "$config" = "nintendo_ds" ]; then
./autogen.sh;
docker run -e DEVKITPRO=/opt/devkitpro
-e PATH="/opt/devkitpro/devkitARM/bin:$PATH"
-v $TRAVIS_BUILD_DIR:/objfw devkitpro/devkitarm
/objfw/.travis/build.sh --host=arm-none-eabi --with-nds;
fi
- if [ "$config" = "wii" ]; then
./autogen.sh;
docker run -e DEVKITPRO=/opt/devkitpro
-e PATH="/opt/devkitpro/devkitPPC/bin:$PATH"
-v $TRAVIS_BUILD_DIR:/objfw devkitpro/devkitppc
/objfw/.travis/build.sh ac_cv_prog_wiiload=
--host=powerpc-eabi --with-wii;
fi