Skip to contentSkip to conversation

Makefile: fix qga dependencies

PATCH In review Michael S. Tsirkin 3 participants 3 messages Nov 16, 2011 – Nov 17, 2011 Kbuild

lore
Share & tools
lore
#0 lore raw

PATCH 4/4 Makefile: fix qga dependencies

.c files include .h files, so .o depends on .h,
and the linked result depends on .o.
We got it wrong for qga rules, fix it up.

---
 Makefile |    9 +++++----
 1 files changed, 5 insertions(+), 4 deletions(-)
Makefile +5 -4
index c7f2cbd..7c93739 100644
@@ -208,11 +208,12 @@ test-visitor: test-visitor.o $(qobject-obj-y) $(qapi-obj-y) $(tools-obj-y) $(qap
 test-qmp-commands.o: $(addprefix $(qapi-dir)/, test-qapi-types.c test-qapi-types.h test-qapi-visit.c test-qapi-visit.h test-qmp-marshal.c test-qmp-commands.h) $(qapi-obj-y)
 test-qmp-commands: test-qmp-commands.o $(qobject-obj-y) $(qapi-obj-y) $(tools-obj-y) $(qapi-dir)/test-qapi-visit.o $(qapi-dir)/test-qapi-types.o $(qapi-dir)/test-qmp-marshal.o module.o
 
-QGALIB_GEN=$(addprefix $(qapi-dir)/, qga-qapi-types.c qga-qapi-types.h qga-qapi-visit.c qga-qmp-marshal.c qga-qmp-commands.h)
-$(QGALIB_GEN): $(GENERATED_HEADERS)
-$(qga-obj-y) qemu-ga.o: $(QGALIB_GEN)
+QGALIB_OBJ=$(addprefix $(qapi-dir)/, qga-qapi-types.o qga-qapi-visit.o qga-qmp-marshal.o)
+QGALIB_GEN=$(addprefix $(qapi-dir)/, qga-qapi-types.h qga-qapi-visit.h qga-qmp-commands.h)
+$(QGALIB_OBJ): $(QGALIB_GEN) $(GENERATED_HEADERS)
+$(qga-obj-y) qemu-ga.o: $(QGALIB_GEN) $(GENERATED_HEADERS)
 
-qemu-ga$(EXESUF): qemu-ga.o $(qga-obj-y) $(qapi-obj-y) $(tools-obj-y) $(qobject-obj-y) $(version-obj-y) $(addprefix $(qapi-dir)/, qga-qapi-visit.o qga-qapi-types.o qga-qmp-marshal.o)
+qemu-ga$(EXESUF): qemu-ga.o $(qga-obj-y) $(qapi-obj-y) $(tools-obj-y) $(qobject-obj-y) $(version-obj-y) $(QGALIB_OBJ)
 
 QEMULIBS=libhw32 libhw64 libuser libdis libdis-user
 
Signature · 1 line
1.7.5.53.gc233e
#1 lore raw
Quoted 3 lines · Michael S. Tsirkin

.c files include .h files, so .o depends on .h,
and the linked result depends on .o.
We got it wrong for qga rules, fix it up.

Another possible option is to make the "all" target depend on GENERATED_HEADERS and GENERATED_SOURCES, like

all: $(GENERATED_HEADERS) $(GENERATED_SOURCES)

	@$(MAKE) build-all

and drop the dependency everywhere else. This will check the dependency at the beginning of the build (should be fine since the generated files change rarely) and rely on automatic dependency generation for the .o->.h dependencies.

Paolo

#2 lore raw

Am 17.11.2011 10:31, schrieb Paolo Bonzini:

Quoted 5 lines · Michael S. Tsirkin
Quoted 3 lines

.c files include .h files, so .o depends on .h,
and the linked result depends on .o.
We got it wrong for qga rules, fix it up.

Quoted 7 lines

Another possible option is to make the "all" target depend on GENERATED_HEADERS and GENERATED_SOURCES, like

all: $(GENERATED_HEADERS) $(GENERATED_SOURCES)

    @$(MAKE) build-all

and drop the dependency everywhere else.

Please don't. make qemu-img, for example, should work, too. That bypasses the "all" target IIUC.

Andreas

Signature · 2 lines
SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nürnberg, Germany
GF: Jeff Hawn, Jennifer Guild, Felix Imendörffer; HRB 16746 AG Nürnberg