kbuild: change *FLAGS_<basetarget>.o to take the path relative to $(obj)
Kbuild provides per-file compiler flag addition/removal: CFLAGS_<basetarget>.o CFLAGS_REMOVE_<basetarget>.o AFLAGS_<basetarget>.o AFLAGS_REMOVE_<basetarget>.o CPPFLAGS_<basetarget>.lds HOSTCFLAGS_<basetarget>.o HOSTCXXFLAGS_<basetarget>.o The <basetarget> is the filename of the target with its directory and suffix stripped. This syntax comes into a trouble when two files with the same basename appear in one Makefile, for example: obj-y += foo.o obj-y += dir/foo.o CFLAGS_foo.o := <some-flags> Here, the <some-flags> applies to both foo.o and dir/foo.o The real world problem is: scripts/kconfig/util.c scripts/kconfig/lxdialog/util.c Both files are compiled into scripts/kconfig/mconf, but only the latter should be given with the ncurses flags. It is more sensible to use the relative path to the Makefile, like this: obj-y += foo.o CFLAGS_foo.o := <some-flags> obj-y += dir/foo.o CFLAGS_dir/foo.o := <other-flags> At first, I attempted to replace $(basetarget) with $*. The $* variable is replaced with the stem ('%') part in a pattern rule. This works with most of cases, but does not for explicit rules. For example, arch/ia64/lib/Makefile reuses rule_as_o_S in its own explicit rules, so $* will be empty, resulting in ignoring the per-file AFLAGS. I introduced a new variable, target-stem, which can be used also from explicit rules. Signed-off-by:Masahiro Yamada <yamada.masahiro@socionext.com> Acked-by:
Marc Zyngier <maz@kernel.org>
Showing
- arch/arm/kvm/Makefile 3 additions, 2 deletionsarch/arm/kvm/Makefile
- arch/x86/entry/vdso/Makefile 2 additions, 1 deletionarch/x86/entry/vdso/Makefile
- drivers/gpu/drm/amd/display/dc/calcs/Makefile 3 additions, 3 deletionsdrivers/gpu/drm/amd/display/dc/calcs/Makefile
- drivers/gpu/drm/amd/display/dc/dcn20/Makefile 1 addition, 1 deletiondrivers/gpu/drm/amd/display/dc/dcn20/Makefile
- drivers/gpu/drm/amd/display/dc/dml/Makefile 7 additions, 10 deletionsdrivers/gpu/drm/amd/display/dc/dml/Makefile
- drivers/gpu/drm/amd/display/dc/dsc/Makefile 3 additions, 4 deletionsdrivers/gpu/drm/amd/display/dc/dsc/Makefile
- drivers/gpu/drm/i915/Makefile 1 addition, 1 deletiondrivers/gpu/drm/i915/Makefile
- scripts/Makefile.host 11 additions, 11 deletionsscripts/Makefile.host
- scripts/Makefile.lib 8 additions, 5 deletionsscripts/Makefile.lib
- scripts/kconfig/Makefile 4 additions, 4 deletionsscripts/kconfig/Makefile
Loading
Please register or sign in to comment