Alice Carlotti <alice.carlo...@arm.com> writes:
> On Wed, Apr 30, 2025 at 01:29:25PM +0100, Richard Sandiford wrote:
>> Alice Carlotti <alice.carlo...@arm.com> writes:
>> > On Tue, Apr 29, 2025 at 02:47:21PM +0100, Alice Carlotti wrote:
>> >> This demonstrates a clear benefit to make the makefile rules automatic. I
>> >> thought this might be quite tricky, but it turns out to be fairly
>> >> straightforward.
>> >
>> > Actually, it turns out I missed at least one more thing that's needed, so 
>> > the
>> > first two patches combined don't even build cleanly.  The issue is that
>> > dependencies on generated files need some mechanism to ensure that the
>> > generated files are available before their dependants are built during a 
>> > clean
>> > build.  This means that I can't just delete the dependency
>> >
>> > aarch64-builtins.o: aarch64-builtin-iterators.h
>> >
>> >
>> > Many other generated files are currently specified as prerequisites via the
>> > rule:
>> > $(ALL_HOST_OBJS) : | $(generated_files)
>> >
>> > I think it would make sense to include the backend generated files into 
>> > this
>> > variable.  Currently some backend files are included, but this is done 
>> > using
>> > the variables TM_H, TM_P_H, TM_D_H and TM_RUST_H variables, which looks 
>> > like a
>> > misuse of these variables.
>> >
>> > The intended meaning/use of the TM_* variables is also unclear.  As far as 
>> > I
>> > can tell, it looks like they should list the dependencies of the 
>> > corresponding
>> > files generated by mkconfig, of which the direct includes are added
>> > automatically, but this isn't quite consistent with the current values in
>> > t-aarch64.
>> 
>> Which files are you thinking of when you say that those macros are being
>> misused, and that the current values in t-aarch64 aren't consistent with
>> the intended usage?  It looks from a quick glance at:
>> 
>> TM_H += $(srcdir)/config/aarch64/aarch64-fusion-pairs.def \
>>      $(srcdir)/config/aarch64/aarch64-tuning-flags.def \
>>      $(srcdir)/config/aarch64/aarch64-option-extensions.def \
>>      $(srcdir)/config/aarch64/aarch64-cores.def \
>>      $(srcdir)/config/aarch64/aarch64-isa-modes.def \
>>      $(srcdir)/config/aarch64/aarch64-arches.def
>> 
>> that aarch64-fusion-pairs.def and aarch64-tuning-flags.def could be put
>> in TM_P_H instead of TM_H, since they are included via aarch64-protos.h
>> but not (apparently) via aarch64.h.  But the others look correct.
>
> I think config/arm/aarch-common.h is missing from TM_P_H and bbitmap.h is
> missing from both.  The latter omission was introduced by me last year, but 
> the
> former has been missing since 2021.

Ah, ok, so it was more about missing entries?

> (I haven't actually dumped the full value of TM_H to check, so I might have
> missed some mechanism in the maze of macro definitions.  Similarly I think
> input.h is covered via some chain of macros, but I haven't verified this.)
>
> I think it's possible to do some programmatic verification of these macros; I
> might try that at some point.
>
>> > Another related observation is that aarch64-builtin-iterators.h is missing 
>> > from
>> > MOSTLYCLEANFILES, so it isn't removed in a clean build.  It ought to be
>> > included, and I think it would be good if we could use the same list (or 
>> > mostly
>> > the same list) of generated files for both the order-only prerequiste rule 
>> > and
>> > in MOSTLYCLEANFILES.
>> 
>> I agree that it would be good for the common subset to be specified once
>> rather than twice.  But generated_files includes things generated by
>> configure, which shouldn't be removed by "make mostlyclean".
>
> I couldn't spot any at a glance - do you have a specific example?  And why
> would these need an explicit order dependency?  I might be missing some detail
> of the configure/build flow here.

I was thinking of config.h, tm.h and tm_p.h, which are removed by clean
(of course!) but not by mostlyclean.  I'm not 100% sure why they're in
the ordering rule, but perhaps it's in case config.status is rerun due
to an update to the configuration files.

Thanks,
Richard

Reply via email to