]> git.ipfire.org Git - thirdparty/linux.git/commit
perf tools: Fix in-source libperf build
authorJames Clark <james.clark@linaro.org>
Tue, 29 Apr 2025 14:22:18 +0000 (15:22 +0100)
committerNamhyung Kim <namhyung@kernel.org>
Tue, 29 Apr 2025 19:32:31 +0000 (12:32 -0700)
commit8988c4b91945173a6b5505764915d470f0238fdc
tree7620f3df046734ab5605a0d09bb995e702f67557
parentbfb713ea53c746b07ae69fe97fa9b5388e4f34f9
perf tools: Fix in-source libperf build

When libperf is built alone in-source, $(OUTPUT) isn't set. This causes
the generated uapi path to resolve to '/../arch' which results in a
permissions error:

  mkdir: cannot create directory '/../arch': Permission denied

Fix it by removing the preceding '/..' which means that it gets
generated either in the tools/lib/perf part of the tree or the OUTPUT
folder. Some other rules that rely on OUTPUT further refine this
conditionally depending on whether it's an in-source or out-of-source
build, but I don't think we need the extra complexity here. And this
rule is slightly different to others because the header is needed by
both libperf and Perf. This is further complicated by the fact that Perf
always passes O=... to libperf even for in source builds, meaning that
OUTPUT isn't set consistently between projects.

Because we're no longer going one level up to try to generate the file
in the tools/ folder, Perf's include rule needs to descend into libperf.
Also fix the clean rule while we're here.

Reported-by: Thorsten Leemhuis <linux@leemhuis.info>
Closes: https://lore.kernel.org/linux-perf-users/7703f88e-ccb7-4c98-9da4-8aad224e780f@leemhuis.info/
Fixes: bfb713ea53c7 ("perf tools: Fix arm64 build by generating unistd_64.h")
Signed-off-by: James Clark <james.clark@linaro.org>
Tested-by: Thorsten Leemhuis <linux@leemhuis.info>
Link: https://lore.kernel.org/r/20250429-james-perf-fix-libperf-in-source-build-v1-1-a1a827ac15e5@linaro.org
Signed-off-by: Namhyung Kim <namhyung@kernel.org>
tools/lib/perf/Makefile
tools/perf/Makefile.config