| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142 |
- language: c
- # Dump CPU info before start
- before_install:
- - cat /proc/cpuinfo || echo /proc/cpuinfo is not present
- matrix:
- fast_finish: true
- include:
- - name: General linux x64 tests
- arch: amd64
- addons:
- apt:
- packages:
- - g++-multilib
- - gcc-multilib
- - cppcheck
- script:
- - make -B test-all
- - make clean
- - 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
- - make clean
- - CFLAGS="-O1 -mavx512f -Werror" make
- - make clean
- - CFLAGS="-Wall -Wextra -Werror" make DISPATCH=1
- - make clean
- - CFLAGS="-std=c90 -pedantic -Wno-long-long -Werror" make xxhsum # check C90 + long long compliance
- - make c90test # strict c90, with no long long support; resulting in no XXH64_* symbol
- - make noxxh3test # check library can be compiled with XXH_NO_XXH3, resulting in no XXH3_* symbol
- - name: Check results consistency on x64
- arch: amd64
- script:
- - CPPFLAGS=-DXXH_VECTOR=XXH_SCALAR make check # Scalar code path
- - make clean
- - CPPFLAGS=-DXXH_VECTOR=XXH_SSE2 make check # SSE2 code path
- - make clean
- - CPPFLAGS="-mavx2 -DXXH_VECTOR=XXH_AVX2" make check # AVX2 code path
- - make clean
- - CPPFLAGS="-mavx512f -DXXH_VECTOR=XXH_AVX512" make check # AVX512 code path
- - make clean
- - CPPFLAGS=-DXXH_REROLL=1 make check # reroll code path (#240)
- - make -C tests/bench
- - name: macOS General Test
- os: osx
- compiler: clang
- script:
- - CFLAGS="-Werror" make # test library build
- - make clean
- - make test MOREFLAGS='-Werror' | tee # test scenario where `stdout` is not the console
- - name: ARM compilation and consistency checks (Qemu)
- dist: xenial
- arch: amd64
- addons:
- apt:
- packages:
- - qemu-system-arm
- - qemu-user-static
- - gcc-arm-linux-gnueabi
- - libc6-dev-armel-cross
- script:
- # arm (32-bit)
- - CC=arm-linux-gnueabi-gcc CPPFLAGS=-DXXH_VECTOR=XXH_SCALAR LDFLAGS=-static RUN_ENV=qemu-arm-static make check # Scalar code path
- - make clean
- # NEON (32-bit)
- - 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
- - name: aarch64 compilation and consistency checks
- dist: xenial
- arch: arm64
- script:
- # aarch64
- - CPPFLAGS=-DXXH_VECTOR=XXH_SCALAR make check # Scalar code path
- # NEON (64-bit)
- - make clean
- - CPPFLAGS=-DXXH_VECTOR=XXH_NEON make check # NEON code path
- # clang
- - make clean
- - CC=clang CPPFLAGS=-DXXH_VECTOR=XXH_SCALAR make check # Scalar code path
- # clang + NEON
- - make clean
- - CC=clang CPPFLAGS=-DXXH_VECTOR=XXH_NEON make check # NEON code path
- # We need Bionic here because the QEMU versions shipped in the older repos
- # do not support POWER8 emulation, and compiling QEMU from source is a pain.
- - name: PowerPC + PPC64 compilation and consistency checks (Qemu on Bionic)
- dist: bionic
- arch: amd64
- addons:
- apt:
- packages:
- - qemu-system-ppc
- - qemu-user-static
- - gcc-powerpc-linux-gnu
- - gcc-powerpc64-linux-gnu
- - libc6-dev-powerpc-cross
- - libc6-dev-ppc64-cross
- script:
- - CC=powerpc-linux-gnu-gcc RUN_ENV=qemu-ppc-static LDFLAGS=-static make check # Scalar code path
- - make clean
- - 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
- # VSX code
- - make clean
- - 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
- # altivec.h redefinition issue #426
- - make clean
- - CC=powerpc64-linux-gnu-gcc CPPFLAGS=-DXXH_VECTOR=XXH_VSX CFLAGS="-maltivec -mvsx -mcpu=power8 -mpower8-vector" make -C tests test_ppc_redefine
- - name: PPC64LE compilation and consistency checks
- dist: xenial
- arch: ppc64le
- script:
- # Scalar (universal) code path
- - CPPFLAGS=-DXXH_VECTOR=XXH_SCALAR LDFLAGS=-static make check
- # VSX code path (64-bit)
- - make clean
- - CPPFLAGS=-DXXH_VECTOR=XXH_VSX CFLAGS="-O3 -maltivec -mvsx -mpower8-vector -mcpu=power8" LDFLAGS="-static" make check
- # altivec.h redefinition issue #426
- - make clean
- - CPPFLAGS=-DXXH_VECTOR=XXH_VSX CFLAGS="-maltivec -mvsx -mcpu=power8 -mpower8-vector" make -C tests test_ppc_redefine
- - name: IBM s390x compilation and consistency checks
- dist: bionic
- arch: s390x
- script:
- # Scalar (universal) code path
- - CPPFLAGS=-DXXH_VECTOR=XXH_SCALAR LDFLAGS=-static make check
- # s390x code path (64-bit)
- - make clean
- - CPPFLAGS=-DXXH_VECTOR=XXH_VSX CFLAGS="-O3 -march=arch11 -mzvector" LDFLAGS="-static" make check
- - name: cmake build test
- script:
- - cd cmake_unofficial
- - mkdir build
- - cd build
- - cmake ..
- - CFLAGS=-Werror make
|