RE: [PATCH] kbuild: normalize paths in quiet compile output

From: Wang, Yang(Kevin)

Date: Mon Jun 08 2026 - 21:29:59 EST


AMD General

> -----Original Message-----
> From: Nathan Chancellor <nathan@xxxxxxxxxx>
> Sent: Tuesday, June 9, 2026 6:09 AM
> To: Wang, Yang(Kevin) <KevinYang.Wang@xxxxxxx>
> Cc: linux-kbuild@xxxxxxxxxxxxxxx; linux-kernel@xxxxxxxxxxxxxxx; amd-
> gfx@xxxxxxxxxxxxxxxxxxxxx; nsc@xxxxxxxxxx
> Subject: Re: [PATCH] kbuild: normalize paths in quiet compile output
>
> Hi Yang,
>
> On Mon, Jun 08, 2026 at 03:00:39PM +0800, Yang Wang wrote:
> > Composite objects may contain relative components in their member
> > object paths. This can make quiet compile output include noisy dot-dot
> > components, for example:
> >
> > CC [M] drivers/gpu/drm/amd/amdgpu/../amdkfd/kfd_module.o
> >
> > Use the existing normalize_path helper for quiet C and assembly
> > compile output so the same target is printed as:
> >
> > CC [M] drivers/gpu/drm/amd/amdkfd/kfd_module.o
> >
> > The actual compile commands still use $@, so object paths, dependency
> > tracking and generated files are unchanged.
> >
> > Signed-off-by: Yang Wang <kevinyang.wang@xxxxxxx>
>
> While I agree that the dots are ugly, I do not want to take this change because
> it makes it harder to figure out how to build these .o files individually. For
> example:

Got it, thanks for the testing and explanation. I see the problem with direct single-file builds now.

Best Regards,
Kevin
>
> $ make -kj"$(nproc)" ARCH=x86_64 CROSS_COMPILE=x86_64-linux-
> mrproper allmodconfig
> drivers/gpu/drm/amd/amdgpu/../amdkfd/kfd_module.o
> ...
> CC [M] drivers/gpu/drm/amd/amdgpu/../amdkfd/kfd_module.o
>
> works for building this file individually but the normalized path produced by
> this patch
>
> $ make -kj"$(nproc)" ARCH=x86_64 CROSS_COMPILE=x86_64-linux-
> mrproper allmodconfig drivers/gpu/drm/amd/amdkfd/kfd_module.o
> ...
> CC drivers/gpu/drm/amd/amdkfd/kfd_module.o
> In file included from drivers/gpu/drm/amd/amdkfd/kfd_module.c:26:
> drivers/gpu/drm/amd/amdkfd/kfd_priv.h:46:10: fatal error:
> kgd_kfd_interface.h: No such file or directory
> 46 | #include <kgd_kfd_interface.h>
> | ^~~~~~~~~~~~~~~~~~~~~
> compilation terminated.
> make[7]: *** [scripts/Makefile.build:289:
> drivers/gpu/drm/amd/amdkfd/kfd_module.o] Error 1
>
> does not.
>
> > ---
> > scripts/Makefile.lib | 4 ++--
> > 1 file changed, 2 insertions(+), 2 deletions(-)
> >
> > diff --git a/scripts/Makefile.lib b/scripts/Makefile.lib index
> > 28a1c08e3b22..7d1589d993a8 100644
> > --- a/scripts/Makefile.lib
> > +++ b/scripts/Makefile.lib
> > @@ -239,7 +239,7 @@ ifdef CONFIG_LTO_CLANG cmd_ld_single = $(if
> > $(objtool-enabled)$(is-single-obj-m), ; $(LD) $(ld_flags) -r -o
> > $(tmp-target) $@; mv $(tmp-target) $@) endif
> >
> > -quiet_cmd_cc_o_c = CC $(quiet_modtag) $@
> > +quiet_cmd_cc_o_c = CC $(quiet_modtag) $(call normalize_path,$@)
> > cmd_cc_o_c = $(CC) $(c_flags) -c -o $@ $< \
> > $(cmd_ld_single) \
> > $(cmd_objtool)
> > @@ -254,7 +254,7 @@ define rule_cc_o_c
> > $(call cmd,warn_shared_object)
> > endef
> >
> > -quiet_cmd_as_o_S = AS $(quiet_modtag) $@
> > +quiet_cmd_as_o_S = AS $(quiet_modtag) $(call normalize_path,$@)
> > cmd_as_o_S = $(CC) $(a_flags) -c -o $@ $< $(cmd_objtool)
> >
> > define rule_as_o_S
> > --
> > 2.47.3
> >
>
> --
> Cheers,
> Nathan