From: Ian Rogers <irogers@google.com>
To: irogers@google.com, acme@kernel.org, namhyung@kernel.org
Cc: adrian.hunter@intel.com, andrii@kernel.org,
cupertino.miranda@oracle.com, eddyz87@gmail.com,
james.clark@linaro.org, jolsa@kernel.org,
jose.marchesi@oracle.com, linux-kernel@vger.kernel.org,
linux-perf-users@vger.kernel.org, mingo@redhat.com,
peterz@infradead.org, yonghong.song@linux.dev
Subject: [PATCH v4 5/5] perf test make: Add BPF skeleton build tests for clang and bpf-gcc
Date: Wed, 11 Nov 2026 17:15:14 -0800 [thread overview]
Message-ID: <20261112011514.4032822-6-irogers@google.com> (raw)
In-Reply-To: <20261112011514.4032822-1-irogers@google.com>
Add make_bpf_skel_clang (CLANG=$(CLANG) BPF_GCC=) and
make_bpf_skel_bpf_gcc (BPF_GCC=$(BPF_GCC) CLANG=) targets to
tools/perf/tests/make when the corresponding compiler and BPF skeleton
dependencies (libelf, zlib, bpf, and libopenssl via Makefile.feature)
are available on the host.
Verify with 'perf check -q feature bpf_skeletons' that BPF skeleton
support is enabled for both targets and disabled (exit code 1) for
make_no_bpf_skel.
Signed-off-by: Ian Rogers <irogers@google.com>
---
tools/perf/tests/make | 42 ++++++++++++++++++++++++++++++++++++++++--
1 file changed, 40 insertions(+), 2 deletions(-)
diff --git a/tools/perf/tests/make b/tools/perf/tests/make
index 805d1074cfa8..f17bba53939d 100644
--- a/tools/perf/tests/make
+++ b/tools/perf/tests/make
@@ -54,6 +54,7 @@ srctree := $(patsubst %/,%,$(dir $(srctree)))
endif
include $(srctree)/tools/scripts/Makefile.arch
+include $(srctree)/tools/scripts/utilities.mak
# FIXME looks like x86 is the only arch running tests ;-)
# we need some IS_(32/64) flag to make this generic
@@ -65,6 +66,7 @@ endif
has = $(shell which $1 2>/dev/null)
python_perf_so := $(shell $(MAKE) python_perf_target|grep "Target is:"|awk '{print $$3}')
+BPF_GCC ?= bpf-gcc
# standard single make variable specified
make_clean_all := clean all
@@ -78,6 +80,8 @@ make_extra_tests := EXTRA_TESTS=1
make_no_jevents := NO_JEVENTS=1
make_jevents_all := JEVENTS_ARCH=all
make_no_bpf_skel := BUILD_BPF_SKEL=0
+make_bpf_skel_clang := CLANG=$(CLANG) BPF_GCC=
+make_bpf_skel_bpf_gcc := BPF_GCC=$(BPF_GCC) CLANG=
make_gen_vmlinux_h := GEN_VMLINUX_H=1
make_no_python_module := NO_PYTHON_MODULE=1
make_no_scripts := NO_PYTHON_MODULE=1
@@ -135,7 +139,8 @@ saved_OUTPUT_origin := $(origin OUTPUT)
saved_OUTPUT := $(OUTPUT)
override OUTPUT := $(FEATURE_OUTPUT)/
FEATURE_DISPLAY_DEFERRED := 1
-FEATURE_TESTS :=
+FEATURE_TESTS := libelf zlib bpf libopenssl
+FEATURE_CHECK_CFLAGS-bpf = -I. -I$(srctree)/tools/include -I$(srctree)/tools/arch/$(SRCARCH)/include/uapi -I$(srctree)/tools/include/uapi
include $(srctree)/tools/build/Makefile.feature
# binutils 2_42 and newer have bfd_thread_init()
@@ -147,6 +152,26 @@ ifneq ($(call has,$(LLVM_CONFIG)),)
$(call feature_check,llvm-perf)
endif
+ifeq ($(feature-libelf)$(feature-zlib)$(feature-bpf)$(feature-libopenssl),1111)
+ ifneq ($(call get-executable,$(CLANG)),)
+ CLANG_VERSION := $(shell $(CLANG) --version | head -1 | sed 's/.*clang version \([[:digit:]]\+.[[:digit:]]\+.[[:digit:]]\+\).*/\1/g')
+ ifneq ($(call version-lt3,$(CLANG_VERSION),12.0.1),1)
+ $(call feature_check,clang-bpf-co-re)
+ ifeq ($(feature-clang-bpf-co-re),1)
+ have_clang_bpf := 1
+ endif
+ endif
+ endif
+ ifneq ($(call get-executable,$(BPF_GCC)),)
+ BPF_GCC_VERSION := $(shell $(BPF_GCC) -dumpfullversion 2>/dev/null)
+ ifneq ($(BPF_GCC_VERSION),)
+ ifneq ($(call version-lt3,$(BPF_GCC_VERSION),14.0.0),1)
+ have_bpf_gcc := 1
+ endif
+ endif
+ endif
+endif
+
$(shell rm -rf -- "$(FEATURE_OUTPUT)")
ifeq ($(saved_OUTPUT_origin),undefined)
override undefine OUTPUT
@@ -185,6 +210,12 @@ run += make_extra_tests
run += make_no_jevents
run += make_jevents_all
run += make_no_bpf_skel
+ifeq ($(have_clang_bpf),1)
+run += make_bpf_skel_clang
+endif
+ifeq ($(have_bpf_gcc),1)
+run += make_bpf_skel_bpf_gcc
+endif
run += make_gen_vmlinux_h
run += make_no_python_module
run += make_no_scripts
@@ -325,6 +356,13 @@ test_make_clang_nondistro := $(test_make_clang)
test_make_clang_nondistro_O := $(test_make_clang_O)
endif
+test_make_no_bpf_skel := test -x $(PERF_O)/perf && ($(PERF_O)/perf check -q feature bpf_skeletons; test $$? -eq 1)
+test_make_no_bpf_skel_O := test -x $$TMP_O/perf && ($$TMP_O/perf check -q feature bpf_skeletons; test $$? -eq 1)
+test_make_bpf_skel_clang := test -x $(PERF_O)/perf && $(PERF_O)/perf check -q feature bpf_skeletons
+test_make_bpf_skel_clang_O := test -x $$TMP_O/perf && $$TMP_O/perf check -q feature bpf_skeletons
+test_make_bpf_skel_bpf_gcc := test -x $(PERF_O)/perf && $(PERF_O)/perf check -q feature bpf_skeletons
+test_make_bpf_skel_bpf_gcc_O := test -x $$TMP_O/perf && $$TMP_O/perf check -q feature bpf_skeletons
+
test_make_python_perf_so_O := test -f $$TMP_O/python/perf.so
test_make_perf_o_O := test -f $$TMP_O/perf.o
test_make_util_map_o_O := test -f $$TMP_O/util/map.o
@@ -457,7 +495,7 @@ $(FEATURES_DUMP_FILE_STATIC):
# The clang tests exist to run feature detection with a compiler other than
# the default one, so they have to do their own and are left out of both the
# dependency and the 'FEATURES_DUMP=' append below.
-no_features_dump := make_clang make_clang_nondistro
+no_features_dump := make_clang make_clang_nondistro make_bpf_skel_clang make_bpf_skel_bpf_gcc
no_features_dump += $(addsuffix _O,$(no_features_dump))
# Add feature dump dependency for run/run_O targets
--
2.56.0.567.gdb80ae8cd5-goog
prev parent reply other threads:[~2026-11-12 1:15 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-10-13 22:16 [PATCH v1 0/2] perf build: Support building BPF skeletons with bpf-gcc Ian Rogers
2026-10-13 22:16 ` [PATCH v1 1/2] " Ian Rogers
2026-10-13 22:16 ` [PATCH v1 2/2] perf test make: Add BPF skeleton build tests for clang and bpf-gcc Ian Rogers
2026-10-13 23:14 ` [PATCH v2 0/2] perf build: Support building BPF skeletons with bpf-gcc Ian Rogers
2026-10-13 23:14 ` [PATCH v2 1/2] " Ian Rogers
2026-10-13 23:14 ` [PATCH v2 2/2] perf test make: Add BPF skeleton build tests for clang and bpf-gcc Ian Rogers
2026-10-22 20:46 ` [PATCH v3 0/2] perf build: Support building BPF skeletons with bpf-gcc Ian Rogers
2026-10-22 20:46 ` [PATCH v3 1/2] " Ian Rogers
2026-11-11 6:01 ` Namhyung Kim
2026-10-22 20:46 ` [PATCH v3 2/2] perf test make: Add BPF skeleton build tests for clang and bpf-gcc Ian Rogers
2026-11-04 3:52 ` [PATCH v3 0/2] perf build: Support building BPF skeletons with bpf-gcc Ian Rogers
2026-11-10 22:10 ` Ian Rogers
2026-11-12 1:15 ` [PATCH v4 0/5] " Ian Rogers
2026-11-12 1:15 ` [PATCH v4 1/5] tools build: Fix version-ge3 and version-lt3 for <3-part versions Ian Rogers
2026-11-12 1:15 ` [PATCH v4 2/5] perf build: Sync bpf_skel.mak get_sys_includes with selftests/bpf Ian Rogers
2026-11-12 1:15 ` [PATCH v4 3/5] perf build: Support building BPF skeletons with bpf-gcc Ian Rogers
2026-11-12 1:15 ` [PATCH v4 4/5] perf test make: Reuse Makefile.feature for libbfd and llvm probes Ian Rogers
2026-11-12 1:15 ` Ian Rogers [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20261112011514.4032822-6-irogers@google.com \
--to=irogers@google.com \
--cc=acme@kernel.org \
--cc=adrian.hunter@intel.com \
--cc=andrii@kernel.org \
--cc=cupertino.miranda@oracle.com \
--cc=eddyz87@gmail.com \
--cc=james.clark@linaro.org \
--cc=jolsa@kernel.org \
--cc=jose.marchesi@oracle.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-perf-users@vger.kernel.org \
--cc=mingo@redhat.com \
--cc=namhyung@kernel.org \
--cc=peterz@infradead.org \
--cc=yonghong.song@linux.dev \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®