Re: [PATCH V5 4/5] kbuild: Add support to build overlays (%.dtbo)

From: Viresh Kumar
Date: Wed Jan 20 2021 - 05:26:00 EST


On 20-01-21, 17:58, Masahiro Yamada wrote:
> > +%.dtb %.dtbo: include/config/kernel.release scripts_dtc
> > $(Q)$(MAKE) $(build)=$(dtstree) $(dtstree)/$@
>
>
> No, this is wrong because it does not work
> as grouped targets.
>
> You need to separate them.
>
>
>
> %.dtb: include/config/kernel.release scripts_dtc
> $(Q)$(MAKE) $(build)=$(dtstree) $(dtstree)/$@
>
> %.dtbo: include/config/kernel.release scripts_dtc
> $(Q)$(MAKE) $(build)=$(dtstree) $(dtstree)/$@
>
>
>
>
> See GNU make manual.
>
>
> "Pattern rules may have more than one target; however, every target
> must contain a % character.
> Pattern rules are always treated as grouped targets"
>
> https://www.gnu.org/software/make/manual/html_node/Pattern-Intro.html

Hmm, okay I will do that.

I did it this way because I saw similar stuff at some other places. I
am not a regular Makefile hacker, there is every chance I am reading
it wrong.

$ git grep "%.*%.*:" | grep Makefile
Makefile:%/config/auto.conf %/config/auto.conf.cmd %/generated/autoconf.h: $(KCONFIG_CONFIG)
scripts/Makefile.build:$(obj)/%.asn1.c $(obj)/%.asn1.h: $(src)/%.asn1 $(objtree)/scripts/asn1_compiler
scripts/Makefile.host:$(obj)/%.tab.c $(obj)/%.tab.h: $(src)/%.y FORCE
scripts/genksyms/Makefile:$(obj)/pars%.tab.c $(obj)/pars%.tab.h: $(src)/pars%.y FORCE
tools/perf/Documentation/Makefile:$(OUTPUT)%.1 $(OUTPUT)%.5 $(OUTPUT)%.7 : %.txt
tools/perf/Documentation/Makefile:$(OUTPUT)%.1 $(OUTPUT)%.5 $(OUTPUT)%.7 : $(OUTPUT)%.xml

--
viresh