new sgemm 8x16
[platform/upstream/openblas.git] / .travis.yml
1 # XXX: Precise is already deprecated, new default is Trusty.
2 # https://blog.travis-ci.com/2017-07-11-trusty-as-default-linux-is-coming
3 dist: precise
4 sudo: true
5 language: c
6
7 matrix:
8   include:
9     - &test-ubuntu
10       os: linux
11       compiler: gcc
12       addons:
13         apt:
14           packages:
15             - gfortran
16       before_script: &common-before
17         - COMMON_FLAGS="DYNAMIC_ARCH=1 TARGET=NEHALEM NUM_THREADS=32"
18       script:
19         - set -e
20         - travis_wait 45 make QUIET_MAKE=1 $COMMON_FLAGS $BTYPE
21         - make -C test $COMMON_FLAGS $BTYPE
22         - make -C ctest $COMMON_FLAGS $BTYPE
23         - make -C utest $COMMON_FLAGS $BTYPE
24       env:
25         - TARGET_BOX=LINUX64
26         - BTYPE="BINARY=64"
27
28     - <<: *test-ubuntu
29       env:
30         - TARGET_BOX=LINUX64
31         - BTYPE="BINARY=64 USE_OPENMP=1"
32
33     - <<: *test-ubuntu
34       env:
35         - TARGET_BOX=LINUX64
36         - BTYPE="BINARY=64 INTERFACE64=1"
37
38     - <<: *test-ubuntu
39       compiler: clang
40       env:
41         - TARGET_BOX=LINUX64
42         - BTYPE="BINARY=64 CC=clang"
43
44     - <<: *test-ubuntu
45       compiler: clang
46       env:
47         - TARGET_BOX=LINUX64
48         - BTYPE="BINARY=64 INTERFACE64=1 CC=clang"
49
50     - <<: *test-ubuntu
51       addons:
52         apt:
53           packages:
54             - gcc-multilib
55             - gfortran-multilib
56       env:
57         - TARGET_BOX=LINUX32
58         - BTYPE="BINARY=32"
59
60     - os: linux
61       compiler: gcc
62       addons:
63         apt:
64           packages:
65             - binutils-mingw-w64-x86-64
66             - gcc-mingw-w64-x86-64
67             - gfortran-mingw-w64-x86-64
68       before_script: *common-before
69       script:
70         - travis_wait 45 make QUIET_MAKE=1 $COMMON_FLAGS $BTYPE
71       env:
72         - TARGET_BOX=WIN64
73         - BTYPE="BINARY=64 HOSTCC=gcc CC=x86_64-w64-mingw32-gcc FC=x86_64-w64-mingw32-gfortran"
74
75     # Build & test on Alpine Linux inside chroot, i.e. on system with musl libc.
76     # These jobs needs sudo, so Travis runs them on VM-based infrastructure
77     # which is slower than container-based infrastructure used for jobs
78     # that don't require sudo.
79     - &test-alpine
80       os: linux
81       dist: trusty
82       sudo: true
83       language: minimal
84       before_install:
85         - "wget 'https://raw.githubusercontent.com/alpinelinux/alpine-chroot-install/v0.9.0/alpine-chroot-install' \
86           && echo 'e5dfbbdc0c4b3363b99334510976c86bfa6cb251  alpine-chroot-install' | sha1sum -c || exit 1"
87         - alpine() { /alpine/enter-chroot -u "$USER" "$@"; }
88       install:
89         - sudo sh alpine-chroot-install -p 'build-base gfortran perl linux-headers'
90       before_script: *common-before
91       script:
92         - set -e
93         # XXX: Disable some warnings for now to avoid exceeding Travis limit for log size.
94         - alpine make QUIET_MAKE=1 $COMMON_FLAGS $BTYPE
95               CFLAGS="-Wno-misleading-indentation -Wno-sign-conversion -Wno-incompatible-pointer-types"
96         - alpine make -C test $COMMON_FLAGS $BTYPE
97         - alpine make -C ctest $COMMON_FLAGS $BTYPE
98         - alpine make -C utest $COMMON_FLAGS $BTYPE
99       env:
100         - TARGET_BOX=LINUX64_MUSL
101         - BTYPE="BINARY=64"
102
103     # XXX: This job segfaults in TESTS OF THE COMPLEX LEVEL 3 BLAS,
104     # but only on Travis CI, cannot reproduce it elsewhere.
105     #- &test-alpine-openmp
106     #  <<: *test-alpine
107     #  env:
108     #    - TARGET_BOX=LINUX64_MUSL
109     #    - BTYPE="BINARY=64 USE_OPENMP=1"
110
111     - <<: *test-alpine
112       env:
113         - TARGET_BOX=LINUX64_MUSL
114         - BTYPE="BINARY=64 INTERFACE64=1"
115
116     # Build with the same flags as Alpine do in OpenBLAS package.
117     - <<: *test-alpine
118       env:
119         - TARGET_BOX=LINUX64_MUSL
120         - BTYPE="BINARY=64 NO_AFFINITY=1 USE_OPENMP=0 NO_LAPACK=0 TARGET=CORE2"
121
122     - &test-cmake
123       os: linux
124       compiler: clang
125       addons:
126         apt:
127           packages:
128             - gfortran
129             - cmake
130       dist: trusty
131       sudo: true
132       before_script:
133         - COMMON_ARGS="-DTARGET=NEHALEM -DNUM_THREADS=32"
134       script:
135         - set -e
136         - mkdir build
137         - CONFIG=Release
138         - cmake -Bbuild -H. $CMAKE_ARGS $COMMON_ARGS -DCMAKE_BUILD_TYPE=$CONFIG
139         - cmake --build build --config $CONFIG -- -j2
140       env:
141         - CMAKE=1
142     - <<: *test-cmake
143       env:
144         - CMAKE=1 CMAKE_ARGS="-DNOFORTRAN=1"
145     - <<: *test-cmake
146       compiler: gcc
147       env:
148         - CMAKE=1
149
150     - &test-macos
151       os: osx
152       osx_image: xcode10.1
153       before_script:
154         - COMMON_FLAGS="DYNAMIC_ARCH=1 TARGET=NEHALEM NUM_THREADS=32"
155         - brew update
156         - brew install gcc # for gfortran
157       script:
158         - travis_wait 45 make QUIET_MAKE=1 $COMMON_FLAGS $BTYPE
159       env:
160         - BTYPE="BINARY=64 INTERFACE64=1"
161
162     - <<: *test-macos
163       osx_image: xcode8.3
164       env:
165         - BTYPE="BINARY=32"
166
167     - &emulated-arm
168       dist: trusty
169       sudo: required
170       services: docker
171       env: IMAGE_ARCH=arm32 TARGET_ARCH=ARMV6 COMPILER=gcc
172       name: "Emulated Build for ARMV6 with gcc"
173       before_install: sudo docker run --rm --privileged multiarch/qemu-user-static:register --reset
174       script: |
175         echo "FROM openblas/alpine:${IMAGE_ARCH}
176         COPY . /tmp/openblas
177         RUN mkdir /tmp/openblas/build                             &&  \
178             cd /tmp/openblas/build                                &&  \
179             CC=${COMPILER} cmake -D DYNAMIC_ARCH=OFF                  \
180                                  -D TARGET=${TARGET_ARCH}             \
181                                  -D BUILD_SHARED_LIBS=ON              \
182                                  -D BUILD_WITHOUT_LAPACK=ON           \
183                                  -D BUILD_WITHOUT_CBLAS=ON            \
184                                  -D CMAKE_BUILD_TYPE=Release ../  &&  \
185             cmake --build ." > Dockerfile
186         docker build .
187     - <<: *emulated-arm
188       env: IMAGE_ARCH=arm32 TARGET_ARCH=ARMV6 COMPILER=clang
189       name: "Emulated Build for ARMV6 with clang"
190     - <<: *emulated-arm
191       env: IMAGE_ARCH=arm64 TARGET_ARCH=ARMV8 COMPILER=gcc
192       name: "Emulated Build for ARMV8 with gcc"
193     - <<: *emulated-arm
194       env: IMAGE_ARCH=arm64 TARGET_ARCH=ARMV8 COMPILER=clang
195       name: "Emulated Build for ARMV8 with clang"
196
197   allow_failures:
198     - env: IMAGE_ARCH=arm32 TARGET_ARCH=ARMV6 COMPILER=gcc
199     - env: IMAGE_ARCH=arm32 TARGET_ARCH=ARMV6 COMPILER=clang
200     - env: IMAGE_ARCH=arm64 TARGET_ARCH=ARMV8 COMPILER=gcc
201     - env: IMAGE_ARCH=arm64 TARGET_ARCH=ARMV8 COMPILER=clang
202
203 # whitelist
204 branches:
205   only:
206     - master
207     - develop
208
209 notifications:
210   webhooks:
211     urls:
212       - https://webhooks.gitter.im/e/8a6e4470a0cebd090344
213     on_success: change  # options: [always|never|change] default: always
214     on_failure: always  # options: [always|never|change] default: always
215     on_start: never     # options: [always|never|change] default: always