#!/bin/bash set -e SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" BUILD_DIR="${SCRIPT_DIR}/build" REBUILD=false FAKE=false for arg in "$@"; do case "$arg" in --rebuild) REBUILD=true ;; --fake) FAKE=true ;; esac done CMAKE_ARGS="" if [ "${FAKE}" = true ]; then CMAKE_ARGS="-DFAKE=ON" fi if [ "${REBUILD}" = true ]; then echo "==> Clean build directory" rm -rf "${BUILD_DIR}" mkdir -p "${BUILD_DIR}" echo "==> Configure" cmake -S "${SCRIPT_DIR}" -B "${BUILD_DIR}" ${CMAKE_ARGS} fi mkdir -p "${BUILD_DIR}" if [ -f "${BUILD_DIR}/CMakeCache.txt" ]; then CACHED_FAKE=$(grep -o "FAKE:BOOL=.\+" "${BUILD_DIR}/CMakeCache.txt" 2>/dev/null || echo "") if [ "${FAKE}" = true ] && [ "${CACHED_FAKE}" != "FAKE:BOOL=ON" ]; then echo "==> FAKE flag changed, cleaning build" rm -rf "${BUILD_DIR}" mkdir -p "${BUILD_DIR}" elif [ "${FAKE}" = false ] && [ "${CACHED_FAKE}" = "FAKE:BOOL=ON" ]; then echo "==> FAKE flag changed, cleaning build" rm -rf "${BUILD_DIR}" mkdir -p "${BUILD_DIR}" fi fi if [ ! -f "${BUILD_DIR}/CMakeCache.txt" ]; then echo "==> Configure" cmake -S "${SCRIPT_DIR}" -B "${BUILD_DIR}" ${CMAKE_ARGS} fi echo "==> Build" cmake --build "${BUILD_DIR}" -j$(nproc) echo "==> Run tests" rm -rf /tmp/pipeline-runner-test/ "${BUILD_DIR}/test-pipeline-runner" \ --gtest_brief=1 \ --gtest_output=xml:"${BUILD_DIR}/test-results.xml" echo "==> Done"