|
- # XXX: Precise is already deprecated, new default is Trusty.
- # https://blog.travis-ci.com/2017-07-11-trusty-as-default-linux-is-coming
- dist: precise
- sudo: true
- language: c
-
- matrix:
- include:
- - &test-ubuntu
- os: linux
- compiler: gcc
- addons:
- apt:
- packages:
- - gfortran
- before_script: &common-before
- - COMMON_FLAGS="DYNAMIC_ARCH=1 TARGET=NEHALEM NUM_THREADS=32"
- script:
- - set -e
- - travis_wait 45 make QUIET_MAKE=1 $COMMON_FLAGS $BTYPE
- - make -C test $COMMON_FLAGS $BTYPE
- - make -C ctest $COMMON_FLAGS $BTYPE
- - make -C utest $COMMON_FLAGS $BTYPE
- env:
- - TARGET_BOX=LINUX64
- - BTYPE="BINARY=64"
-
- - <<: *test-ubuntu
- os: linux-ppc64le
- before_script:
- - COMMON_FLAGS="DYNAMIC_ARCH=1 TARGET=POWER8 NUM_THREADS=32"
- env:
- # for matrix annotation only
- - TARGET_BOX=PPC64LE_LINUX
- - BTYPE="BINARY=64 USE_OPENMP=1"
-
- - <<: *test-ubuntu
- env:
- - TARGET_BOX=LINUX64
- - BTYPE="BINARY=64 USE_OPENMP=1"
-
- - <<: *test-ubuntu
- env:
- - TARGET_BOX=LINUX64
- - BTYPE="BINARY=64 INTERFACE64=1"
-
- - <<: *test-ubuntu
- compiler: clang
- env:
- - TARGET_BOX=LINUX64
- - BTYPE="BINARY=64 CC=clang"
-
- - <<: *test-ubuntu
- compiler: clang
- env:
- - TARGET_BOX=LINUX64
- - BTYPE="BINARY=64 INTERFACE64=1 CC=clang"
-
- - <<: *test-ubuntu
- addons:
- apt:
- packages:
- - gcc-multilib
- - gfortran-multilib
- env:
- - TARGET_BOX=LINUX32
- - BTYPE="BINARY=32"
-
- - os: linux
- compiler: gcc
- addons:
- apt:
- packages:
- - binutils-mingw-w64-x86-64
- - gcc-mingw-w64-x86-64
- - gfortran-mingw-w64-x86-64
- before_script: *common-before
- script:
- - travis_wait 45 make QUIET_MAKE=1 $COMMON_FLAGS $BTYPE
- env:
- - TARGET_BOX=WIN64
- - BTYPE="BINARY=64 HOSTCC=gcc CC=x86_64-w64-mingw32-gcc FC=x86_64-w64-mingw32-gfortran"
-
- # Build & test on Alpine Linux inside chroot, i.e. on system with musl libc.
- # These jobs needs sudo, so Travis runs them on VM-based infrastructure
- # which is slower than container-based infrastructure used for jobs
- # that don't require sudo.
- - &test-alpine
- os: linux
- dist: trusty
- sudo: true
- language: minimal
- before_install:
- - "wget 'https://raw.githubusercontent.com/alpinelinux/alpine-chroot-install/v0.9.0/alpine-chroot-install' \
- && echo 'e5dfbbdc0c4b3363b99334510976c86bfa6cb251 alpine-chroot-install' | sha1sum -c || exit 1"
- - alpine() { /alpine/enter-chroot -u "$USER" "$@"; }
- install:
- - sudo sh alpine-chroot-install -p 'build-base gfortran perl linux-headers'
- before_script: *common-before
- script:
- - set -e
- # XXX: Disable some warnings for now to avoid exceeding Travis limit for log size.
- - alpine make QUIET_MAKE=1 $COMMON_FLAGS $BTYPE
- CFLAGS="-Wno-misleading-indentation -Wno-sign-conversion -Wno-incompatible-pointer-types"
- - alpine make -C test $COMMON_FLAGS $BTYPE
- - alpine make -C ctest $COMMON_FLAGS $BTYPE
- - alpine make -C utest $COMMON_FLAGS $BTYPE
- env:
- - TARGET_BOX=LINUX64_MUSL
- - BTYPE="BINARY=64"
-
- # XXX: This job segfaults in TESTS OF THE COMPLEX LEVEL 3 BLAS,
- # but only on Travis CI, cannot reproduce it elsewhere.
- #- &test-alpine-openmp
- # <<: *test-alpine
- # env:
- # - TARGET_BOX=LINUX64_MUSL
- # - BTYPE="BINARY=64 USE_OPENMP=1"
-
- - <<: *test-alpine
- env:
- - TARGET_BOX=LINUX64_MUSL
- - BTYPE="BINARY=64 INTERFACE64=1"
-
- # Build with the same flags as Alpine do in OpenBLAS package.
- - <<: *test-alpine
- env:
- - TARGET_BOX=LINUX64_MUSL
- - BTYPE="BINARY=64 NO_AFFINITY=1 USE_OPENMP=0 NO_LAPACK=0 TARGET=CORE2"
-
- - &test-cmake
- os: linux
- compiler: clang
- addons:
- apt:
- packages:
- - gfortran
- - cmake
- dist: trusty
- sudo: true
- before_script:
- - COMMON_ARGS="-DTARGET=NEHALEM -DNUM_THREADS=32"
- script:
- - set -e
- - mkdir build
- - CONFIG=Release
- - cmake -Bbuild -H. $CMAKE_ARGS $COMMON_ARGS -DCMAKE_BUILD_TYPE=$CONFIG
- - cmake --build build --config $CONFIG -- -j2
- env:
- - CMAKE=1
- - <<: *test-cmake
- env:
- - CMAKE=1 CMAKE_ARGS="-DNOFORTRAN=1"
- - <<: *test-cmake
- compiler: gcc
- env:
- - CMAKE=1
-
- - &test-macos
- os: osx
- osx_image: xcode10.1
- before_script:
- - COMMON_FLAGS="DYNAMIC_ARCH=1 TARGET=NEHALEM NUM_THREADS=32"
- - brew update
- - brew install gcc # for gfortran
- script:
- - travis_wait 45 make QUIET_MAKE=1 $COMMON_FLAGS $BTYPE
- env:
- - BTYPE="BINARY=64 INTERFACE64=1"
-
- - <<: *test-macos
- osx_image: xcode8.3
- env:
- - BTYPE="BINARY=32"
-
- - &emulated-arm
- dist: trusty
- sudo: required
- services: docker
- env: IMAGE_ARCH=arm32 TARGET_ARCH=ARMV6 COMPILER=gcc
- name: "Emulated Build for ARMV6 with gcc"
- before_install: sudo docker run --rm --privileged multiarch/qemu-user-static:register --reset
- script: |
- echo "FROM openblas/alpine:${IMAGE_ARCH}
- COPY . /tmp/openblas
- RUN mkdir /tmp/openblas/build && \
- cd /tmp/openblas/build && \
- CC=${COMPILER} cmake -D DYNAMIC_ARCH=OFF \
- -D TARGET=${TARGET_ARCH} \
- -D BUILD_SHARED_LIBS=ON \
- -D BUILD_WITHOUT_LAPACK=ON \
- -D BUILD_WITHOUT_CBLAS=ON \
- -D CMAKE_BUILD_TYPE=Release ../ && \
- cmake --build ." > Dockerfile
- docker build .
- - <<: *emulated-arm
- env: IMAGE_ARCH=arm32 TARGET_ARCH=ARMV6 COMPILER=clang
- name: "Emulated Build for ARMV6 with clang"
- - <<: *emulated-arm
- env: IMAGE_ARCH=arm64 TARGET_ARCH=ARMV8 COMPILER=gcc
- name: "Emulated Build for ARMV8 with gcc"
- - <<: *emulated-arm
- env: IMAGE_ARCH=arm64 TARGET_ARCH=ARMV8 COMPILER=clang
- name: "Emulated Build for ARMV8 with clang"
-
- allow_failures:
- - env: IMAGE_ARCH=arm32 TARGET_ARCH=ARMV6 COMPILER=gcc
- - env: IMAGE_ARCH=arm32 TARGET_ARCH=ARMV6 COMPILER=clang
- - env: IMAGE_ARCH=arm64 TARGET_ARCH=ARMV8 COMPILER=gcc
- - env: IMAGE_ARCH=arm64 TARGET_ARCH=ARMV8 COMPILER=clang
-
- # whitelist
- branches:
- only:
- - master
- - develop
-
- notifications:
- webhooks:
- urls:
- - https://webhooks.gitter.im/e/8a6e4470a0cebd090344
- on_success: change # options: [always|never|change] default: always
- on_failure: always # options: [always|never|change] default: always
- on_start: never # options: [always|never|change] default: always
|