qemu-trivial
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-trivial] [PATCH] Makefile: fix out-of-tree builds


From: Michael Roth
Subject: Re: [Qemu-trivial] [PATCH] Makefile: fix out-of-tree builds
Date: Mon, 25 Jul 2011 10:06:26 -0500
User-agent: Mozilla/5.0 (X11; Linux i686 on x86_64; rv:5.0) Gecko/20110624 Thunderbird/5.0

On 07/25/2011 09:43 AM, Stefan Hajnoczi wrote:
On Mon, Jul 25, 2011 at 2:57 PM, Michael Roth<address@hidden>  wrote:
On 07/25/2011 07:43 AM, Stefan Hajnoczi wrote:

On Mon, Jul 25, 2011 at 1:16 PM, Michael Roth<address@hidden>
  wrote:

On 07/25/2011 05:15 AM, Stefan Hajnoczi wrote:

On Thu, Jul 21, 2011 at 5:41 AM, Alexandre Raymond<address@hidden>
  wrote:

This patch fixes a minor bugs which prevented QEMU from being built
out of tree.

Signed-off-by: Alexandre Raymond<address@hidden>
---
  Makefile |    2 +-
  1 files changed, 1 insertions(+), 1 deletions(-)

I don't normally use --source-path but it still seems broken to me
after applying your patch?

$ cd /tmp; mkdir out; cd out
$ ~/qemu/configure --source-path=$HOME/qemu
$ make
   GEN   config-all-devices.mak
cat: i386-softmmu/config-devices.mak: No such file or directory
cat: x86_64-softmmu/config-devices.mak: No such file or directory
cat: alpha-softmmu/config-devices.mak: No such file or directory

Stefan


Works okay for me with and without the patch if I do a `make distclean`
in
$HOME/qemu beforehand.

Not sure what the trigger is for the breakage Alexandre is trying to
address.

You are right that make distclean in the source directory solves the
issue.

Intuitively I expect ./configure to re-wire things, make distclean
should not be necessary.

Alexandre: Can you describe the case where you hit a build issue in more
detail?

Stefan

The root problem seems to be that by including $(SRC_DIR) in VPATH (via
$(call set-vpath, $(SRC_PATH):$(SRC_PATH)/hw)), $(SRC_DIR) ends up being
searched for source files as well as target dependencies. So any crud left
in there can still satisfy dependencies when building outside $SRC_PATH. I'm
not sure there's a simple way around this except to prefix all source files
with $(SRC_PATH) and remove $(SRC_PATH) from VPATH...I'm not even sure that
would work though..

Perhaps just a friendly error message if we detect the $(SRC_PATH) directory
needs a distclean? Once you know that's the magic fix it's not terribly
inconvenient....alternatively we could automatically do the distclean in
$SRC_PATH but that might be considered overstepping our bounds.

Yes, ./configure could detect the case where --source-path= is used
but the source tree has build outputs.

Consequently, it seems like this patch would be a noop...default-configs
should never exist in an external build directory, so
$(SRC_PATH)/default-configs and default-configs end up being equivalent when
make eventually find it in $(SRC_PATH).

Thanks for finding out what is happening.  My understanding is that
$(SRC_PATH) must be used when invoking external commands during the
build, since they don't perform vpath search.  For make targets we
don't need to use $(SRC_PATH) since the vpath is in effect.

Ah, yah my mistake, patch would still have some effect.


Stefan




reply via email to

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