mongo/buildscripts/clangd_vscode.sh

40 lines
1014 B
Bash
Executable File

#!/usr/bin/env bash
# Collect all passed arguments
ARGS=("$@")
# Ordered list of possible clangd locations
CANDIDATES=(
"$(command -v custom-clangd)"
"$(find .compiledb/compiledb-*/external/mongo_toolchain_v5/v5/bin/clangd)"
"$(find bazel-*/external/mongo_toolchain_v5/v5/bin/clangd)"
"/opt/mongodbtoolchain/v5/bin/clangd"
)
# Find the first available clangd
for CANDIDATE in "${CANDIDATES[@]}"; do
if [[ -x "$CANDIDATE" ]]; then
CLANGD="$CANDIDATE"
echo "[INFO] Using clangd at: $CLANGD" >&2
break
fi
done
# Fail if no clangd was found
if [[ -z "$CLANGD" ]]; then
echo "[ERROR] clangd not found in any of the expected locations." >&2
exit 1
fi
FINAL_ARGS=(
"${ARGS[@]}"
"--query-driver=./**/*{clang,gcc,g++}*" # allow any clang or gcc binary in the repo
"--header-insertion=never"
)
# Log the full command (optional)
echo "[INFO] Executing: $CLANGD ${FINAL_ARGS[*]}" >&2
# Run clangd with the final arguments
"$CLANGD" "${FINAL_ARGS[@]}"