Some files (especially from hw/core/, stubs/ and util/) are built for user mode emulation unnecessarily; they are not needed by any code that is part of qemu-user.
The bulk of the patch (commits 6-17) puts stubs/ on a diet both in general (moving stubs out into specific subdirectories and away from libqemuutil.a) and for specific builds, by documenting which parts of QEMU need the various object files. Tested by building --disable-system --disable-user --disable-tools --disable-guest-agent --disable-system --enable-user --disable-tools --disable-guest-agent --disable-system --disable-user --enable-tools --disable-guest-agent --disable-system --disable-user --disable-tools --enable-guest-agent as well as regular CI. Paolo Paolo Bonzini (15): meson: do not link pixman automatically into all targets tests: only build plugins if TCG is enabled tests/unit: match some unit tests to corresponding feature switches yank: only build if needed hw/core: Move system emulation files to system_ss stubs: remove obsolete stubs hw/usb: move stubs out of stubs/ hw/virtio: move stubs out of stubs/ semihosting: move stubs out of stubs/ ramfb: move stubs out of stubs/ memory-device: move stubs out of stubs/ colo: move stubs out of stubs/ stubs: split record/replay stubs further stubs: include stubs only if needed stubs: move monitor_fdsets_cleanup with other fdset stubs Philippe Mathieu-Daudé (3): ebpf: Restrict to system emulation util/qemu-config: Extract QMP commands to qemu-config-qmp.c hw: Include minimal source set in user emulation build meson.build | 8 +- include/qemu/config-file.h | 3 + include/sysemu/sysemu.h | 2 - stubs/ramfb.c => hw/display/ramfb-stubs.c | 0 .../mem/memory-device-stubs.c | 0 stubs/usb-dev-stub.c => hw/usb/bus-stub.c | 5 - .../virtio/virtio-md-stubs.c | 0 stubs/colo.c => migration/colo-stubs.c | 0 monitor/qemu-config-qmp.c | 206 ++++++++++++++++++ stubs/colo-compare.c => net/colo-stubs.c | 0 .../semihost-all.c => semihosting/stubs-all.c | 0 .../semihost.c => semihosting/stubs-system.c | 0 stubs/fdset.c | 6 + {hw/core => stubs}/hotplug-stubs.c | 0 stubs/isa-bus.c | 7 - stubs/module-opts.c | 2 - stubs/monitor-core.c | 6 - stubs/{monitor.c => monitor-internal.c} | 5 - stubs/pci-bus.c | 7 - stubs/qdev.c | 6 - stubs/qtest.c | 10 - stubs/replay-mode.c | 4 + stubs/replay.c | 2 - util/qemu-config.c | 204 +---------------- ebpf/meson.build | 2 +- hw/core/meson.build | 14 +- hw/display/meson.build | 2 +- hw/mem/meson.build | 1 + hw/usb/meson.build | 2 +- hw/virtio/meson.build | 3 +- migration/meson.build | 2 + monitor/meson.build | 1 + net/meson.build | 2 + semihosting/meson.build | 3 + stubs/meson.build | 133 ++++++----- tests/meson.build | 2 +- tests/unit/meson.build | 12 +- util/meson.build | 2 +- 38 files changed, 328 insertions(+), 336 deletions(-) rename stubs/ramfb.c => hw/display/ramfb-stubs.c (100%) rename stubs/memory_device.c => hw/mem/memory-device-stubs.c (100%) rename stubs/usb-dev-stub.c => hw/usb/bus-stub.c (83%) rename stubs/virtio-md-pci.c => hw/virtio/virtio-md-stubs.c (100%) rename stubs/colo.c => migration/colo-stubs.c (100%) create mode 100644 monitor/qemu-config-qmp.c rename stubs/colo-compare.c => net/colo-stubs.c (100%) rename stubs/semihost-all.c => semihosting/stubs-all.c (100%) rename stubs/semihost.c => semihosting/stubs-system.c (100%) rename {hw/core => stubs}/hotplug-stubs.c (100%) delete mode 100644 stubs/isa-bus.c delete mode 100644 stubs/module-opts.c rename stubs/{monitor.c => monitor-internal.c} (79%) delete mode 100644 stubs/pci-bus.c create mode 100644 stubs/replay-mode.c -- 2.44.0