Re: [PATCH 1/2] kbuild: create built-in.o automatically if parent directory wants it
From: Masahiro Yamada
Date: Fri Nov 17 2017 - 23:08:19 EST
2017-11-08 1:31 GMT+09:00 Masahiro Yamada <yamada.masahiro@xxxxxxxxxxxxx>:
> "obj-y += foo/" syntax requires Kbuild to visit the "foo" subdirectory
> and link built-in.o from that directory. This means foo/Makefile is
> responsible for creating built-in.o even if there is no object to
> link (in this case, built-in.o is an empty archive).
>
> We have had several fixups like commit 4b024242e8a4 ("kbuild: Fix
> linking error built-in.o no such file or directory"), then ended up
> with a complex condition as follows:
>
> ifneq ($(strip $(obj-y) $(obj-m) $(obj-) $(subdir-m) $(lib-target)),)
> builtin-target := $(obj)/built-in.o
> endif
>
> We still have more cases not covered by the above, so we need to add
> obj- := dummy.o
> in several places just for creating empty built-in.o.
>
> A key point is, the parent Makefile knows whether built-in.o is needed
> or not. If a subdirectory needs to create built-in.o, its parent can
> tell the fact when Kbuild descends into it.
>
> If non-empty $(need-builtin) flag is passed from the parent, built-in.o
> should be created. $(obj-y) should be still checked to support the
> single target "%/". All of ugly tricks will go away.
>
> Signed-off-by: Masahiro Yamada <yamada.masahiro@xxxxxxxxxxxxx>
> ---
>
Applied to linux-kbuild/kbuild.
--
Best Regards
Masahiro Yamada