summaryrefslogtreecommitdiff
path: root/stacks/crdop/scripts/build-crdop.sh
diff options
context:
space:
mode:
authorinfo@mode42.com <info@mode42.com>2026-08-07 18:23:28 +0000
committerinfo@mode42.com <info@mode42.com>2026-08-07 18:23:28 +0000
commitfa05a5f8238e9e1417235711656e5062ccc843a7 (patch)
tree46fbbd18de54492b59307c16efcc7f3152723238 /stacks/crdop/scripts/build-crdop.sh
Initial push
Diffstat (limited to 'stacks/crdop/scripts/build-crdop.sh')
-rwxr-xr-xstacks/crdop/scripts/build-crdop.sh48
1 files changed, 48 insertions, 0 deletions
diff --git a/stacks/crdop/scripts/build-crdop.sh b/stacks/crdop/scripts/build-crdop.sh
new file mode 100755
index 0000000..2253d5a
--- /dev/null
+++ b/stacks/crdop/scripts/build-crdop.sh
@@ -0,0 +1,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"
git clone -b <branch> https://cgit.mode42.com/<repo>.git
git clone -b <branch> git://cgit.mode42.com/<repo>.git

info@mode42.com