qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] Re: [PATCH] fix tool/libuser makefile race


From: Andreas Färber
Subject: Re: [Qemu-devel] Re: [PATCH] fix tool/libuser makefile race
Date: Fri, 18 Dec 2009 19:59:59 +0100

Hey,

Am 18.12.2009 um 17:16 schrieb Juan Quintela:

Paolo Bonzini <address@hidden> wrote:
I just had this race happen on me while building qemu. The problematic
file in my case was cutils.o.  I'm using GNU make's order-only
dependencies to avoid that "make recurse-all" builds the tools as well.

Signed-off-by: Paolo Bonzini <address@hidden>

Signed-off-by: Paolo Bonzini <address@hidden>
---
Makefile |    5 ++++-
1 files changed, 4 insertions(+), 1 deletions(-)

diff --git a/Makefile b/Makefile
index d555bb2..373a861 100644
--- a/Makefile
+++ b/Makefile
@@ -79,7 +79,10 @@ romsubdir-%:

ALL_SUBDIRS=$(TARGET_DIRS) $(patsubst %,pc-bios/%, $(ROMS))

-recurse-all: $(SUBDIR_RULES) $(ROMSUBDIR_RULES)
+# Some files are shared between the tools and the emulators. So there
+# can be a race when the main makefile starts building xyz.o, while
+# the recursive make sees a partially built xyz.o and ar(1) fails.
+recurse-all: $(SUBDIR_RULES) $(ROMSUBDIR_RULES) | $(TOOLS)

#######################################################################
# QObject

I still don't understand why that is needed :( (make mysteries).

All shared stuff between $(TOOLS) and $(SUBDIR_RULES) are made from the
same Makefile invocation.  I don't see where the recursive make can
build a file that is also built by the normal Makefile.

Think of my porposed Makefile patch!

And if we have one file that is build in both places, that is the bug
that we have to fix.

Notice that cutils.o (from Makefile) is built in the root dir, and
cutils.o (from Makefile.user) is built into libuser/ directory.

I am confused how one can interfer with the other.

VPATH vs vpath problems?

libuser builds some .o files from .c files in $(SRC_PATH). They end up in libuser. For those that were built already in .., the .o files are taken from there instead.

Andreas


Later, Juan.







reply via email to

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