qemu-devel
[Top][All Lists]
Advanced

[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



reply via email to

[Prev in Thread] Current Thread [Next in Thread]