Patchwork [4/4] Makefile: fix qga dependencies

login
register
mail settings
Submitter Michael S. Tsirkin
Date Nov. 16, 2011, 9:58 p.m.
Message ID <20111116215829.GA767@redhat.com>
Download mbox | patch
Permalink /patch/126044/
State New
Headers show

Comments

Michael S. Tsirkin - Nov. 16, 2011, 9:58 p.m.
.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.

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
---
 Makefile |    9 +++++----
 1 files changed, 5 insertions(+), 4 deletions(-)
Paolo Bonzini - Nov. 17, 2011, 9:31 a.m.
On 11/16/2011 10:58 PM, Michael S. Tsirkin wrote:
> .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
Andreas Färber - Nov. 17, 2011, 12:22 p.m.
Am 17.11.2011 10:31, schrieb Paolo Bonzini:
> On 11/16/2011 10:58 PM, Michael S. Tsirkin wrote:
>> .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.

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

Andreas

Patch

diff --git a/Makefile b/Makefile
index c7f2cbd..7c93739 100644
--- a/Makefile
+++ b/Makefile
@@ -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