Message ID | 1502198450-7374-1-git-send-email-caoj.fnst@cn.fujitsu.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
2017-08-08 22:20 GMT+09:00 Cao jin <caoj.fnst@cn.fujitsu.com>:
> Signed-off-by: Cao jin <caoj.fnst@cn.fujitsu.com>
Applied to linux-kbuild/fixes. Thanks!
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@cn.fujitsu.com>: >> Signed-off-by: Cao jin <caoj.fnst@cn.fujitsu.com> > > 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?
Hi. 2017-08-10 22:50 GMT+09:00 Cao jin <caoj.fnst@cn.fujitsu.com>: > 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@cn.fujitsu.com>: >>> Signed-off-by: Cao jin <caoj.fnst@cn.fujitsu.com> >> >> 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
On 08/12/2017 07:31 AM, Masahiro Yamada wrote: > Hi. > > 2017-08-10 22:50 GMT+09:00 Cao jin <caoj.fnst@cn.fujitsu.com>: >> 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@cn.fujitsu.com>: >>>> Signed-off-by: Cao jin <caoj.fnst@cn.fujitsu.com> >>> >>> 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.
diff --git a/scripts/basic/fixdep.c b/scripts/basic/fixdep.c index fff818b..bbf62cb 100644 --- a/scripts/basic/fixdep.c +++ b/scripts/basic/fixdep.c @@ -25,7 +25,7 @@ * * So we play the same trick that "mkdep" played before. We replace * the dependency on autoconf.h by a dependency on every config - * option which is mentioned in any of the listed prequisites. + * option which is mentioned in any of the listed prerequisites. * * kconfig populates a tree in include/config/ with an empty file * for each config symbol and when the configuration is updated @@ -34,7 +34,7 @@ * the config symbols are rebuilt. * * So if the user changes his CONFIG_HIS_DRIVER option, only the objects - * which depend on "include/linux/config/his/driver.h" will be rebuilt, + * which depend on "include/config/his/driver.h" will be rebuilt, * so most likely only his driver ;-) * * The idea above dates, by the way, back to Michael E Chastain, AFAIK. @@ -75,7 +75,7 @@ * and then basically copies the .<target>.d file to stdout, in the * process filtering out the dependency on autoconf.h and adding * dependencies on include/config/my/option.h for every - * CONFIG_MY_OPTION encountered in any of the prequisites. + * CONFIG_MY_OPTION encountered in any of the prerequisites. * * It will also filter out all the dependencies on *.ver. We need * to make sure that the generated version checksum are globally up
Signed-off-by: Cao jin <caoj.fnst@cn.fujitsu.com> --- scripts/basic/fixdep.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-)