[PATCH v3 0/2] perf build: Support building BPF skeletons with bpf-gcc

Ian Rogers posted 2 patches 1 day, 16 hours ago
tools/perf/Makefile.config     | 83 +++++++++++++++++++++++++++-------
tools/perf/Makefile.perf       |  8 +++-
tools/perf/bpf_skel.mak        | 36 ++++++++++-----
tools/perf/tests/make          | 71 ++++++++++++++++++++++------
tools/scripts/Makefile.include |  1 +
tools/scripts/utilities.mak    |  4 +-
6 files changed, 159 insertions(+), 44 deletions(-)
[PATCH v3 0/2] perf build: Support building BPF skeletons with bpf-gcc
Posted by Ian Rogers 1 day, 16 hours ago
Currently the perf build requires clang (>= 12.0.1) to compile BPF
skeleton programs (.bpf.c -> .bpf.o). bpf-gcc (>= 14.0.0) also supports
BPF CO-RE and BTF generation and is already supported in
tools/testing/selftests/bpf/Makefile.

This series updates the perf build to support both clang and bpf-gcc:
- Patch 1 updates Makefile.config, Makefile.perf, and bpf_skel.mak to
  prefer bpf-gcc when building perf with GCC (CC_NO_CLANG=1) and clang
  when building with Clang/LLVM (CC_NO_CLANG=0), while respecting
  explicit BPF_GCC=... or CLANG=... command-line overrides and falling
  back to whichever compiler is available.
- Patch 2 adds make_bpf_skel_clang and make_bpf_skel_bpf_gcc build-test
  targets to tools/perf/tests/make, reuses tools/build/Makefile.feature
  for feature detection, and verifies with
  'perf check -q feature bpf_skeletons' that BPF skeleton support is
  enabled (or disabled for make_no_bpf_skel) as expected.

v3: Reuse tools/build/Makefile.feature and tools/scripts/utilities.mak
    in tools/perf/tests/make rather than open-coding compiler feature
    probes, and explicitly check for exit code 1 from 'perf check' in
    make_no_bpf_skel so crashes are not masked by shell negation.
v2: Pass only -dumpfullversion when querying BPF_GCC_VERSION, guard
    against an empty version string, and fix version-ge3 / version-lt3
    in tools/scripts/utilities.mak so empty or <3-component version
    strings do not shift awk fields and evaluate as false in version-lt3.

Ian Rogers (2):
  perf build: Support building BPF skeletons with bpf-gcc
  perf test make: Add BPF skeleton build tests for clang and bpf-gcc

 tools/perf/Makefile.config     | 83 +++++++++++++++++++++++++++-------
 tools/perf/Makefile.perf       |  8 +++-
 tools/perf/bpf_skel.mak        | 36 ++++++++++-----
 tools/perf/tests/make          | 71 ++++++++++++++++++++++------
 tools/scripts/Makefile.include |  1 +
 tools/scripts/utilities.mak    |  4 +-
 6 files changed, 159 insertions(+), 44 deletions(-)

-- 
2.56.0.307.g5fe7bd680c-goog