On Thu, Dec 16, 2021 at 11:18:08AM +0000, Andrew Cooper wrote:
> On 25/11/2021 13:39, Anthony PERARD wrote:
> > I guess it's easier to remember that %.E does "$(CC) -E" or "$(CPP)".
> >
> > -%.o %.i %.s: %.c tools_fixdep FORCE
> > +%.o %.i %.s %.E: %.c tools_fixdep FORCE
> > $(Q)$(MAKE) $(build)=$(*D) $(*D)/$(@F)
>
> So what I hadn't realised when asking was that Linux calls this .i and
> we've already got support for what I wanted. Sorry :)
>
> Thus, I suspect we probably don't want to take an extra %.E alias to the
> existing %.i, although...
>
> >
> > -%.o %.s: %.S tools_fixdep FORCE
> > +%.o %.s %.E: %.S tools_fixdep FORCE
> > +$(obj)/%.E: $(src)/%.c FORCE
> > + $(call if_changed_dep,cpp_i_c)
> > +$(obj)/%.E: $(src)/%.S FORCE
> > + $(call if_changed_dep,cpp_s_S)
>
> ... I don't currently see support for %.i from %.S in the tree. That
> one probably would be useful to introduce.
It's %.s for %.S, easy ;-)
Yep, %.s may run `gcc -S` or `gcc -E`.
And %.i may run `gcc -E` or may not run at all.
It seems that Linux have the same rules.
So, I guess to run gcc -E, one have to run `make dir/target.i || make
dir/target.s` currently, :-).
Another thing, %.s:%.S was broken for a while, and no one complained.
Cheers,
--
Anthony PERARD