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
16 before_script: &common-before
17 - COMMON_FLAGS="DYNAMIC_ARCH=1 TARGET=NEHALEM NUM_THREADS=32"
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
31 - BTYPE="BINARY=64 USE_OPENMP=1"
36 - BTYPE="BINARY=64 INTERFACE64=1"
42 - BTYPE="BINARY=64 CC=clang"
48 - BTYPE="BINARY=64 INTERFACE64=1 CC=clang"
65 - binutils-mingw-w64-x86-64
66 - gcc-mingw-w64-x86-64
67 - gfortran-mingw-w64-x86-64
68 before_script: *common-before
70 - travis_wait 45 make QUIET_MAKE=1 $COMMON_FLAGS $BTYPE
73 - BTYPE="BINARY=64 HOSTCC=gcc CC=x86_64-w64-mingw32-gcc FC=x86_64-w64-mingw32-gfortran"
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.
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" "$@"; }
89 - sudo sh alpine-chroot-install -p 'build-base gfortran perl linux-headers'
90 before_script: *common-before
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
100 - TARGET_BOX=LINUX64_MUSL
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
108 # - TARGET_BOX=LINUX64_MUSL
109 # - BTYPE="BINARY=64 USE_OPENMP=1"
113 - TARGET_BOX=LINUX64_MUSL
114 - BTYPE="BINARY=64 INTERFACE64=1"
116 # Build with the same flags as Alpine do in OpenBLAS package.
119 - TARGET_BOX=LINUX64_MUSL
120 - BTYPE="BINARY=64 NO_AFFINITY=1 USE_OPENMP=0 NO_LAPACK=0 TARGET=CORE2"
133 - COMMON_ARGS="-DTARGET=NEHALEM -DNUM_THREADS=32"
138 - cmake -Bbuild -H. $CMAKE_ARGS $COMMON_ARGS -DCMAKE_BUILD_TYPE=$CONFIG
139 - cmake --build build --config $CONFIG -- -j2
144 - CMAKE=1 CMAKE_ARGS="-DNOFORTRAN=1"
154 - COMMON_FLAGS="DYNAMIC_ARCH=1 TARGET=NEHALEM NUM_THREADS=32"
156 - brew install gcc # for gfortran
158 - travis_wait 45 make QUIET_MAKE=1 $COMMON_FLAGS $BTYPE
160 - BTYPE="BINARY=64 INTERFACE64=1"
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
175 echo "FROM openblas/alpine:${IMAGE_ARCH}
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
188 env: IMAGE_ARCH=arm32 TARGET_ARCH=ARMV6 COMPILER=clang
189 name: "Emulated Build for ARMV6 with clang"
191 env: IMAGE_ARCH=arm64 TARGET_ARCH=ARMV8 COMPILER=gcc
192 name: "Emulated Build for ARMV8 with gcc"
194 env: IMAGE_ARCH=arm64 TARGET_ARCH=ARMV8 COMPILER=clang
195 name: "Emulated Build for ARMV8 with clang"
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
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