Use a bash array for MESON_NATIVE_FILES instead of a space-joined string
(safe word-splitting/quoting), and set core.hooksPath to .githooks so the
tracked lint/pre-push hooks are active after setup.
- setup.sh creates build/llvm_ar.ini with ar=llvm-ar path
- meson configure passes llvm_ar.ini as additional native file
- Fixes 'llvm-ar: command not found' when meson test rebuilds
- Also find llvm-ar in meson.build for direct ninja invocations
- Throw expressions treated as control-flow terminals (like ReturnStmt)
- Previously caused function body walks to bail entirely
- Required for OOB detection in functions with throw guards
- 132 build targets
setup.sh only checked /opt/homebrew/Cellar/llvm/* and exited with
"No Homebrew LLVM installation found" on any non-macOS host. Add
Linux probing for /usr/lib/llvm-N/bin and llvm-config-N on PATH,
plus a brew --prefix llvm@N fallback for Intel/custom-prefix macOS.
Also:
- Symlink z3.pc from the arch-dependent /usr/lib path into the
meson build dir on Linux (libz3-dev installs there but meson
doesn't search it by default).
- Thread the discovered llvm-config path through to meson via
-Dllvm-config-path so the fold meson option picks up the right
binary instead of guessing.
- Default CC/CXX to the discovered clang when unset; necessary on
apt-installed Linux where bare `clang`/`clang++` may not exist.
- Honor caller-provided LLVM_BIN env override.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>