1 #######################################################################
2 # Common libraries for tools and emulators
3 stub-obj-y = stubs/ crypto/
4 util-obj-y = util/ qobject/ qapi/
5 util-obj-y += qapi/qapi-builtin-types.o
6 util-obj-y += qapi/qapi-types.o
7 util-obj-y += qapi/qapi-types-block-core.o
8 util-obj-y += qapi/qapi-types-block.o
9 util-obj-y += qapi/qapi-types-char.o
10 util-obj-y += qapi/qapi-types-common.o
11 util-obj-y += qapi/qapi-types-crypto.o
12 util-obj-y += qapi/qapi-types-introspect.o
13 util-obj-y += qapi/qapi-types-migration.o
14 util-obj-y += qapi/qapi-types-misc.o
15 util-obj-y += qapi/qapi-types-net.o
16 util-obj-y += qapi/qapi-types-rocker.o
17 util-obj-y += qapi/qapi-types-run-state.o
18 util-obj-y += qapi/qapi-types-sockets.o
19 util-obj-y += qapi/qapi-types-tpm.o
20 util-obj-y += qapi/qapi-types-trace.o
21 util-obj-y += qapi/qapi-types-transaction.o
22 util-obj-y += qapi/qapi-types-ui.o
23 util-obj-y += qapi/qapi-builtin-visit.o
24 util-obj-y += qapi/qapi-visit.o
25 util-obj-y += qapi/qapi-visit-block-core.o
26 util-obj-y += qapi/qapi-visit-block.o
27 util-obj-y += qapi/qapi-visit-char.o
28 util-obj-y += qapi/qapi-visit-common.o
29 util-obj-y += qapi/qapi-visit-crypto.o
30 util-obj-y += qapi/qapi-visit-introspect.o
31 util-obj-y += qapi/qapi-visit-migration.o
32 util-obj-y += qapi/qapi-visit-misc.o
33 util-obj-y += qapi/qapi-visit-net.o
34 util-obj-y += qapi/qapi-visit-rocker.o
35 util-obj-y += qapi/qapi-visit-run-state.o
36 util-obj-y += qapi/qapi-visit-sockets.o
37 util-obj-y += qapi/qapi-visit-tpm.o
38 util-obj-y += qapi/qapi-visit-trace.o
39 util-obj-y += qapi/qapi-visit-transaction.o
40 util-obj-y += qapi/qapi-visit-ui.o
41 util-obj-y += qapi/qapi-events.o
42 util-obj-y += qapi/qapi-events-block-core.o
43 util-obj-y += qapi/qapi-events-block.o
44 util-obj-y += qapi/qapi-events-char.o
45 util-obj-y += qapi/qapi-events-common.o
46 util-obj-y += qapi/qapi-events-crypto.o
47 util-obj-y += qapi/qapi-events-introspect.o
48 util-obj-y += qapi/qapi-events-migration.o
49 util-obj-y += qapi/qapi-events-misc.o
50 util-obj-y += qapi/qapi-events-net.o
51 util-obj-y += qapi/qapi-events-rocker.o
52 util-obj-y += qapi/qapi-events-run-state.o
53 util-obj-y += qapi/qapi-events-sockets.o
54 util-obj-y += qapi/qapi-events-tpm.o
55 util-obj-y += qapi/qapi-events-trace.o
56 util-obj-y += qapi/qapi-events-transaction.o
57 util-obj-y += qapi/qapi-events-ui.o
58 util-obj-y += qapi/qapi-introspect.o
60 chardev-obj-y = chardev/
62 #######################################################################
63 # block-obj-y is code used by both qemu system emulation and qemu-img
66 block-obj-y += block.o blockjob.o
67 block-obj-y += block/ scsi/
68 block-obj-y += qemu-io-cmds.o
69 block-obj-$(CONFIG_REPLICATION) += replication.o
73 #######################################################################
74 # crypto-obj-y is code used by both qemu system emulation and qemu-img
76 crypto-obj-y = crypto/
77 crypto-aes-obj-y = crypto/
79 #######################################################################
80 # qom-obj-y is code used by both qemu system emulation and qemu-img
84 #######################################################################
85 # io-obj-y is code used by both qemu system emulation and qemu-img
89 ######################################################################
90 # Target independent part of system emulation. The long term path is to
91 # suppress *all* target specific code in case of system emulation, i.e. a
92 # single QEMU executable should support all CPUs and machines.
94 ifeq ($(CONFIG_SOFTMMU),y)
95 common-obj-y = blockdev.o blockdev-nbd.o block/
96 common-obj-y += bootdevice.o iothread.o
98 common-obj-y += qdev-monitor.o device-hotplug.o
99 common-obj-$(CONFIG_WIN32) += os-win32.o
100 common-obj-$(CONFIG_POSIX) += os-posix.o
102 common-obj-$(CONFIG_LINUX) += fsdev/
104 common-obj-y += migration/
106 common-obj-y += audio/
109 common-obj-y += replay/
113 common-obj-y += bt-host.o bt-vhci.o
114 bt-host.o-cflags := $(BLUEZ_CFLAGS)
116 common-obj-y += dma-helpers.o
118 vl.o-cflags := $(GPROF_CFLAGS) $(SDL_CFLAGS)
119 common-obj-$(CONFIG_TPM) += tpm.o
121 common-obj-$(CONFIG_SLIRP) += slirp/
123 common-obj-y += backends/
124 common-obj-y += chardev/
126 common-obj-$(CONFIG_SECCOMP) += qemu-seccomp.o
127 qemu-seccomp.o-cflags := $(SECCOMP_CFLAGS)
128 qemu-seccomp.o-libs := $(SECCOMP_LIBS)
130 common-obj-$(CONFIG_FDT) += device_tree.o
132 ######################################################################
135 common-obj-y += qapi/qapi-commands.o
136 common-obj-y += qapi/qapi-commands-block-core.o
137 common-obj-y += qapi/qapi-commands-block.o
138 common-obj-y += qapi/qapi-commands-char.o
139 common-obj-y += qapi/qapi-commands-common.o
140 common-obj-y += qapi/qapi-commands-crypto.o
141 common-obj-y += qapi/qapi-commands-introspect.o
142 common-obj-y += qapi/qapi-commands-migration.o
143 common-obj-y += qapi/qapi-commands-misc.o
144 common-obj-y += qapi/qapi-commands-net.o
145 common-obj-y += qapi/qapi-commands-rocker.o
146 common-obj-y += qapi/qapi-commands-run-state.o
147 common-obj-y += qapi/qapi-commands-sockets.o
148 common-obj-y += qapi/qapi-commands-tpm.o
149 common-obj-y += qapi/qapi-commands-trace.o
150 common-obj-y += qapi/qapi-commands-transaction.o
151 common-obj-y += qapi/qapi-commands-ui.o
152 common-obj-y += qapi/qapi-introspect.o
153 common-obj-y += qmp.o hmp.o
156 #######################################################################
157 # Target-independent parts used in system and user emulation
158 common-obj-y += cpus-common.o
161 common-obj-y += disas/
163 ######################################################################
164 # Resource file for Windows executables
165 version-obj-$(CONFIG_WIN32) += $(BUILD_DIR)/version.o
167 ######################################################################
170 target-obj-y += trace/
172 ######################################################################
175 # FIXME: a few definitions from qapi/qapi-types.o and
176 # qapi/qapi-visit.o are needed by libqemuutil.a. These should be
177 # extracted into a QAPI schema module, or perhaps a separate schema.
179 qga-vss-dll-obj-y = qga/
181 ######################################################################
183 ivshmem-client-obj-$(CONFIG_IVSHMEM) = contrib/ivshmem-client/
184 ivshmem-server-obj-$(CONFIG_IVSHMEM) = contrib/ivshmem-server/
185 libvhost-user-obj-y = contrib/libvhost-user/
186 vhost-user-scsi.o-cflags := $(LIBISCSI_CFLAGS)
187 vhost-user-scsi.o-libs := $(LIBISCSI_LIBS)
188 vhost-user-scsi-obj-y = contrib/vhost-user-scsi/
189 vhost-user-blk-obj-y = contrib/vhost-user-blk/
191 ######################################################################
192 trace-events-subdirs =
193 trace-events-subdirs += util
194 trace-events-subdirs += crypto
195 trace-events-subdirs += io
196 trace-events-subdirs += migration
197 trace-events-subdirs += block
198 trace-events-subdirs += chardev
199 trace-events-subdirs += hw/block
200 trace-events-subdirs += hw/block/dataplane
201 trace-events-subdirs += hw/char
202 trace-events-subdirs += hw/intc
203 trace-events-subdirs += hw/net
204 trace-events-subdirs += hw/rdma
205 trace-events-subdirs += hw/rdma/vmw
206 trace-events-subdirs += hw/virtio
207 trace-events-subdirs += hw/audio
208 trace-events-subdirs += hw/misc
209 trace-events-subdirs += hw/misc/macio
210 trace-events-subdirs += hw/usb
211 trace-events-subdirs += hw/scsi
212 trace-events-subdirs += hw/nvram
213 trace-events-subdirs += hw/display
214 trace-events-subdirs += hw/input
215 trace-events-subdirs += hw/timer
216 trace-events-subdirs += hw/dma
217 trace-events-subdirs += hw/sparc
218 trace-events-subdirs += hw/sparc64
219 trace-events-subdirs += hw/sd
220 trace-events-subdirs += hw/isa
221 trace-events-subdirs += hw/mem
222 trace-events-subdirs += hw/i386
223 trace-events-subdirs += hw/i386/xen
224 trace-events-subdirs += hw/9pfs
225 trace-events-subdirs += hw/ppc
226 trace-events-subdirs += hw/pci
227 trace-events-subdirs += hw/pci-host
228 trace-events-subdirs += hw/s390x
229 trace-events-subdirs += hw/vfio
230 trace-events-subdirs += hw/acpi
231 trace-events-subdirs += hw/arm
232 trace-events-subdirs += hw/alpha
233 trace-events-subdirs += hw/hppa
234 trace-events-subdirs += hw/xen
235 trace-events-subdirs += hw/ide
236 trace-events-subdirs += ui
237 trace-events-subdirs += audio
238 trace-events-subdirs += net
239 trace-events-subdirs += target/arm
240 trace-events-subdirs += target/i386
241 trace-events-subdirs += target/mips
242 trace-events-subdirs += target/sparc
243 trace-events-subdirs += target/s390x
244 trace-events-subdirs += target/ppc
245 trace-events-subdirs += qom
246 trace-events-subdirs += linux-user
247 trace-events-subdirs += qapi
248 trace-events-subdirs += accel/tcg
249 trace-events-subdirs += accel/kvm
250 trace-events-subdirs += nbd
251 trace-events-subdirs += scsi
253 trace-events-files = $(SRC_PATH)/trace-events $(trace-events-subdirs:%=$(SRC_PATH)/%/trace-events)
255 trace-obj-y = trace-root.o
256 trace-obj-y += $(trace-events-subdirs:%=%/trace.o)
257 trace-obj-$(CONFIG_TRACE_UST) += trace-ust-all.o
258 trace-obj-$(CONFIG_TRACE_DTRACE) += trace-dtrace-root.o
259 trace-obj-$(CONFIG_TRACE_DTRACE) += $(trace-events-subdirs:%=%/trace-dtrace.o)