[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH] make: remove generated objects from target dirs
From: |
Michael S. Tsirkin |
Subject: |
Re: [Qemu-devel] [PATCH] make: remove generated objects from target dirs |
Date: |
Sun, 4 Mar 2012 18:49:03 +0200 |
User-agent: |
Mutt/1.5.21 (2010-09-15) |
On Sun, Mar 04, 2012 at 05:03:14PM +0100, Andreas Färber wrote:
> Am 04.03.2012 10:10, schrieb Michael S. Tsirkin:
> > I ended up with qmp-commands.h in target directories,
> > which makes build fail as it is found before the
> > main header.
> > make clean fixes it, but it might get triggered
> > again when we make some header target-independent next.
> > It's easy to just make sure all such leftovers are
> > removed, so let's do this.
> >
> > Signed-off-by: Michael S. Tsirkin <address@hidden>
> >
> > diff --git a/Makefile b/Makefile
> > index e66e885..958a414 100644
> > --- a/Makefile
> > +++ b/Makefile
> > @@ -89,6 +89,7 @@ qemu-options.def: $(SRC_PATH)/qemu-options.hx
> > SUBDIR_RULES=$(patsubst %,subdir-%, $(TARGET_DIRS))
> >
> > subdir-%: $(GENERATED_HEADERS)
> > + $(call quiet-command,rm -f $(foreach header, $(GENERATED_HEADERS),
> > "$*/$(header)"),)
>
> Nack. While this happens to fix an issue you encountered this is just
> plain wrong and dangerous. It takes a list of currently generated
> headers in the main directory and deletes them in all target folders on
> every compile; it's not forbidden to have a header of the same name in
> both directories, whether generated or not.
Yes it is Forbidden. With a big F.
And the reason is that it will break the build
in a very confusing way.
So if you do this silly thing, you pay the price, and this
is way better than everyone who tries to build the tree pays the price.
> I am all for making make clean do what it claims though.
>
> The real solution to this problem would be to make sure by careful
> review not to move files around in such a conflicting way (rename them
> instead)
Too late for current tree. There are many such conflicts.
> rather than posting a note to please run make clean or make
> distclean (which is fine if you have to do it once, bothersome for
> multiple repos, and unhelpful for bisecting).
>
> Andreas
This means that a file name that was generated somewhere in the
hierarchy at any point in the past can never be generated again
anywhere else.
That's impractical.
> > $(call quiet-command,$(MAKE) $(SUBDIR_MAKEFLAGS) -C $* V="$(V)"
> > TARGET_DIR="$*/" all,)
> >
> > ifneq ($(wildcard config-host.mak),)
>
> --
> SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nürnberg, Germany
> GF: Jeff Hawn, Jennifer Guild, Felix Imendörffer; HRB 16746 AG Nürnberg