On 8/7/19 10:16 PM, Markus Armbruster wrote: > Philippe Mathieu-Daudé <phi...@redhat.com> writes: > >> On 8/6/19 5:14 PM, Markus Armbruster wrote: >>> In my "build everything" tree, changing sysemu/sysemu.h triggers a >>> recompile of some 5400 out of 6600 objects (not counting tests and >>> objects that don't depend on qemu/osdep.h). >>> >>> hw/qdev-core.h includes sysemu/sysemu.h since recent commit e965ffa70a >>> "qdev: add qdev_add_vm_change_state_handler()". This is a bad idea: >>> hw/qdev-core.h is widely included. >>> >>> Move the declaration of qdev_add_vm_change_state_handler() to >>> sysemu/sysemu.h, and drop the problematic include from hw/qdev-core.h. >>> >>> Touching sysemu/sysemu.h now recompiles some 1800 objects. >>> qemu/uuid.h also drops from 5400 to 1800. A few more headers show >>> smaller improvement: qemu/notify.h drops from 5600 to 5200, >>> qemu/timer.h from 5600 to 4500, and qapi/qapi-types-run-state.h from >>> 5500 to 5000. >>> >>> Cc: Stefan Hajnoczi <stefa...@redhat.com> >>> Signed-off-by: Markus Armbruster <arm...@redhat.com> >>> --- >>> accel/kvm/kvm-all.c | 1 + >>> backends/hostmem.c | 1 + >>> cpus.c | 1 + >>> hw/arm/allwinner-a10.c | 1 + >>> hw/arm/aspeed_soc.c | 1 + >>> hw/arm/kzm.c | 1 + >>> hw/arm/msf2-soc.c | 1 + >>> hw/arm/stm32f205_soc.c | 1 + >>> hw/char/serial-isa.c | 1 + >>> hw/char/xen_console.c | 1 + >>> hw/core/numa.c | 1 + >>> hw/core/vm-change-state-handler.c | 1 + >>> hw/display/qxl-render.c | 1 + >>> hw/i386/xen/xen-hvm.c | 1 + >>> hw/i386/xen/xen-mapcache.c | 1 + >>> hw/intc/ioapic.c | 1 + >>> hw/pci/pci.c | 1 + >>> hw/riscv/sifive_e.c | 1 + >>> hw/riscv/sifive_u.c | 1 + >>> hw/riscv/spike.c | 1 + >>> hw/riscv/virt.c | 1 + >>> hw/sparc64/niagara.c | 2 +- >>> hw/usb/hcd-ehci.h | 1 + >>> hw/xen/xen-common.c | 1 + >>> hw/xen/xen_devconfig.c | 1 + >>> hw/xenpv/xen_machine_pv.c | 1 + >>> include/hw/qdev-core.h | 5 ----- >>> include/sysemu/sysemu.h | 3 +++ >>> migration/global_state.c | 1 + >>> migration/migration.c | 1 + >>> migration/savevm.c | 1 + >>> 31 files changed, 32 insertions(+), 6 deletions(-) >>> >>> diff --git a/accel/kvm/kvm-all.c b/accel/kvm/kvm-all.c >>> index e1a44eccf5..fc38d0b9e3 100644 >>> --- a/accel/kvm/kvm-all.c >>> +++ b/accel/kvm/kvm-all.c >>> @@ -29,6 +29,7 @@ >>> #include "exec/gdbstub.h" >>> #include "sysemu/kvm_int.h" >>> #include "sysemu/cpus.h" >>> +#include "sysemu/sysemu.h" >>> #include "qemu/bswap.h" >>> #include "exec/memory.h" >>> #include "exec/ram_addr.h" >> >> Include missing in net/netmap.c: >> >> CC net/netmap.o >> net/netmap.c: In function 'netmap_update_fd_handler': >> net/netmap.c:108:5: error: implicit declaration of function >> 'qemu_set_fd_handler' [-Werror=implicit-function-declaration] >> qemu_set_fd_handler(s->nmd->fd, >> ^~~~~~~~~~~~~~~~~~~ >> net/netmap.c:108:5: error: nested extern declaration of >> 'qemu_set_fd_handler' [-Werror=nested-externs] > > Can you tell me offhand what I have to install so configure enables > CONFIG_NETMAP?
The steps are listed in tests/docker/dockerfiles/debian-amd64.docker, but you can get to this point running: $ make docker-image-debian-amd64 V=1 DEBUG=1 This will build the docker image with netmap (so you don't have to mess with your workstation setup), then build QEMU within the image.