| set -euo pipefail | |
| echo "📦 Setting up C++ dependencies" | |
| echo "==============================" | |
| OS="$(uname -s)" | |
| case "${OS}" in | |
| Linux*) | |
| if command -v apt &> /dev/null; then | |
| echo "Installing via apt..." | |
| sudo apt update | |
| sudo apt install -y build-essential cmake ninja-build clang-format | |
| elif command -v dnf &> /dev/null; then | |
| echo "Installing via dnf..." | |
| sudo dnf install -y gcc-c++ cmake ninja-build clang-tools-extra | |
| elif command -v pacman &> /dev/null; then | |
| echo "Installing via pacman..." | |
| sudo pacman -S --needed base-devel cmake ninja clang | |
| fi | |
| ;; | |
| Darwin*) | |
| if command -v brew &> /dev/null; then | |
| echo "Installing via Homebrew..." | |
| brew install cmake ninja | |
| else | |
| echo "⚠ Homebrew not found. Install from https://brew.sh" | |
| fi | |
| ;; | |
| MINGW*|MSYS*|CYGWIN*) | |
| echo "Windows detected. Ensure you have:" | |
| echo " - Visual Studio 2022 with C++ workload, OR" | |
| echo " - MSYS2: pacman -S mingw-w64-x86_64-toolchain cmake" | |
| ;; | |
| *) | |
| echo "Unknown OS: ${OS}" | |
| ;; | |
| esac | |
| echo "" | |
| echo "✅ Dependencies setup complete" | |