blob: 2253d5a14ba8c1ac1ea2f7562d54099785fe7a4d (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
|
#!/usr/bin/env bash
# CRDOP unified build — vendor embedded; GCC, Clang, or MSVC via CMake.
set -euo pipefail
ROOT="$(cd "$(dirname "$0")/.." && pwd)"
BUILD="${CRDOP_BUILD_DIR:-${ROOT}/build}"
TYPE="${CRDOP_BUILD_TYPE:-Release}"
TOOLCHAIN="${CRDOP_TOOLCHAIN:-}"
BUILD_TESTS="${CRDOP_BUILD_TESTS:-OFF}"
RUN_TESTS="${CRDOP_RUN_TESTS:-OFF}"
if [[ -f "${BUILD}/CMakeCache.txt" ]]; then
cached_home="$(grep -m1 '^CMAKE_HOME_DIRECTORY:INTERNAL=' "${BUILD}/CMakeCache.txt" 2>/dev/null | cut -d= -f2- || true)"
if [[ -n "${cached_home}" && "${cached_home}" != "${ROOT}" ]]; then
echo "CRDOP: removing stale CMake cache (was ${cached_home}, now ${ROOT})" >&2
rm -rf "${BUILD}"
fi
fi
"${ROOT}/scripts/import-ardopcf.sh"
CMAKE_ARGS=(-B "${BUILD}" -DCMAKE_BUILD_TYPE="${TYPE}" -DCRDOP_BUILD_TESTS="${BUILD_TESTS}")
if [[ -n "${TOOLCHAIN}" ]]; then
CMAKE_ARGS+=(-DCMAKE_TOOLCHAIN_FILE="${ROOT}/cmake/toolchains/${TOOLCHAIN}.cmake")
fi
if [[ -n "${CC:-}" ]]; then
CMAKE_ARGS+=(-DCMAKE_C_COMPILER="${CC}")
fi
if [[ -n "${CXX:-}" ]]; then
CMAKE_ARGS+=(-DCMAKE_CXX_COMPILER="${CXX}")
fi
cmake "${ROOT}" "${CMAKE_ARGS[@]}"
cmake --build "${BUILD}" -j"$(nproc 2>/dev/null || sysctl -n hw.ncpu 2>/dev/null || echo 4)"
"${ROOT}/scripts/test-smoke.sh"
if [[ "${BUILD_TESTS}" == "ON" || "${BUILD_TESTS}" == "1" || "${RUN_TESTS}" == "ON" || "${RUN_TESTS}" == "1" ]]; then
if [[ -f "${BUILD}/CTestTestfile.cmake" ]]; then
ctest --test-dir "${BUILD}" --output-on-failure
else
echo "NOTE: CRDOP_BUILD_TESTS requested but no CTest targets (install libcmocka-dev?)" >&2
fi
fi
echo "CRDOP $(cat "${ROOT}/VERSION") built: ${BUILD}/crdopc"
|