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 -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html