1language: rust
2sudo: false
3rust: nightly
4
5stages:
6  - tools
7  - linux-tier1
8  - osx-tier1
9  - osx-tier2
10  - linux-tier2
11  - android
12
13matrix:
14  fast_finish: true
15  include:
16    # Android:
17    - env: TARGET=x86_64-linux-android NOVERIFY=1
18      name: "x86_64-unknown-linux-android + SSE2"
19      stage: android
20    - env: TARGET=arm-linux-androideabi
21      name: "arm-linux-androideabi"
22      stage: android
23    - env: TARGET=arm-linux-androideabi RUSTFLAGS="-C target-feature=+v7,+neon"
24      name: "arm-linux-androideabi + NEON"
25      stage: android
26    - env: TARGET=aarch64-linux-android
27      name: "aarch64-unknown-linux-android"
28      stage: android
29    - env: TARGET=aarch64-linux-android RUSTFLAGS="-C target-feature=+neon"
30      name: "aarch64-unknown-linux-android + NEON"
31      stage: android
32    - env: TARGET="thumbv7neon-linux-androideabi"
33      name: "thumbv7neon-linux-androideabi"
34      stage: android
35    # Linux:
36    - env: TARGET=i586-unknown-linux-gnu
37      name: "i586-unknown-linux-gnu"
38      stage: linux-tier2
39    - env: TARGET=i586-unknown-linux-gnu RUSTFLAGS="-C target-feature=+sse"
40      name: "i586-unknown-linux-gnu + SSE"
41      stage: linux-tier2
42    - env: TARGET=i586-unknown-linux-gnu RUSTFLAGS="-C target-feature=+sse2"
43      name: "i586-unknown-linux-gnu + SSE2"
44      stage: linux-tier2
45    - env: TARGET=i686-unknown-linux-gnu
46      name: "i686-unknown-linux-gnu + SSE2"
47      stage: linux-tier1
48    - env: TARGET=i686-unknown-linux-gnu RUSTFLAGS="-C target-feature=+sse4.2"
49      name: "i686-unknown-linux-gnu + SSE4.2"
50      stage: linux-tier1
51    - env: TARGET=i686-unknown-linux-gnu RUSTFLAGS="-C target-feature=+avx2"
52      name: "i686-unknown-linux-gnu + AVX2"
53      stage: linux-tier1
54    - env: TARGET=x86_64-unknown-linux-gnu
55      name: "x86_64-unknown-linux-gnu + SSE2"
56      install: rustup component add rustfmt-preview
57      stage: linux-tier1
58    - env: TARGET=x86_64-unknown-linux-gnu RUSTFLAGS="-C target-feature=+sse4.2"
59      name: "x86_64-unknown-linux-gnu + SSE4.2"
60      install: rustup component add rustfmt-preview
61      stage: linux-tier1
62    - env: TARGET=x86_64-unknown-linux-gnu RUSTFLAGS="-C target-feature=+avx"
63      name: "x86_64-unknown-linux-gnu + AVX"
64      install: rustup component add rustfmt-preview
65      stage: linux-tier1
66    - env: TARGET=x86_64-unknown-linux-gnu RUSTFLAGS="-C target-feature=+avx2"
67      name: "x86_64-unknown-linux-gnu + AVX2"
68      install: rustup component add rustfmt-preview
69      stage: linux-tier1
70    - env: TARGET=x86_64-unknown-linux-gnu-emulated
71      name: "Intel SDE + SSE2"
72      install: true
73      stage: linux-tier1
74    - env: TARGET=x86_64-unknown-linux-gnu-emulated RUSTFLAGS="-C target-feature=+sse4.2"
75      name: "Intel SDE + SSE4.2"
76      install: true
77      stage: linux-tier1
78    - env: TARGET=x86_64-unknown-linux-gnu-emulated RUSTFLAGS="-C target-feature=+avx"
79      name: "Intel SDE + AVX"
80      install: true
81      stage: linux-tier1
82    - env: TARGET=x86_64-unknown-linux-gnu-emulated RUSTFLAGS="-C target-feature=+avx2"
83      name: "Intel SDE + AVX2"
84      install: true
85      stage: linux-tier1
86    - env: TARGET=x86_64-unknown-linux-gnu-emulated RUSTFLAGS="-C target-feature=+avx-512f"
87      name: "Intel SDE + AVX-512"
88      install: true
89      stage: linux-tier1
90    - env: TARGET=arm-unknown-linux-gnueabi
91      name: "arm-unknown-linux-gnueabi"
92      stage: linux-tier2
93    - env: TARGET=arm-unknown-linux-gnueabi RUSTFLAGS="-C target-feature=+v7,+neon"
94      name: "arm-unknown-linux-gnueabi + NEON"
95      stage: linux-tier2
96    - env: TARGET=arm-unknown-linux-gnueabihf
97      name: "arm-unknown-linux-gnueabihf"
98      stage: linux-tier2
99    - env: TARGET=arm-unknown-linux-gnueabihf RUSTFLAGS="-C target-feature=+v7,+neon"
100      name: "arm-unknown-linux-gnueabihf + NEON"
101      stage: linux-tier2
102    - env: TARGET=armv7-unknown-linux-gnueabihf
103      name: "armv7-unknown-linux-gnueabihf"
104      stage: linux-tier2
105    - env: TARGET=armv7-unknown-linux-gnueabihf RUSTFLAGS="-C target-feature=+neon"
106      name: "armv7-unknown-linux-gnueabihf + NEON"
107      stage: linux-tier2
108    - env: TARGET="thumbv7neon-unknown-linux-gnueabihf"
109      name: "thumbv7neon-unknown-linux-gnueabihf"
110      stage: linux-tier2
111    - env: TARGET=aarch64-unknown-linux-gnu
112      name: "aarch64-unknown-linux-gnu"
113      stage: linux-tier2
114    - env: TARGET=aarch64-unknown-linux-gnu RUSTFLAGS="-C target-feature=+neon"
115      name: "aarch64-unknown-linux-gnu + NEON"
116      stage: linux-tier2
117    - env: TARGET=mips-unknown-linux-gnu
118      name: "mips-unknown-linux-gnu"
119      stage: linux-tier2
120    - env: TARGET=mipsel-unknown-linux-musl
121      name: "mipsel-unknown-linux-musl"
122      stage: linux-tier2
123    - env: TARGET=mips64-unknown-linux-gnuabi64
124      name: "mips64-unknown-linux-gnuabi64"
125      stage: linux-tier2
126    - env: TARGET=mips64el-unknown-linux-gnuabi64
127      name: "mips64el-unknown-linux-gnuabi64"
128      stage: linux-tier2
129      # FIXME: https://github.com/rust-lang-nursery/packed_simd/issues/18
130      # env: TARGET=mips64el-unknown-linux-gnuabi64 RUSTFLAGS="-C target-feature=+msa -C target-cpu=mips64r6"
131    - env: TARGET=powerpc-unknown-linux-gnu
132      name: "powerpc-unknown-linux-gnu"
133      stage: linux-tier2
134    - env: TARGET=powerpc64-unknown-linux-gnu
135      name: "powerpc64-unknown-linux-gnu"
136      stage: linux-tier2
137    - env: TARGET=powerpc64le-unknown-linux-gnu
138      name: "powerpc64le-unknown-linux-gnu"
139      stage: linux-tier2
140    - env: TARGET=powerpc64le-unknown-linux-gnu RUSTFLAGS="-C target-feature=+altivec"
141      name: "powerpc64le-unknown-linux-gnu + ALTIVEC"
142      stage: linux-tier2
143    - env: TARGET=powerpc64le-unknown-linux-gnu RUSTFLAGS="-C target-feature=+vsx"
144      name: "powerpc64le-unknown-linux-gnu + VSX"
145      stage: linux-tier2
146    - env: TARGET=s390x-unknown-linux-gnu
147      name: "s390x-unknown-linux-gnu"
148      stage: linux-tier2
149    - env: TARGET=sparc64-unknown-linux-gnu
150      name: "sparc64-unknown-linux-gnu"
151      stage: linux-tier2
152    # WebAssembly:
153    - env: TARGET=wasm32-unknown-unknown
154      name: "wasm32-unknown-unknown"
155      stage: osx-tier1 # For now
156    # MacOSX:
157    - os: osx
158      env: TARGET=i686-apple-darwin
159      name: "i686-apple-darwin + SSE2"
160      script: ci/run.sh
161      osx_image: xcode10
162      stage: osx-tier1
163    - os: osx
164      env: TARGET=i686-apple-darwin RUSTFLAGS="-C target-feature=+sse4.2"
165      name: "i686-apple-darwin + SSE4.2"
166      script: ci/run.sh
167      osx_image: xcode10
168      stage: osx-tier1
169      # Travis-CI OSX build bots do not support AVX2:
170    - os: osx
171      env: TARGET=i686-apple-darwin RUSTFLAGS="-C target-feature=+avx"
172      name: "i686-apple-darwin + AVX"
173      script: ci/run.sh
174      osx_image: xcode10
175      stage: osx-tier1
176    - os: osx
177      env: TARGET=x86_64-apple-darwin
178      name: "x86_64-apple-darwin + SSE2"
179      install: true
180      script: ci/run.sh
181      osx_image: xcode10
182      stage: osx-tier1
183    - os: osx
184      env: TARGET=x86_64-apple-darwin RUSTFLAGS="-C target-feature=+sse4.2"
185      name: "x86_64-apple-darwin + SSE4.2"
186      install: true
187      script: ci/run.sh
188      osx_image: xcode10
189      stage: osx-tier1
190      # Travis-CI OSX build bots do not support AVX2:
191    - os: osx
192      env: TARGET=x86_64-apple-darwin RUSTFLAGS="-C target-feature=+avx"
193      name: "x86_64-apple-darwin + AVX"
194      install: true
195      script: ci/run.sh
196      osx_image: xcode10
197      stage: osx-tier1
198    # *BSDs:
199    #- env: TARGET=i686-unknown-freebsd NORUN=1
200    #  script: ci/run.sh
201    #- env: TARGET=x86_64-unknown-freebsd NORUN=1
202    #  script: ci/run.sh
203    #- env: TARGET=x86_64-unknown-netbsd NORUN=1
204    #  script: ci/run.sh
205    # Solaris:
206    #- env: TARGET=x86_64-sun-solaris NORUN=1
207    #  script: ci/run.sh
208    # iOS:
209    - os: osx
210      env: TARGET=i386-apple-ios
211      name: "i386-apple-ios"
212      script: ci/run.sh
213      osx_image: xcode9.4
214      stage: osx-tier2
215    - os: osx
216      env: TARGET=x86_64-apple-ios
217      name: "x86_64-apple-ios + SSE2"
218      script: ci/run.sh
219      osx_image: xcode9.4
220      stage: osx-tier2
221    - os: osx
222      env: TARGET=armv7-apple-ios NORUN=1
223      name: "armv7-apple-ios [Build only]"
224      script: ci/run.sh
225      osx_image: xcode9.4
226      stage: osx-tier2
227    - os: osx
228      env: TARGET=aarch64-apple-ios NORUN=1
229      name: "aarch64-apple-ios [Build only]"
230      script: ci/run.sh
231      osx_image: xcode9.4
232      stage: osx-tier2
233    # BENCHMARKS:
234    - name: "Benchmarks - x86_64-unknown-linux-gnu"
235      install: TARGET=x86_64-unknown-linux-gnu ./ci/setup_benchmarks.sh
236      script: PATH=$(pwd):$PATH NORUN=1 VERIFY=1 FEATURES=core_arch,ispc,sleef-sys ci/benchmark.sh
237      stage: tools
238    - name: "Benchmarks - x86_64-apple-darwin"
239      install: TARGET=x86_64-apple-darwin ./ci/setup_benchmarks.sh
240      script: PATH=$(pwd):$PATH NORUN=1 VERIFY=1 FEATURES=core_arch,ispc,sleef-sys ci/benchmark.sh
241      os: osx
242      osx_image: xcode9.4
243      stage: tools
244    # TOOLS:
245    - name: "Documentation"
246      install: cargo install mdbook
247      script: ci/dox.sh
248      stage: tools
249    - name: "rustfmt"
250      install: true
251      before_script: rustup component add rustfmt-preview
252      script: ci/all.sh check_fmt || true
253      stage: tools
254    - name: "clippy"
255      install: true
256      before_script: rustup component add clippy-preview
257      script: ci/all.sh clippy
258      stage: tools
259
260  allow_failures:
261    # FIXME: ISPC cannot be found?
262    - name: "Benchmarks - x86_64-apple-darwin"
263    # FIXME: TBD
264    - env: TARGET=powerpc-unknown-linux-gnu
265    - env: TARGET=powerpc64-unknown-linux-gnu
266    - env: TARGET=powerpc64le-unknown-linux-gnu
267    - env: TARGET=powerpc64le-unknown-linux-gnu RUSTFLAGS="-C target-feature=+altivec"
268    - env: TARGET=powerpc64le-unknown-linux-gnu RUSTFLAGS="-C target-feature=+vsx"
269    #- env: TARGET=i686-unknown-freebsd NORUN=1
270    #- env: TARGET=x86_64-unknown-freebsd NORUN=1
271    #- env: TARGET=x86_64-unknown-netbsd NORUN=1
272    #- env: TARGET=x86_64-sun-solaris NORUN=1
273
274    # FIXME: TBD
275    - env: TARGET=arm-linux-androideabi
276    - env: TARGET=arm-linux-androideabi RUSTFLAGS="-C target-feature=+v7,+neon"
277    - env: TARGET=aarch64-linux-android
278    - env: TARGET=aarch64-linux-android RUSTFLAGS="-C target-feature=+neon"
279
280    # FIXME: iOS
281    # https://github.com/rust-lang-nursery/packed_simd/issues/26
282    - env: TARGET=i386-apple-ios
283    - env: TARGET=x86_64-apple-ios
284
285    # FIXME: https://github.com/rust-lang-nursery/packed_simd/issues/182
286    - env: TARGET=arm-unknown-linux-gnueabi RUSTFLAGS="-C target-feature=+v7,+neon"
287    - env: TARGET=arm-unknown-linux-gnueabihf RUSTFLAGS="-C target-feature=+v7,+neon"
288    - env: TARGET=armv7-unknown-linux-gnueabihf RUSTFLAGS="-C target-feature=+neon"
289
290    # FIXME: https://github.com/rust-lang-nursery/packed_simd/issues/183
291    - env: TARGET=wasm32-unknown-unknown
292
293install: travis_retry rustup target add $TARGET
294before_script: cargo generate-lockfile
295script: travis_wait 50 ci/run-docker.sh
296after_script: sleep 5
297
298env:
299  global:
300    secure: "lPHv7s6+AxQYNaFncycVFQt++Y1asQmMhOikQU1ztlP8CK7+hn2m98cg/euOJyzIOb2iJ3ZX4cGZkzw4lc59MQBByb1GtDbazQoUOzVDbVfe9BDD2f8JVoIFh1CMfjPKQ7Gg/rJqWlwrUlSd5GNxPCutKjY7qZhJuR6SQbJjlWaGN2Vd4fVCzKXz8fHRXgMEZS+d+CR4Nsrkb83J3Z4s5kSdJmhYxJ61AWjuzJVwUh4l3/HEYlSL5XXpuh5R2i7W16h1PlNdaTUgkZli1lHzO8+6Q8LzX9+XiLIEVX9lw3A2NdIKGz8E/+7Qs5oYOkwYhjROsDQxIK7xkSM30bQuN7cwMBybAVIyOPJkqXQ1dQyp83KSdsOj7JMyDDRvcEDLI6ehRlm5EcdH7YrReuboN81iUo0Sa7VsuUmgj5hjERCt9r30f9aWuitABai7vKRtjglg7Sp5CrEVPA4PQs6PqKCCRogoggbXJ/Z5Dyw/RZaXPeNR9+qIKN1Vjm9Gew1sRN2JK/3+vXTKtyJXH/uBxgJt4jQlbuShOJuF+BSfTF88sMe67a/357SSOIb4JkaCyd0flDCWYE8576kaHPlVVMT2peXee0LeRXm1e13nG3Na0t3LS/orJLPHOShNQGoDj7qAP5aEKggRya896JGwtvlaBHHTmSQh65G7cyNErZo="
301branches:
302  only:
303    - staging # bors r+
304    - trying  # bors try
305    - master
306notifications:
307  email:
308    on_success: never
309