ObjFW  .travis.yml at [ab7cb38e25]

File .travis.yml artifact 839879cad6 part of check-in ab7cb38e25


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: trusty
      env:
        - config=nintendo_3ds

    # Nintendo DS
    - os: linux
      dist: trusty
      env:
        - config=nintendo_ds

    # Nintendo Wii
    - os: linux
      dist: trusty
      env:
        - config=wii

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"
        -o "$config" = "wii" ]; then
            wget https://github.com/devkitPro/pacman/releases/download/devkitpro-pacman-1.0.1/devkitpro-pacman.deb;
            sudo dpkg -i devkitpro-pacman.deb;
    fi

  - if [ "$config" = "nintendo_3ds" ]; then
            sudo dkp-pacman --noconfirm -Syu 3ds-dev;
    fi

  - if [ "$config" = "nintendo_ds" ]; then
            sudo dkp-pacman --noconfirm -Syu nds-dev;
    fi

  - if [ "$config" = "wii" ]; then
            sudo dkp-pacman --noconfirm -Syu wii-dev;
    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;
            echo ">> Configuring with $@";
            ./autogen.sh;
            if ! ./configure ac_cv_path_TPUT= "$@"; then
                    cat config.log;
                    exit 1;
            fi;
            echo ">> Building (configured with $@)";
            if ! make -j4 >/tmp/make_log 2>&1; then
                    cat /tmp/make_log;
                    exit 1;
            fi;
            echo ">> Installing (configured with $@)";
            if ! sudo PATH="$PATH" make install >/tmp/install_log 2>&1; then
                    cat /tmp/install_log;
                    exit 1;
            fi;
    }

  - 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
            export DEVKITPRO="/opt/devkitpro";
            export PATH="$DEVKITPRO/devkitARM/bin:$PATH";

            build --host=arm-none-eabi --with-3ds;
    fi

  - if [ "$config" = "nintendo_ds" ]; then
            export DEVKITPRO="/opt/devkitpro";
            export PATH="$DEVKITPRO/devkitARM/bin:$PATH";

            build --host=arm-none-eabi --with-nds;
    fi

  - if [ "$config" = "wii" ]; then
            export DEVKITPRO="/opt/devkitpro";
            export PATH="$DEVKITPRO/devkitPPC/bin:$PATH";

            build ac_cv_prog_wiiload= --host=powerpc-eabi --with-wii;
    fi