ci.sh raw

   1  #!/usr/bin/env bash
   2  #
   3  # Copyright (c) The Bitcoin Core developers
   4  # Distributed under the MIT software license, see the accompanying
   5  # file COPYING or http://www.opensource.org/licenses/mit-license.php.
   6  
   7  export LC_ALL=C.UTF-8
   8  
   9  set -o errexit -o nounset -o pipefail -o xtrace
  10  
  11  [ "${CI_CONFIG+x}" ] && source "$CI_CONFIG"
  12  
  13  : "${CI_DIR:=build}"
  14  if ! [ -v BUILD_TARGETS ]; then
  15    BUILD_TARGETS=(all tests mpexamples)
  16  fi
  17  
  18  [ -n "${CI_CLEAN-}" ] && rm -rf "${CI_DIR}"
  19  
  20  cmake --version
  21  cmake_ver=$(cmake --version | awk '/version/{print $3; exit}')
  22  ver_ge() { [ "$(printf '%s\n' "$2" "$1" | sort -V | head -n1)" = "$2" ]; }
  23  
  24  src_dir=$PWD
  25  mkdir -p "$CI_DIR"
  26  cd "$CI_DIR"
  27  cmake "$src_dir" "${CMAKE_ARGS[@]+"${CMAKE_ARGS[@]}"}"
  28  if ver_ge "$cmake_ver" "3.15"; then
  29    cmake --build . -t "${BUILD_TARGETS[@]}" -- "${BUILD_ARGS[@]+"${BUILD_ARGS[@]}"}"
  30  else
  31    # Older versions of cmake can only build one target at a time with --target,
  32    # and do not support -t shortcut
  33    for t in "${BUILD_TARGETS[@]}"; do
  34      cmake --build . --target "$t" -- "${BUILD_ARGS[@]+"${BUILD_ARGS[@]}"}"
  35    done
  36  fi
  37  ctest --output-on-failure
  38