Use LLVM coverage and LCOV genhtml on Windows OS (#131)

This commit is contained in:
Saikari
2025-12-29 21:11:13 +03:00
committed by GitHub
parent f0145ec68e
commit 0ca471ed4f
8 changed files with 206 additions and 2 deletions

77
scripts/valgrind.sh Executable file
View File

@@ -0,0 +1,77 @@
#!/bin/bash
# =============================================================================
# Local Reproduction of "Valgrind Analysis" GitHub Action
# =============================================================================
# Stop on error, undefined variables, or pipe failures
set -euo pipefail
# --- 1. Environment Setup ---
# Determine VCPKG_ROOT
# If VCPKG_ROOT is not set in your shell, we check if a local folder exists.
if [[ -z "${VCPKG_ROOT:-}" ]]; then
if [[ -d "./vcpkg" ]]; then
export VCPKG_ROOT="$(pwd)/vcpkg"
echo "Found local vcpkg at: $VCPKG_ROOT"
# Bootstrap vcpkg if the executable doesn't exist
if [[ ! -f "$VCPKG_ROOT/vcpkg" ]]; then
echo "Bootstrapping vcpkg..."
"$VCPKG_ROOT/bootstrap-vcpkg.sh"
fi
else
echo "Error: VCPKG_ROOT is not set and ./vcpkg directory not found."
echo "Please install vcpkg or set the VCPKG_ROOT environment variable."
exit 1
fi
else
echo "Using existing VCPKG_ROOT: $VCPKG_ROOT"
fi
# Set the build directory matching the YAML's preset expectation
# Assuming the preset writes to: cmake-build/build/linux-release-vcpkg
BUILD_DIR="cmake-build/build/linux-release-vcpkg"
# Check if Valgrind is installed
if ! command -v valgrind &> /dev/null; then
echo "Error: valgrind is not installed. Please install it (e.g., sudo apt install valgrind)."
exit 1
fi
echo "----------------------------------------------------"
echo "Starting Configuration (Debug Build with Valgrind)..."
echo "----------------------------------------------------"
# --- 2. Configure (CMake) ---
# We force CMAKE_BUILD_TYPE=Debug even though the preset says 'release'
# to ensure Valgrind has access to debug symbols (line numbers).
cmake --preset linux-release-vcpkg \
-DCMAKE_BUILD_TYPE=Debug \
-DOMATH_BUILD_EXAMPLES=OFF \
-DOMATH_BUILD_TESTS=ON \
-DOMATH_BUILD_BENCHMARK=ON \
-DOMATH_ENABLE_VALGRIND=ON \
-DVCPKG_MANIFEST_FEATURES="imgui;avx2;tests;benchmark"
echo "----------------------------------------------------"
echo "Building Targets..."
echo "----------------------------------------------------"
# --- 3. Build ---
# Using the specific build directory defined by the preset structure
cmake --build "$BUILD_DIR"
echo "----------------------------------------------------"
echo "Running Valgrind Analysis..."
echo "----------------------------------------------------"
# --- 4. Run Valgrind ---
# Runs the specific custom target defined in your CMakeLists.txt
cmake --build "$BUILD_DIR" --target valgrind_all
echo "----------------------------------------------------"
echo "Valgrind Analysis Complete."
echo "----------------------------------------------------"