[Qemu-devel] [PATCH 01/13] build-sys: move qmp-introspect per target

Marc-André Lureau posted 13 patches 7 years, 1 month ago
There is a newer version of this series
[Qemu-devel] [PATCH 01/13] build-sys: move qmp-introspect per target
Posted by Marc-André Lureau 7 years, 1 month ago
The following patches are going to introduce per-target #ifdef in the
schemas.

The introspection data is statically generated once, and must thus be
built per-target to reflect target-specific configuration.

Drop "do_test_visitor_in_qmp_introspect(&qmp_schema_qlit)" since the
schema is no longer in a common object. It is covered by the per-target
query-qmp-schema test instead.

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
---
 tests/test-qobject-input-visitor.c | 1 -
 Makefile.objs                      | 2 --
 Makefile.target                    | 2 ++
 3 files changed, 2 insertions(+), 3 deletions(-)

diff --git a/tests/test-qobject-input-visitor.c b/tests/test-qobject-input-visitor.c
index caa90b3d7e..609334adf6 100644
--- a/tests/test-qobject-input-visitor.c
+++ b/tests/test-qobject-input-visitor.c
@@ -1271,7 +1271,6 @@ static void test_visitor_in_qmp_introspect(TestInputVisitorData *data,
                                            const void *unused)
 {
     do_test_visitor_in_qmp_introspect(data, &test_qmp_schema_qlit);
-    do_test_visitor_in_qmp_introspect(data, &qmp_schema_qlit);
 }
 
 int main(int argc, char **argv)
diff --git a/Makefile.objs b/Makefile.objs
index 56af0347d3..0388d5157d 100644
--- a/Makefile.objs
+++ b/Makefile.objs
@@ -13,7 +13,6 @@ util-obj-y += qapi/qapi-visit.o
 util-obj-y += $(QAPI_MODULES:%=qapi/qapi-visit-%.o)
 util-obj-y += qapi/qapi-events.o
 util-obj-y += $(QAPI_MODULES:%=qapi/qapi-events-%.o)
-util-obj-y += qapi/qapi-introspect.o
 
 chardev-obj-y = chardev/
 
@@ -94,7 +93,6 @@ common-obj-$(CONFIG_FDT) += device_tree.o
 
 common-obj-y += qapi/qapi-commands.o
 common-obj-y += $(QAPI_MODULES:%=qapi/qapi-commands-%.o)
-common-obj-y += qapi/qapi-introspect.o
 common-obj-y += qmp.o hmp.o
 endif
 
diff --git a/Makefile.target b/Makefile.target
index 44ec4b630c..c882292ae1 100644
--- a/Makefile.target
+++ b/Makefile.target
@@ -156,6 +156,8 @@ endif
 
 GENERATED_FILES += hmp-commands.h hmp-commands-info.h
 
+obj-y += qapi/qapi-introspect.o
+
 endif # CONFIG_SOFTMMU
 
 dummy := $(call unnest-vars,,obj-y)
-- 
2.20.0


Re: [Qemu-devel] [PATCH 01/13] build-sys: move qmp-introspect per target
Posted by Markus Armbruster 7 years, 1 month ago
Marc-André Lureau <marcandre.lureau@redhat.com> writes:

> The following patches are going to introduce per-target #ifdef in the
> schemas.
>
> The introspection data is statically generated once, and must thus be
> built per-target to reflect target-specific configuration.
>
> Drop "do_test_visitor_in_qmp_introspect(&qmp_schema_qlit)" since the
> schema is no longer in a common object. It is covered by the per-target
> query-qmp-schema test instead.
>
> Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
> ---
>  tests/test-qobject-input-visitor.c | 1 -
>  Makefile.objs                      | 2 --
>  Makefile.target                    | 2 ++
>  3 files changed, 2 insertions(+), 3 deletions(-)
>
> diff --git a/tests/test-qobject-input-visitor.c b/tests/test-qobject-input-visitor.c
> index caa90b3d7e..609334adf6 100644
> --- a/tests/test-qobject-input-visitor.c
> +++ b/tests/test-qobject-input-visitor.c
> @@ -1271,7 +1271,6 @@ static void test_visitor_in_qmp_introspect(TestInputVisitorData *data,
>                                             const void *unused)
>  {
>      do_test_visitor_in_qmp_introspect(data, &test_qmp_schema_qlit);
> -    do_test_visitor_in_qmp_introspect(data, &qmp_schema_qlit);
>  }
>  
>  int main(int argc, char **argv)
> diff --git a/Makefile.objs b/Makefile.objs
> index 56af0347d3..0388d5157d 100644
> --- a/Makefile.objs
> +++ b/Makefile.objs
> @@ -13,7 +13,6 @@ util-obj-y += qapi/qapi-visit.o
>  util-obj-y += $(QAPI_MODULES:%=qapi/qapi-visit-%.o)
>  util-obj-y += qapi/qapi-events.o
>  util-obj-y += $(QAPI_MODULES:%=qapi/qapi-events-%.o)
> -util-obj-y += qapi/qapi-introspect.o
>  
>  chardev-obj-y = chardev/
>  
> @@ -94,7 +93,6 @@ common-obj-$(CONFIG_FDT) += device_tree.o
>  
>  common-obj-y += qapi/qapi-commands.o
>  common-obj-y += $(QAPI_MODULES:%=qapi/qapi-commands-%.o)
> -common-obj-y += qapi/qapi-introspect.o
>  common-obj-y += qmp.o hmp.o
>  endif
>  
> diff --git a/Makefile.target b/Makefile.target
> index 44ec4b630c..c882292ae1 100644
> --- a/Makefile.target
> +++ b/Makefile.target
> @@ -156,6 +156,8 @@ endif
>  
>  GENERATED_FILES += hmp-commands.h hmp-commands-info.h
>  
> +obj-y += qapi/qapi-introspect.o
> +
>  endif # CONFIG_SOFTMMU
>  
>  dummy := $(call unnest-vars,,obj-y)

Having to compile this multiple times is a bit sad, since it's fairly
big:

$ ls -lh qapi/qapi-introspect.c
-rw-rw-r--. 1 armbru armbru 518K Dec 17 07:56 qapi/qapi-introspect.c
$ size x86_64-softmmu/qapi/qapi-introspect.o
   text	   data	    bss	    dec	    hex	filename
  16302	 289472	     48	 305822	  4aa9e	x86_64-softmmu/qapi/qapi-introspect.o

To compile its target-independent part just once, we'd have to split it
up.  May or may not improve compile time.  We can figure it out when
compiling all of it multiple times bother us.

Reviewed-by: Markus Armbruster <armbru@redhat.com>