From 6a32fa5ccd33da5d187ec6e78f3b45683399ab66 Mon Sep 17 00:00:00 2001 From: Dmitrii Dolgov <9erthalion6@gmail.com> Date: Sun, 8 Feb 2026 13:22:23 +0100 Subject: [PATCH] tools build: Add a feature test for rust compiler Add a feature test to identify if the rust compiler is available, so that perf could build rust based worloads based on that. Signed-off-by: Dmitrii Dolgov <9erthalion6@gmail.com> Cc: Ian Rogers Cc: Namhyung Kim Signed-off-by: Arnaldo Carvalho de Melo --- tools/build/Makefile.feature | 6 ++++-- tools/build/feature/Makefile | 7 +++++++ tools/build/feature/test-rust.rs | 4 ++++ tools/perf/Makefile.config | 11 +++++++++++ tools/perf/builtin-check.c | 1 + 5 files changed, 27 insertions(+), 2 deletions(-) create mode 100644 tools/build/feature/test-rust.rs diff --git a/tools/build/Makefile.feature b/tools/build/Makefile.feature index 7f119eafc7c4..64d21152fc81 100644 --- a/tools/build/Makefile.feature +++ b/tools/build/Makefile.feature @@ -100,7 +100,8 @@ FEATURE_TESTS_BASIC := \ disassembler-four-args \ disassembler-init-styled \ file-handle \ - libopenssl + libopenssl \ + rust # FEATURE_TESTS_BASIC + FEATURE_TESTS_EXTRA is the complete list # of all feature tests @@ -149,7 +150,8 @@ FEATURE_DISPLAY ?= \ bpf \ libaio \ libzstd \ - libopenssl + libopenssl \ + rust # # Declare group members of a feature to display the logical OR of the detection diff --git a/tools/build/feature/Makefile b/tools/build/feature/Makefile index 5c15572d505e..9ae69d857166 100644 --- a/tools/build/feature/Makefile +++ b/tools/build/feature/Makefile @@ -112,6 +112,9 @@ __BUILD = $(CC) $(CFLAGS) -MD -Wall -Werror -o $@ $(patsubst %.bin,%.c,$(@F)) $( __BUILDXX = $(CXX) $(CXXFLAGS) -MD -Wall -Werror -o $@ $(patsubst %.bin,%.cpp,$(@F)) $(LDFLAGS) BUILDXX = $(__BUILDXX) > $(@:.bin=.make.output) 2>&1 +__BUILDRS = $(RUSTC) $(RUSTC_FLAGS) -o $@ $(patsubst %.bin,%.rs,$(@F)) + BUILDRS = $(__BUILDRS) > $(@:.bin=.make.output) 2>&1 + ############################### $(OUTPUT)test-all.bin: @@ -388,6 +391,10 @@ $(OUTPUT)test-libopenssl.bin: $(OUTPUT)test-bpftool-skeletons.bin: $(SYSTEM_BPFTOOL) version | grep '^features:.*skeletons' \ > $(@:.bin=.make.output) 2>&1 + +$(OUTPUT)test-rust.bin: + $(BUILDRS) > $(@:.bin=.make.output) 2>&1 + ############################### clean: diff --git a/tools/build/feature/test-rust.rs b/tools/build/feature/test-rust.rs new file mode 100644 index 000000000000..f2fc91cc4f69 --- /dev/null +++ b/tools/build/feature/test-rust.rs @@ -0,0 +1,4 @@ +// SPDX-License-Identifier: GPL-2.0 +fn main() { + println!("hi") +} diff --git a/tools/perf/Makefile.config b/tools/perf/Makefile.config index b683aab3ab97..94aecfe38b95 100644 --- a/tools/perf/Makefile.config +++ b/tools/perf/Makefile.config @@ -1153,6 +1153,17 @@ ifneq ($(NO_LIBTRACEEVENT),1) endif endif +ifndef NO_RUST + ifneq ($(feature-rust), 1) + $(warning Rust is not found. Test workloads with rust are disabled.) + NO_RUST := 1 + else + NO_RUST := 0 + CFLAGS += -DHAVE_RUST_SUPPORT + $(call detected,CONFIG_RUST_SUPPORT) + endif +endif + # Among the variables below, these: # perfexecdir # libbpf_include_dir diff --git a/tools/perf/builtin-check.c b/tools/perf/builtin-check.c index d19769a8f689..27a41beeaddf 100644 --- a/tools/perf/builtin-check.c +++ b/tools/perf/builtin-check.c @@ -60,6 +60,7 @@ struct feature_status supported_features[] = { FEATURE_STATUS("numa_num_possible_cpus", HAVE_LIBNUMA_SUPPORT), FEATURE_STATUS("zlib", HAVE_ZLIB_SUPPORT), FEATURE_STATUS("zstd", HAVE_ZSTD_SUPPORT), + FEATURE_STATUS("rust", HAVE_RUST_SUPPORT), /* this should remain at end, to know the array end */ FEATURE_STATUS(NULL, _) -- 2.30.2