Makefile 31.7 KB
Newer Older
K
Kevin Wolf 已提交
1 2
export SRC_PATH

3 4
qapi-py = $(SRC_PATH)/scripts/qapi.py $(SRC_PATH)/scripts/ordereddict.py

5 6 7 8
# Get the list of all supported sysemu targets
SYSEMU_TARGET_LIST := $(subst -softmmu.mak,,$(notdir \
   $(wildcard $(SRC_PATH)/default-configs/*-softmmu.mak)))

P
Paolo Bonzini 已提交
9
check-unit-y = tests/check-qdict$(EXESUF)
10
gcov-files-check-qdict-y = qobject/qdict.c
P
Paolo Bonzini 已提交
11
check-unit-y += tests/check-qfloat$(EXESUF)
12
gcov-files-check-qfloat-y = qobject/qfloat.c
P
Paolo Bonzini 已提交
13
check-unit-y += tests/check-qint$(EXESUF)
14
gcov-files-check-qint-y = qobject/qint.c
P
Paolo Bonzini 已提交
15
check-unit-y += tests/check-qstring$(EXESUF)
16
gcov-files-check-qstring-y = qobject/qstring.c
P
Paolo Bonzini 已提交
17
check-unit-y += tests/check-qlist$(EXESUF)
18
gcov-files-check-qlist-y = qobject/qlist.c
P
Paolo Bonzini 已提交
19
check-unit-y += tests/check-qjson$(EXESUF)
20
gcov-files-check-qjson-y = qobject/qjson.c
P
Paolo Bonzini 已提交
21
check-unit-y += tests/test-qmp-output-visitor$(EXESUF)
B
Blue Swirl 已提交
22
gcov-files-test-qmp-output-visitor-y = qapi/qmp-output-visitor.c
P
Paolo Bonzini 已提交
23
check-unit-y += tests/test-qmp-input-visitor$(EXESUF)
B
Blue Swirl 已提交
24
gcov-files-test-qmp-input-visitor-y = qapi/qmp-input-visitor.c
P
Paolo Bonzini 已提交
25 26
check-unit-y += tests/test-qmp-input-strict$(EXESUF)
check-unit-y += tests/test-qmp-commands$(EXESUF)
B
Blue Swirl 已提交
27
gcov-files-test-qmp-commands-y = qapi/qmp-dispatch.c
P
Paolo Bonzini 已提交
28
check-unit-y += tests/test-string-input-visitor$(EXESUF)
B
Blue Swirl 已提交
29
gcov-files-test-string-input-visitor-y = qapi/string-input-visitor.c
P
Paolo Bonzini 已提交
30
check-unit-y += tests/test-string-output-visitor$(EXESUF)
B
Blue Swirl 已提交
31
gcov-files-test-string-output-visitor-y = qapi/string-output-visitor.c
32 33
check-unit-y += tests/test-qmp-event$(EXESUF)
gcov-files-test-qmp-event-y += qapi/qmp-event.c
34 35
check-unit-y += tests/test-opts-visitor$(EXESUF)
gcov-files-test-opts-visitor-y = qapi/opts-visitor.c
P
Paolo Bonzini 已提交
36
check-unit-y += tests/test-coroutine$(EXESUF)
37
gcov-files-test-coroutine-y = coroutine-$(CONFIG_COROUTINE_BACKEND).c
38
check-unit-y += tests/test-visitor-serialization$(EXESUF)
M
Michael Tokarev 已提交
39
check-unit-y += tests/test-iov$(EXESUF)
40
gcov-files-test-iov-y = util/iov.c
P
Paolo Bonzini 已提交
41
check-unit-y += tests/test-aio$(EXESUF)
42
check-unit-$(CONFIG_POSIX) += tests/test-rfifolock$(EXESUF)
B
Benoît Canet 已提交
43
check-unit-y += tests/test-throttle$(EXESUF)
B
Blue Swirl 已提交
44 45
gcov-files-test-aio-$(CONFIG_WIN32) = aio-win32.c
gcov-files-test-aio-$(CONFIG_POSIX) = aio-posix.c
P
Paolo Bonzini 已提交
46
check-unit-y += tests/test-thread-pool$(EXESUF)
B
Blue Swirl 已提交
47
gcov-files-test-thread-pool-y = thread-pool.c
48 49
gcov-files-test-hbitmap-y = util/hbitmap.c
check-unit-y += tests/test-hbitmap$(EXESUF)
S
Stefan Hajnoczi 已提交
50 51
gcov-files-test-hbitmap-y = blockjob.c
check-unit-y += tests/test-blockjob-txn$(EXESUF)
52 53 54
check-unit-y += tests/test-x86-cpuid$(EXESUF)
# all code tested by test-x86-cpuid is inside topology.h
gcov-files-test-x86-cpuid-y =
55
ifeq ($(CONFIG_SOFTMMU),y)
O
Orit Wasserman 已提交
56
check-unit-y += tests/test-xbzrle$(EXESUF)
57 58 59
gcov-files-test-xbzrle-y = migration/xbzrle.c
check-unit-$(CONFIG_POSIX) += tests/test-vmstate$(EXESUF)
endif
60 61
check-unit-y += tests/test-cutils$(EXESUF)
gcov-files-test-cutils-y += util/cutils.c
62 63
check-unit-y += tests/test-mul64$(EXESUF)
gcov-files-test-mul64-y = util/host-utils.c
64 65 66
check-unit-y += tests/test-int128$(EXESUF)
# all code tested by test-int128 is inside int128.h
gcov-files-test-int128-y =
P
Paolo Bonzini 已提交
67 68
check-unit-y += tests/rcutorture$(EXESUF)
gcov-files-rcutorture-y = util/rcu.c
M
Mike Day 已提交
69 70
check-unit-y += tests/test-rcu-list$(EXESUF)
gcov-files-test-rcu-list-y = util/rcu.c
71
check-unit-y += tests/test-bitops$(EXESUF)
72
check-unit-$(CONFIG_HAS_GLIB_SUBPROCESS_TESTS) += tests/test-qdev-global-props$(EXESUF)
I
Igor Mammedov 已提交
73 74
check-unit-y += tests/check-qom-interface$(EXESUF)
gcov-files-check-qom-interface-y = qom/object.c
75 76
check-unit-y += tests/check-qom-proplist$(EXESUF)
gcov-files-check-qom-proplist-y = qom/object.c
L
Leandro Dorileo 已提交
77 78
check-unit-y += tests/test-qemu-opts$(EXESUF)
gcov-files-test-qemu-opts-y = qom/test-qemu-opts.c
79 80
check-unit-y += tests/test-write-threshold$(EXESUF)
gcov-files-test-write-threshold-y = block/write-threshold.c
81
check-unit-$(CONFIG_GNUTLS_HASH) += tests/test-crypto-hash$(EXESUF)
82
check-unit-y += tests/test-crypto-cipher$(EXESUF)
83
check-unit-y += tests/test-crypto-secret$(EXESUF)
84
check-unit-$(CONFIG_GNUTLS) += tests/test-crypto-tlscredsx509$(EXESUF)
85
check-unit-$(CONFIG_GNUTLS) += tests/test-crypto-tlssession$(EXESUF)
86
check-unit-$(CONFIG_LINUX) += tests/test-qga$(EXESUF)
87
check-unit-y += tests/test-timed-average$(EXESUF)
88
check-unit-y += tests/test-io-task$(EXESUF)
89
check-unit-y += tests/test-io-channel-socket$(EXESUF)
D
Daniel P. Berrange 已提交
90
check-unit-y += tests/test-io-channel-file$(EXESUF)
D
Daniel P. Berrange 已提交
91
check-unit-$(CONFIG_GNUTLS) += tests/test-io-channel-tls$(EXESUF)
92
check-unit-y += tests/test-io-channel-command$(EXESUF)
93
check-unit-y += tests/test-io-channel-buffer$(EXESUF)
94
check-unit-y += tests/test-base64$(EXESUF)
P
Paolo Bonzini 已提交
95 96 97

check-block-$(CONFIG_POSIX) += tests/qemu-iotests-quick.sh

A
Anthony Liguori 已提交
98 99
# All QTests for now are POSIX-only, but the dependencies are
# really in libqtest, not in the testcases themselves.
A
Andreas Färber 已提交
100

101 102
check-qtest-generic-y = tests/device-introspect-test$(EXESUF)
gcov-files-generic-y = qdev-monitor.c qmp.c
M
Markus Armbruster 已提交
103

104
gcov-files-ipack-y += hw/ipack/ipack.c
A
Andreas Färber 已提交
105 106 107
check-qtest-ipack-y += tests/ipoctal232-test$(EXESUF)
gcov-files-ipack-y += hw/char/ipoctal232.c

108 109 110
check-qtest-virtioserial-y += tests/virtio-console-test$(EXESUF)
gcov-files-virtioserial-y += hw/char/virtio-console.c

A
Andreas Färber 已提交
111 112 113
gcov-files-virtio-y += i386-softmmu/hw/virtio/virtio.c
check-qtest-virtio-y += tests/virtio-net-test$(EXESUF)
gcov-files-virtio-y += i386-softmmu/hw/net/virtio-net.c
114 115
check-qtest-virtio-y += tests/virtio-balloon-test$(EXESUF)
gcov-files-virtio-y += i386-softmmu/hw/virtio/virtio-balloon.c
A
Andreas Färber 已提交
116 117
check-qtest-virtio-y += tests/virtio-blk-test$(EXESUF)
gcov-files-virtio-y += i386-softmmu/hw/block/virtio-blk.c
A
Andreas Färber 已提交
118 119
check-qtest-virtio-y += tests/virtio-rng-test$(EXESUF)
gcov-files-virtio-y += hw/virtio/virtio-rng.c
A
Andreas Färber 已提交
120 121
check-qtest-virtio-y += tests/virtio-scsi-test$(EXESUF)
gcov-files-virtio-y += i386-softmmu/hw/scsi/virtio-scsi.c
A
Andreas Färber 已提交
122 123 124 125 126
ifeq ($(CONFIG_VIRTIO)$(CONFIG_VIRTFS)$(CONFIG_PCI),yyy)
check-qtest-virtio-y += tests/virtio-9p-test$(EXESUF)
gcov-files-virtio-y += hw/9pfs/virtio-9p.c
gcov-files-virtio-y += i386-softmmu/hw/9pfs/virtio-9p-device.c
endif
A
Andreas Färber 已提交
127 128
check-qtest-virtio-y += tests/virtio-serial-test$(EXESUF)
gcov-files-virtio-y += i386-softmmu/hw/char/virtio-serial-bus.c
129 130
check-qtest-virtio-y += $(check-qtest-virtioserial-y)
gcov-files-virtio-y += $(gcov-files-virtioserial-y)
A
Andreas Färber 已提交
131

A
Andreas Färber 已提交
132 133
check-qtest-pci-y += tests/e1000-test$(EXESUF)
gcov-files-pci-y += hw/net/e1000.c
A
Andreas Färber 已提交
134 135
check-qtest-pci-y += tests/rtl8139-test$(EXESUF)
gcov-files-pci-y += hw/net/rtl8139.c
A
Andreas Färber 已提交
136 137 138
check-qtest-pci-y += tests/pcnet-test$(EXESUF)
gcov-files-pci-y += hw/net/pcnet.c
gcov-files-pci-y += hw/net/pcnet-pci.c
A
Andreas Färber 已提交
139 140
check-qtest-pci-y += tests/eepro100-test$(EXESUF)
gcov-files-pci-y += hw/net/eepro100.c
A
Andreas Färber 已提交
141 142
check-qtest-pci-y += tests/ne2000-test$(EXESUF)
gcov-files-pci-y += hw/net/ne2000.c
A
Andreas Färber 已提交
143 144
check-qtest-pci-y += tests/nvme-test$(EXESUF)
gcov-files-pci-y += hw/block/nvme.c
A
Andreas Färber 已提交
145 146
check-qtest-pci-y += tests/ac97-test$(EXESUF)
gcov-files-pci-y += hw/audio/ac97.c
A
Andreas Färber 已提交
147 148
check-qtest-pci-y += tests/es1370-test$(EXESUF)
gcov-files-pci-y += hw/audio/es1370.c
A
Andreas Färber 已提交
149 150
check-qtest-pci-y += $(check-qtest-virtio-y)
gcov-files-pci-y += $(gcov-files-virtio-y) hw/virtio/virtio-pci.c
A
Andreas Färber 已提交
151
check-qtest-pci-y += tests/tpci200-test$(EXESUF)
152
gcov-files-pci-y += hw/ipack/tpci200.c
A
Andreas Färber 已提交
153
check-qtest-pci-y += $(check-qtest-ipack-y)
154
gcov-files-pci-y += $(gcov-files-ipack-y)
G
Gerd Hoffmann 已提交
155 156 157 158
check-qtest-pci-y += tests/display-vga-test$(EXESUF)
gcov-files-pci-y += hw/display/vga.c
gcov-files-pci-y += hw/display/cirrus_vga.c
gcov-files-pci-y += hw/display/vga-pci.c
159 160 161
gcov-files-pci-y += hw/display/virtio-gpu.c
gcov-files-pci-y += hw/display/virtio-gpu-pci.c
gcov-files-pci-$(CONFIG_VIRTIO_VGA) += hw/display/virtio-vga.c
A
Andreas Färber 已提交
162 163
check-qtest-pci-y += tests/intel-hda-test$(EXESUF)
gcov-files-pci-y += hw/audio/intel-hda.c hw/audio/hda-codec.c
A
Andreas Färber 已提交
164 165
check-qtest-pci-$(CONFIG_POSIX) += tests/ivshmem-test$(EXESUF)
gcov-files-pci-y += hw/misc/ivshmem.c
A
Andreas Färber 已提交
166

167 168
check-qtest-i386-y = tests/endianness-test$(EXESUF)
check-qtest-i386-y += tests/fdc-test$(EXESUF)
169
gcov-files-i386-y = hw/block/fdc.c
K
Kevin Wolf 已提交
170
check-qtest-i386-y += tests/ide-test$(EXESUF)
171
check-qtest-i386-y += tests/ahci-test$(EXESUF)
172
check-qtest-i386-y += tests/hd-geo-test$(EXESUF)
173
gcov-files-i386-y += hw/block/hd-geometry.c
174
check-qtest-i386-y += tests/boot-order-test$(EXESUF)
175
check-qtest-i386-y += tests/bios-tables-test$(EXESUF)
176
check-qtest-i386-y += tests/rtc-test$(EXESUF)
177
check-qtest-i386-y += tests/i440fx-test$(EXESUF)
A
Anthony Liguori 已提交
178
check-qtest-i386-y += tests/fw_cfg-test$(EXESUF)
179
check-qtest-i386-y += tests/drive_del-test$(EXESUF)
P
Paolo Bonzini 已提交
180
check-qtest-i386-y += tests/wdt_ib700-test$(EXESUF)
181
check-qtest-i386-y += tests/tco-test$(EXESUF)
P
Paolo Bonzini 已提交
182
gcov-files-i386-y += hw/watchdog/watchdog.c hw/watchdog/wdt_ib700.c
A
Andreas Färber 已提交
183 184
check-qtest-i386-y += $(check-qtest-pci-y)
gcov-files-i386-y += $(gcov-files-pci-y)
A
Andreas Färber 已提交
185 186 187 188
check-qtest-i386-y += tests/vmxnet3-test$(EXESUF)
gcov-files-i386-y += hw/net/vmxnet3.c
gcov-files-i386-y += hw/net/vmxnet_rx_pkt.c
gcov-files-i386-y += hw/net/vmxnet_tx_pkt.c
A
Andreas Färber 已提交
189 190
check-qtest-i386-y += tests/pvpanic-test$(EXESUF)
gcov-files-i386-y += i386-softmmu/hw/misc/pvpanic.c
A
Andreas Färber 已提交
191 192
check-qtest-i386-y += tests/i82801b11-test$(EXESUF)
gcov-files-i386-y += hw/pci-bridge/i82801b11.c
A
Andreas Färber 已提交
193 194
check-qtest-i386-y += tests/ioh3420-test$(EXESUF)
gcov-files-i386-y += hw/pci-bridge/ioh3420.c
G
Gonglei 已提交
195 196
check-qtest-i386-y += tests/usb-hcd-ohci-test$(EXESUF)
gcov-files-i386-y += hw/usb/hcd-ohci.c
G
Gonglei 已提交
197 198
check-qtest-i386-y += tests/usb-hcd-uhci-test$(EXESUF)
gcov-files-i386-y += hw/usb/hcd-uhci.c
A
Andreas Färber 已提交
199 200
check-qtest-i386-y += tests/usb-hcd-ehci-test$(EXESUF)
gcov-files-i386-y += hw/usb/hcd-ehci.c
G
Gerd Hoffmann 已提交
201 202
gcov-files-i386-y += hw/usb/dev-hid.c
gcov-files-i386-y += hw/usb/dev-storage.c
G
Gonglei 已提交
203 204
check-qtest-i386-y += tests/usb-hcd-xhci-test$(EXESUF)
gcov-files-i386-y += hw/usb/hcd-xhci.c
A
Andreas Färber 已提交
205
check-qtest-i386-y += tests/pc-cpu-test$(EXESUF)
G
Gerd Hoffmann 已提交
206 207
check-qtest-i386-y += tests/q35-test$(EXESUF)
gcov-files-i386-y += hw/pci-host/q35.c
208 209 210
check-qtest-i386-$(CONFIG_VHOST_NET_TEST_i386) += tests/vhost-user-test$(EXESUF)
ifeq ($(CONFIG_VHOST_NET_TEST_i386),)
check-qtest-x86_64-$(CONFIG_VHOST_NET_TEST_x86_64) += tests/vhost-user-test$(EXESUF)
211
endif
212
check-qtest-i386-y += tests/test-netfilter$(EXESUF)
A
Anthony Liguori 已提交
213
check-qtest-x86_64-y = $(check-qtest-i386-y)
214
gcov-files-i386-y += i386-softmmu/hw/timer/mc146818rtc.c
215
gcov-files-x86_64-y = $(subst i386-softmmu/,x86_64-softmmu/,$(gcov-files-i386-y))
216 217 218 219 220 221 222 223
check-qtest-mips-y = tests/endianness-test$(EXESUF)
check-qtest-mips64-y = tests/endianness-test$(EXESUF)
check-qtest-mips64el-y = tests/endianness-test$(EXESUF)
check-qtest-ppc-y = tests/endianness-test$(EXESUF)
check-qtest-ppc64-y = tests/endianness-test$(EXESUF)
check-qtest-sh4-y = tests/endianness-test$(EXESUF)
check-qtest-sh4eb-y = tests/endianness-test$(EXESUF)
check-qtest-sparc64-y = tests/endianness-test$(EXESUF)
224
#check-qtest-sparc-y = tests/m48t59-test$(EXESUF)
225
#check-qtest-sparc64-y += tests/m48t59-test$(EXESUF)
226 227
gcov-files-sparc-y += hw/timer/m48t59.c
gcov-files-sparc64-y += hw/timer/m48t59.c
228
check-qtest-arm-y = tests/tmp105-test$(EXESUF)
229
check-qtest-arm-y = tests/ds1338-test$(EXESUF)
230
gcov-files-arm-y += hw/misc/tmp105.c
M
Marc Marí 已提交
231 232
check-qtest-arm-y += tests/virtio-blk-test$(EXESUF)
gcov-files-arm-y += arm-softmmu/hw/block/virtio-blk.c
233 234
check-qtest-ppc-y += tests/boot-order-test$(EXESUF)
check-qtest-ppc64-y += tests/boot-order-test$(EXESUF)
235 236
check-qtest-ppc64-y += tests/spapr-phb-test$(EXESUF)
gcov-files-ppc64-y += ppc64-softmmu/hw/ppc/spapr_pci.c
A
Andreas Färber 已提交
237 238
check-qtest-microblazeel-y = $(check-qtest-microblaze-y)
check-qtest-xtensaeb-y = $(check-qtest-xtensa-y)
A
Anthony Liguori 已提交
239

M
Markus Armbruster 已提交
240
check-qtest-generic-y += tests/qom-test$(EXESUF)
241

E
Eric Blake 已提交
242 243 244 245 246
qapi-schema += alternate-array.json
qapi-schema += alternate-base.json
qapi-schema += alternate-clash.json
qapi-schema += alternate-conflict-dict.json
qapi-schema += alternate-conflict-string.json
E
Eric Blake 已提交
247
qapi-schema += alternate-empty.json
E
Eric Blake 已提交
248 249 250 251 252 253 254 255 256
qapi-schema += alternate-nested.json
qapi-schema += alternate-unknown.json
qapi-schema += args-alternate.json
qapi-schema += args-any.json
qapi-schema += args-array-empty.json
qapi-schema += args-array-unknown.json
qapi-schema += args-int.json
qapi-schema += args-invalid.json
qapi-schema += args-member-array-bad.json
257
qapi-schema += args-member-case.json
E
Eric Blake 已提交
258
qapi-schema += args-member-unknown.json
259
qapi-schema += args-name-clash.json
E
Eric Blake 已提交
260 261 262 263 264 265 266 267
qapi-schema += args-union.json
qapi-schema += args-unknown.json
qapi-schema += bad-base.json
qapi-schema += bad-data.json
qapi-schema += bad-ident.json
qapi-schema += bad-type-bool.json
qapi-schema += bad-type-dict.json
qapi-schema += bad-type-int.json
E
Eric Blake 已提交
268 269
qapi-schema += base-cycle-direct.json
qapi-schema += base-cycle-indirect.json
E
Eric Blake 已提交
270 271 272 273 274 275 276 277 278 279 280
qapi-schema += command-int.json
qapi-schema += comments.json
qapi-schema += double-data.json
qapi-schema += double-type.json
qapi-schema += duplicate-key.json
qapi-schema += empty.json
qapi-schema += enum-bad-name.json
qapi-schema += enum-bad-prefix.json
qapi-schema += enum-clash-member.json
qapi-schema += enum-dict-member.json
qapi-schema += enum-int-member.json
281
qapi-schema += enum-member-case.json
E
Eric Blake 已提交
282 283 284 285 286 287 288 289 290 291 292 293
qapi-schema += enum-missing-data.json
qapi-schema += enum-wrong-data.json
qapi-schema += escape-outside-string.json
qapi-schema += escape-too-big.json
qapi-schema += escape-too-short.json
qapi-schema += event-case.json
qapi-schema += event-nest-struct.json
qapi-schema += flat-union-array-branch.json
qapi-schema += flat-union-bad-base.json
qapi-schema += flat-union-bad-discriminator.json
qapi-schema += flat-union-base-any.json
qapi-schema += flat-union-base-union.json
294
qapi-schema += flat-union-clash-member.json
E
Eric Blake 已提交
295
qapi-schema += flat-union-empty.json
E
Eric Blake 已提交
296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329
qapi-schema += flat-union-inline.json
qapi-schema += flat-union-int-branch.json
qapi-schema += flat-union-invalid-branch-key.json
qapi-schema += flat-union-invalid-discriminator.json
qapi-schema += flat-union-no-base.json
qapi-schema += flat-union-optional-discriminator.json
qapi-schema += flat-union-string-discriminator.json
qapi-schema += funny-char.json
qapi-schema += ident-with-escape.json
qapi-schema += include-before-err.json
qapi-schema += include-cycle.json
qapi-schema += include-format-err.json
qapi-schema += include-nested-err.json
qapi-schema += include-no-file.json
qapi-schema += include-non-file.json
qapi-schema += include-relpath.json
qapi-schema += include-repetition.json
qapi-schema += include-self-cycle.json
qapi-schema += include-simple.json
qapi-schema += indented-expr.json
qapi-schema += leading-comma-list.json
qapi-schema += leading-comma-object.json
qapi-schema += missing-colon.json
qapi-schema += missing-comma-list.json
qapi-schema += missing-comma-object.json
qapi-schema += missing-type.json
qapi-schema += nested-struct-data.json
qapi-schema += non-objects.json
qapi-schema += qapi-schema-test.json
qapi-schema += quoted-structural-chars.json
qapi-schema += redefined-builtin.json
qapi-schema += redefined-command.json
qapi-schema += redefined-event.json
qapi-schema += redefined-type.json
330
qapi-schema += reserved-command-q.json
331
qapi-schema += reserved-enum-q.json
332 333
qapi-schema += reserved-member-has.json
qapi-schema += reserved-member-q.json
E
Eric Blake 已提交
334
qapi-schema += reserved-member-u.json
335
qapi-schema += reserved-member-underscore.json
336 337
qapi-schema += reserved-type-kind.json
qapi-schema += reserved-type-list.json
E
Eric Blake 已提交
338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354
qapi-schema += returns-alternate.json
qapi-schema += returns-array-bad.json
qapi-schema += returns-dict.json
qapi-schema += returns-unknown.json
qapi-schema += returns-whitelist.json
qapi-schema += struct-base-clash-deep.json
qapi-schema += struct-base-clash.json
qapi-schema += struct-data-invalid.json
qapi-schema += struct-member-invalid.json
qapi-schema += trailing-comma-list.json
qapi-schema += trailing-comma-object.json
qapi-schema += type-bypass-bad-gen.json
qapi-schema += unclosed-list.json
qapi-schema += unclosed-object.json
qapi-schema += unclosed-string.json
qapi-schema += unicode-str.json
qapi-schema += union-base-no-discriminator.json
355
qapi-schema += union-branch-case.json
356 357
qapi-schema += union-clash-branches.json
qapi-schema += union-clash-data.json
E
Eric Blake 已提交
358
qapi-schema += union-empty.json
E
Eric Blake 已提交
359 360 361 362 363 364
qapi-schema += union-invalid-base.json
qapi-schema += union-optional-branch.json
qapi-schema += union-unknown.json
qapi-schema += unknown-escape.json
qapi-schema += unknown-expr-key.json
check-qapi-schema-y := $(addprefix tests/qapi-schema/, $(qapi-schema))
365

366
GENERATED_HEADERS += tests/test-qapi-types.h tests/test-qapi-visit.h \
367 368
	tests/test-qmp-commands.h tests/test-qapi-event.h \
	tests/test-qmp-introspect.h
P
Paolo Bonzini 已提交
369 370 371 372 373 374

test-obj-y = tests/check-qint.o tests/check-qstring.o tests/check-qdict.o \
	tests/check-qlist.o tests/check-qfloat.o tests/check-qjson.o \
	tests/test-coroutine.o tests/test-string-output-visitor.o \
	tests/test-string-input-visitor.o tests/test-qmp-output-visitor.o \
	tests/test-qmp-input-visitor.o tests/test-qmp-input-strict.o \
375
	tests/test-qmp-commands.o tests/test-visitor-serialization.o \
376
	tests/test-x86-cpuid.o tests/test-mul64.o tests/test-int128.o \
P
Paolo Bonzini 已提交
377
	tests/test-opts-visitor.o tests/test-qmp-event.o \
M
Mike Day 已提交
378
	tests/rcutorture.o tests/test-rcu-list.o
P
Paolo Bonzini 已提交
379 380

$(test-obj-y): QEMU_INCLUDES += -Itests
381
QEMU_CFLAGS += -I$(SRC_PATH)/tests
P
Paolo Bonzini 已提交
382

383 384 385

# Deps that are common to various different sets of tests below
test-util-obj-y = libqemuutil.a libqemustub.a
386
test-qom-obj-y = $(qom-obj-y) $(test-util-obj-y)
387
test-qapi-obj-y = tests/test-qapi-visit.o tests/test-qapi-types.o \
388
	tests/test-qapi-event.o tests/test-qmp-introspect.o \
389
	$(test-qom-obj-y)
390
test-crypto-obj-y = $(crypto-obj-y) $(test-qom-obj-y)
391
test-block-obj-y = $(block-obj-y) $(test-crypto-obj-y)
392
test-io-obj-y = $(io-obj-y) $(test-crypto-obj-y)
393 394 395 396 397 398 399 400 401 402 403 404 405

tests/check-qint$(EXESUF): tests/check-qint.o $(test-util-obj-y)
tests/check-qstring$(EXESUF): tests/check-qstring.o $(test-util-obj-y)
tests/check-qdict$(EXESUF): tests/check-qdict.o $(test-util-obj-y)
tests/check-qlist$(EXESUF): tests/check-qlist.o $(test-util-obj-y)
tests/check-qfloat$(EXESUF): tests/check-qfloat.o $(test-util-obj-y)
tests/check-qjson$(EXESUF): tests/check-qjson.o $(test-util-obj-y)
tests/check-qom-interface$(EXESUF): tests/check-qom-interface.o $(test-qom-obj-y)
tests/check-qom-proplist$(EXESUF): tests/check-qom-proplist.o $(test-qom-obj-y)
tests/test-coroutine$(EXESUF): tests/test-coroutine.o $(test-block-obj-y)
tests/test-aio$(EXESUF): tests/test-aio.o $(test-block-obj-y)
tests/test-rfifolock$(EXESUF): tests/test-rfifolock.o $(test-util-obj-y)
tests/test-throttle$(EXESUF): tests/test-throttle.o $(test-block-obj-y)
S
Stefan Hajnoczi 已提交
406
tests/test-blockjob-txn$(EXESUF): tests/test-blockjob-txn.o $(test-block-obj-y) $(test-util-obj-y)
407 408 409
tests/test-thread-pool$(EXESUF): tests/test-thread-pool.o $(test-block-obj-y)
tests/test-iov$(EXESUF): tests/test-iov.o $(test-util-obj-y)
tests/test-hbitmap$(EXESUF): tests/test-hbitmap.o $(test-util-obj-y)
410
tests/test-x86-cpuid$(EXESUF): tests/test-x86-cpuid.o
411
tests/test-xbzrle$(EXESUF): tests/test-xbzrle.o migration/xbzrle.o page_cache.o $(test-util-obj-y)
412
tests/test-cutils$(EXESUF): tests/test-cutils.o util/cutils.o
413
tests/test-int128$(EXESUF): tests/test-int128.o
414 415
tests/rcutorture$(EXESUF): tests/rcutorture.o $(test-util-obj-y)
tests/test-rcu-list$(EXESUF): tests/test-rcu-list.o $(test-util-obj-y)
P
Paolo Bonzini 已提交
416

417
tests/test-qdev-global-props$(EXESUF): tests/test-qdev-global-props.o \
418
	hw/core/qdev.o hw/core/qdev-properties.o hw/core/hotplug.o\
419
	hw/core/irq.o \
420
	hw/core/fw-path-provider.o \
421
	$(test-qapi-obj-y)
422
tests/test-vmstate$(EXESUF): tests/test-vmstate.o \
423
	migration/vmstate.o migration/qemu-file.o migration/qemu-file-buf.o \
424
        migration/qemu-file-unix.o qjson.o \
425
	$(test-qom-obj-y)
426
tests/test-timed-average$(EXESUF): tests/test-timed-average.o qemu-timer.o \
427
	$(test-util-obj-y)
428 429
tests/test-base64$(EXESUF): tests/test-base64.o \
	libqemuutil.a libqemustub.a
P
Paolo Bonzini 已提交
430 431

tests/test-qapi-types.c tests/test-qapi-types.h :\
432
$(SRC_PATH)/tests/qapi-schema/qapi-schema-test.json $(SRC_PATH)/scripts/qapi-types.py $(qapi-py)
433
	$(call quiet-command,$(PYTHON) $(SRC_PATH)/scripts/qapi-types.py \
434
		$(gen-out-type) -o tests -p "test-" $<, \
435
		"  GEN   $@")
P
Paolo Bonzini 已提交
436
tests/test-qapi-visit.c tests/test-qapi-visit.h :\
437
$(SRC_PATH)/tests/qapi-schema/qapi-schema-test.json $(SRC_PATH)/scripts/qapi-visit.py $(qapi-py)
438
	$(call quiet-command,$(PYTHON) $(SRC_PATH)/scripts/qapi-visit.py \
439
		$(gen-out-type) -o tests -p "test-" $<, \
440
		"  GEN   $@")
P
Paolo Bonzini 已提交
441
tests/test-qmp-commands.h tests/test-qmp-marshal.c :\
442
$(SRC_PATH)/tests/qapi-schema/qapi-schema-test.json $(SRC_PATH)/scripts/qapi-commands.py $(qapi-py)
443
	$(call quiet-command,$(PYTHON) $(SRC_PATH)/scripts/qapi-commands.py \
444
		$(gen-out-type) -o tests -p "test-" $<, \
445
		"  GEN   $@")
446
tests/test-qapi-event.c tests/test-qapi-event.h :\
447
$(SRC_PATH)/tests/qapi-schema/qapi-schema-test.json $(SRC_PATH)/scripts/qapi-event.py $(qapi-py)
448
	$(call quiet-command,$(PYTHON) $(SRC_PATH)/scripts/qapi-event.py \
449
		$(gen-out-type) -o tests -p "test-" $<, \
450
		"  GEN   $@")
451 452 453 454 455
tests/test-qmp-introspect.c tests/test-qmp-introspect.h :\
$(SRC_PATH)/tests/qapi-schema/qapi-schema-test.json $(SRC_PATH)/scripts/qapi-introspect.py $(qapi-py)
	$(call quiet-command,$(PYTHON) $(SRC_PATH)/scripts/qapi-introspect.py \
		$(gen-out-type) -o tests -p "test-" $<, \
		"  GEN   $@")
456

457 458 459 460 461 462 463 464 465
tests/test-string-output-visitor$(EXESUF): tests/test-string-output-visitor.o $(test-qapi-obj-y)
tests/test-string-input-visitor$(EXESUF): tests/test-string-input-visitor.o $(test-qapi-obj-y)
tests/test-qmp-event$(EXESUF): tests/test-qmp-event.o $(test-qapi-obj-y)
tests/test-qmp-output-visitor$(EXESUF): tests/test-qmp-output-visitor.o $(test-qapi-obj-y)
tests/test-qmp-input-visitor$(EXESUF): tests/test-qmp-input-visitor.o $(test-qapi-obj-y)
tests/test-qmp-input-strict$(EXESUF): tests/test-qmp-input-strict.o $(test-qapi-obj-y)
tests/test-qmp-commands$(EXESUF): tests/test-qmp-commands.o tests/test-qmp-marshal.o $(test-qapi-obj-y)
tests/test-visitor-serialization$(EXESUF): tests/test-visitor-serialization.o $(test-qapi-obj-y)
tests/test-opts-visitor$(EXESUF): tests/test-opts-visitor.o $(test-qapi-obj-y)
466

467 468
tests/test-mul64$(EXESUF): tests/test-mul64.o $(test-util-obj-y)
tests/test-bitops$(EXESUF): tests/test-bitops.o $(test-util-obj-y)
469 470
tests/test-crypto-hash$(EXESUF): tests/test-crypto-hash.o $(test-crypto-obj-y)
tests/test-crypto-cipher$(EXESUF): tests/test-crypto-cipher.o $(test-crypto-obj-y)
471
tests/test-crypto-secret$(EXESUF): tests/test-crypto-secret.o $(test-crypto-obj-y)
472 473 474 475 476 477

tests/crypto-tls-x509-helpers.o-cflags := $(TASN1_CFLAGS)
tests/crypto-tls-x509-helpers.o-libs := $(TASN1_LIBS)
tests/pkix_asn1_tab.o-cflags := $(TASN1_CFLAGS)

tests/test-crypto-tlscredsx509.o-cflags := $(TASN1_CFLAGS)
478 479
tests/test-crypto-tlscredsx509$(EXESUF): tests/test-crypto-tlscredsx509.o \
	tests/crypto-tls-x509-helpers.o tests/pkix_asn1_tab.o $(test-crypto-obj-y)
480 481

tests/test-crypto-tlssession.o-cflags := $(TASN1_CFLAGS)
482 483
tests/test-crypto-tlssession$(EXESUF): tests/test-crypto-tlssession.o \
	tests/crypto-tls-x509-helpers.o tests/pkix_asn1_tab.o $(test-crypto-obj-y)
484
tests/test-io-task$(EXESUF): tests/test-io-task.o $(test-io-obj-y)
485 486
tests/test-io-channel-socket$(EXESUF): tests/test-io-channel-socket.o \
        tests/io-channel-helpers.o $(test-io-obj-y)
D
Daniel P. Berrange 已提交
487 488
tests/test-io-channel-file$(EXESUF): tests/test-io-channel-file.o \
        tests/io-channel-helpers.o $(test-io-obj-y)
D
Daniel P. Berrange 已提交
489 490 491
tests/test-io-channel-tls$(EXESUF): tests/test-io-channel-tls.o \
	tests/crypto-tls-x509-helpers.o tests/pkix_asn1_tab.o \
	tests/io-channel-helpers.o $(test-io-obj-y)
492 493
tests/test-io-channel-command$(EXESUF): tests/test-io-channel-command.o \
        tests/io-channel-helpers.o $(test-io-obj-y)
494 495
tests/test-io-channel-buffer$(EXESUF): tests/test-io-channel-buffer.o \
        tests/io-channel-helpers.o $(test-io-obj-y)
496

497
libqos-obj-y = tests/libqos/pci.o tests/libqos/fw_cfg.o tests/libqos/malloc.o
J
John Snow 已提交
498
libqos-obj-y += tests/libqos/i2c.o tests/libqos/libqos.o
499
libqos-pc-obj-y = $(libqos-obj-y) tests/libqos/pci-pc.o
J
John Snow 已提交
500
libqos-pc-obj-y += tests/libqos/malloc-pc.o tests/libqos/libqos-pc.o
J
John Snow 已提交
501
libqos-pc-obj-y += tests/libqos/ahci.o
A
Andreas Färber 已提交
502
libqos-omap-obj-y = $(libqos-obj-y) tests/libqos/i2c-omap.o
503
libqos-imx-obj-y = $(libqos-obj-y) tests/libqos/i2c-imx.o
504
libqos-usb-obj-y = $(libqos-pc-obj-y) tests/libqos/usb.o
M
Marc Marí 已提交
505
libqos-virtio-obj-y = $(libqos-pc-obj-y) tests/libqos/virtio.o tests/libqos/virtio-pci.o tests/libqos/virtio-mmio.o tests/libqos/malloc-generic.o
506

507
tests/device-introspect-test$(EXESUF): tests/device-introspect-test.o
508 509
tests/rtc-test$(EXESUF): tests/rtc-test.o
tests/m48t59-test$(EXESUF): tests/m48t59-test.o
510
tests/endianness-test$(EXESUF): tests/endianness-test.o
511
tests/spapr-phb-test$(EXESUF): tests/spapr-phb-test.o $(libqos-obj-y)
512
tests/fdc-test$(EXESUF): tests/fdc-test.o
K
Kevin Wolf 已提交
513
tests/ide-test$(EXESUF): tests/ide-test.o $(libqos-pc-obj-y)
J
John Snow 已提交
514
tests/ahci-test$(EXESUF): tests/ahci-test.o $(libqos-pc-obj-y)
515
tests/hd-geo-test$(EXESUF): tests/hd-geo-test.o
516
tests/boot-order-test$(EXESUF): tests/boot-order-test.o $(libqos-obj-y)
517
tests/bios-tables-test$(EXESUF): tests/bios-tables-test.o $(libqos-obj-y)
A
Andreas Färber 已提交
518
tests/tmp105-test$(EXESUF): tests/tmp105-test.o $(libqos-omap-obj-y)
519
tests/ds1338-test$(EXESUF): tests/ds1338-test.o $(libqos-imx-obj-y)
520
tests/i440fx-test$(EXESUF): tests/i440fx-test.o $(libqos-pc-obj-y)
G
Gerd Hoffmann 已提交
521
tests/q35-test$(EXESUF): tests/q35-test.o $(libqos-pc-obj-y)
A
Anthony Liguori 已提交
522
tests/fw_cfg-test$(EXESUF): tests/fw_cfg-test.o $(libqos-pc-obj-y)
A
Andreas Färber 已提交
523
tests/e1000-test$(EXESUF): tests/e1000-test.o
524
tests/rtl8139-test$(EXESUF): tests/rtl8139-test.o $(libqos-pc-obj-y)
A
Andreas Färber 已提交
525
tests/pcnet-test$(EXESUF): tests/pcnet-test.o
A
Andreas Färber 已提交
526
tests/eepro100-test$(EXESUF): tests/eepro100-test.o
A
Andreas Färber 已提交
527
tests/vmxnet3-test$(EXESUF): tests/vmxnet3-test.o
A
Andreas Färber 已提交
528
tests/ne2000-test$(EXESUF): tests/ne2000-test.o
P
Paolo Bonzini 已提交
529
tests/wdt_ib700-test$(EXESUF): tests/wdt_ib700-test.o
530
tests/tco-test$(EXESUF): tests/tco-test.o $(libqos-pc-obj-y)
531
tests/virtio-balloon-test$(EXESUF): tests/virtio-balloon-test.o
532
tests/virtio-blk-test$(EXESUF): tests/virtio-blk-test.o $(libqos-virtio-obj-y)
533
tests/virtio-net-test$(EXESUF): tests/virtio-net-test.o $(libqos-pc-obj-y) $(libqos-virtio-obj-y)
534
tests/virtio-rng-test$(EXESUF): tests/virtio-rng-test.o $(libqos-pc-obj-y)
535
tests/virtio-scsi-test$(EXESUF): tests/virtio-scsi-test.o $(libqos-virtio-obj-y)
A
Andreas Färber 已提交
536
tests/virtio-9p-test$(EXESUF): tests/virtio-9p-test.o
A
Andreas Färber 已提交
537
tests/virtio-serial-test$(EXESUF): tests/virtio-serial-test.o
538
tests/virtio-console-test$(EXESUF): tests/virtio-console-test.o
A
Andreas Färber 已提交
539
tests/tpci200-test$(EXESUF): tests/tpci200-test.o
G
Gerd Hoffmann 已提交
540
tests/display-vga-test$(EXESUF): tests/display-vga-test.o
A
Andreas Färber 已提交
541
tests/ipoctal232-test$(EXESUF): tests/ipoctal232-test.o
A
Andreas Färber 已提交
542
tests/qom-test$(EXESUF): tests/qom-test.o
543
tests/drive_del-test$(EXESUF): tests/drive_del-test.o $(libqos-pc-obj-y)
544
tests/qdev-monitor-test$(EXESUF): tests/qdev-monitor-test.o $(libqos-pc-obj-y)
A
Andreas Färber 已提交
545
tests/nvme-test$(EXESUF): tests/nvme-test.o
A
Andreas Färber 已提交
546
tests/pvpanic-test$(EXESUF): tests/pvpanic-test.o
A
Andreas Färber 已提交
547
tests/i82801b11-test$(EXESUF): tests/i82801b11-test.o
A
Andreas Färber 已提交
548
tests/ac97-test$(EXESUF): tests/ac97-test.o
A
Andreas Färber 已提交
549
tests/es1370-test$(EXESUF): tests/es1370-test.o
A
Andreas Färber 已提交
550
tests/intel-hda-test$(EXESUF): tests/intel-hda-test.o
A
Andreas Färber 已提交
551
tests/ioh3420-test$(EXESUF): tests/ioh3420-test.o
552
tests/usb-hcd-ohci-test$(EXESUF): tests/usb-hcd-ohci-test.o $(libqos-usb-obj-y)
553
tests/usb-hcd-uhci-test$(EXESUF): tests/usb-hcd-uhci-test.o $(libqos-usb-obj-y)
554
tests/usb-hcd-ehci-test$(EXESUF): tests/usb-hcd-ehci-test.o $(libqos-usb-obj-y)
555
tests/usb-hcd-xhci-test$(EXESUF): tests/usb-hcd-xhci-test.o $(libqos-usb-obj-y)
A
Andreas Färber 已提交
556
tests/pc-cpu-test$(EXESUF): tests/pc-cpu-test.o
N
Nikolay Nikolaev 已提交
557
tests/vhost-user-test$(EXESUF): tests/vhost-user-test.o qemu-char.o qemu-timer.o $(qtest-obj-y)
558
tests/qemu-iotests/socket_scm_helper$(EXESUF): tests/qemu-iotests/socket_scm_helper.o
559 560
tests/test-qemu-opts$(EXESUF): tests/test-qemu-opts.o $(test-util-obj-y)
tests/test-write-threshold$(EXESUF): tests/test-write-threshold.o $(test-block-obj-y)
561
tests/test-netfilter$(EXESUF): tests/test-netfilter.o $(qtest-obj-y)
M
Marc-André Lureau 已提交
562
tests/ivshmem-test$(EXESUF): tests/ivshmem-test.o contrib/ivshmem-server/ivshmem-server.o $(libqos-pc-obj-y)
563
tests/vhost-user-bridge$(EXESUF): tests/vhost-user-bridge.o
B
Blue Swirl 已提交
564

N
Nikolay Nikolaev 已提交
565 566 567
ifeq ($(CONFIG_POSIX),y)
LIBS += -lutil
endif
N
Nikolay Nikolaev 已提交
568

569 570 571
# QTest rules

TARGETS=$(patsubst %-softmmu,%, $(filter %-softmmu,$(TARGET_DIRS)))
572
ifeq ($(CONFIG_POSIX),y)
M
Markus Armbruster 已提交
573
QTEST_TARGETS = $(TARGETS)
574
check-qtest-y=$(foreach TARGET,$(TARGETS), $(check-qtest-$(TARGET)-y))
M
Markus Armbruster 已提交
575 576 577
check-qtest-y += $(check-qtest-generic-y)
else
QTEST_TARGETS =
578
endif
579

580
qtest-obj-y = tests/libqtest.o $(test-util-obj-y)
581 582
$(check-qtest-y): $(qtest-obj-y)

583 584
tests/test-qga: tests/test-qga.o $(qtest-obj-y)

P
Paolo Bonzini 已提交
585 586 587 588 589
.PHONY: check-help
check-help:
	@echo "Regression testing targets:"
	@echo
	@echo " make check                Run all tests"
590 591
	@echo " make check-qtest-TARGET   Run qtest tests for given target"
	@echo " make check-qtest          Run qtest tests"
P
Paolo Bonzini 已提交
592
	@echo " make check-unit           Run qobject tests"
593
	@echo " make check-qapi-schema    Run QAPI schema tests"
P
Paolo Bonzini 已提交
594 595
	@echo " make check-block          Run block tests"
	@echo " make check-report.html    Generates an HTML test report"
W
Wenchao Xia 已提交
596
	@echo " make check-clean          Clean the tests"
P
Paolo Bonzini 已提交
597 598 599 600 601 602 603
	@echo
	@echo "Please note that HTML reports do not regenerate if the unit tests"
	@echo "has not changed."
	@echo
	@echo "The variable SPEED can be set to control the gtester speed setting."
	@echo "Default options are -k and (for make V=1) --verbose; they can be"
	@echo "changed with variable GTESTER_OPTIONS."
604

P
Paolo Bonzini 已提交
605 606
SPEED = quick
GTESTER_OPTIONS = -k $(if $(V),--verbose,-q)
B
Blue Swirl 已提交
607
GCOV_OPTIONS = -n $(if $(V),-f,)
608

P
Paolo Bonzini 已提交
609
# gtester tests, possibly with verbose output
610

611 612
.PHONY: $(patsubst %, check-qtest-%, $(QTEST_TARGETS))
$(patsubst %, check-qtest-%, $(QTEST_TARGETS)): check-qtest-%: $(check-qtest-y)
B
Blue Swirl 已提交
613
	$(if $(CONFIG_GCOV),@rm -f *.gcda */*.gcda */*/*.gcda */*/*/*.gcda,)
614
	$(call quiet-command,QTEST_QEMU_BINARY=$*-softmmu/qemu-system-$* \
615
		QTEST_QEMU_IMG=qemu-img$(EXESUF) \
616
		MALLOC_PERTURB_=$${MALLOC_PERTURB_:-$$((RANDOM % 255 + 1))} \
M
Markus Armbruster 已提交
617
		gtester $(GTESTER_OPTIONS) -m=$(SPEED) $(check-qtest-$*-y) $(check-qtest-generic-y),"GTESTER $@")
618
	$(if $(CONFIG_GCOV),@for f in $(gcov-files-$*-y) $(gcov-files-generic-y); do \
B
Blue Swirl 已提交
619 620 621
	  echo Gcov report for $$f:;\
	  $(GCOV) $(GCOV_OPTIONS) $$f -o `dirname $$f`; \
	done,)
622

P
Paolo Bonzini 已提交
623 624
.PHONY: $(patsubst %, check-%, $(check-unit-y))
$(patsubst %, check-%, $(check-unit-y)): check-%: %
B
Blue Swirl 已提交
625
	$(if $(CONFIG_GCOV),@rm -f *.gcda */*.gcda */*/*.gcda */*/*/*.gcda,)
626 627 628
	$(call quiet-command, \
		MALLOC_PERTURB_=$${MALLOC_PERTURB_:-$$((RANDOM % 255 + 1))} \
		gtester $(GTESTER_OPTIONS) -m=$(SPEED) $*,"GTESTER $*")
629
	$(if $(CONFIG_GCOV),@for f in $(gcov-files-$(subst tests/,,$*)-y) $(gcov-files-generic-y); do \
B
Blue Swirl 已提交
630 631 632
	  echo Gcov report for $$f:;\
	  $(GCOV) $(GCOV_OPTIONS) $$f -o `dirname $$f`; \
	done,)
633

P
Paolo Bonzini 已提交
634
# gtester tests with XML output
K
Kevin Wolf 已提交
635

636 637
$(patsubst %, check-report-qtest-%.xml, $(QTEST_TARGETS)): check-report-qtest-%.xml: $(check-qtest-y)
	$(call quiet-command,QTEST_QEMU_BINARY=$*-softmmu/qemu-system-$* \
638
		QTEST_QEMU_IMG=qemu-img$(EXESUF) \
639
	  gtester -q $(GTESTER_OPTIONS) -o $@ -m=$(SPEED) $(check-qtest-$*-y) $(check-qtest-generic-y),"GTESTER $@")
640

P
Paolo Bonzini 已提交
641 642
check-report-unit.xml: $(check-unit-y)
	$(call quiet-command,gtester -q $(GTESTER_OPTIONS) -o $@ -m=$(SPEED) $^, "GTESTER $@")
K
Kevin Wolf 已提交
643

P
Paolo Bonzini 已提交
644
# Reports and overall runs
K
Kevin Wolf 已提交
645

646
check-report.xml: $(patsubst %,check-report-qtest-%.xml, $(QTEST_TARGETS)) check-report-unit.xml
S
Stefan Weil 已提交
647
	$(call quiet-command,$(SRC_PATH)/scripts/gtester-cat $^ > $@, "  GEN   $@")
K
Kevin Wolf 已提交
648

P
Paolo Bonzini 已提交
649
check-report.html: check-report.xml
S
Stefan Weil 已提交
650
	$(call quiet-command,gtester-report $< > $@, "  GEN   $@")
P
Paolo Bonzini 已提交
651 652 653 654


# Other tests

655 656
QEMU_IOTESTS_HELPERS-$(CONFIG_LINUX) = tests/qemu-iotests/socket_scm_helper$(EXESUF)

P
Paolo Bonzini 已提交
657
.PHONY: check-tests/qemu-iotests-quick.sh
658
check-tests/qemu-iotests-quick.sh: tests/qemu-iotests-quick.sh qemu-img$(EXESUF) qemu-io$(EXESUF) $(QEMU_IOTESTS_HELPERS-y)
P
Paolo Bonzini 已提交
659 660
	$<

661 662 663 664 665
.PHONY: check-tests/test-qapi.py
check-tests/test-qapi.py: tests/test-qapi.py

.PHONY: $(patsubst %, check-%, $(check-qapi-schema-y))
$(patsubst %, check-%, $(check-qapi-schema-y)): check-%.json: $(SRC_PATH)/%.json
666 667
	$(call quiet-command, PYTHONPATH=$(SRC_PATH)/scripts \
		$(PYTHON) $(SRC_PATH)/tests/qapi-schema/test-qapi.py \
668
		$^ >$*.test.out 2>$*.test.err; \
669 670
		echo $$? >$*.test.exit, \
		"  TEST  $*.out")
671
	@diff -q $(SRC_PATH)/$*.out $*.test.out
672 673
	@# Sanitize error messages (make them independent of build directory)
	@perl -p -e 's|\Q$(SRC_PATH)\E/||g' $*.test.err | diff -q $(SRC_PATH)/$*.err -
674
	@diff -q $(SRC_PATH)/$*.exit $*.test.exit
675

P
Paolo Bonzini 已提交
676 677
# Consolidated targets

W
Wenchao Xia 已提交
678
.PHONY: check-qapi-schema check-qtest check-unit check check-clean
679
check-qapi-schema: $(patsubst %,check-%, $(check-qapi-schema-y))
680
check-qtest: $(patsubst %,check-qtest-%, $(QTEST_TARGETS))
P
Paolo Bonzini 已提交
681 682
check-unit: $(patsubst %,check-%, $(check-unit-y))
check-block: $(patsubst %,check-%, $(check-block-y))
683
check: check-qapi-schema check-unit check-qtest
W
Wenchao Xia 已提交
684 685
check-clean:
	$(MAKE) -C tests/tcg clean
A
Andreas Färber 已提交
686
	rm -rf $(check-unit-y) tests/*.o $(QEMU_IOTESTS_HELPERS-y)
687
	rm -rf $(sort $(foreach target,$(SYSEMU_TARGET_LIST), $(check-qtest-$(target)-y)) $(check-qtest-generic-y))
W
Wenchao Xia 已提交
688 689

clean: check-clean
690

691 692 693 694
# Build the help program automatically

all: $(QEMU_IOTESTS_HELPERS-y)

695
-include $(wildcard tests/*.d)
A
Anthony Liguori 已提交
696
-include $(wildcard tests/libqos/*.d)