1language: c 2 3# Dump CPU info before start 4before_install: 5 - cat /proc/cpuinfo || echo /proc/cpuinfo is not present 6 7matrix: 8 fast_finish: true 9 include: 10 11 - name: General linux x64 tests 12 arch: amd64 13 addons: 14 apt: 15 packages: 16 - g++-multilib 17 - gcc-multilib 18 - cppcheck 19 script: 20 - make -B test-all 21 - make clean 22 - CFLAGS="-Werror" MOREFLAGS="-Wno-sign-conversion" make dispatch # removing sign conversion warnings due to a bug in gcc-5's definition of some AVX512 intrinsics 23 - make clean 24 - CC=g++ CFLAGS="-O1 -mavx512f -Werror" make 25 - make clean 26 - CC=g++ CFLAGS="-Wall -Wextra -Werror" make DISPATCH=1 27 28 29 - name: Check results consistency on x64 30 arch: amd64 31 script: 32 - CPPFLAGS=-DXXH_VECTOR=XXH_SCALAR make check # Scalar code path 33 - make clean 34 - CPPFLAGS=-DXXH_VECTOR=XXH_SSE2 make check # SSE2 code path 35 - make clean 36 - CPPFLAGS="-mavx2 -DXXH_VECTOR=XXH_AVX2" make check # AVX2 code path 37 - make clean 38 - CPPFLAGS="-mavx512f -DXXH_VECTOR=XXH_AVX512" make check # AVX512 code path 39 - make clean 40 - CPPFLAGS=-DXXH_REROLL=1 make check # reroll code path (#240) 41 - make -C tests/bench 42 43 - name: macOS General Test 44 os: osx 45 compiler: clang 46 script: 47 - CFLAGS="-Werror" make # test library build 48 - make clean 49 - make test MOREFLAGS='-Werror' | tee # test scenario where `stdout` is not the console 50 51 - name: ARM compilation and consistency checks (Qemu) 52 dist: xenial 53 arch: amd64 54 addons: 55 apt: 56 packages: 57 - qemu-system-arm 58 - qemu-user-static 59 - gcc-arm-linux-gnueabi 60 - libc6-dev-armel-cross 61 script: 62 # arm (32-bit) 63 - CC=arm-linux-gnueabi-gcc CPPFLAGS=-DXXH_VECTOR=XXH_SCALAR LDFLAGS=-static RUN_ENV=qemu-arm-static make check # Scalar code path 64 - make clean 65 # NEON (32-bit) 66 - CC=arm-linux-gnueabi-gcc CPPFLAGS=-DXXH_VECTOR=XXH_NEON CFLAGS="-O3 -march=armv7-a -fPIC -mfloat-abi=softfp -mfpu=neon-vfpv4" LDFLAGS=-static RUN_ENV=qemu-arm-static make check # NEON code path 67 68 - name: aarch64 compilation and consistency checks 69 dist: xenial 70 arch: arm64 71 script: 72 # aarch64 73 - CPPFLAGS=-DXXH_VECTOR=XXH_SCALAR make check # Scalar code path 74 # NEON (64-bit) 75 - make clean 76 - CPPFLAGS=-DXXH_VECTOR=XXH_NEON make check # NEON code path 77 # clang 78 - make clean 79 - CC=clang CPPFLAGS=-DXXH_VECTOR=XXH_SCALAR make check # Scalar code path 80 # clang + NEON 81 - make clean 82 - CC=clang CPPFLAGS=-DXXH_VECTOR=XXH_NEON make check # NEON code path 83 84 # We need Bionic here because the QEMU versions shipped in the older repos 85 # do not support POWER8 emulation, and compiling QEMU from source is a pain. 86 - name: PowerPC + PPC64 compilation and consistency checks (Qemu on Bionic) 87 dist: bionic 88 arch: amd64 89 addons: 90 apt: 91 packages: 92 - qemu-system-ppc 93 - qemu-user-static 94 - gcc-powerpc-linux-gnu 95 - gcc-powerpc64-linux-gnu 96 - libc6-dev-powerpc-cross 97 - libc6-dev-ppc64-cross 98 script: 99 - CC=powerpc-linux-gnu-gcc RUN_ENV=qemu-ppc-static LDFLAGS=-static make check # Scalar code path 100 - make clean 101 - CC=powerpc64-linux-gnu-gcc RUN_ENV=qemu-ppc64-static CPPFLAGS=-DXXH_VECTOR=XXH_SCALAR CFLAGS="-O3" LDFLAGS="-static -m64" make check # Scalar code path 102 # VSX code 103 - make clean 104 - CC=powerpc64-linux-gnu-gcc RUN_ENV="qemu-ppc64-static -cpu power8" CPPFLAGS=-DXXH_VECTOR=XXH_VSX CFLAGS="-O3 -maltivec -mvsx -mcpu=power8 -mpower8-vector" LDFLAGS="-static -m64" make check # VSX code path 105 # altivec.h redefinition issue #426 106 - make clean 107 - CC=powerpc64-linux-gnu-gcc CPPFLAGS=-DXXH_VECTOR=XXH_VSX CFLAGS="-maltivec -mvsx -mcpu=power8 -mpower8-vector" make -C tests test_ppc_redefine 108 109 - name: PPC64LE compilation and consistency checks 110 dist: xenial 111 arch: ppc64le 112 script: 113 # Scalar (universal) code path 114 - CPPFLAGS=-DXXH_VECTOR=XXH_SCALAR LDFLAGS=-static make check 115 # VSX code path (64-bit) 116 - make clean 117 - CPPFLAGS=-DXXH_VECTOR=XXH_VSX CFLAGS="-O3 -maltivec -mvsx -mpower8-vector -mcpu=power8" LDFLAGS="-static" make check 118 # altivec.h redefinition issue #426 119 - make clean 120 - CPPFLAGS=-DXXH_VECTOR=XXH_VSX CFLAGS="-maltivec -mvsx -mcpu=power8 -mpower8-vector" make -C tests test_ppc_redefine 121 122 - name: IBM s390x compilation and consistency checks 123 dist: bionic 124 arch: s390x 125 script: 126 # Scalar (universal) code path 127 - CPPFLAGS=-DXXH_VECTOR=XXH_SCALAR LDFLAGS=-static make check 128 # s390x code path (64-bit) 129 - make clean 130 - CPPFLAGS=-DXXH_VECTOR=XXH_VSX CFLAGS="-O3 -march=arch11 -mzvector" LDFLAGS="-static" make check 131 132 - name: cmake build test 133 script: 134 - cd cmake_unofficial 135 - mkdir build 136 - cd build 137 - cmake .. 138 - CFLAGS=-Werror make 139