.travis.yml 5.5 KB

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