I ran into the build issue mentioned in the first commit, because using an option like LLVM=-15 is a documented way to build [1], but only some of the LLVM tools defined in tools/ support this.
After fixing that, a lot of other tidyups fell out. I didn't go too far, for example some selftests include tools/testing/selftests/lib.mk which reimplements some of the LLVM_SUFFIX stuff, but other selftests include tools/scripts/Makefile.include and I stopped before touching the former. Some other non build scripts hard code toolchains and I didn't touch those either, this change is only focused on things that already include Makefile.include. [1]: Documentation/kbuild/llvm.rst Signed-off-by: James Clark <[email protected]> --- Changes in v3: - Add warning for empty $USE_LD - Use $HOSTREADELF in bpf Makefile - Rebase on v7.2-rc3 - Link to v2: https://lore.kernel.org/r/[email protected] Changes in v2: - Fix selftests/bpf build. LLD needs to take the full path to be used with -fuse-ld= - Link to v1: https://lore.kernel.org/r/[email protected] --- James Clark (5): tools/build: Allow versioning of all LLVM tools defined in Makefile.include tools/build: Indent if else blocks tools/build: Allow versioning LLVM readelf tools/build: selftests: Allow versioning LLVM lld tools/build: selftests: Remove some duplicate toolchain definitions tools/bpf/resolve_btfids/Makefile | 3 -- tools/lib/api/Makefile | 4 -- tools/lib/bpf/Makefile | 8 ++-- tools/lib/subcmd/Makefile | 4 -- tools/lib/symbol/Makefile | 4 -- tools/perf/Makefile.perf | 7 ---- tools/scripts/Makefile.include | 79 ++++++++++++++++++++---------------- tools/testing/selftests/bpf/Makefile | 13 +++--- 8 files changed, 56 insertions(+), 66 deletions(-) --- base-commit: a13c140cc289c0b7b3770bce5b3ad42ab35074aa change-id: 20260511-james-perf-llvm-version-43ab1cb5bc7d Best regards, -- James Clark <[email protected]>

