You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
* feat: add llvm-cov, llvm-profdata, llvm-symbolizer, clang-scan-deps
Add four new tools to the static binary build pipeline:
- llvm-cov: code coverage reporting
- llvm-profdata: profile data manipulation (merge, show, etc.)
- llvm-symbolizer: address-to-source-line symbolization
- clang-scan-deps: C/C++ module and header dependency scanning
Changes:
- build.py: add tools to TOOLS list with version constraints
(clang-scan-deps requires LLVM 12+, clang-include-cleaner requires 18+);
add end-to-end smoke tests for each new tool
- build.yml: update upload-artifact pattern to include llvm-* binaries
- release.py: expand versions.json with tools list (and per-tool
min_llvm_version constraints) and supported platforms — this is now
the single source of truth for all downstream channels
- README.md: update description, support matrix with 4 new tools,
and versions.json documentation
- CONTRIBUTING.md: update tools list and versions.json description
- scoop-examples/: add manifest examples for the 4 new tools;
update README with new tool table
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
* fix: handle llvm-profdata --version incompatibility on LLVM < 17 and add clang build target for smoke tests
Two issues were causing all 15 CI build jobs to fail:
1. llvm-profdata on LLVM < 17 uses a subcommand interface and does not
support the --version flag (LLVM 17+ added explicit handling in
llvm-profdata.cpp main()). Skip --version for this specific case
and verify the binary loads by running it with no args instead.
2. Functional smoke tests (llvm-profdata, llvm-cov, llvm-symbolizer)
need the clang compiler driver to compile short C programs, but
clang was never in the cmake build targets list (only clang-* tools
were). Conditionally add 'clang' to cmake --target list when needed.
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
* fix: silence curl progress output in checkout step
* fix: remove progress indicator from download_file to clean up CI logs
* fix: gracefully skip profile runtime tests when compiler-rt not built
The smoke tests for llvm-profdata and llvm-cov compile C programs with
-fprofile-instr-generate, which requires libclang_rt.profile-*.a from
compiler-rt. Since compiler-rt is not enabled in the cmake configuration,
these tests fail on all platforms.
Add _check_profile_runtime() helper that probes whether the runtime is
available before running the instrumented compilation. When unavailable:
- llvm-profdata: test merge/show argument parsing with a minimal
(dummy) .profraw instead of a real instrumented binary
- llvm-cov: skip gracefully with an info message
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
* refactor: remove functional smoke tests, keep only --version verification
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
* fix: pin macos-arm64 runner to macos-14 instead of macos-latest
macOS ARM64 CI jobs were failing with GCC 14 compiler errors against
Xcode 26.5 SDK headers (mach/message.h) that use xnu_static_assert
macros not understood by GCC in C++ mode.
macos-latest recently switched to macOS 15 + Xcode 26.5 which ships
these incompatible headers. Pin to macos-14 which has a stable, older
Xcode version compatible with GCC 14.
* fix: handle llvm-profdata --version in test-release steps
The test-release steps (both bash and PowerShell) run --version on
downloaded artifacts. llvm-profdata on LLVM < 17 doesn't support
--version. Detect the LLVM version from the filename and skip --version
when < 17, verifying the binary by running with no args instead.
* refactor: remove redundant smoke test from test-release step
The build.py already runs --version (or equivalent) smoke tests on every
built tool during the build step. The test-release step was repeating
the same verification, adding complexity and maintenance burden for no
additional safety. Keep test-release as a dependency gate only.
---------
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Copy file name to clipboardExpand all lines: CONTRIBUTING.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,6 +1,6 @@
1
1
# Contributing
2
2
3
-
Thanks for your interest in contributing! This project builds and distributes static binaries of clang tools (clang-format, clang-tidy, clang-query, clang-apply-replacements, clang-include-cleaner) for multiple platforms.
3
+
Thanks for your interest in contributing! This project builds and distributes static binaries of clang/LLVM tools (clang-format, clang-tidy, clang-query, clang-apply-replacements, clang-include-cleaner, llvm-cov, llvm-profdata, llvm-symbolizer, clang-scan-deps) for multiple platforms.
Includes **[clang-format](https://clang.llvm.org/docs/ClangFormat.html), [clang-tidy](https://clang.llvm.org/extra/clang-tidy/), [clang-query](https://github.com/llvm/llvm-project/tree/main/clang-tools-extra/clang-query), [clang-apply-replacements](https://github.com/llvm/llvm-project/tree/main/clang-tools-extra/clang-apply-replacements) and [clang-include-cleaner](https://clang.llvm.org/extra/clang-tidy/checks/misc/include-cleaner.html)**(LLVM 18+).
11
+
Includes **clang-format, clang-tidy, clang-query, clang-apply-replacements, clang-include-cleaner** (LLVM 18+), **llvm-cov, llvm-profdata, llvm-symbolizer and clang-scan-deps**— all the tools you need for C/C++ formatting, static analysis, coverage, symbolization and dependency scanning.
12
12
13
13
## Table of Contents
14
14
@@ -113,7 +113,7 @@ Or download pre-built binaries directly from the [Releases](https://github.com/c
113
113
114
114
- Download clang-tools static binaries for your platform from the [Releases](https://github.com/cpp-linter/clang-tools-static-binaries/releases) tab.
115
115
- Alternatively, use [pip](https://github.com/cpp-linter/clang-tools-pip), [asdf](https://github.com/cpp-linter/asdf-clang-tools), or [Homebrew](https://github.com/cpp-linter/homebrew-tap) (macOS) to download and manage them.
116
-
- For programmatic access, the latest release includes a [`versions.json`](https://github.com/cpp-linter/clang-tools-static-binaries/releases/latest/download/versions.json) file that maps each clang tool version to its LLVM source release (e.g., `{"18": "llvm-project-18.1.5.src"}`). This is a stable machine-readable entry point for scripts and downstream tools.
116
+
- For programmatic access, the latest release includes a [`versions.json`](https://github.com/cpp-linter/clang-tools-static-binaries/releases/latest/download/versions.json) file that maps each LLVM version to its source release, lists all shipped tools (with minimum-version constraints), and enumerates supported platforms. This is the **single source of truth** for all downstream channels (pip, asdf, homebrew, scoop, etc.) — do not maintain separate tool/version lists elsewhere.
0 commit comments