#!/bin/bash # CI: сборка и тесты POSIX-платформы. # ESP-IDF-сборка проверяется отдельно (см. README): # . $IDF_PATH/export.sh && idf.py build (в тестовом проекте-компоненте) set -euo pipefail cd "$(dirname "$0")/.." BUILD_DIR="${BUILD_DIR:-build-ci}" cmake -S . -B "$BUILD_DIR" -G Ninja -DCMAKE_BUILD_TYPE=Release cmake --build "$BUILD_DIR" ctest --test-dir "$BUILD_DIR" --output-on-failure # Санитайзеры (gcc): ловим OOB/UB в ядре и тестах. SAN_DIR="${SAN_DIR:-build-san}" cmake -S . -B "$SAN_DIR" -G Ninja -DCMAKE_BUILD_TYPE=Debug -DCMAKE_CXX_FLAGS="-fsanitize=address,undefined -fno-omit-frame-pointer" cmake --build "$SAN_DIR" ctest --test-dir "$SAN_DIR" --output-on-failure # clang (если доступен): отдельный компилятор = отдельные диагностики. if command -v clang++ >/dev/null 2>&1; then CLANG_DIR="${CLANG_DIR:-build-clang}" cmake -S . -B "$CLANG_DIR" -G Ninja -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_CXX_COMPILER=clang++ cmake --build "$CLANG_DIR" ctest --test-dir "$CLANG_DIR" --output-on-failure else echo "clang++ не найден — сборка пропущена" fi echo "CI OK"