Il ven 15 nov 2024, 22:15 Rob Landley <[email protected]> ha scritto:
> On 11/14/24 17:33, Paolo Bonzini wrote:
> > On 11/15/24 00:10, Rob Landley wrote:
> >> Seems a _bit_ awkward to do that (and potentially fail on a random new
> >> dependency) just to delete it all again?
> >
> > That's just how Make works.
>
> Linux and busybox and so on use make, and I've never seen "make clean"
> trigger a "make defconfig" there.
>
Yeah, they don't have a separate (and lengthy) configure phase. But they
might invoke some rules in a more hidden way if something changes in
scripts/. I don't know, Kbuild is black magic.
(Or do you mean "Make" is different from "gmake" the way "kbuild" is
> different from "make" and you distinguish your build system from the
> make command by capitalizing it?
No, I meant "any implementation of the POSIX utility".
> If it finds that Makefile is old, it first
> > regenerates Makefile and only then looks at the target.
>
> I'm pretty sure the make command doesn't internally know how to run the
> configure script, the Makefile would have to include plumbing to make
> that decision
It does, the chain is config-host.mak <- configure. The special processing
of Makefiles extends to all includes ("all Makefiles" in the GNU manual).
and it at least LOOKS like it's trying not to in the top level Makefile
> line 336:
>
> # Don't try to regenerate Makefile or configure
> # We don't generate any of them
> Makefile: ;
> configure: ;
>
Makefile and configure are not generated but other included files are. Most
likely the one you're hitting is config-host.mak..
I note that if you run "make clean" twice in a row, it doesn't re-run
> configure in between. It's only when a stale target exists, which seems
> to involve dependencies making a decision.
... and the second time, it is not stale anymore.
(The file NOT existing doesn't trigger action, but the file being "old"
> does.)
>
config-host.mak is only cleaned by distclean, not clean.
So it's an artifact of the way you're using make, and hard to fix then?
>
Maybe not too hard, I suppose one could strip the includes if make goals
are only of the form %clean.
Paolo
*shrug* I'd use 'git clean -fdx' instead but I'm not sure how that
> interacts with multiple submodules.
>