On 08/12/2017 07:31 AM, Masahiro Yamada wrote: > Hi. > > 2017-08-10 22:50 GMT+09:00 Cao jin <caoj.fnst@xxxxxxxxxxxxxx>: >> Hi Masahiro-san >> >> On 08/10/2017 12:05 AM, Masahiro Yamada wrote: >>> 2017-08-08 22:20 GMT+09:00 Cao jin <caoj.fnst@xxxxxxxxxxxxxx>: >>>> Signed-off-by: Cao jin <caoj.fnst@xxxxxxxxxxxxxx> >>> >>> Applied to linux-kbuild/fixes. Thanks! >>> >> >> I want to ask a question via this thread. >> >> I am tracing how each kernel source file compiled, and I met mounts-y in >> init/Makefile, I have trouble in finding the rule which compile >> $(mounts-y), but I clearly see the files in $(mounts-y) are compiled in >> the output of `make -n vmlinux`, but the files listed in mounts-y are >> not listed in obj-y. I think I must miss something, could you give some >> hint? >> > > > The magic is the following line: > > scripts/Makefile.lib line 55 > > # if $(foo-objs) exists, foo.o is a composite object > multi-used-y := $(sort $(foreach m,$(obj-y), $(if $(strip > $($(m:.o=-objs)) $($(m:.o=-y))), $(m)))) > > > If foo.o is added to obj-y and foo-objs or foo-y exist, > they are also expanded. > > > > > > If you see init/Makefile, mounts.o is added to obj-y. > > obj-y := main.o version.o mounts.o > > Finally figured out how $(mounts-y) is compiled and how init/mounts.o is linked, it is a bit complex than I expected, your hint really helps:) Thanks you very much, Masahiro-san. -- Sincerely, Cao jin -- To unsubscribe from this list: send the line "unsubscribe linux-kbuild" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html