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>,
"Thorsten Leemhuis" <linux@leemhuis.info>,
linux-kernel@vger.kernel.org,
"Arnaldo Carvalho de Melo" <acme@redhat.com>
Subject: [PATCH v3 3/7] perf build: Add MINIMAL=1 to build without optional features
Date: Sun, 1 Nov 2026 21:12:49 -0500 [thread overview]
Message-ID: <20261102021253.2545235-4-sashal@kernel.org> (raw)
In-Reply-To: <20261102021253.2545235-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, mypy and pylint runs. 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, shellcheck, mypy and
pylint 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
Signed-off-by: Sasha Levin <sashal@kernel.org>
Acked-by: Namhyung Kim <namhyung@kernel.org>
Acked-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
tools/perf/Makefile.config | 8 ++++++--
tools/perf/Makefile.perf | 42 ++++++++++++++++++++++++++++++++++++--
tools/perf/tests/make | 8 +-------
3 files changed, 47 insertions(+), 11 deletions(-)
diff --git a/tools/perf/Makefile.config b/tools/perf/Makefile.config
index b4764f69f47f4..4af7934887539 100644
--- a/tools/perf/Makefile.config
+++ b/tools/perf/Makefile.config
@@ -753,7 +753,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 @@ endif
PYTHON_EXTENSION_SUFFIX := '.so'
ifdef NO_PYTHON_MODULE
- $(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 b74b534e1153f..c178c3976d154 100644
--- a/tools/perf/Makefile.perf
+++ b/tools/perf/Makefile.perf
@@ -129,6 +129,9 @@ include ../scripts/utilities.mak
# Define NO_MYPY if you do not want to run mypy during build
#
# Define NO_PYLINT if you do not want to run pylint 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,39 @@ endef
LD += $(EXTRA_LDFLAGS)
+# MINIMAL=1 is handled here rather than in Makefile.config, which is included
+# after the pkg-config, shellcheck, mypy and pylint setup below
+ifeq ($(MINIMAL),1)
+ NO_LIBELF := 1
+ NO_LIBDW := 1
+ NO_LIBTRACEEVENT := 1
+ NO_JEVENTS := 1
+ NO_PYTHON_MODULE := 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
+ NO_MYPY := 1
+ NO_PYLINT := 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 +231,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 7524de5228029..bef5599b95d6f 100644
--- a/tools/perf/tests/make
+++ b/tools/perf/tests/make
@@ -119,13 +119,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_PYTHON_MODULE=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-11-02 2:13 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-11-02 2:12 [PATCH v3 0/7] kbuild: build the userspace tools in tools/ with the kernel Sasha Levin
2026-11-02 2:12 ` [PATCH v3 1/7] kbuild: factor the userspace ABI flags out into KBUILD_USERABI Sasha Levin
2026-11-02 2:12 ` [PATCH v3 2/7] kbuild: add "make tools_build" to build userspace tools from tools/ Sasha Levin
2026-11-02 2:12 ` Sasha Levin [this message]
2026-11-02 2:12 ` [PATCH v3 4/7] tools: build perf in tools_build Sasha Levin
2026-11-02 2:12 ` [PATCH v3 5/7] tools: build kernel selftests " Sasha Levin
2026-11-02 2:12 ` [PATCH v3 6/7] kbuild: build the tools selected in tools/Kconfig as part of "make all" Sasha Levin
2026-11-02 2:12 ` [PATCH v3 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=20261102021253.2545235-4-sashal@kernel.org \
--to=sashal@kernel.org \
--cc=acme@kernel.org \
--cc=acme@redhat.com \
--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@leemhuis.info \
--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.