a81df1b68b
This shows how to do some "computations" in meson.build using its array and dictionary data structures, and also a basic usage of the sourceset module for conditional compilation. Notice the new "if have_system" part of util/meson.build, which fixes a bug in the old build system was buggy: util/dbus.c was built even for non-softmmu builds, but the dependency on -lgio was lost when the linking was done through libqemuutil.a. Because all of its users required gio otherwise, the bug was hidden. Meson instead propagates libqemuutil's dependencies down to its users, and shows the problem. Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
120 lines
3.6 KiB
Makefile
120 lines
3.6 KiB
Makefile
#######################################################################
|
|
# Common libraries for tools and emulators
|
|
qom-obj-y = qom/
|
|
|
|
#######################################################################
|
|
# code used by both qemu system emulation and qemu-img
|
|
|
|
ifeq ($(call lor,$(CONFIG_SOFTMMU),$(CONFIG_TOOLS)),y)
|
|
|
|
chardev-obj-y = chardev/
|
|
|
|
authz-obj-y = authz/
|
|
|
|
block-obj-y = block/ nbd/ scsi/
|
|
block-obj-y += block.o blockjob.o job.o
|
|
block-obj-y += qemu-io-cmds.o
|
|
block-obj-$(CONFIG_REPLICATION) += replication.o
|
|
|
|
block-obj-m = block/
|
|
|
|
crypto-obj-y = crypto/
|
|
|
|
io-obj-y = io/
|
|
|
|
endif # CONFIG_SOFTMMU or CONFIG_TOOLS
|
|
|
|
#######################################################################
|
|
# storage-daemon-obj-y is code used by qemu-storage-daemon (these objects are
|
|
# used for system emulation, too, but specified separately there)
|
|
|
|
storage-daemon-obj-y = block/ monitor/ qapi/ qom/ storage-daemon/
|
|
storage-daemon-obj-y += blockdev.o blockdev-nbd.o iothread.o job-qmp.o
|
|
storage-daemon-obj-$(CONFIG_WIN32) += os-win32.o
|
|
storage-daemon-obj-$(CONFIG_POSIX) += os-posix.o
|
|
|
|
######################################################################
|
|
# Target independent part of system emulation. The long term path is to
|
|
# suppress *all* target specific code in case of system emulation, i.e. a
|
|
# single QEMU executable should support all CPUs and machines.
|
|
|
|
ifeq ($(CONFIG_SOFTMMU),y)
|
|
common-obj-y = blockdev.o blockdev-nbd.o block/
|
|
common-obj-y += bootdevice.o iothread.o
|
|
common-obj-y += dump/
|
|
common-obj-y += job-qmp.o
|
|
common-obj-y += monitor/
|
|
common-obj-y += net/
|
|
common-obj-y += qdev-monitor.o
|
|
common-obj-$(CONFIG_WIN32) += os-win32.o
|
|
common-obj-$(CONFIG_POSIX) += os-posix.o
|
|
|
|
common-obj-$(CONFIG_LINUX) += fsdev/
|
|
|
|
common-obj-y += accel/
|
|
common-obj-y += migration/
|
|
|
|
common-obj-y += audio/
|
|
common-obj-m += audio/
|
|
common-obj-y += hw/
|
|
common-obj-m += hw/
|
|
|
|
common-obj-y += replay/
|
|
|
|
common-obj-y += ui/
|
|
common-obj-m += ui/
|
|
|
|
common-obj-y += dma-helpers.o
|
|
common-obj-$(CONFIG_TPM) += tpm.o
|
|
|
|
common-obj-y += backends/
|
|
common-obj-y += chardev/
|
|
common-obj-m += chardev/
|
|
|
|
common-obj-$(CONFIG_SECCOMP) += qemu-seccomp.o
|
|
qemu-seccomp.o-cflags := $(SECCOMP_CFLAGS)
|
|
qemu-seccomp.o-libs := $(SECCOMP_LIBS)
|
|
|
|
common-obj-$(CONFIG_FDT) += device_tree.o
|
|
|
|
common-obj-y += qapi/
|
|
|
|
endif # CONFIG_SOFTMMU
|
|
|
|
#######################################################################
|
|
# Target-independent parts used in system and user emulation
|
|
common-obj-y += cpus-common.o
|
|
common-obj-y += hw/
|
|
common-obj-y += qom/
|
|
common-obj-y += disas/
|
|
|
|
######################################################################
|
|
# Resource file for Windows executables
|
|
version-obj-$(CONFIG_WIN32) += $(BUILD_DIR)/version.o
|
|
|
|
######################################################################
|
|
# guest agent
|
|
|
|
# FIXME: a few definitions from qapi/qapi-types.o and
|
|
# qapi/qapi-visit.o are needed by libqemuutil.a. These should be
|
|
# extracted into a QAPI schema module, or perhaps a separate schema.
|
|
qga-obj-y = qga/
|
|
qga-vss-dll-obj-y = qga/
|
|
|
|
######################################################################
|
|
# contrib
|
|
elf2dmp-obj-y = contrib/elf2dmp/
|
|
ivshmem-client-obj-$(CONFIG_IVSHMEM) = contrib/ivshmem-client/
|
|
ivshmem-server-obj-$(CONFIG_IVSHMEM) = contrib/ivshmem-server/
|
|
libvhost-user-obj-y = contrib/libvhost-user/
|
|
vhost-user-scsi.o-cflags := $(LIBISCSI_CFLAGS)
|
|
vhost-user-scsi.o-libs := $(LIBISCSI_LIBS)
|
|
vhost-user-scsi-obj-y = contrib/vhost-user-scsi/
|
|
vhost-user-blk-obj-y = contrib/vhost-user-blk/
|
|
rdmacm-mux-obj-y = contrib/rdmacm-mux/
|
|
vhost-user-input-obj-y = contrib/vhost-user-input/
|
|
vhost-user-gpu-obj-y = contrib/vhost-user-gpu/
|
|
virtiofsd-obj-y = tools/virtiofsd/
|
|
|
|
######################################################################
|