From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([140.186.70.92]:55257) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1QlLgj-0002fZ-JM for qemu-devel@nongnu.org; Mon, 25 Jul 2011 09:59:18 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1QlLgi-0004UE-Go for qemu-devel@nongnu.org; Mon, 25 Jul 2011 09:59:17 -0400 Message-ID: <4E2D7660.8080406@linux.vnet.ibm.com> Date: Mon, 25 Jul 2011 08:57:52 -0500 From: Michael Roth MIME-Version: 1.0 References: <1311223307-29486-1-git-send-email-cerbere@gmail.com> <4E2D5EA0.5020104@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 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. 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).