summaryrefslogtreecommitdiff
path: root/tools
diff options
context:
space:
mode:
authorDmitrii Dolgov <9erthalion6@gmail.com>2026-02-08 13:22:23 +0100
committerArnaldo Carvalho de Melo <acme@redhat.com>2026-02-08 11:30:45 -0300
commit6a32fa5ccd33da5d187ec6e78f3b45683399ab66 (patch)
tree6b7d5a8521528c8aac81cf9a51be1581617425c8 /tools
parentff9aeb6bd14dbc70651971c81e81fa8269c3101a (diff)
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 <irogers@google.com> Cc: Namhyung Kim <namhyung@kernel.org> Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Diffstat (limited to 'tools')
-rw-r--r--tools/build/Makefile.feature6
-rw-r--r--tools/build/feature/Makefile7
-rw-r--r--tools/build/feature/test-rust.rs4
-rw-r--r--tools/perf/Makefile.config11
-rw-r--r--tools/perf/builtin-check.c1
5 files changed, 27 insertions, 2 deletions
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, _)