Patchwork Makefile: Fix parallel building after a clean tree

login
register
mail settings
Submitter Stefan Berger
Date July 26, 2011, 2:33 p.m.
Message ID <1311690830.7898.7.camel@d941e-10>
Download mbox | patch
Permalink /patch/106876/
State New
Headers show

Comments

Stefan Berger - July 26, 2011, 2:33 p.m.
This patch fixes a compilation error when building qemu after 'make clean'
by parallel building using 'make -j6' for example. A dependency seems to be missing.

  GEN   qemu-options.def
  GEN   trace.h
  GEN   qapi-generated/qga-qapi-types.h
  GEN   qapi-generated/qga-qapi-visit.h
  GEN   qapi-generated/qga-qmp-marshal.c
  CC    qga/guest-agent-command-state.o
  CC    qga/guest-agent-commands.o
  GEN   trace.c
  GEN   qemu-img-cmds.h
cc1: error: qapi-generated: No such file or directory [-Werror]
cc1: all warnings being treated as errors


Signed-off-by: Stefan Berger <stefanb@linux.vnet.ibm.com>

---
 Makefile |    2 ++
 1 file changed, 2 insertions(+)
Michael Roth - July 26, 2011, 4:36 p.m.
On 07/26/2011 09:33 AM, Stefan Berger wrote:
> This patch fixes a compilation error when building qemu after 'make clean'
> by parallel building using 'make -j6' for example. A dependency seems to be missing.
>
>    GEN   qemu-options.def
>    GEN   trace.h
>    GEN   qapi-generated/qga-qapi-types.h
>    GEN   qapi-generated/qga-qapi-visit.h
>    GEN   qapi-generated/qga-qmp-marshal.c
>    CC    qga/guest-agent-command-state.o
>    CC    qga/guest-agent-commands.o
>    GEN   trace.c
>    GEN   qemu-img-cmds.h
> cc1: error: qapi-generated: No such file or directory [-Werror]
> cc1: all warnings being treated as errors
>
>
> Signed-off-by: Stefan Berger<stefanb@linux.vnet.ibm.com>
>
> ---
>   Makefile |    2 ++
>   1 file changed, 2 insertions(+)
>
> Index: qemu-git/Makefile
> ===================================================================
> --- qemu-git.orig/Makefile
> +++ qemu-git/Makefile
> @@ -192,6 +192,8 @@ test-qmp-commands.o: $(addprefix $(qapi-
>   test-qmp-commands: test-qmp-commands.o qfloat.o qint.o qdict.o qstring.o qlist.o qbool.o $(qapi-obj-y) error.o osdep.o qemu-malloc.o $(oslib-obj-y) qjson.o json-streamer.o json-lexer.o json-parser.o qerror.o qemu-error.o qemu-tool.o $(qapi-dir)/test-qapi-visit.o $(qapi-dir)/test-qapi-types.o $(qapi-dir)/test-qmp-marshal.o module.o
>
>   QGALIB=qga/guest-agent-command-state.o qga/guest-agent-commands.o
> +$(QGALIB): qemu-ga.o
> +
>
>   qemu-ga.o: $(addprefix $(qapi-dir)/, qga-qapi-types.c qga-qapi-types.h qga-qapi-visit.c qga-qmp-marshal.c) $(qapi-obj-y)
>   qemu-ga$(EXESUF): qemu-ga.o $(QGALIB) qemu-tool.o qemu-error.o error.o $(oslib-obj-y) $(trace-obj-y) $(block-obj-y) $(qobject-obj-y) $(version-obj-y) $(qapi-obj-y) qemu-timer-common.o qemu-sockets.o module.o qapi/qmp-dispatch.o qapi/qmp-registry.o $(qapi-dir)/qga-qapi-visit.o $(qapi-dir)/qga-qapi-types.o $(qapi-dir)/qga-qmp-marshal.o
>
>

Hi Stefan,

Thanks for catching this. It seems to do the trick for me up until make 
-j10, where a missing dependency on $(GENERATED_HEADERS) becomes an 
issue. I'll have a patch I'll send shortly.

Patch

Index: qemu-git/Makefile
===================================================================
--- qemu-git.orig/Makefile
+++ qemu-git/Makefile
@@ -192,6 +192,8 @@  test-qmp-commands.o: $(addprefix $(qapi-
 test-qmp-commands: test-qmp-commands.o qfloat.o qint.o qdict.o qstring.o qlist.o qbool.o $(qapi-obj-y) error.o osdep.o qemu-malloc.o $(oslib-obj-y) qjson.o json-streamer.o json-lexer.o json-parser.o qerror.o qemu-error.o qemu-tool.o $(qapi-dir)/test-qapi-visit.o $(qapi-dir)/test-qapi-types.o $(qapi-dir)/test-qmp-marshal.o module.o
 
 QGALIB=qga/guest-agent-command-state.o qga/guest-agent-commands.o
+$(QGALIB): qemu-ga.o
+
 
 qemu-ga.o: $(addprefix $(qapi-dir)/, qga-qapi-types.c qga-qapi-types.h qga-qapi-visit.c qga-qmp-marshal.c) $(qapi-obj-y)
 qemu-ga$(EXESUF): qemu-ga.o $(QGALIB) qemu-tool.o qemu-error.o error.o $(oslib-obj-y) $(trace-obj-y) $(block-obj-y) $(qobject-obj-y) $(version-obj-y) $(qapi-obj-y) qemu-timer-common.o qemu-sockets.o module.o qapi/qmp-dispatch.o qapi/qmp-registry.o $(qapi-dir)/qga-qapi-visit.o $(qapi-dir)/qga-qapi-types.o $(qapi-dir)/qga-qmp-marshal.o