special handle of scripts/kconfig/zconf.tab.o

From: Cao jin
Date: Tue Aug 15 2017 - 06:57:35 EST


Masahiro-san,

I have a question about make *config. In scripts/kconfig/Makefile, there
is following statement:

$(obj)/zconf.tab.o: $(obj)/zconf.lex.c $(obj)/zconf.hash.c

and the $(obj)/zconf.{tab,hash,lex}.c match the rule in Makefile.lib:

$(obj)/%: $(src)/%_shipped
$(call cmd,shipped)

and cmd_shipped just transform the _shipped file to .c via `cat`.

And zconf.tab.c includes several *other* .c files which make the whole
process a little obscure, because there are not corresponding .o files
for the *other* .c files.

My questions is: Does this special handling has other meanings that I
may miss? Or just legacy.

Because a straightforward way in my mind would be:

rename zconf.{tab,hash,lex}.c_shipped to zconf.{tab,hash,lex}.c, then
has following in the Makefile

common-objs := zconf.tab.o zconf.hash.o zconf.lex.o util.o etc...
conf-objs := conf.o $(common-objs)

--
Sincerely,
Cao jin