qemu-devel
[Top][All Lists]
Advanced

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

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


From: Stefan Hajnoczi
Subject: Re: [Qemu-devel] [Qemu-trivial] [PATCH] Makefile: fix out-of-tree builds
Date: Mon, 25 Jul 2011 15:43:53 +0100

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.

Stefan



reply via email to

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