• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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