ci_build.sh 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. #!/usr/bin/env bash
  2. set -x
  3. set -e
  4. BUILD_TYPE=${BUILD_TYPE:-cmake}
  5. ZMQ_VERSION=${ZMQ_VERSION:-4.3.1}
  6. ENABLE_DRAFTS=${ENABLE_DRAFTS:-OFF}
  7. COVERAGE=${COVERAGE:-OFF}
  8. LIBZMQ=${PWD}/libzmq-build
  9. CPPZMQ=${PWD}/cppzmq-build
  10. # Travis machines have 2 cores
  11. JOBS=2
  12. libzmq_install() {
  13. curl -L https://github.com/zeromq/libzmq/archive/v"${ZMQ_VERSION}".tar.gz \
  14. >zeromq.tar.gz
  15. tar -xvzf zeromq.tar.gz
  16. if [ "${BUILD_TYPE}" = "cmake" ] ; then
  17. cmake -Hlibzmq-${ZMQ_VERSION} -B${LIBZMQ} -DWITH_PERF_TOOL=OFF \
  18. -DZMQ_BUILD_TESTS=OFF \
  19. -DCMAKE_BUILD_TYPE=Release \
  20. -DENABLE_DRAFTS=${ENABLE_DRAFTS}
  21. cmake --build ${LIBZMQ} -- -j${JOBS}
  22. elif [ "${BUILD_TYPE}" = "pkgconfig" ] ; then
  23. pushd .
  24. cd libzmq-${ZMQ_VERSION}
  25. ./autogen.sh &&
  26. ./configure --prefix=${LIBZMQ} &&
  27. make -j${JOBS}
  28. make install
  29. popd
  30. fi
  31. }
  32. # build zeromq first
  33. cppzmq_build() {
  34. pushd .
  35. CMAKE_PREFIX_PATH=${LIBZMQ} \
  36. cmake -H. -B${CPPZMQ} -DENABLE_DRAFTS=${ENABLE_DRAFTS} \
  37. -DCOVERAGE=${COVERAGE} \
  38. ${CMAKE_CPP_STD:-}
  39. cmake --build ${CPPZMQ} -- -j${JOBS}
  40. popd
  41. }
  42. cppzmq_tests() {
  43. pushd .
  44. cd ${CPPZMQ}
  45. ctest -V -j${JOBS}
  46. popd
  47. }
  48. cppzmq_demo() {
  49. pushd .
  50. CMAKE_PREFIX_PATH=${LIBZMQ}:${CPPZMQ} \
  51. cmake -Hdemo -Bdemo/build
  52. cmake --build demo/build
  53. cd demo/build
  54. ctest -V
  55. popd
  56. }
  57. if [ "${ZMQ_VERSION}" != "" ] ; then libzmq_install ; fi
  58. cppzmq_build
  59. cppzmq_tests
  60. cppzmq_demo