Rather than re-spinning the whole "single-binary: Make hw/arm/ common" series, restrict to the API additions, but include examples of their usefulness (hundreds of virtio objects removed from default Linux build). Time passed since I context-switched out of this work so I'm not sure the DEFINE_MACHINE_WITH_INTERFACES() implementation is in the form Zoltan asked.
Philippe Mathieu-Daudé (14): target/qmp: Use target_cpu_type() qemu/target-info: Factor target_arch() out qemu/target-info: Add %target_arch field to TargetInfo qemu/target-info: Introduce target_base_arch() qemu/target-info: Add target_endian_mode() qemu: Convert target_words_bigendian() to TargetInfo API gdbstub/helpers: Replace TARGET_BIG_ENDIAN -> target_big_endian() qemu: Declare all load/store helpert in 'qemu/bswap.h' hw/virtio: Build various files once hw/core/null-machine: Define machine as generic QOM type hw/arm: Register TYPE_TARGET_ARM/AARCH64_MACHINE QOM interfaces hw/core: Allow ARM/Aarch64 binaries to use the 'none' machine hw/boards: Introduce DEFINE_MACHINE_WITH_INTERFACES() macro hw/arm: Add DEFINE_MACHINE_[ARM_]AARCH64() macros meson.build | 1 + include/exec/tswap.h | 83 +-------------------------- include/gdbstub/helpers.h | 15 ++--- include/hw/arm/machines-qom.h | 31 ++++++++++ include/hw/boards.h | 6 +- include/qemu/bswap.h | 73 +++++++++++++++++++++++ include/qemu/target-info-impl.h | 8 ++- include/qemu/target-info-qapi.h | 36 ++++++++++++ include/qemu/target-info.h | 10 +++- include/system/memory.h | 1 - include/user/abitypes.h | 1 - target/ppc/mmu-hash64.h | 2 - cpu-target.c | 7 --- hw/acpi/bios-linker-loader.c | 2 - hw/arm/allwinner-r40.c | 1 - hw/arm/boot.c | 2 + hw/arm/npcm7xx.c | 2 +- hw/block/hd-geometry.c | 1 - hw/char/riscv_htif.c | 1 - hw/core/cpu-system.c | 2 +- hw/core/machine-qmp-cmds.c | 8 +-- hw/core/null-machine.c | 20 ++++++- hw/cxl/cxl-events.c | 2 - hw/display/artist.c | 1 + hw/display/ati.c | 1 + hw/display/vga.c | 2 +- hw/net/can/ctucan_core.c | 1 - hw/net/lan9118.c | 1 + hw/net/rtl8139.c | 1 + hw/net/vmxnet3.c | 1 - hw/pci-host/gt64120.c | 1 + hw/pci-host/pnv_phb3.c | 1 + hw/pci-host/pnv_phb4.c | 1 + hw/pci-host/ppce500.c | 1 - hw/pci-host/sh_pci.c | 1 - hw/s390x/s390-pci-inst.c | 1 + hw/sensor/lsm303dlhc_mag.c | 1 - hw/smbios/smbios.c | 1 + hw/vfio/migration-multifd.c | 1 - hw/virtio/virtio-config-io.c | 1 - hw/virtio/virtio-pci.c | 1 + hw/virtio/virtio.c | 2 +- hw/vmapple/virtio-blk.c | 1 - system/memory.c | 1 + system/qtest.c | 1 + target-info-qom.c | 24 ++++++++ target-info-stub.c | 3 + target-info.c | 33 +++++++++++ target/arm/arm-qmp-cmds.c | 3 +- target/arm/cpu.c | 1 - target/arm/machine.c | 12 ++++ target/i386/tcg/system/excp_helper.c | 1 - target/i386/xsave_helper.c | 1 - target/loongarch/loongarch-qmp-cmds.c | 3 +- target/mips/system/mips-qmp-cmds.c | 3 +- target/riscv/vector_helper.c | 1 - tests/tcg/plugins/mem.c | 1 + hw/block/meson.build | 6 +- hw/virtio/meson.build | 20 ++++--- 59 files changed, 302 insertions(+), 149 deletions(-) create mode 100644 include/hw/arm/machines-qom.h create mode 100644 include/qemu/target-info-qapi.h create mode 100644 target-info-qom.c -- 2.49.0