From: Arnaldo Carvalho de Melo <acme@kernel.org>
To: dima@arista.com
Cc: Peter Zijlstra <peterz@infradead.org>,
Ingo Molnar <mingo@redhat.com>,
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>,
Arnaldo Carvalho de Melo <acme@redhat.com>,
linux-perf-users@vger.kernel.org, linux-kernel@vger.kernel.org,
Dmitry Safonov <0x7f454c46@gmail.com>
Subject: Re: [PATCH] perf build: Override OUTPUT when building internal libraries
Date: Wed, 4 Nov 2026 17:44:12 -0300 [thread overview]
Message-ID: <auuZHBawk2--flHW@phoenix2> (raw)
In-Reply-To: <20261103-perf-output-v1-1-df33a0368cf2@arista.com>
On Tue, Nov 03, 2026 at 04:55:21PM +0000, Dmitry Safonov via B4 Relay wrote:
> From: Dmitry Safonov <dima@arista.com>
>
> After commit 1572ba36fbca ("perf tests: Improvements to build-test
> performance"), building perf with OUTPUT on the command line fails:
> make -C tools/perf OUTPUT=/tmp/linux/bld/perf/ ARCH=x86_64 LC_ALL=C CC=gcc HOSTCC=gcc LD=ld
That '/bld/' is not reflected in the next line, copy'n'paste mistake?
> ...
> make[3]: *** No rule to make target '/tmp/linux/perf/libsubcmd/libsubcmd.a'. Stop.
⬢ [acme@toolbx perf-tools]$ mkdir -p /tmp/linux/perf
⬢ [acme@toolbx perf-tools]$ make -C tools/perf OUTPUT=/tmp/linux/perf/ ARCH=x86_64 LC_ALL=C CC=gcc HOSTCC=gcc LD=ld
make: Entering directory '/home/acme/git/perf-tools/tools/perf'
BUILD: Doing 'make -j32' parallel build
<SNIP>
TEST /tmp/linux/perf/tests/shell/base_probe/test_line_semantics.sh.shellcheck_log
GEN /tmp/linux/perf/arch/arm64/include/generated/asm/sysreg-defs.h
make[3]: *** No rule to make target '/tmp/linux/perf/libsubcmd/libsubcmd.a'. Stop.
make[2]: *** [Makefile.perf:827: /tmp/linux/perf/libsubcmd/libsubcmd.a] Error 2
make[2]: *** Waiting for unfinished jobs....
MKDIR /tmp/linux/perf/tests/shell/lib/
TEST /tmp/linux/perf/tests/shell/lib/perf_metric_validation.py.mypy_log
TEST /tmp/linux/perf/tests/shell/lib/perf_json_output_lint.py.mypy_log
PERF_VERSION = 7.4.rc1.g45e09a6dbb2d
make[3]: *** No rule to make target '/tmp/linux/perf/libsymbol/libsymbol.a'. Stop.
make[3]: *** No rule to make target '/tmp/linux/perf/libperf/libperf.a'. Stop.
Minor stuff, I'll fix it up and apply to perf-tools to send for 7.4-rc1,
Thanks,
- Arnaldo
> MAKEFLAGS propagates the command-line OUTPUT assignment to recursive makes.
> The library builds pass their output directories through $O, but the assignment
> to $OUTPUT in tools/scripts/Makefile.include cannot replace a command-line
> argument. This affects libapi, libperf, libsubcmd and libsymbol.
>
> With "unexport MAKEFLAGS" returned and added $(info) debug in libsubcmd
> Makefile produces:
> OUTPUT = /tmp/linux/perf/libsubcmd/
> Without it, on current master it prints:
> OUTPUT = /tmp/linux/perf/
>
> Pass OUTPUT explicitly to each library build, including the trailing slash
> required when constructing file names. This follows the existing libbpf
> build rule and preserves MAKEFLAGS and jobserver propagation.
>
> Fixes: 1572ba36fbca ("perf tests: Improvements to build-test performance")
> Signed-off-by: Dmitry Safonov <dima@arista.com>
> ---
> tools/perf/Makefile.perf | 8 ++++----
> 1 file changed, 4 insertions(+), 4 deletions(-)
>
> diff --git a/tools/perf/Makefile.perf b/tools/perf/Makefile.perf
> index b74b534e1153..4cc5bb3011da 100644
> --- a/tools/perf/Makefile.perf
> +++ b/tools/perf/Makefile.perf
> @@ -798,7 +798,7 @@ $(patsubst perf-%,%.o,$(PROGRAMS)): $(wildcard */*.h)
>
> $(LIBAPI): FORCE | $(LIBAPI_OUTPUT)
> $(Q)$(MAKE) -C $(LIBAPI_DIR) O=$(LIBAPI_OUTPUT) \
> - DESTDIR=$(LIBAPI_DESTDIR) prefix= subdir= \
> + OUTPUT=$(LIBAPI_OUTPUT)/ DESTDIR=$(LIBAPI_DESTDIR) prefix= subdir= \
> $@ install_headers
>
> $(LIBAPI)-clean:
> @@ -816,7 +816,7 @@ $(LIBBPF)-clean:
>
> $(LIBPERF): FORCE | $(LIBPERF_OUTPUT)
> $(Q)$(MAKE) -C $(LIBPERF_DIR) O=$(LIBPERF_OUTPUT) \
> - DESTDIR=$(LIBPERF_DESTDIR) prefix= subdir= \
> + OUTPUT=$(LIBPERF_OUTPUT)/ DESTDIR=$(LIBPERF_DESTDIR) prefix= subdir= \
> $@ install_headers
>
> $(LIBPERF)-clean:
> @@ -825,7 +825,7 @@ $(LIBPERF)-clean:
>
> $(LIBSUBCMD): FORCE | $(LIBSUBCMD_OUTPUT)
> $(Q)$(MAKE) -C $(LIBSUBCMD_DIR) O=$(LIBSUBCMD_OUTPUT) \
> - DESTDIR=$(LIBSUBCMD_DESTDIR) prefix= subdir= \
> + OUTPUT=$(LIBSUBCMD_OUTPUT)/ DESTDIR=$(LIBSUBCMD_DESTDIR) prefix= subdir= \
> $@ install_headers
>
> $(LIBSUBCMD)-clean:
> @@ -834,7 +834,7 @@ $(LIBSUBCMD)-clean:
>
> $(LIBSYMBOL): FORCE | $(LIBSYMBOL_OUTPUT)
> $(Q)$(MAKE) -C $(LIBSYMBOL_DIR) O=$(LIBSYMBOL_OUTPUT) \
> - DESTDIR=$(LIBSYMBOL_DESTDIR) prefix= subdir= \
> + OUTPUT=$(LIBSYMBOL_OUTPUT)/ DESTDIR=$(LIBSYMBOL_DESTDIR) prefix= subdir= \
> $@ install_headers
>
> $(LIBSYMBOL)-clean:
>
> ---
> base-commit: 6628e7d4c6b25c8d18f1345e3a20d21829aae7e4
> change-id: 20261103-perf-output-58d6965d2726
>
> Best regards,
> --
> Dmitry Safonov <dima@arista.com>
>
next prev parent reply other threads:[~2026-11-04 20:44 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-11-03 16:55 [PATCH] perf build: Override OUTPUT when building internal libraries Dmitry Safonov
2026-11-03 16:55 ` Dmitry Safonov via B4 Relay
2026-11-03 17:01 ` sashiko-bot
2026-11-04 20:44 ` Arnaldo Carvalho de Melo [this message]
2026-11-04 21:09 ` Dmitry Safonov
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=auuZHBawk2--flHW@phoenix2 \
--to=acme@kernel.org \
--cc=0x7f454c46@gmail.com \
--cc=acme@redhat.com \
--cc=adrian.hunter@intel.com \
--cc=alexander.shishkin@linux.intel.com \
--cc=dima@arista.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=namhyung@kernel.org \
--cc=peterz@infradead.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.