From: Sasha Levin <sashal@kernel.org>
To: Nathan Chancellor <nathan@kernel.org>,
Nicolas Schier <nsc@kernel.org>,
linux-kbuild@vger.kernel.org
Cc: "Sasha Levin" <sashal@kernel.org>,
"Shuah Khan" <shuah@kernel.org>,
linux-kselftest@vger.kernel.org,
"Peter Zijlstra" <peterz@infradead.org>,
"Ingo Molnar" <mingo@redhat.com>,
"Arnaldo Carvalho de Melo" <acme@kernel.org>,
"Namhyung Kim" <namhyung@kernel.org>,
"Mark Rutland" <mark.rutland@arm.com>,
"Alexander Shishkin" <alexander.shishkin@linux.intel.com>,
"Jiri Olsa" <jolsa@kernel.org>, "Ian Rogers" <irogers@google.com>,
"Adrian Hunter" <adrian.hunter@intel.com>,
"James Clark" <james.clark@linaro.org>,
linux-perf-users@vger.kernel.org,
"Thomas Weißschuh" <linux@weissschuh.net>,
"Andrew Morton" <akpm@linux-foundation.org>,
linux-kernel@vger.kernel.org
Subject: [RFC PATCH v2 3/7] perf build: Add MINIMAL=1 to build without optional features
Date: Fri, 16 Oct 2026 10:31:39 -0400 [thread overview]
Message-ID: <20261016143143.3613501-4-sashal@kernel.org> (raw)
In-Reply-To: <20261016143143.3613501-1-sashal@kernel.org>
Turning off every optional feature takes a long list of NO_* variables,
and the list has to follow features as they are added and renamed. The
one in tests/make for make_minimal has fallen behind: it leaves
libtraceevent, jevents, slang, AIO, LZMA, zlib, libLLVM and Rust to be
detected, so a make_minimal build still needs libtraceevent and python.
Add MINIMAL=1, which turns off every optional feature, the BPF skeletons
and the shellcheck run. perf then builds, natively or cross, with no
library beyond the C library and without python, pkg-config, clang or
rustc, and the result does not depend on what is installed on the build
machine.
A MINIMAL=1 build also leaves out the notices that post unwind and
python support are disabled, which it asked for, and the one about the
pkg-config search path for cross builds, as pkg-config is not needed
then.
It is handled in Makefile.perf rather than Makefile.config, as
Makefile.config is included after the pkg-config and shellcheck setup.
Use it for make_minimal in tests/make.
Suggested-by: Ian Rogers <irogers@google.com>
Link: https://lore.kernel.org/r/CAP-5=fWFY-tpJz2vcBZvurwdZY5gwd8cuTemE9q1rtZ0Vi0dng@mail.gmail.com
Assisted-by: LLM
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
tools/perf/Makefile.config | 8 ++++++--
tools/perf/Makefile.perf | 40 ++++++++++++++++++++++++++++++++++++--
tools/perf/tests/make | 8 +-------
3 files changed, 45 insertions(+), 11 deletions(-)
diff --git a/tools/perf/Makefile.config b/tools/perf/Makefile.config
index 4d5993da9f945..137c9e120670b 100644
--- a/tools/perf/Makefile.config
+++ b/tools/perf/Makefile.config
@@ -742,7 +742,9 @@ dwarf-post-unwind-text := BUG
# setup DWARF post unwinder
ifdef NO_LIBUNWIND
ifdef NO_LIBDW
- $(warning Disabling post unwind, no support found.)
+ ifneq ($(MINIMAL),1)
+ $(warning Disabling post unwind, no support found.)
+ endif
dwarf-post-unwind := 0
else
dwarf-post-unwind-text := libdw
@@ -828,7 +830,9 @@ endef
PYTHON_EXTENSION_SUFFIX := '.so'
ifdef NO_LIBPYTHON
- $(call disable-python,Python support disabled by user)
+ ifneq ($(MINIMAL),1)
+ $(call disable-python,Python support disabled by user)
+ endif
else
ifndef PYTHON
diff --git a/tools/perf/Makefile.perf b/tools/perf/Makefile.perf
index 29cfd44c427f3..c770077e7d392 100644
--- a/tools/perf/Makefile.perf
+++ b/tools/perf/Makefile.perf
@@ -129,6 +129,9 @@ include ../scripts/utilities.mak
# Define GEN_VMLINUX_H to generate vmlinux.h from the BTF.
#
# Define NO_SHELLCHECK if you do not want to run shellcheck during build
+#
+# Define MINIMAL=1 to build without any optional feature, needing only a C
+# compiler and library, flex and bison
# As per kernel Makefile, avoid funny character set dependencies
unexport LC_ALL
@@ -174,6 +177,37 @@ endef
LD += $(EXTRA_LDFLAGS)
+# MINIMAL=1 is handled here rather than in Makefile.config, which is included
+# after the pkg-config and shellcheck setup below
+ifeq ($(MINIMAL),1)
+ NO_LIBELF := 1
+ NO_LIBDW := 1
+ NO_LIBTRACEEVENT := 1
+ NO_JEVENTS := 1
+ NO_LIBPYTHON := 1
+ NO_LIBBPF := 1
+ BUILD_BPF_SKEL := 0
+ NO_SLANG := 1
+ NO_DEMANGLE := 1
+ NO_BACKTRACE := 1
+ NO_AIO := 1
+ NO_ZLIB := 1
+ NO_LZMA := 1
+ NO_LIBZSTD := 1
+ NO_LIBNUMA := 1
+ NO_LIBLLVM := 1
+ NO_CAPSTONE := 1
+ NO_LIBPFM4 := 1
+ NO_LIBDEBUGINFOD := 1
+ NO_BABELTRACE2 := 1
+ NO_SDT := 1
+ NO_JVMTI := 1
+ NO_RUST := 1
+ NO_PERF_READ_VDSO32 := 1
+ NO_PERF_READ_VDSOX32 := 1
+ NO_SHELLCHECK := 1
+endif
+
# Some distros provide the command $(CROSS_COMPILE)pkg-config for
# searching packges installed with Multiarch. Use it for cross
# compilation if it is existed.
@@ -195,8 +229,10 @@ else
PKG_CONFIG_LIBDIR := $(PKG_CONFIG_LIBDIR):/usr/local/share/pkgconfig/
PKG_CONFIG_LIBDIR := $(PKG_CONFIG_LIBDIR):/usr/share/pkgconfig/
export PKG_CONFIG_LIBDIR
- $(warning Missing PKG_CONFIG_LIBDIR, PKG_CONFIG_PATH and PKG_CONFIG_SYSROOT_DIR for cross compilation,)
- $(warning set PKG_CONFIG_LIBDIR for using Multiarch libs.)
+ ifneq ($(MINIMAL),1)
+ $(warning Missing PKG_CONFIG_LIBDIR, PKG_CONFIG_PATH and PKG_CONFIG_SYSROOT_DIR for cross compilation,)
+ $(warning set PKG_CONFIG_LIBDIR for using Multiarch libs.)
+ endif
endif
endif
endif
diff --git a/tools/perf/tests/make b/tools/perf/tests/make
index d2c2f526e1db0..dbbc971a144b2 100644
--- a/tools/perf/tests/make
+++ b/tools/perf/tests/make
@@ -115,13 +115,7 @@ make_install_prefix := install prefix=/tmp/krava
make_install_prefix_slash := install prefix=/tmp/krava/
make_static := LDFLAGS=-static NO_PERF_READ_VDSO32=1 NO_PERF_READ_VDSOX32=1 NO_JVMTI=1 NO_LIBTRACEEVENT=1 NO_LIBELF=1
-# all the NO_* variable combined
-make_minimal := NO_LIBPYTHON=1
-make_minimal += NO_DEMANGLE=1 NO_LIBELF=1 NO_BACKTRACE=1
-make_minimal += NO_LIBNUMA=1 NO_LIBBIONIC=1 NO_LIBDW=1
-make_minimal += NO_LIBBPF=1
-make_minimal += NO_SDT=1 NO_JVMTI=1 NO_LIBZSTD=1
-make_minimal += NO_CAPSTONE=1
+make_minimal := MINIMAL=1
# binutils 2_42 and newer have bfd_thread_init()
new_libbfd := $(shell echo '#include <bfd.h>' | $(CC) -E -x c - | grep bfd_thread_init)
--
2.53.0
next prev parent reply other threads:[~2026-10-16 14:31 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-10-16 14:31 [RFC PATCH v2 0/7] kbuild: build the userspace tools in tools/ with the kernel Sasha Levin
2026-10-16 14:31 ` [RFC PATCH v2 1/7] kbuild: factor the userspace ABI flags out into KBUILD_USERABI Sasha Levin
2026-10-16 14:31 ` [RFC PATCH v2 2/7] kbuild: add "make tools_build" to build userspace tools from tools/ Sasha Levin
2026-10-16 14:31 ` Sasha Levin [this message]
2026-10-16 15:41 ` [RFC PATCH v2 3/7] perf build: Add MINIMAL=1 to build without optional features Ian Rogers
2026-10-16 14:31 ` [RFC PATCH v2 4/7] tools: build perf in tools_build Sasha Levin
2026-10-16 14:31 ` [RFC PATCH v2 5/7] tools: build kernel selftests " Sasha Levin
2026-10-16 16:17 ` Shuah Khan
2026-10-16 14:31 ` [RFC PATCH v2 6/7] kbuild: build the tools selected in tools/Kconfig as part of "make all" Sasha Levin
2026-10-16 14:31 ` [RFC PATCH v2 7/7] Documentation: describe building tools with the kernel Sasha Levin
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=20261016143143.3613501-4-sashal@kernel.org \
--to=sashal@kernel.org \
--cc=acme@kernel.org \
--cc=adrian.hunter@intel.com \
--cc=akpm@linux-foundation.org \
--cc=alexander.shishkin@linux.intel.com \
--cc=irogers@google.com \
--cc=james.clark@linaro.org \
--cc=jolsa@kernel.org \
--cc=linux-kbuild@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-kselftest@vger.kernel.org \
--cc=linux-perf-users@vger.kernel.org \
--cc=linux@weissschuh.net \
--cc=mark.rutland@arm.com \
--cc=mingo@redhat.com \
--cc=namhyung@kernel.org \
--cc=nathan@kernel.org \
--cc=nsc@kernel.org \
--cc=peterz@infradead.org \
--cc=shuah@kernel.org \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.