[RFC] perf build: Use self-contained headers from kernel source when compiling

hupu posted 1 patch 1 week ago
tools/perf/Makefile.perf | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
[RFC] perf build: Use self-contained headers from kernel source when compiling
Posted by hupu 1 week ago
When building perf, switch to using the self-contained headers provided
in the kernel source tree to avoid build failures caused by missing
architecture-specific headers. For example, the build may fail with
errors like:

/usr/include/linux/ioctl.h:5:10: fatal error: 'asm/ioctl.h' file not
found
    5 | #include <asm/ioctl.h>
      |          ^~~~~~~~~~~~~

This issue may occur because system-installed headers are incomplete,
incompatible with the kernel version being built, or the corresponding
architecture-specific headers are not installed at all. Using the
self-contained headers from the kernel source ensures a consistent and
compatible build environment.

Signed-off-by: hupu <hupu.gm@gmail.com>
---
 tools/perf/Makefile.perf | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/tools/perf/Makefile.perf b/tools/perf/Makefile.perf
index 47c906b807ef..eaccaae87e3c 100644
--- a/tools/perf/Makefile.perf
+++ b/tools/perf/Makefile.perf
@@ -1202,7 +1202,9 @@ endif
 
 CLANG_OPTIONS = -Wall
 CLANG_SYS_INCLUDES = $(call get_sys_includes,$(CLANG),$(CLANG_TARGET_ARCH))
-BPF_INCLUDE := -I$(SKEL_TMP_OUT)/.. -I$(LIBBPF_INCLUDE) $(CLANG_SYS_INCLUDES)
+KHDR_INCLUDES := $(abspath $(OUTPUT)/../../usr/include)
+BPF_INCLUDE := -I$(SKEL_TMP_OUT)/.. -I$(LIBBPF_INCLUDE) \
+		-I$(KHDR_INCLUDES) $(CLANG_SYS_INCLUDES)
 TOOLS_UAPI_INCLUDE := -I$(srctree)/tools/include/uapi
 
 ifneq ($(WERROR),0)
-- 
2.43.0
Re: [RFC] perf build: Use self-contained headers from kernel source when compiling
Posted by Leo Yan 6 days, 7 hours ago
On Mon, Nov 24, 2025 at 03:23:10PM +0800, hupu wrote:
> When building perf, switch to using the self-contained headers provided
> in the kernel source tree to avoid build failures caused by missing
> architecture-specific headers. For example, the build may fail with
> errors like:
> 
> /usr/include/linux/ioctl.h:5:10: fatal error: 'asm/ioctl.h' file not
> found
>     5 | #include <asm/ioctl.h>
>       |          ^~~~~~~~~~~~~
> 
> This issue may occur because system-installed headers are incomplete,
> incompatible with the kernel version being built, or the corresponding
> architecture-specific headers are not installed at all. Using the
> self-contained headers from the kernel source ensures a consistent and
> compatible build environment.
> 
> Signed-off-by: hupu <hupu.gm@gmail.com>
> ---
>  tools/perf/Makefile.perf | 4 +++-
>  1 file changed, 3 insertions(+), 1 deletion(-)
> 
> diff --git a/tools/perf/Makefile.perf b/tools/perf/Makefile.perf
> index 47c906b807ef..eaccaae87e3c 100644
> --- a/tools/perf/Makefile.perf
> +++ b/tools/perf/Makefile.perf
> @@ -1202,7 +1202,9 @@ endif
>  
>  CLANG_OPTIONS = -Wall
>  CLANG_SYS_INCLUDES = $(call get_sys_includes,$(CLANG),$(CLANG_TARGET_ARCH))
> -BPF_INCLUDE := -I$(SKEL_TMP_OUT)/.. -I$(LIBBPF_INCLUDE) $(CLANG_SYS_INCLUDES)
> +KHDR_INCLUDES := $(abspath $(OUTPUT)/../../usr/include)

This doesn't work if use the commands:

  make -j `nproc` Image O=$OUT
  make headers_install O=$OUT
  make O=$OUT -C tools/perf VF=1 CORESIGHT=1 DEBUG=1

Maybe it is good to search possible paths:

  $(abspath ../../usr/include)    => Build in local folder
  $(abspath $(OUTPUT)usr/include) => Build in a specified folder

> +BPF_INCLUDE := -I$(SKEL_TMP_OUT)/.. -I$(LIBBPF_INCLUDE) \
> +		-I$(KHDR_INCLUDES) $(CLANG_SYS_INCLUDES)

Why the issue only happens for eBPF skel build but not for perf binary
build?  As I said in another reply, I'd consolidate options for both
cases.

Thanks,
Leo
Re: [RFC] perf build: Use self-contained headers from kernel source when compiling
Posted by hupu 1 week ago
Hi All Maintainers:

The background of this PATCH is explained in the email linked below.
To avoid potential disagreement from submitting multiple PATCHes in a
single email, this email focuses solely on discussing whether to use
self-contained headers from the kernel source when building perf.

https://lore.kernel.org/all/20251013080609.2070555-1-hupu.gm@gmail.com/

Thanks,
hupu
Re: [RFC] perf build: Use self-contained headers from kernel source when compiling
Posted by hupu 6 days, 11 hours ago
RESEND for attention.

On Mon, Nov 24, 2025 at 3:51 PM hupu <hupu.gm@gmail.com> wrote:
>
> Hi All Maintainers:
>
> The background of this PATCH is explained in the email linked below.
> To avoid potential disagreement from submitting multiple PATCHes in a
> single email, this email focuses solely on discussing whether to use
> self-contained headers from the kernel source when building perf.
>
> https://lore.kernel.org/all/20251013080609.2070555-1-hupu.gm@gmail.com/
>
> Thanks,
> hupu