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>
This commit is contained in:
Dmitrii Dolgov 2026-02-08 13:22:23 +01:00 committed by Arnaldo Carvalho de Melo
parent ff9aeb6bd1
commit 6a32fa5ccd
5 changed files with 27 additions and 2 deletions

View file

@ -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

View file

@ -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:

View file

@ -0,0 +1,4 @@
// SPDX-License-Identifier: GPL-2.0
fn main() {
println!("hi")
}

View file

@ -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

View file

@ -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, _)