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