travis.sh 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. #!/usr/bin/env bash
  2. build_cmake() {
  3. mkdir $PWD/_build && cd $PWD/_build
  4. cmake .. -DCMAKE_INSTALL_PREFIX=$PWD/../_install -DCMAKE_C_FLAGS="-Werror" \
  5. ${_CMAKE_OPENSSL_FLAG}
  6. cmake --build . --target install
  7. ctest -V .
  8. }
  9. build_format() {
  10. ./travis/run-clang-format/run-clang-format.py \
  11. --clang-format-executable="${PWD}/travis/clang-format.sh" \
  12. --recursive examples librabbitmq tests tools
  13. }
  14. build_coverage() {
  15. mkdir $PWD/_build && cd $PWD/_build
  16. cmake .. -DCMAKE_BUILD_TYPE=Coverage -DCMAKE_INSTALL_PREFIX=$PWD/../_install \
  17. -DCMAKE_C_FLAGS="-Werror -fprofile-arcs -ftest-coverage" \
  18. ${_CMAKE_OPENSSL_FLAG}
  19. cmake --build . --target install
  20. ctest -V .
  21. pip install --user cpp-coveralls
  22. coveralls --exclude tests --build-root . --root .. --gcov-options '\-lp'
  23. }
  24. build_asan() {
  25. mkdir $PWD/_build && cd $PWD/_build
  26. cmake .. -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX=$PWD/../_install \
  27. -DCMAKE_C_FLAGS="-Werror -fsanitize=address,undefined -O1"
  28. cmake --build . --target install
  29. ctest -V .
  30. }
  31. build_tsan() {
  32. mkdir $PWD/_build && cd $PWD/_build
  33. cmake .. -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX=$PWD/../_install \
  34. -DCMAKE_C_FLAGS="-Werror -fsanitize=thread,undefined -O1"
  35. cmake --build . --target install
  36. ctest -V .
  37. }
  38. build_scan-build() {
  39. mkdir $PWD/_build && cd $PWD/_build
  40. scan-build-3.9 cmake .. -DCMAKE_BUILD_TYPE=Debug \
  41. -DCMAKE_INSTALL_PREFIX=$PWD/../_install \
  42. -DCMAKE_C_FLAGS="-Werror"
  43. scan-build-3.9 make install
  44. }
  45. if [ "$#" -ne 1 ]; then
  46. echo "Usage: $0 {cmake|asan|tsan|scan-build}"
  47. exit 1
  48. fi
  49. set -e # exit on error.
  50. set -x # echo commands.
  51. case $TRAVIS_OS_NAME in
  52. osx)
  53. # This prints out a long list of updated packages, which isn't useful.
  54. brew update > /dev/null
  55. brew install popt
  56. brew outdated openssl || brew install openssl
  57. export _CMAKE_OPENSSL_FLAG="-DOPENSSL_ROOT_DIR=/usr/local/opt/openssl"
  58. ;;
  59. esac
  60. eval "build_$1"