Makefile: fix qga dependencies
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
@@ -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
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
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_HEADERSandGENERATED_SOURCES, likeall: $(GENERATED_HEADERS) $(GENERATED_SOURCES)
@$(MAKE) build-alland 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