From: Namhyung Kim <namhyung@kernel.org>
To: Sasha Levin <sashal@kernel.org>
Cc: Arnaldo Carvalho de Melo <acme@kernel.org>,
Peter Zijlstra <peterz@infradead.org>,
Ingo Molnar <mingo@redhat.com>,
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, linux-kernel@vger.kernel.org
Subject: Re: [PATCH] perf build: Add MINIMAL=1 to build without optional features
Date: Wed, 21 Oct 2026 16:17:29 -0700 [thread overview]
Message-ID: <atlICVt3ItifkPZb@google.com> (raw)
In-Reply-To: <20261018135321.3986899-1-sashal@kernel.org>
On Sun, Oct 18, 2026 at 09:53:21AM -0400, Sasha Levin wrote:
> 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
> Assisted-by: LLM
> Signed-off-by: Sasha Levin <sashal@kernel.org>
Acked-by: Namhyung Kim <namhyung@kernel.org>
Thanks,
Namhyung
> ---
> The kbuild series that builds perf with MINIMAL=1 carries the mainline
> version of this patch:
> https://lore.kernel.org/r/20261016143143.3613501-1-sashal@kernel.org
>
> 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 2d9379fea2672..5297fc15a3c9e 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)
>
> base-commit: 1c90f0a3c8a1c4e38f9edd97af9e20848805a7fb
> --
> 2.53.0
>
next prev parent reply other threads:[~2026-10-21 23:17 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-10-18 13:53 [PATCH] perf build: Add MINIMAL=1 to build without optional features Sasha Levin
2026-10-18 13:57 ` sashiko-bot
2026-10-21 23:17 ` Namhyung Kim [this message]
2026-10-22 1:40 ` Arnaldo Carvalho de Melo
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=atlICVt3ItifkPZb@google.com \
--to=namhyung@kernel.org \
--cc=acme@kernel.org \
--cc=adrian.hunter@intel.com \
--cc=alexander.shishkin@linux.intel.com \
--cc=irogers@google.com \
--cc=james.clark@linaro.org \
--cc=jolsa@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-perf-users@vger.kernel.org \
--cc=mark.rutland@arm.com \
--cc=mingo@redhat.com \
--cc=peterz@infradead.org \
--cc=sashal@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox