From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([140.186.70.92]:54017) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1QlMkK-0002WI-UD for qemu-devel@nongnu.org; Mon, 25 Jul 2011 11:07:05 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1QlMkJ-0000Lp-QV for qemu-devel@nongnu.org; Mon, 25 Jul 2011 11:07:04 -0400 Message-ID: <4E2D8672.4020905@linux.vnet.ibm.com> Date: Mon, 25 Jul 2011 10:06:26 -0500 From: Michael Roth MIME-Version: 1.0 References: <1311223307-29486-1-git-send-email-cerbere@gmail.com> <4E2D5EA0.5020104@linux.vnet.ibm.com> <4E2D7660.8080406@linux.vnet.ibm.com> In-Reply-To: Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [Qemu-trivial] [PATCH] Makefile: fix out-of-tree builds List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Stefan Hajnoczi Cc: Alexandre Raymond , qemu-trivial@nongnu.org, qemu-devel@nongnu.org On 07/25/2011 09:43 AM, Stefan Hajnoczi wrote: > On Mon, Jul 25, 2011 at 2:57 PM, Michael Roth wrote: >> On 07/25/2011 07:43 AM, Stefan Hajnoczi wrote: >>> >>> On Mon, Jul 25, 2011 at 1:16 PM, Michael Roth >>> wrote: >>>> >>>> On 07/25/2011 05:15 AM, Stefan Hajnoczi wrote: >>>>> >>>>> On Thu, Jul 21, 2011 at 5:41 AM, Alexandre Raymond >>>>> wrote: >>>>>> >>>>>> This patch fixes a minor bugs which prevented QEMU from being built >>>>>> out of tree. >>>>>> >>>>>> Signed-off-by: Alexandre Raymond >>>>>> --- >>>>>> 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