All of lore.kernel.org
 help / color / mirror / Atom feed
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>
> 

  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.