Merge pull request #2646 from wjc404/develop
[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         - make QUIET_MAKE=1 $COMMON_FLAGS $BTYPE
20         - make -C test $COMMON_FLAGS $BTYPE
21         - make -C ctest $COMMON_FLAGS $BTYPE
22         - make -C utest $COMMON_FLAGS $BTYPE
23       env:
24         - TARGET_BOX=LINUX64
25         - BTYPE="BINARY=64"
26
27     - <<: *test-ubuntu
28       os: linux-ppc64le
29       before_script:
30         - COMMON_FLAGS="DYNAMIC_ARCH=1 TARGET=POWER8 NUM_THREADS=32"
31       env:
32         # for matrix annotation only
33         - TARGET_BOX=PPC64LE_LINUX
34         - BTYPE="BINARY=64 USE_OPENMP=1"
35
36     - <<: *test-ubuntu
37       os: linux
38       arch: s390x
39       before_script:
40         - COMMON_FLAGS="DYNAMIC_ARCH=1 TARGET=Z13 NUM_THREADS=32"
41       env:
42         # for matrix annotation only
43         - TARGET_BOX=IBMZ_LINUX
44         - BTYPE="BINARY=64 USE_OPENMP=1"
45
46     - <<: *test-ubuntu
47       env:
48         - TARGET_BOX=LINUX64
49         - BTYPE="BINARY=64 USE_OPENMP=1"
50
51     - <<: *test-ubuntu
52       env:
53         - TARGET_BOX=LINUX64
54         - BTYPE="BINARY=64 INTERFACE64=1"
55
56     - <<: *test-ubuntu
57       compiler: clang
58       env:
59         - TARGET_BOX=LINUX64
60         - BTYPE="BINARY=64 CC=clang"
61
62     - <<: *test-ubuntu
63       compiler: clang
64       env:
65         - TARGET_BOX=LINUX64
66         - BTYPE="BINARY=64 INTERFACE64=1 CC=clang"
67
68     - <<: *test-ubuntu
69       addons:
70         apt:
71           packages:
72             - gcc-multilib
73             - gfortran-multilib
74       env:
75         - TARGET_BOX=LINUX32
76         - BTYPE="BINARY=32"
77
78     - os: linux
79       compiler: gcc
80       addons:
81         apt:
82           packages:
83             - binutils-mingw-w64-x86-64
84             - gcc-mingw-w64-x86-64
85             - gfortran-mingw-w64-x86-64
86       before_script: *common-before
87       script:
88         - travis_wait 45 make QUIET_MAKE=1 $COMMON_FLAGS $BTYPE
89       env:
90         - TARGET_BOX=WIN64
91         - BTYPE="BINARY=64 HOSTCC=gcc CC=x86_64-w64-mingw32-gcc FC=x86_64-w64-mingw32-gfortran"
92
93     # Build & test on Alpine Linux inside chroot, i.e. on system with musl libc.
94     # These jobs needs sudo, so Travis runs them on VM-based infrastructure
95     # which is slower than container-based infrastructure used for jobs
96     # that don't require sudo.
97     - &test-alpine
98       os: linux
99       dist: trusty
100       sudo: true
101       language: minimal
102       before_install:
103         - "wget 'https://raw.githubusercontent.com/alpinelinux/alpine-chroot-install/v0.9.0/alpine-chroot-install' \
104           && echo 'e5dfbbdc0c4b3363b99334510976c86bfa6cb251  alpine-chroot-install' | sha1sum -c || exit 1"
105         - alpine() { /alpine/enter-chroot -u "$USER" "$@"; }
106       install:
107         - sudo sh alpine-chroot-install -p 'build-base gfortran perl linux-headers'
108       before_script: *common-before
109       script:
110         # XXX: Disable some warnings for now to avoid exceeding Travis limit for log size.
111         - alpine make QUIET_MAKE=1 $COMMON_FLAGS $BTYPE
112               CFLAGS="-Wno-misleading-indentation -Wno-sign-conversion -Wno-incompatible-pointer-types"
113         - alpine make -C test $COMMON_FLAGS $BTYPE
114         - alpine make -C ctest $COMMON_FLAGS $BTYPE
115         - alpine make -C utest $COMMON_FLAGS $BTYPE
116       env:
117         - TARGET_BOX=LINUX64_MUSL
118         - BTYPE="BINARY=64"
119
120     # XXX: This job segfaults in TESTS OF THE COMPLEX LEVEL 3 BLAS,
121     # but only on Travis CI, cannot reproduce it elsewhere.
122     #- &test-alpine-openmp
123     #  <<: *test-alpine
124     #  env:
125     #    - TARGET_BOX=LINUX64_MUSL
126     #    - BTYPE="BINARY=64 USE_OPENMP=1"
127
128     - <<: *test-alpine
129       env:
130         - TARGET_BOX=LINUX64_MUSL
131         - BTYPE="BINARY=64 INTERFACE64=1"
132
133     # Build with the same flags as Alpine do in OpenBLAS package.
134     - <<: *test-alpine
135       env:
136         - TARGET_BOX=LINUX64_MUSL
137         - BTYPE="BINARY=64 NO_AFFINITY=1 USE_OPENMP=0 NO_LAPACK=0 TARGET=CORE2"
138
139     - &test-cmake
140       os: linux
141       compiler: clang
142       addons:
143         apt:
144           packages:
145             - gfortran
146             - cmake
147       dist: trusty
148       sudo: true
149       before_script:
150         - COMMON_ARGS="-DTARGET=NEHALEM -DNUM_THREADS=32"
151       script:
152         - mkdir build
153         - CONFIG=Release
154         - cmake -Bbuild -H. $CMAKE_ARGS $COMMON_ARGS -DCMAKE_BUILD_TYPE=$CONFIG
155         - cmake --build build --config $CONFIG -- -j2
156       env:
157         - CMAKE=1
158     - <<: *test-cmake
159       env:
160         - CMAKE=1 CMAKE_ARGS="-DNOFORTRAN=1"
161     - <<: *test-cmake
162       compiler: gcc
163       env:
164         - CMAKE=1
165
166     - &test-macos
167       os: osx
168       osx_image: xcode10.1
169       before_script:
170         - COMMON_FLAGS="DYNAMIC_ARCH=1 NUM_THREADS=32"
171         - brew update
172         - brew install gcc@8 # for gfortran
173       script:
174         - travis_wait 45 make QUIET_MAKE=1 $COMMON_FLAGS $BTYPE
175       env:
176         - BTYPE="TARGET=NEHALEM BINARY=64 INTERFACE64=1 FC=gfortran-8"
177
178     - <<: *test-macos
179       osx_image: xcode10.0
180       env:
181         - BTYPE="TARGET=NEHALEM BINARY=32 NOFORTRAN=1"
182
183     - <<: *test-macos
184       osx_image: xcode10.1
185       env:
186         - CC="/Applications/Xcode-10.1.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang"
187         - CFLAGS="-O2 -Wno-macro-redefined -isysroot /Applications/Xcode-10.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.1.sdk -arch arm64 -miphoneos-version-min=10.0"
188         - BTYPE="TARGET=ARMV8 BINARY=64 HOSTCC=clang NOFORTRAN=1"
189
190     - <<: *test-macos
191       osx_image: xcode10.1
192       env:
193         - CC="/Applications/Xcode-10.1.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang"
194         - CFLAGS="-O2 -mno-thumb -Wno-macro-redefined -isysroot /Applications/Xcode-10.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.1.sdk -arch armv7 -miphoneos-version-min=5.1"
195         - BTYPE="TARGET=ARMV7 HOSTCC=clang NOFORTRAN=1"
196 # whitelist
197 branches:
198   only:
199     - master
200     - develop
201
202 notifications:
203   webhooks:
204     urls:
205       - https://webhooks.gitter.im/e/8a6e4470a0cebd090344
206     on_success: change  # options: [always|never|change] default: always
207     on_failure: always  # options: [always|never|change] default: always
208     on_start: never     # options: [always|never|change] default: always