Message ID | 20231114143816.71079-20-philmd@linaro.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | hw/xen: Have most of Xen files become target-agnostic | expand |
On Tue, Nov 14, 2023 at 03:38:15PM +0100, Philippe Mathieu-Daudé wrote: > Previous commits re-organized the target-specific bits > from Xen files. We can now build the common files once > instead of per-target. > > Only 4 files call libxen API (thus its CPPFLAGS): > - xen-hvm-common.c, > - xen_pt.c, xen_pt_graphics.c, xen_pt_msi.c > > Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org> > --- > Reworked since v1 so dropping David's R-b tag. > --- > accel/xen/meson.build | 2 +- > hw/block/dataplane/meson.build | 2 +- > hw/xen/meson.build | 21 ++++++++++----------- > 3 files changed, 12 insertions(+), 13 deletions(-) > > diff --git a/accel/xen/meson.build b/accel/xen/meson.build > index 002bdb03c6..455ad5d6be 100644 > --- a/accel/xen/meson.build > +++ b/accel/xen/meson.build > @@ -1 +1 @@ > -specific_ss.add(when: 'CONFIG_XEN', if_true: files('xen-all.c')) > +system_ss.add(when: 'CONFIG_XEN', if_true: files('xen-all.c')) > diff --git a/hw/block/dataplane/meson.build b/hw/block/dataplane/meson.build > index 025b3b061b..4d8bcb0bb9 100644 > --- a/hw/block/dataplane/meson.build > +++ b/hw/block/dataplane/meson.build > @@ -1,2 +1,2 @@ > system_ss.add(when: 'CONFIG_VIRTIO_BLK', if_true: files('virtio-blk.c')) > -specific_ss.add(when: 'CONFIG_XEN_BUS', if_true: files('xen-block.c')) > +system_ss.add(when: 'CONFIG_XEN_BUS', if_true: files('xen-block.c')) > diff --git a/hw/xen/meson.build b/hw/xen/meson.build > index d887fa9ba4..403cab49cf 100644 > --- a/hw/xen/meson.build > +++ b/hw/xen/meson.build > @@ -7,26 +7,25 @@ system_ss.add(when: ['CONFIG_XEN_BUS'], if_true: files( > 'xen_pvdev.c', > )) > > -system_ss.add(when: ['CONFIG_XEN', xen], if_true: files( > +system_ss.add(when: ['CONFIG_XEN'], if_true: files( > 'xen-operations.c', > -)) > - > -xen_specific_ss = ss.source_set() > -xen_specific_ss.add(files( > 'xen-mapcache.c', > +)) > +system_ss.add(when: ['CONFIG_XEN', xen], if_true: files( > 'xen-hvm-common.c', > )) > + > if have_xen_pci_passthrough > - xen_specific_ss.add(files( > + system_ss.add(when: ['CONFIG_XEN'], if_true: files( > 'xen-host-pci-device.c', > - 'xen_pt.c', > 'xen_pt_config_init.c', > - 'xen_pt_graphics.c', > 'xen_pt_load_rom.c', > + )) > + system_ss.add(when: ['CONFIG_XEN', xen], if_true: files( > + 'xen_pt.c', > + 'xen_pt_graphics.c', How is it useful to separate those source files? In the commit description, there's a talk about "CPPFLAGS", but having `when: [xen]` doesn't change the flags used to build those objects, so the talk about "CPPFLAGS" is confusing. Second, if for some reason the dependency `xen` is false, but `CONFIG_XEN` is true, then we wouldn't be able to build QEMU. Try linking a binary with "xen_pt_config_init.o" but without "xen_pt.o", that's not going to work. So even if that first source file doesn't directly depend on the Xen libraries, it depends on "xen_pt.o" which depends on the Xen libraries. So ultimately, I think all those source files should have the same condition: ['CONFIG_XEN', xen]. I've only checked the xen_pt* source files, I don't know if the same applies to "xen-operations.c" or "xen-mapcache.c". Beside this, QEMU built with Xen support still seems to works fine, so adding the objects to `system_ss` instead of `specific_ss` seems alright. Thanks,
diff --git a/accel/xen/meson.build b/accel/xen/meson.build index 002bdb03c6..455ad5d6be 100644 --- a/accel/xen/meson.build +++ b/accel/xen/meson.build @@ -1 +1 @@ -specific_ss.add(when: 'CONFIG_XEN', if_true: files('xen-all.c')) +system_ss.add(when: 'CONFIG_XEN', if_true: files('xen-all.c')) diff --git a/hw/block/dataplane/meson.build b/hw/block/dataplane/meson.build index 025b3b061b..4d8bcb0bb9 100644 --- a/hw/block/dataplane/meson.build +++ b/hw/block/dataplane/meson.build @@ -1,2 +1,2 @@ system_ss.add(when: 'CONFIG_VIRTIO_BLK', if_true: files('virtio-blk.c')) -specific_ss.add(when: 'CONFIG_XEN_BUS', if_true: files('xen-block.c')) +system_ss.add(when: 'CONFIG_XEN_BUS', if_true: files('xen-block.c')) diff --git a/hw/xen/meson.build b/hw/xen/meson.build index d887fa9ba4..403cab49cf 100644 --- a/hw/xen/meson.build +++ b/hw/xen/meson.build @@ -7,26 +7,25 @@ system_ss.add(when: ['CONFIG_XEN_BUS'], if_true: files( 'xen_pvdev.c', )) -system_ss.add(when: ['CONFIG_XEN', xen], if_true: files( +system_ss.add(when: ['CONFIG_XEN'], if_true: files( 'xen-operations.c', -)) - -xen_specific_ss = ss.source_set() -xen_specific_ss.add(files( 'xen-mapcache.c', +)) +system_ss.add(when: ['CONFIG_XEN', xen], if_true: files( 'xen-hvm-common.c', )) + if have_xen_pci_passthrough - xen_specific_ss.add(files( + system_ss.add(when: ['CONFIG_XEN'], if_true: files( 'xen-host-pci-device.c', - 'xen_pt.c', 'xen_pt_config_init.c', - 'xen_pt_graphics.c', 'xen_pt_load_rom.c', + )) + system_ss.add(when: ['CONFIG_XEN', xen], if_true: files( + 'xen_pt.c', + 'xen_pt_graphics.c', 'xen_pt_msi.c', )) else - xen_specific_ss.add(files('xen_pt_stub.c')) + system_ss.add(when: ['CONFIG_XEN'], if_true: files('xen_pt_stub.c')) endif - -specific_ss.add_all(when: ['CONFIG_XEN', xen], if_true: xen_specific_ss)
Previous commits re-organized the target-specific bits from Xen files. We can now build the common files once instead of per-target. Only 4 files call libxen API (thus its CPPFLAGS): - xen-hvm-common.c, - xen_pt.c, xen_pt_graphics.c, xen_pt_msi.c Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org> --- Reworked since v1 so dropping David's R-b tag. --- accel/xen/meson.build | 2 +- hw/block/dataplane/meson.build | 2 +- hw/xen/meson.build | 21 ++++++++++----------- 3 files changed, 12 insertions(+), 13 deletions(-)