On Tue, Apr 27, 2021 at 03:40:24PM +0200, Jan Beulich wrote: > On 27.04.2021 15:31, Roger Pau Monné wrote: > > On Tue, Apr 27, 2021 at 02:30:35PM +0200, Jan Beulich wrote: > >> On 27.04.2021 11:05, Roger Pau Monné wrote: > >>> On Wed, Apr 21, 2021 at 04:09:03PM +0200, Jan Beulich wrote: > >>>> On 20.04.2021 18:20, Roger Pau Monné wrote: > >>>>> On Tue, Apr 20, 2021 at 05:47:49PM +0200, Jan Beulich wrote: > >>>>>> On 20.04.2021 17:29, Roger Pau Monné wrote: > >>>>>>> On Thu, Apr 01, 2021 at 10:33:47AM +0200, Jan Beulich wrote: > >>>>>>>> @@ -399,7 +399,11 @@ include/xen/compile.h: include/xen/compi > >>>>>>>> @sed -rf tools/process-banner.sed < .banner >> $@.new > >>>>>>>> @mv -f $@.new $@ > >>>>>>>> > >>>>>>>> -include/asm-$(TARGET_ARCH)/asm-offsets.h: > >>>>>>>> arch/$(TARGET_ARCH)/asm-offsets.s > >>>>>>>> +asm-offsets.s: arch/$(TARGET_ARCH)/$(TARGET_SUBARCH)/asm-offsets.c > >>>>>>>> + $(CC) $(filter-out -Wa$(comma)% -flto,$(c_flags)) -S -g0 -o > >>>>>>>> $@.new -MQ $@ $< > >>>>>>>> + $(call move-if-changed,$@.new,$@) > >>>>>>> > >>>>>>> Won't it be more natural to keep the .s file in arch/$(TARGET_ARCH)? > >>>>>> > >>>>>> Yes and no: Yes as far as the actual file location is concerned. > >>>>>> No when considering where it gets generated: I generally consider > >>>>>> it risky to generate files outside of the directory where make > >>>>>> currently runs. There may be good reasons for certain exceptions, > >>>>>> but personally I don't see this case as good enough a reason. > >>>>>> > >>>>>> Somewhat related - if doing as you suggest, which Makefile's > >>>>>> clean: rule should clean up that file in your opinion? > >>>>> > >>>>> The clean rule should be in the makefile where it's generated IMO, > >>>>> same as asm-offsets.h clean rule currently in xen/Makefile. > >>>>> > >>>>>> Nevertheless, if there's general agreement that keeping the file > >>>>>> there is better, I'd make the change and simply ignore my unhappy > >>>>>> feelings about it. > >>>>> > >>>>> I don't have a strong opinion, it just feels weird to have this IMO > >>>>> stray asm-offsets.s outside of it's arch directory, taking into > >>>>> account that we have asm-offsets.h generated from xen/Makefile into an > >>>>> arch specific directory already as a precedent in that makefile. > >>>> > >>>> Well, asm-offsets.h generation doesn't involve the compiler, hence > >>>> no .*.d files get generated and want including later. For > >>>> asm-offsets.s to have dependencies properly honored, if we > >>>> generated it in xen/arch/<arch>, .asm-offsets.d would also end up > >>>> there, and hence including of it would need separately taking care > >>>> of. > >>> > >>> I'm not sure I understand what do you mean with inclusion need taking > >>> care of separately. Isn't it expected for .d file to reside in the > >>> same directory as the output, > >> > >> Yes, ... > >> > >>> and hence picked up automatically? > >> > >> ... and hence they _wouldn't_ be picked up automatically while > >> building in xen/ if the .s file got created in xen/arch/<arch>/. > > > > Hm, so that would prevent re-building the target when the dependencies > > changed as the .d file being in the arch directory would attempt the > > rebuild from there instead of the top level xen/? > > No, in the arch directory nothing should happen at all, as there's > no rule to rebuild asm-offsets.s. And if we built it in the subarch > directory (where asm-offsets.c lives), the wrong rule would kick in > (the general one compiling C to assembly). > > > I guess the alternative would be to force a rebuild of the target > > every time, in order to not depend on the .d logic? > > Simply rebuilding always is not going to be good: There should be > no re-building at all when actually just installing Xen. Hence > while move-if-changed would be able to suppress the bulk of the > fallout, this would still be too much rebuilding for my taste in > that specific case. > > The option I've been hinting at was to explicitly include the .d > files from the arch dir. But I don't really like this either ...
It's hard to tell whether I would prefer that option without seeing it. In any case, the change is an improvement overall as the logic gets shared between architectures, so I don't plan to hold it just because of the placement nit: Acked-by: Roger Pau Monné <roger....@citrix.com> Thanks, Roger.