Makefile.include 51.1 KB
Newer Older
1 2 3 4 5

.PHONY: check-help
check-help:
	@echo "Regression testing targets:"
	@echo
6 7
	@echo " $(MAKE) check                Run unit, qapi-schema, qtest and decodetree"
	@echo
8 9 10 11 12 13
	@echo " $(MAKE) check-qtest-TARGET   Run qtest tests for given target"
	@echo " $(MAKE) check-qtest          Run qtest tests"
	@echo " $(MAKE) check-unit           Run qobject tests"
	@echo " $(MAKE) check-speed          Run qobject speed tests"
	@echo " $(MAKE) check-qapi-schema    Run QAPI schema tests"
	@echo " $(MAKE) check-block          Run block tests"
14
	@echo " $(MAKE) check-tcg            Run TCG tests"
15
	@echo " $(MAKE) check-softfloat      Run FPU emulation tests"
16
	@echo " $(MAKE) check-acceptance     Run all acceptance (functional) tests"
17
	@echo
18
	@echo " $(MAKE) check-report.html    Generates an HTML test report"
C
Cleber Rosa 已提交
19
	@echo " $(MAKE) check-venv           Creates a Python venv for tests"
20
	@echo " $(MAKE) check-clean          Clean the tests and related data"
21 22
	@echo
	@echo "Please note that HTML reports do not regenerate if the unit tests"
23
	@echo "have not changed."
24 25
	@echo
	@echo "The variable SPEED can be set to control the gtester speed setting."
26
	@echo "Default options are -k and (for $(MAKE) V=1) --verbose; they can be"
27 28 29
	@echo "changed with variable GTESTER_OPTIONS."

ifneq ($(wildcard config-host.mak),)
K
Kevin Wolf 已提交
30 31
export SRC_PATH

32 33 34 35 36 37 38 39 40
# TODO don't duplicate $(SRC_PATH)/Makefile's qapi-py here
qapi-py = $(SRC_PATH)/scripts/qapi/commands.py \
$(SRC_PATH)/scripts/qapi/events.py \
$(SRC_PATH)/scripts/qapi/introspect.py \
$(SRC_PATH)/scripts/qapi/types.py \
$(SRC_PATH)/scripts/qapi/visit.py \
$(SRC_PATH)/scripts/qapi/common.py \
$(SRC_PATH)/scripts/qapi/doc.py \
$(SRC_PATH)/scripts/qapi-gen.py
41

42 43 44 45
# Get the list of all supported sysemu targets
SYSEMU_TARGET_LIST := $(subst -softmmu.mak,,$(notdir \
   $(wildcard $(SRC_PATH)/default-configs/*-softmmu.mak)))

46
check-unit-y += tests/check-qdict$(EXESUF)
47
check-unit-y += tests/check-block-qdict$(EXESUF)
48
check-unit-y += tests/test-char$(EXESUF)
49
check-unit-y += tests/check-qnum$(EXESUF)
P
Paolo Bonzini 已提交
50 51
check-unit-y += tests/check-qstring$(EXESUF)
check-unit-y += tests/check-qlist$(EXESUF)
E
Eric Blake 已提交
52
check-unit-y += tests/check-qnull$(EXESUF)
53
check-unit-y += tests/check-qobject$(EXESUF)
P
Paolo Bonzini 已提交
54
check-unit-y += tests/check-qjson$(EXESUF)
55
check-unit-y += tests/check-qlit$(EXESUF)
56
check-unit-y += tests/test-qobject-output-visitor$(EXESUF)
E
Eric Blake 已提交
57
check-unit-y += tests/test-clone-visitor$(EXESUF)
58
check-unit-y += tests/test-qobject-input-visitor$(EXESUF)
59
check-unit-y += tests/test-qmp-cmds$(EXESUF)
P
Paolo Bonzini 已提交
60 61
check-unit-y += tests/test-string-input-visitor$(EXESUF)
check-unit-y += tests/test-string-output-visitor$(EXESUF)
62
check-unit-y += tests/test-qmp-event$(EXESUF)
63
check-unit-y += tests/test-opts-visitor$(EXESUF)
P
Paolo Bonzini 已提交
64
check-unit-y += tests/test-coroutine$(EXESUF)
65
check-unit-y += tests/test-visitor-serialization$(EXESUF)
M
Michael Tokarev 已提交
66
check-unit-y += tests/test-iov$(EXESUF)
P
Paolo Bonzini 已提交
67
check-unit-y += tests/test-aio$(EXESUF)
68
check-unit-y += tests/test-aio-multithread$(EXESUF)
B
Benoît Canet 已提交
69
check-unit-y += tests/test-throttle$(EXESUF)
P
Paolo Bonzini 已提交
70
check-unit-y += tests/test-thread-pool$(EXESUF)
71
check-unit-y += tests/test-hbitmap$(EXESUF)
72
check-unit-y += tests/test-bdrv-drain$(EXESUF)
A
Alberto Garcia 已提交
73
check-unit-y += tests/test-blockjob$(EXESUF)
S
Stefan Hajnoczi 已提交
74
check-unit-y += tests/test-blockjob-txn$(EXESUF)
75
check-unit-y += tests/test-block-backend$(EXESUF)
76
check-unit-y += tests/test-block-iothread$(EXESUF)
77
check-unit-y += tests/test-image-locking$(EXESUF)
78 79
check-unit-y += tests/test-x86-cpuid$(EXESUF)
# all code tested by test-x86-cpuid is inside topology.h
80
ifeq ($(CONFIG_SOFTMMU),y)
O
Orit Wasserman 已提交
81
check-unit-y += tests/test-xbzrle$(EXESUF)
82 83
check-unit-$(CONFIG_POSIX) += tests/test-vmstate$(EXESUF)
endif
84
check-unit-y += tests/test-cutils$(EXESUF)
85
check-unit-y += tests/test-shift128$(EXESUF)
86
check-unit-y += tests/test-mul64$(EXESUF)
87 88
check-unit-y += tests/test-int128$(EXESUF)
# all code tested by test-int128 is inside int128.h
P
Paolo Bonzini 已提交
89
check-unit-y += tests/rcutorture$(EXESUF)
M
Mike Day 已提交
90
check-unit-y += tests/test-rcu-list$(EXESUF)
E
Emilio G. Cota 已提交
91
check-unit-y += tests/test-rcu-simpleq$(EXESUF)
E
Emilio G. Cota 已提交
92
check-unit-y += tests/test-rcu-tailq$(EXESUF)
E
Emilio G. Cota 已提交
93
check-unit-y += tests/test-qdist$(EXESUF)
E
Emilio G. Cota 已提交
94
check-unit-y += tests/test-qht$(EXESUF)
95
check-unit-y += tests/test-qht-par$(EXESUF)
96
check-unit-y += tests/test-bitops$(EXESUF)
A
Alex Bennée 已提交
97
check-unit-y += tests/test-bitcnt$(EXESUF)
98
check-unit-y += tests/test-qdev-global-props$(EXESUF)
I
Igor Mammedov 已提交
99
check-unit-y += tests/check-qom-interface$(EXESUF)
100
check-unit-y += tests/check-qom-proplist$(EXESUF)
L
Leandro Dorileo 已提交
101
check-unit-y += tests/test-qemu-opts$(EXESUF)
M
Markus Armbruster 已提交
102
check-unit-y += tests/test-keyval$(EXESUF)
103
check-unit-y += tests/test-write-threshold$(EXESUF)
104
check-unit-y += tests/test-crypto-hash$(EXESUF)
105
check-speed-y += tests/benchmark-crypto-hash$(EXESUF)
106
check-unit-y += tests/test-crypto-hmac$(EXESUF)
107
check-speed-y += tests/benchmark-crypto-hmac$(EXESUF)
108
check-unit-y += tests/test-crypto-cipher$(EXESUF)
109
check-speed-y += tests/benchmark-crypto-cipher$(EXESUF)
110
check-unit-y += tests/test-crypto-secret$(EXESUF)
111
check-unit-$(CONFIG_GNUTLS) += tests/test-crypto-tlscredsx509$(EXESUF)
112
check-unit-$(CONFIG_GNUTLS) += tests/test-crypto-tlssession$(EXESUF)
113
ifneq (,$(findstring qemu-ga,$(TOOLS)))
114
check-unit-$(land,$(CONFIG_LINUX),$(CONFIG_VIRTIO_SERIAL)) += tests/test-qga$(EXESUF)
115
endif
116
check-unit-y += tests/test-timed-average$(EXESUF)
117
check-unit-$(CONFIG_INOTIFY1) += tests/test-util-filemonitor$(EXESUF)
118
check-unit-y += tests/test-util-sockets$(EXESUF)
119
check-unit-y += tests/test-authz-simple$(EXESUF)
120
check-unit-y += tests/test-authz-list$(EXESUF)
121
check-unit-y += tests/test-authz-listfile$(EXESUF)
122
check-unit-$(CONFIG_AUTH_PAM) += tests/test-authz-pam$(EXESUF)
123
check-unit-y += tests/test-io-task$(EXESUF)
124
check-unit-y += tests/test-io-channel-socket$(EXESUF)
D
Daniel P. Berrange 已提交
125
check-unit-y += tests/test-io-channel-file$(EXESUF)
D
Daniel P. Berrange 已提交
126
check-unit-$(CONFIG_GNUTLS) += tests/test-io-channel-tls$(EXESUF)
127
check-unit-y += tests/test-io-channel-command$(EXESUF)
128
check-unit-y += tests/test-io-channel-buffer$(EXESUF)
129
check-unit-y += tests/test-base64$(EXESUF)
130
check-unit-$(if $(CONFIG_NETTLE),y,$(CONFIG_GCRYPT)) += tests/test-crypto-pbkdf$(EXESUF)
131
check-unit-y += tests/test-crypto-ivgen$(EXESUF)
132
check-unit-y += tests/test-crypto-afsplit$(EXESUF)
133
check-unit-y += tests/test-crypto-xts$(EXESUF)
134
check-unit-y += tests/test-crypto-block$(EXESUF)
135
check-unit-y += tests/test-logging$(EXESUF)
136
check-unit-$(CONFIG_REPLICATION) += tests/test-replication$(EXESUF)
137
check-unit-y += tests/test-bufferiszero$(EXESUF)
F
Fam Zheng 已提交
138
check-unit-y += tests/test-uuid$(EXESUF)
P
Paolo Bonzini 已提交
139
check-unit-y += tests/ptimer-test$(EXESUF)
140
check-unit-y += tests/test-qapi-util$(EXESUF)
P
Paolo Bonzini 已提交
141 142 143

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

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

147
check-qtest-generic-y += tests/qmp-test$(EXESUF)
148 149
check-qtest-generic-y += tests/qmp-cmd-test$(EXESUF)

150
check-qtest-generic-y += tests/device-introspect-test$(EXESUF)
151
check-qtest-generic-y += tests/cdrom-test$(EXESUF)
M
Markus Armbruster 已提交
152

A
Andreas Färber 已提交
153 154
check-qtest-ipack-y += tests/ipoctal232-test$(EXESUF)

155
check-qtest-virtioserial-$(CONFIG_VIRTIO_SERIAL) += tests/virtio-console-test$(EXESUF)
156

157
check-qtest-virtio-$(CONFIG_VIRTIO_NET) += tests/virtio-net-test$(EXESUF)
158
check-qtest-virtio-$(CONFIG_VIRTIO_BALLOON) += tests/virtio-balloon-test$(EXESUF)
159
check-qtest-virtio-$(CONFIG_VIRTIO_BLK) += tests/virtio-blk-test$(EXESUF)
160
check-qtest-virtio-$(CONFIG_VIRTIO_RNG) += tests/virtio-rng-test$(EXESUF)
161
check-qtest-virtio-$(CONFIG_VIRTIO_SCSI) += tests/virtio-scsi-test$(EXESUF)
A
Andreas Färber 已提交
162
ifeq ($(CONFIG_VIRTIO)$(CONFIG_VIRTFS)$(CONFIG_PCI),yyy)
163
check-qtest-virtio-$(CONFIG_VIRTIO_9P) += tests/virtio-9p-test$(EXESUF)
A
Andreas Färber 已提交
164
endif
165
check-qtest-virtio-$(CONFIG_VIRTIO_SERIAL) += tests/virtio-serial-test$(EXESUF)
166
check-qtest-virtio-y += $(check-qtest-virtioserial-y)
A
Andreas Färber 已提交
167

A
Andreas Färber 已提交
168
check-qtest-pci-y += tests/e1000-test$(EXESUF)
169
check-qtest-pci-y += tests/e1000e-test$(EXESUF)
170
check-qtest-pci-$(CONFIG_RTL8139_PCI) += tests/rtl8139-test$(EXESUF)
171
check-qtest-pci-$(CONFIG_PCNET_PCI) += tests/pcnet-test$(EXESUF)
172
check-qtest-pci-$(CONFIG_EEPRO100_PCI) += tests/eepro100-test$(EXESUF)
173
check-qtest-pci-$(CONFIG_NE2000_PCI) += tests/ne2000-test$(EXESUF)
174
check-qtest-pci-$(CONFIG_NVME_PCI) += tests/nvme-test$(EXESUF)
175
check-qtest-pci-$(CONFIG_AC97) += tests/ac97-test$(EXESUF)
176
check-qtest-pci-$(CONFIG_ES1370) += tests/es1370-test$(EXESUF)
177
check-qtest-pci-$(CONFIG_VIRTIO) += $(check-qtest-virtio-y)
178 179
check-qtest-pci-$(CONFIG_IPACK) += tests/tpci200-test$(EXESUF)
check-qtest-pci-$(CONFIG_IPACK) += $(check-qtest-ipack-y)
180
check-qtest-pci-$(CONFIG_VGA) += tests/display-vga-test$(EXESUF)
181
check-qtest-pci-$(CONFIG_HDA) += tests/intel-hda-test$(EXESUF)
182
check-qtest-pci-$(CONFIG_IVSHMEM_DEVICE) += tests/ivshmem-test$(EXESUF)
183
check-qtest-pci-$(CONFIG_MEGASAS_SCSI_PCI) += tests/megasas-test$(EXESUF)
A
Andreas Färber 已提交
184

185
check-qtest-i386-$(CONFIG_ISA_TESTDEV) = tests/endianness-test$(EXESUF)
186
check-qtest-i386-y += tests/fdc-test$(EXESUF)
K
Kevin Wolf 已提交
187
check-qtest-i386-y += tests/ide-test$(EXESUF)
188
check-qtest-i386-y += tests/ahci-test$(EXESUF)
189
check-qtest-i386-y += tests/hd-geo-test$(EXESUF)
190
check-qtest-i386-y += tests/boot-order-test$(EXESUF)
191
check-qtest-i386-y += tests/bios-tables-test$(EXESUF)
192
check-qtest-i386-$(CONFIG_SGA) += tests/boot-serial-test$(EXESUF)
193
check-qtest-i386-$(CONFIG_SLIRP) += tests/pxe-test$(EXESUF)
194
check-qtest-i386-y += tests/rtc-test$(EXESUF)
195
check-qtest-i386-$(CONFIG_ISA_IPMI_KCS) += tests/ipmi-kcs-test$(EXESUF)
P
Peter Maydell 已提交
196
# Disabled temporarily as it fails intermittently especially under NetBSD VM
197
# check-qtest-i386-$(CONFIG_ISA_IPMI_BT) += tests/ipmi-bt-test$(EXESUF)
198
check-qtest-i386-y += tests/i440fx-test$(EXESUF)
A
Anthony Liguori 已提交
199
check-qtest-i386-y += tests/fw_cfg-test$(EXESUF)
200
check-qtest-i386-y += tests/drive_del-test$(EXESUF)
201
check-qtest-i386-$(CONFIG_WDT_IB700) += tests/wdt_ib700-test$(EXESUF)
202
check-qtest-i386-y += tests/tco-test$(EXESUF)
A
Andreas Färber 已提交
203
check-qtest-i386-y += $(check-qtest-pci-y)
204
check-qtest-i386-$(CONFIG_VMXNET3_PCI) += tests/vmxnet3-test$(EXESUF)
205
check-qtest-i386-$(CONFIG_PVPANIC) += tests/pvpanic-test$(EXESUF)
206
check-qtest-i386-$(CONFIG_I82801B11) += tests/i82801b11-test$(EXESUF)
207
check-qtest-i386-$(CONFIG_IOH3420) += tests/ioh3420-test$(EXESUF)
208
check-qtest-i386-$(CONFIG_USB_OHCI) += tests/usb-hcd-ohci-test$(EXESUF)
209
check-qtest-i386-$(CONFIG_USB_UHCI) += tests/usb-hcd-uhci-test$(EXESUF)
210
ifeq ($(CONFIG_USB_ECHI)$(CONFIG_USB_UHCI),yy)
A
Andreas Färber 已提交
211
check-qtest-i386-y += tests/usb-hcd-ehci-test$(EXESUF)
212
endif
213
check-qtest-i386-$(CONFIG_USB_XHCI_NEC) += tests/usb-hcd-xhci-test$(EXESUF)
214
check-qtest-i386-y += tests/cpu-plug-test$(EXESUF)
G
Gerd Hoffmann 已提交
215
check-qtest-i386-y += tests/q35-test$(EXESUF)
216
check-qtest-i386-y += tests/vmgenid-test$(EXESUF)
217 218 219
check-qtest-i386-$(CONFIG_VHOST_USER_NET_TEST_i386) += tests/vhost-user-test$(EXESUF)
ifeq ($(CONFIG_VHOST_USER_NET_TEST_i386),)
check-qtest-x86_64-$(CONFIG_VHOST_USER_NET_TEST_x86_64) += tests/vhost-user-test$(EXESUF)
220
endif
221 222 223 224
check-qtest-i386-$(CONFIG_TPM_CRB) += tests/tpm-crb-swtpm-test$(EXESUF)
check-qtest-i386-$(CONFIG_TPM_CRB) += tests/tpm-crb-test$(EXESUF)
check-qtest-i386-$(CONFIG_TPM_TIS) += tests/tpm-tis-swtpm-test$(EXESUF)
check-qtest-i386-$(CONFIG_TPM_TIS) += tests/tpm-tis-test$(EXESUF)
225
check-qtest-i386-$(CONFIG_SLIRP) += tests/test-netfilter$(EXESUF)
226
check-qtest-i386-$(CONFIG_POSIX) += tests/test-filter-mirror$(EXESUF)
227
check-qtest-i386-$(CONFIG_RTL8139_PCI) += tests/test-filter-redirector$(EXESUF)
228
check-qtest-i386-y += tests/migration-test$(EXESUF)
229
check-qtest-i386-y += tests/test-x86-cpuid-compat$(EXESUF)
230
check-qtest-i386-y += tests/numa-test$(EXESUF)
M
Marc-André Lureau 已提交
231
check-qtest-x86_64-y += $(check-qtest-i386-y)
232
check-qtest-x86_64-$(CONFIG_SDHCI) += tests/sdhci-test$(EXESUF)
233

234
check-qtest-alpha-y += tests/boot-serial-test$(EXESUF)
235
check-qtest-alpha-$(CONFIG_VGA) += tests/display-vga-test$(EXESUF)
236

237
check-qtest-hppa-y += tests/boot-serial-test$(EXESUF)
238
check-qtest-hppa-$(CONFIG_VGA) += tests/display-vga-test$(EXESUF)
239

240 241
check-qtest-m68k-y = tests/boot-serial-test$(EXESUF)

242
check-qtest-microblaze-y += tests/boot-serial-test$(EXESUF)
243

244
check-qtest-mips-$(CONFIG_ISA_TESTDEV) = tests/endianness-test$(EXESUF)
245
check-qtest-mips-$(CONFIG_VGA) += tests/display-vga-test$(EXESUF)
246 247

check-qtest-mips64-$(CONFIG_ISA_TESTDEV) = tests/endianness-test$(EXESUF)
248
check-qtest-mips64-$(CONFIG_VGA) += tests/display-vga-test$(EXESUF)
249 250

check-qtest-mips64el-$(CONFIG_ISA_TESTDEV) = tests/endianness-test$(EXESUF)
251
check-qtest-mips64el-$(CONFIG_VGA) += tests/display-vga-test$(EXESUF)
252

253
check-qtest-moxie-y += tests/boot-serial-test$(EXESUF)
254

255
check-qtest-ppc-$(CONFIG_ISA_TESTDEV) = tests/endianness-test$(EXESUF)
256 257 258
check-qtest-ppc-y += tests/boot-order-test$(EXESUF)
check-qtest-ppc-y += tests/prom-env-test$(EXESUF)
check-qtest-ppc-y += tests/drive_del-test$(EXESUF)
259
check-qtest-ppc-y += tests/boot-serial-test$(EXESUF)
260
check-qtest-ppc-$(CONFIG_M48T59) += tests/m48t59-test$(EXESUF)
261

262
check-qtest-ppc64-y += $(check-qtest-ppc-y)
263 264
check-qtest-ppc64-$(CONFIG_PSERIES) += tests/spapr-phb-test$(EXESUF)
check-qtest-ppc64-$(CONFIG_POWERNV) += tests/pnv-xscom-test$(EXESUF)
265
check-qtest-ppc64-y += tests/migration-test$(EXESUF)
266
check-qtest-ppc64-$(CONFIG_PSERIES) += tests/rtas-test$(EXESUF)
267
check-qtest-ppc64-$(CONFIG_SLIRP) += tests/pxe-test$(EXESUF)
268
check-qtest-ppc64-$(CONFIG_USB_OHCI) += tests/usb-hcd-ohci-test$(EXESUF)
269
check-qtest-ppc64-$(CONFIG_USB_UHCI) += tests/usb-hcd-uhci-test$(EXESUF)
270
check-qtest-ppc64-$(CONFIG_USB_XHCI_NEC) += tests/usb-hcd-xhci-test$(EXESUF)
271
check-qtest-ppc64-$(CONFIG_VIRTIO) += $(check-qtest-virtio-y)
272
check-qtest-ppc64-$(CONFIG_SLIRP) += tests/test-netfilter$(EXESUF)
273
check-qtest-ppc64-$(CONFIG_POSIX) += tests/test-filter-mirror$(EXESUF)
274
check-qtest-ppc64-$(CONFIG_RTL8139_PCI) += tests/test-filter-redirector$(EXESUF)
275
check-qtest-ppc64-$(CONFIG_VGA) += tests/display-vga-test$(EXESUF)
276
check-qtest-ppc64-y += tests/numa-test$(EXESUF)
277
check-qtest-ppc64-$(CONFIG_IVSHMEM_DEVICE) += tests/ivshmem-test$(EXESUF)
278
check-qtest-ppc64-y += tests/cpu-plug-test$(EXESUF)
279

280 281 282 283
check-qtest-sh4-$(CONFIG_ISA_TESTDEV) = tests/endianness-test$(EXESUF)

check-qtest-sh4eb-$(CONFIG_ISA_TESTDEV) = tests/endianness-test$(EXESUF)

284
check-qtest-sparc-y += tests/prom-env-test$(EXESUF)
285
check-qtest-sparc-y += tests/m48t59-test$(EXESUF)
286
check-qtest-sparc-y += tests/boot-serial-test$(EXESUF)
287

288
check-qtest-sparc64-$(CONFIG_ISA_TESTDEV) = tests/endianness-test$(EXESUF)
289
check-qtest-sparc64-y += tests/prom-env-test$(EXESUF)
290
check-qtest-sparc64-y += tests/boot-serial-test$(EXESUF)
291

292
check-qtest-arm-y += tests/tmp105-test$(EXESUF)
293
check-qtest-arm-y += tests/pca9552-test$(EXESUF)
T
Thomas Huth 已提交
294
check-qtest-arm-y += tests/ds1338-test$(EXESUF)
295
check-qtest-arm-y += tests/microbit-test$(EXESUF)
C
Cédric Le Goater 已提交
296
check-qtest-arm-y += tests/m25p80-test$(EXESUF)
297
check-qtest-arm-$(CONFIG_VIRTIO_BLK) += tests/virtio-blk-test$(EXESUF)
298
check-qtest-arm-y += tests/test-arm-mptimer$(EXESUF)
299
check-qtest-arm-y += tests/boot-serial-test$(EXESUF)
300
check-qtest-arm-$(CONFIG_SDHCI) += tests/sdhci-test$(EXESUF)
301
check-qtest-arm-y += tests/hexloader-test$(EXESUF)
302

303
check-qtest-aarch64-y = tests/numa-test$(EXESUF)
304
check-qtest-aarch64-$(CONFIG_SDHCI) += tests/sdhci-test$(EXESUF)
305
check-qtest-aarch64-y += tests/boot-serial-test$(EXESUF)
W
Wei Huang 已提交
306
check-qtest-aarch64-y += tests/migration-test$(EXESUF)
307

308
check-qtest-microblazeel-y += $(check-qtest-microblaze-y)
309

310
check-qtest-xtensaeb-y += $(check-qtest-xtensa-y)
A
Anthony Liguori 已提交
311

312
check-qtest-s390x-y = tests/boot-serial-test$(EXESUF)
313
check-qtest-s390x-$(CONFIG_SLIRP) += tests/pxe-test$(EXESUF)
314 315 316
check-qtest-s390x-$(CONFIG_SLIRP) += tests/test-netfilter$(EXESUF)
check-qtest-s390x-$(CONFIG_POSIX) += tests/test-filter-mirror$(EXESUF)
check-qtest-s390x-$(CONFIG_POSIX) += tests/test-filter-redirector$(EXESUF)
317
check-qtest-s390x-y += tests/drive_del-test$(EXESUF)
318
check-qtest-s390x-y += tests/virtio-ccw-test$(EXESUF)
319
check-qtest-s390x-y += tests/cpu-plug-test$(EXESUF)
320
check-qtest-s390x-y += tests/migration-test$(EXESUF)
321

322
check-qtest-generic-y += tests/machine-none-test$(EXESUF)
M
Markus Armbruster 已提交
323
check-qtest-generic-y += tests/qom-test$(EXESUF)
324
check-qtest-generic-y += tests/test-hmp$(EXESUF)
325

326
qapi-schema += alternate-any.json
E
Eric Blake 已提交
327 328 329 330
qapi-schema += alternate-array.json
qapi-schema += alternate-base.json
qapi-schema += alternate-clash.json
qapi-schema += alternate-conflict-dict.json
331 332
qapi-schema += alternate-conflict-enum-bool.json
qapi-schema += alternate-conflict-enum-int.json
E
Eric Blake 已提交
333
qapi-schema += alternate-conflict-string.json
334 335
qapi-schema += alternate-conflict-bool-string.json
qapi-schema += alternate-conflict-num-string.json
E
Eric Blake 已提交
336
qapi-schema += alternate-empty.json
337
qapi-schema += alternate-invalid-dict.json
E
Eric Blake 已提交
338 339 340 341 342 343
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
344 345 346 347
qapi-schema += args-bad-boxed.json
qapi-schema += args-boxed-anon.json
qapi-schema += args-boxed-empty.json
qapi-schema += args-boxed-string.json
E
Eric Blake 已提交
348 349 350
qapi-schema += args-int.json
qapi-schema += args-invalid.json
qapi-schema += args-member-array-bad.json
351
qapi-schema += args-member-case.json
E
Eric Blake 已提交
352
qapi-schema += args-member-unknown.json
353
qapi-schema += args-name-clash.json
E
Eric Blake 已提交
354 355 356 357 358
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
359 360 361 362
qapi-schema += bad-if.json
qapi-schema += bad-if-empty.json
qapi-schema += bad-if-empty-list.json
qapi-schema += bad-if-list.json
E
Eric Blake 已提交
363 364 365
qapi-schema += bad-type-bool.json
qapi-schema += bad-type-dict.json
qapi-schema += bad-type-int.json
E
Eric Blake 已提交
366 367
qapi-schema += base-cycle-direct.json
qapi-schema += base-cycle-indirect.json
E
Eric Blake 已提交
368 369
qapi-schema += command-int.json
qapi-schema += comments.json
370
qapi-schema += doc-bad-alternate-member.json
371
qapi-schema += doc-bad-command-arg.json
372
qapi-schema += doc-bad-section.json
M
Marc-André Lureau 已提交
373
qapi-schema += doc-bad-symbol.json
374
qapi-schema += doc-bad-union-member.json
375 376
qapi-schema += doc-before-include.json
qapi-schema += doc-before-pragma.json
M
Marc-André Lureau 已提交
377 378 379 380 381 382
qapi-schema += doc-duplicated-arg.json
qapi-schema += doc-duplicated-return.json
qapi-schema += doc-duplicated-since.json
qapi-schema += doc-empty-arg.json
qapi-schema += doc-empty-section.json
qapi-schema += doc-empty-symbol.json
383
qapi-schema += doc-good.json
M
Marc-André Lureau 已提交
384 385 386 387 388 389 390 391 392
qapi-schema += doc-interleaved-section.json
qapi-schema += doc-invalid-end.json
qapi-schema += doc-invalid-end2.json
qapi-schema += doc-invalid-return.json
qapi-schema += doc-invalid-section.json
qapi-schema += doc-invalid-start.json
qapi-schema += doc-missing-colon.json
qapi-schema += doc-missing-expr.json
qapi-schema += doc-missing-space.json
393
qapi-schema += doc-missing.json
394
qapi-schema += doc-no-symbol.json
E
Eric Blake 已提交
395 396 397 398
qapi-schema += double-data.json
qapi-schema += double-type.json
qapi-schema += duplicate-key.json
qapi-schema += empty.json
399
qapi-schema += enum-bad-member.json
E
Eric Blake 已提交
400 401 402
qapi-schema += enum-bad-name.json
qapi-schema += enum-bad-prefix.json
qapi-schema += enum-clash-member.json
403
qapi-schema += enum-dict-member-unknown.json
404
qapi-schema += enum-if-invalid.json
E
Eric Blake 已提交
405
qapi-schema += enum-int-member.json
406
qapi-schema += enum-member-case.json
E
Eric Blake 已提交
407 408 409 410 411
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
412
qapi-schema += event-boxed-empty.json
E
Eric Blake 已提交
413
qapi-schema += event-case.json
414
qapi-schema += event-member-invalid-dict.json
E
Eric Blake 已提交
415 416 417 418 419 420
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
421
qapi-schema += flat-union-clash-member.json
E
Eric Blake 已提交
422
qapi-schema += flat-union-empty.json
E
Eric Blake 已提交
423
qapi-schema += flat-union-inline.json
424
qapi-schema += flat-union-inline-invalid-dict.json
E
Eric Blake 已提交
425 426 427
qapi-schema += flat-union-int-branch.json
qapi-schema += flat-union-invalid-branch-key.json
qapi-schema += flat-union-invalid-discriminator.json
428
qapi-schema += flat-union-invalid-if-discriminator.json
E
Eric Blake 已提交
429 430 431 432 433 434 435
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
436
qapi-schema += include-extra-junk.json
E
Eric Blake 已提交
437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452
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
453
qapi-schema += nested-struct-data-invalid-dict.json
E
Eric Blake 已提交
454
qapi-schema += non-objects.json
P
Peter Xu 已提交
455
qapi-schema += oob-test.json
456
qapi-schema += allow-preconfig-test.json
457 458
qapi-schema += pragma-doc-required-crap.json
qapi-schema += pragma-extra-junk.json
459
qapi-schema += pragma-name-case-whitelist-crap.json
460
qapi-schema += pragma-non-dict.json
461
qapi-schema += pragma-returns-whitelist-crap.json
E
Eric Blake 已提交
462 463 464 465 466 467
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
468
qapi-schema += reserved-command-q.json
469
qapi-schema += reserved-enum-q.json
470 471
qapi-schema += reserved-member-has.json
qapi-schema += reserved-member-q.json
E
Eric Blake 已提交
472
qapi-schema += reserved-member-u.json
473
qapi-schema += reserved-member-underscore.json
474 475
qapi-schema += reserved-type-kind.json
qapi-schema += reserved-type-list.json
E
Eric Blake 已提交
476 477 478 479 480 481 482 483
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
484
qapi-schema += struct-member-invalid-dict.json
E
Eric Blake 已提交
485 486 487 488 489 490 491 492
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
493
qapi-schema += union-base-empty.json
E
Eric Blake 已提交
494
qapi-schema += union-base-no-discriminator.json
495
qapi-schema += union-branch-case.json
496
qapi-schema += union-branch-invalid-dict.json
497
qapi-schema += union-clash-branches.json
E
Eric Blake 已提交
498
qapi-schema += union-empty.json
E
Eric Blake 已提交
499 500 501 502 503
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
M
Marc-André Lureau 已提交
504 505


E
Eric Blake 已提交
506
check-qapi-schema-y := $(addprefix tests/qapi-schema/, $(qapi-schema))
507

508
GENERATED_FILES += tests/test-qapi-types.h tests/test-qapi-visit.h \
509 510
	tests/test-qapi-commands.h tests/test-qapi-events.h \
	tests/test-qapi-introspect.h
P
Paolo Bonzini 已提交
511

512
test-obj-y = tests/check-qnum.o tests/check-qstring.o tests/check-qdict.o \
513
	tests/check-qlist.o tests/check-qnull.o tests/check-qobject.o \
514
	tests/check-qjson.o tests/check-qlit.o \
515
	tests/check-block-qtest.o \
P
Paolo Bonzini 已提交
516
	tests/test-coroutine.o tests/test-string-output-visitor.o \
517
	tests/test-string-input-visitor.o tests/test-qobject-output-visitor.o \
E
Eric Blake 已提交
518
	tests/test-clone-visitor.o \
519
	tests/test-qobject-input-visitor.o \
520
	tests/test-qmp-cmds.o tests/test-visitor-serialization.o \
521
	tests/test-x86-cpuid.o tests/test-mul64.o tests/test-int128.o \
P
Paolo Bonzini 已提交
522
	tests/test-opts-visitor.o tests/test-qmp-event.o \
E
Emilio G. Cota 已提交
523
	tests/rcutorture.o tests/test-rcu-list.o \
E
Emilio G. Cota 已提交
524
	tests/test-rcu-simpleq.o \
E
Emilio G. Cota 已提交
525
	tests/test-rcu-tailq.o \
526
	tests/test-qdist.o tests/test-shift128.o \
E
Emilio G. Cota 已提交
527
	tests/test-qht.o tests/qht-bench.o tests/test-qht-par.o \
E
Emilio G. Cota 已提交
528
	tests/atomic_add-bench.o tests/atomic64-bench.o
P
Paolo Bonzini 已提交
529 530

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

533 534

# Deps that are common to various different sets of tests below
P
Paolo Bonzini 已提交
535
test-util-obj-y = libqemuutil.a
536
test-qom-obj-y = $(qom-obj-y) $(test-util-obj-y)
537
test-qapi-obj-y = tests/test-qapi-visit.o tests/test-qapi-types.o \
538
	tests/test-qapi-introspect.o \
539
	$(test-qom-obj-y)
540
benchmark-crypto-obj-y = $(crypto-obj-y) $(test-qom-obj-y)
541
test-crypto-obj-y = $(crypto-obj-y) $(test-qom-obj-y)
542
test-io-obj-y = $(io-obj-y) $(test-crypto-obj-y)
543
test-authz-obj-y = $(test-qom-obj-y) $(authz-obj-y)
544
test-block-obj-y = $(block-obj-y) $(test-io-obj-y) tests/iothread.o
545

546
tests/check-qnum$(EXESUF): tests/check-qnum.o $(test-util-obj-y)
547 548
tests/check-qstring$(EXESUF): tests/check-qstring.o $(test-util-obj-y)
tests/check-qdict$(EXESUF): tests/check-qdict.o $(test-util-obj-y)
549
tests/check-block-qdict$(EXESUF): tests/check-block-qdict.o $(test-util-obj-y)
550
tests/check-qlist$(EXESUF): tests/check-qlist.o $(test-util-obj-y)
E
Eric Blake 已提交
551
tests/check-qnull$(EXESUF): tests/check-qnull.o $(test-util-obj-y)
552
tests/check-qobject$(EXESUF): tests/check-qobject.o $(test-util-obj-y)
553
tests/check-qjson$(EXESUF): tests/check-qjson.o $(test-util-obj-y)
554
tests/check-qlit$(EXESUF): tests/check-qlit.o $(test-util-obj-y)
555 556
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)
557

558
tests/test-char$(EXESUF): tests/test-char.o $(test-util-obj-y) $(qtest-obj-y) $(test-io-obj-y) $(chardev-obj-y)
559 560
tests/test-coroutine$(EXESUF): tests/test-coroutine.o $(test-block-obj-y)
tests/test-aio$(EXESUF): tests/test-aio.o $(test-block-obj-y)
561
tests/test-aio-multithread$(EXESUF): tests/test-aio-multithread.o $(test-block-obj-y)
562
tests/test-throttle$(EXESUF): tests/test-throttle.o $(test-block-obj-y)
563
tests/test-bdrv-drain$(EXESUF): tests/test-bdrv-drain.o $(test-block-obj-y) $(test-util-obj-y)
A
Alberto Garcia 已提交
564
tests/test-blockjob$(EXESUF): tests/test-blockjob.o $(test-block-obj-y) $(test-util-obj-y)
S
Stefan Hajnoczi 已提交
565
tests/test-blockjob-txn$(EXESUF): tests/test-blockjob-txn.o $(test-block-obj-y) $(test-util-obj-y)
566
tests/test-block-backend$(EXESUF): tests/test-block-backend.o $(test-block-obj-y) $(test-util-obj-y)
567
tests/test-block-iothread$(EXESUF): tests/test-block-iothread.o $(test-block-obj-y) $(test-util-obj-y)
568
tests/test-image-locking$(EXESUF): tests/test-image-locking.o $(test-block-obj-y) $(test-util-obj-y)
569 570
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)
571
tests/test-hbitmap$(EXESUF): tests/test-hbitmap.o $(test-util-obj-y) $(test-crypto-obj-y)
572
tests/test-x86-cpuid$(EXESUF): tests/test-x86-cpuid.o
573
tests/test-xbzrle$(EXESUF): tests/test-xbzrle.o migration/xbzrle.o migration/page_cache.o $(test-util-obj-y)
574
tests/test-cutils$(EXESUF): tests/test-cutils.o util/cutils.o $(test-util-obj-y)
575
tests/test-int128$(EXESUF): tests/test-int128.o
576 577
tests/rcutorture$(EXESUF): tests/rcutorture.o $(test-util-obj-y)
tests/test-rcu-list$(EXESUF): tests/test-rcu-list.o $(test-util-obj-y)
E
Emilio G. Cota 已提交
578
tests/test-rcu-simpleq$(EXESUF): tests/test-rcu-simpleq.o $(test-util-obj-y)
E
Emilio G. Cota 已提交
579
tests/test-rcu-tailq$(EXESUF): tests/test-rcu-tailq.o $(test-util-obj-y)
E
Emilio G. Cota 已提交
580
tests/test-qdist$(EXESUF): tests/test-qdist.o $(test-util-obj-y)
E
Emilio G. Cota 已提交
581
tests/test-qht$(EXESUF): tests/test-qht.o $(test-util-obj-y)
582
tests/test-qht-par$(EXESUF): tests/test-qht-par.o tests/qht-bench$(EXESUF) $(test-util-obj-y)
583
tests/qht-bench$(EXESUF): tests/qht-bench.o $(test-util-obj-y)
584
tests/test-bufferiszero$(EXESUF): tests/test-bufferiszero.o $(test-util-obj-y)
E
Emilio G. Cota 已提交
585
tests/atomic_add-bench$(EXESUF): tests/atomic_add-bench.o $(test-util-obj-y)
E
Emilio G. Cota 已提交
586
tests/atomic64-bench$(EXESUF): tests/atomic64-bench.o $(test-util-obj-y)
P
Paolo Bonzini 已提交
587

588 589 590
tests/fp/%:
	$(MAKE) -C $(dir $@) $(notdir $@)

591
tests/test-qdev-global-props$(EXESUF): tests/test-qdev-global-props.o \
592
	hw/core/qdev.o hw/core/qdev-properties.o hw/core/hotplug.o\
593
	hw/core/bus.o \
594
	hw/core/irq.o \
595
	hw/core/fw-path-provider.o \
596
	hw/core/reset.o \
597
	$(test-qapi-obj-y)
598
tests/test-vmstate$(EXESUF): tests/test-vmstate.o \
599
	migration/vmstate.o migration/vmstate-types.o migration/qemu-file.o \
600 601
        migration/qemu-file-channel.o migration/qjson.o \
	$(test-io-obj-y)
602
tests/test-timed-average$(EXESUF): tests/test-timed-average.o $(test-util-obj-y)
P
Paolo Bonzini 已提交
603
tests/test-base64$(EXESUF): tests/test-base64.o $(test-util-obj-y)
604
tests/ptimer-test$(EXESUF): tests/ptimer-test.o tests/ptimer-test-stubs.o hw/core/ptimer.o
P
Paolo Bonzini 已提交
605

606 607
tests/test-logging$(EXESUF): tests/test-logging.o $(test-util-obj-y)

608 609 610
tests/test-replication$(EXESUF): tests/test-replication.o $(test-util-obj-y) \
	$(test-block-obj-y)

611 612
tests/test-qapi-types.c tests/test-qapi-types.h \
tests/test-qapi-visit.c tests/test-qapi-visit.h \
613 614 615
tests/test-qapi-commands.h tests/test-qapi-commands.c \
tests/test-qapi-events.c tests/test-qapi-events.h \
tests/test-qapi-introspect.c tests/test-qapi-introspect.h: \
616 617
tests/test-qapi-gen-timestamp ;
tests/test-qapi-gen-timestamp: $(SRC_PATH)/tests/qapi-schema/qapi-schema-test.json $(qapi-py)
M
Matthias Maier 已提交
618
	$(call quiet-command,$(PYTHON) $(SRC_PATH)/scripts/qapi-gen.py \
619 620 621 622 623
		-o tests -p "test-" $<, \
		"GEN","$(@:%-timestamp=%)")
	@>$@

tests/qapi-schema/doc-good.test.texi: $(SRC_PATH)/tests/qapi-schema/doc-good.json $(qapi-py)
M
Matthias Maier 已提交
624
	$(call quiet-command,$(PYTHON) $(SRC_PATH)/scripts/qapi-gen.py \
625
		-o tests/qapi-schema -p "doc-good-" $<, \
626
		"GEN","$@")
627 628
	@mv tests/qapi-schema/doc-good-qapi-doc.texi $@
	@rm -f tests/qapi-schema/doc-good-qapi-*.[ch] tests/qapi-schema/doc-good-qmp-*.[ch]
629

630 631
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)
632
tests/test-qmp-event$(EXESUF): tests/test-qmp-event.o $(test-qapi-obj-y) tests/test-qapi-events.o
633
tests/test-qobject-output-visitor$(EXESUF): tests/test-qobject-output-visitor.o $(test-qapi-obj-y)
E
Eric Blake 已提交
634
tests/test-clone-visitor$(EXESUF): tests/test-clone-visitor.o $(test-qapi-obj-y)
635
tests/test-qobject-input-visitor$(EXESUF): tests/test-qobject-input-visitor.o $(test-qapi-obj-y)
636
tests/test-qmp-cmds$(EXESUF): tests/test-qmp-cmds.o tests/test-qapi-commands.o $(test-qapi-obj-y)
637 638
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)
639

640
tests/test-shift128$(EXESUF): tests/test-shift128.o $(test-util-obj-y)
641 642
tests/test-mul64$(EXESUF): tests/test-mul64.o $(test-util-obj-y)
tests/test-bitops$(EXESUF): tests/test-bitops.o $(test-util-obj-y)
A
Alex Bennée 已提交
643
tests/test-bitcnt$(EXESUF): tests/test-bitcnt.o $(test-util-obj-y)
644
tests/test-crypto-hash$(EXESUF): tests/test-crypto-hash.o $(test-crypto-obj-y)
645
tests/benchmark-crypto-hash$(EXESUF): tests/benchmark-crypto-hash.o $(test-crypto-obj-y)
646
tests/test-crypto-hmac$(EXESUF): tests/test-crypto-hmac.o $(test-crypto-obj-y)
647
tests/benchmark-crypto-hmac$(EXESUF): tests/benchmark-crypto-hmac.o $(test-crypto-obj-y)
648
tests/test-crypto-cipher$(EXESUF): tests/test-crypto-cipher.o $(test-crypto-obj-y)
649
tests/benchmark-crypto-cipher$(EXESUF): tests/benchmark-crypto-cipher.o $(test-crypto-obj-y)
650
tests/test-crypto-secret$(EXESUF): tests/test-crypto-secret.o $(test-crypto-obj-y)
651
tests/test-crypto-xts$(EXESUF): tests/test-crypto-xts.o $(test-crypto-obj-y)
652 653 654 655 656 657

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)
658 659
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)
660 661

tests/test-crypto-tlssession.o-cflags := $(TASN1_CFLAGS)
662
tests/test-crypto-tlssession$(EXESUF): tests/test-crypto-tlssession.o \
663 664 665
	tests/crypto-tls-x509-helpers.o tests/pkix_asn1_tab.o \
	tests/crypto-tls-psk-helpers.o \
        $(test-crypto-obj-y)
666 667
tests/test-util-filemonitor$(EXESUF): tests/test-util-filemonitor.o \
	$(test-util-obj-y)
668 669
tests/test-util-sockets$(EXESUF): tests/test-util-sockets.o \
	tests/socket-helpers.o $(test-util-obj-y)
670
tests/test-authz-simple$(EXESUF): tests/test-authz-simple.o $(test-authz-obj-y)
671
tests/test-authz-list$(EXESUF): tests/test-authz-list.o $(test-authz-obj-y)
672
tests/test-authz-listfile$(EXESUF): tests/test-authz-listfile.o $(test-authz-obj-y)
673
tests/test-authz-pam$(EXESUF): tests/test-authz-pam.o $(test-authz-obj-y)
674
tests/test-io-task$(EXESUF): tests/test-io-task.o $(test-io-obj-y)
675
tests/test-io-channel-socket$(EXESUF): tests/test-io-channel-socket.o \
676
        tests/io-channel-helpers.o tests/socket-helpers.o $(test-io-obj-y)
677
tests/tpm-crb-swtpm-test$(EXESUF): tests/tpm-crb-swtpm-test.o tests/tpm-emu.o \
678
	tests/tpm-util.o tests/tpm-tests.o $(test-io-obj-y)
679
tests/tpm-crb-test$(EXESUF): tests/tpm-crb-test.o tests/tpm-emu.o $(test-io-obj-y)
680 681
tests/tpm-tis-swtpm-test$(EXESUF): tests/tpm-tis-swtpm-test.o tests/tpm-emu.o \
	tests/tpm-util.o tests/tpm-tests.o $(test-io-obj-y)
682
tests/tpm-tis-test$(EXESUF): tests/tpm-tis-test.o tests/tpm-emu.o $(test-io-obj-y)
D
Daniel P. Berrange 已提交
683 684
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 已提交
685 686 687
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)
688 689
tests/test-io-channel-command$(EXESUF): tests/test-io-channel-command.o \
        tests/io-channel-helpers.o $(test-io-obj-y)
690 691
tests/test-io-channel-buffer$(EXESUF): tests/test-io-channel-buffer.o \
        tests/io-channel-helpers.o $(test-io-obj-y)
692
tests/test-crypto-pbkdf$(EXESUF): tests/test-crypto-pbkdf.o $(test-crypto-obj-y)
693
tests/test-crypto-ivgen$(EXESUF): tests/test-crypto-ivgen.o $(test-crypto-obj-y)
694
tests/test-crypto-afsplit$(EXESUF): tests/test-crypto-afsplit.o $(test-crypto-obj-y)
695
tests/test-crypto-block$(EXESUF): tests/test-crypto-block.o $(test-crypto-obj-y)
696

697
libqos-obj-y = tests/libqos/pci.o tests/libqos/fw_cfg.o tests/libqos/malloc.o
J
John Snow 已提交
698
libqos-obj-y += tests/libqos/i2c.o tests/libqos/libqos.o
699 700
libqos-spapr-obj-y = $(libqos-obj-y) tests/libqos/malloc-spapr.o
libqos-spapr-obj-y += tests/libqos/libqos-spapr.o
701
libqos-spapr-obj-y += tests/libqos/rtas.o
L
Laurent Vivier 已提交
702
libqos-spapr-obj-y += tests/libqos/pci-spapr.o
703
libqos-pc-obj-y = $(libqos-obj-y) tests/libqos/pci-pc.o
J
John Snow 已提交
704
libqos-pc-obj-y += tests/libqos/malloc-pc.o tests/libqos/libqos-pc.o
J
John Snow 已提交
705
libqos-pc-obj-y += tests/libqos/ahci.o
A
Andreas Färber 已提交
706
libqos-omap-obj-y = $(libqos-obj-y) tests/libqos/i2c-omap.o
707
libqos-imx-obj-y = $(libqos-obj-y) tests/libqos/i2c-imx.o
708
libqos-usb-obj-y = $(libqos-spapr-obj-y) $(libqos-pc-obj-y) tests/libqos/usb.o
709
libqos-virtio-obj-y = $(libqos-spapr-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
710

711
tests/qmp-test$(EXESUF): tests/qmp-test.o
712
tests/qmp-cmd-test$(EXESUF): tests/qmp-cmd-test.o
713
tests/device-introspect-test$(EXESUF): tests/device-introspect-test.o
714 715
tests/rtc-test$(EXESUF): tests/rtc-test.o
tests/m48t59-test$(EXESUF): tests/m48t59-test.o
716
tests/hexloader-test$(EXESUF): tests/hexloader-test.o
717
tests/endianness-test$(EXESUF): tests/endianness-test.o
718
tests/spapr-phb-test$(EXESUF): tests/spapr-phb-test.o $(libqos-obj-y)
719
tests/prom-env-test$(EXESUF): tests/prom-env-test.o $(libqos-obj-y)
720
tests/rtas-test$(EXESUF): tests/rtas-test.o $(libqos-spapr-obj-y)
721
tests/fdc-test$(EXESUF): tests/fdc-test.o
K
Kevin Wolf 已提交
722
tests/ide-test$(EXESUF): tests/ide-test.o $(libqos-pc-obj-y)
J
John Snow 已提交
723
tests/ahci-test$(EXESUF): tests/ahci-test.o $(libqos-pc-obj-y)
C
Corey Minyard 已提交
724 725
tests/ipmi-kcs-test$(EXESUF): tests/ipmi-kcs-test.o
tests/ipmi-bt-test$(EXESUF): tests/ipmi-bt-test.o
726
tests/hd-geo-test$(EXESUF): tests/hd-geo-test.o
727
tests/boot-order-test$(EXESUF): tests/boot-order-test.o $(libqos-obj-y)
728
tests/boot-serial-test$(EXESUF): tests/boot-serial-test.o $(libqos-obj-y)
729
tests/bios-tables-test$(EXESUF): tests/bios-tables-test.o \
730
	tests/boot-sector.o tests/acpi-utils.o $(libqos-obj-y)
731
tests/pxe-test$(EXESUF): tests/pxe-test.o tests/boot-sector.o $(libqos-obj-y)
A
Andreas Färber 已提交
732
tests/tmp105-test$(EXESUF): tests/tmp105-test.o $(libqos-omap-obj-y)
733
tests/pca9552-test$(EXESUF): tests/pca9552-test.o $(libqos-omap-obj-y)
734
tests/ds1338-test$(EXESUF): tests/ds1338-test.o $(libqos-imx-obj-y)
735
tests/microbit-test$(EXESUF): tests/microbit-test.o
C
Cédric Le Goater 已提交
736
tests/m25p80-test$(EXESUF): tests/m25p80-test.o
737
tests/i440fx-test$(EXESUF): tests/i440fx-test.o $(libqos-pc-obj-y)
G
Gerd Hoffmann 已提交
738
tests/q35-test$(EXESUF): tests/q35-test.o $(libqos-pc-obj-y)
A
Anthony Liguori 已提交
739
tests/fw_cfg-test$(EXESUF): tests/fw_cfg-test.o $(libqos-pc-obj-y)
A
Andreas Färber 已提交
740
tests/e1000-test$(EXESUF): tests/e1000-test.o
741
tests/e1000e-test$(EXESUF): tests/e1000e-test.o $(libqos-pc-obj-y)
742
tests/rtl8139-test$(EXESUF): tests/rtl8139-test.o $(libqos-pc-obj-y)
A
Andreas Färber 已提交
743
tests/pcnet-test$(EXESUF): tests/pcnet-test.o
744
tests/pnv-xscom-test$(EXESUF): tests/pnv-xscom-test.o
A
Andreas Färber 已提交
745
tests/eepro100-test$(EXESUF): tests/eepro100-test.o
A
Andreas Färber 已提交
746
tests/vmxnet3-test$(EXESUF): tests/vmxnet3-test.o
A
Andreas Färber 已提交
747
tests/ne2000-test$(EXESUF): tests/ne2000-test.o
P
Paolo Bonzini 已提交
748
tests/wdt_ib700-test$(EXESUF): tests/wdt_ib700-test.o
749
tests/tco-test$(EXESUF): tests/tco-test.o $(libqos-pc-obj-y)
750
tests/virtio-balloon-test$(EXESUF): tests/virtio-balloon-test.o $(libqos-virtio-obj-y)
751
tests/virtio-blk-test$(EXESUF): tests/virtio-blk-test.o $(libqos-virtio-obj-y)
752
tests/virtio-ccw-test$(EXESUF): tests/virtio-ccw-test.o
753
tests/virtio-net-test$(EXESUF): tests/virtio-net-test.o $(libqos-pc-obj-y) $(libqos-virtio-obj-y)
754
tests/virtio-rng-test$(EXESUF): tests/virtio-rng-test.o $(libqos-pc-obj-y)
755
tests/virtio-scsi-test$(EXESUF): tests/virtio-scsi-test.o $(libqos-virtio-obj-y)
756
tests/virtio-9p-test$(EXESUF): tests/virtio-9p-test.o $(libqos-virtio-obj-y)
757 758
tests/virtio-serial-test$(EXESUF): tests/virtio-serial-test.o $(libqos-virtio-obj-y)
tests/virtio-console-test$(EXESUF): tests/virtio-console-test.o $(libqos-virtio-obj-y)
A
Andreas Färber 已提交
759
tests/tpci200-test$(EXESUF): tests/tpci200-test.o
G
Gerd Hoffmann 已提交
760
tests/display-vga-test$(EXESUF): tests/display-vga-test.o
A
Andreas Färber 已提交
761
tests/ipoctal232-test$(EXESUF): tests/ipoctal232-test.o
A
Andreas Färber 已提交
762
tests/qom-test$(EXESUF): tests/qom-test.o
763
tests/test-hmp$(EXESUF): tests/test-hmp.o
764
tests/machine-none-test$(EXESUF): tests/machine-none-test.o
765
tests/drive_del-test$(EXESUF): tests/drive_del-test.o $(libqos-virtio-obj-y)
766
tests/nvme-test$(EXESUF): tests/nvme-test.o $(libqos-pc-obj-y)
A
Andreas Färber 已提交
767
tests/pvpanic-test$(EXESUF): tests/pvpanic-test.o
A
Andreas Färber 已提交
768
tests/i82801b11-test$(EXESUF): tests/i82801b11-test.o
A
Andreas Färber 已提交
769
tests/ac97-test$(EXESUF): tests/ac97-test.o
A
Andreas Färber 已提交
770
tests/es1370-test$(EXESUF): tests/es1370-test.o
A
Andreas Färber 已提交
771
tests/intel-hda-test$(EXESUF): tests/intel-hda-test.o
A
Andreas Färber 已提交
772
tests/ioh3420-test$(EXESUF): tests/ioh3420-test.o
773
tests/usb-hcd-ohci-test$(EXESUF): tests/usb-hcd-ohci-test.o $(libqos-usb-obj-y)
774
tests/usb-hcd-uhci-test$(EXESUF): tests/usb-hcd-uhci-test.o $(libqos-usb-obj-y)
775
tests/usb-hcd-ehci-test$(EXESUF): tests/usb-hcd-ehci-test.o $(libqos-usb-obj-y)
776
tests/usb-hcd-xhci-test$(EXESUF): tests/usb-hcd-xhci-test.o $(libqos-usb-obj-y)
777
tests/cpu-plug-test$(EXESUF): tests/cpu-plug-test.o
778
tests/migration-test$(EXESUF): tests/migration-test.o
779
tests/vhost-user-test$(EXESUF): tests/vhost-user-test.o $(test-util-obj-y) \
M
Marc-André Lureau 已提交
780 781
	$(qtest-obj-y) $(test-io-obj-y) $(libqos-virtio-obj-y) $(libqos-pc-obj-y) \
	$(chardev-obj-y)
782
tests/qemu-iotests/socket_scm_helper$(EXESUF): tests/qemu-iotests/socket_scm_helper.o
783
tests/test-qemu-opts$(EXESUF): tests/test-qemu-opts.o $(test-util-obj-y)
784
tests/test-keyval$(EXESUF): tests/test-keyval.o $(test-util-obj-y) $(test-qapi-obj-y)
785
tests/test-write-threshold$(EXESUF): tests/test-write-threshold.o $(test-block-obj-y)
786
tests/test-netfilter$(EXESUF): tests/test-netfilter.o $(qtest-obj-y)
787
tests/test-filter-mirror$(EXESUF): tests/test-filter-mirror.o $(qtest-obj-y)
788
tests/test-filter-redirector$(EXESUF): tests/test-filter-redirector.o $(qtest-obj-y)
789
tests/test-x86-cpuid-compat$(EXESUF): tests/test-x86-cpuid-compat.o $(qtest-obj-y)
790
tests/ivshmem-test$(EXESUF): tests/ivshmem-test.o contrib/ivshmem-server/ivshmem-server.o $(libqos-pc-obj-y) $(libqos-spapr-obj-y)
P
Paolo Bonzini 已提交
791
tests/megasas-test$(EXESUF): tests/megasas-test.o $(libqos-spapr-obj-y) $(libqos-pc-obj-y)
792
tests/vhost-user-bridge$(EXESUF): tests/vhost-user-bridge.o $(test-util-obj-y) libvhost-user.a
F
Fam Zheng 已提交
793
tests/test-uuid$(EXESUF): tests/test-uuid.o $(test-util-obj-y)
794
tests/test-arm-mptimer$(EXESUF): tests/test-arm-mptimer.o
795
tests/test-qapi-util$(EXESUF): tests/test-qapi-util.o $(test-util-obj-y)
796
tests/numa-test$(EXESUF): tests/numa-test.o
797
tests/vmgenid-test$(EXESUF): tests/vmgenid-test.o tests/boot-sector.o tests/acpi-utils.o
798
tests/sdhci-test$(EXESUF): tests/sdhci-test.o $(libqos-pc-obj-y)
799
tests/cdrom-test$(EXESUF): tests/cdrom-test.o tests/boot-sector.o $(libqos-obj-y)
B
Blue Swirl 已提交
800

801
tests/migration/stress$(EXESUF): tests/migration/stress.o
802
	$(call quiet-command, $(LINKPROG) -static -O3 $(PTHREAD_LIB) -o $@ $< ,"LINK","$(TARGET_DIR)$@")
803 804 805 806 807 808 809 810 811 812

INITRD_WORK_DIR=tests/migration/initrd

tests/migration/initrd-stress.img: tests/migration/stress$(EXESUF)
	mkdir -p $(INITRD_WORK_DIR)
	cp $< $(INITRD_WORK_DIR)/init
	(cd $(INITRD_WORK_DIR) && (find | cpio --quiet -o -H newc | gzip -9)) > $@
	rm $(INITRD_WORK_DIR)/init
	rmdir $(INITRD_WORK_DIR)

813 814
# QTest rules

815
TARGETS=$(patsubst %-softmmu,%, $(filter %-softmmu,$(TARGET_DIRS)))
816
ifeq ($(CONFIG_POSIX),y)
M
Markus Armbruster 已提交
817
QTEST_TARGETS = $(TARGETS)
818
check-qtest-y=$(foreach TARGET,$(TARGETS), $(check-qtest-$(TARGET)-y))
M
Markus Armbruster 已提交
819 820 821
check-qtest-y += $(check-qtest-generic-y)
else
QTEST_TARGETS =
822
endif
823

824
qtest-obj-y = tests/libqtest.o $(test-util-obj-y)
825 826
$(check-qtest-y): $(qtest-obj-y)

827 828
tests/test-qga$(EXESUF): qemu-ga$(EXESUF)
tests/test-qga$(EXESUF): tests/test-qga.o $(qtest-obj-y)
829

P
Paolo Bonzini 已提交
830
SPEED = quick
831

P
Paolo Bonzini 已提交
832
# gtester tests, possibly with verbose output
833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865
# do_test_tap runs all tests, even if some of them fail, while do_test_human
# stops at the first failure unless -k is given on the command line

define do_test_human_k
        $(quiet-@)rc=0; $(foreach COMMAND, $1, \
          $(call quiet-command-run, \
            export MALLOC_PERTURB_=$${MALLOC_PERTURB_:-$$(( $${RANDOM:-0} % 255 + 1))} $2; \
              $(COMMAND) -m=$(SPEED) -k --tap < /dev/null \
              | ./scripts/tap-driver.pl --test-name="$(notdir $(COMMAND))" $(if $(V),, --show-failures-only) \
              || rc=$$?;, "TEST", "$@: $(COMMAND)")) exit $$rc
endef
define do_test_human_no_k
        $(foreach COMMAND, $1, \
          $(call quiet-command, \
            MALLOC_PERTURB_=$${MALLOC_PERTURB_:-$$(( $${RANDOM:-0} % 255 + 1))} $2 \
              $(COMMAND) -m=$(SPEED) -k --tap < /dev/null \
              | ./scripts/tap-driver.pl --test-name="$(notdir $(COMMAND))" $(if $(V),, --show-failures-only), \
              "TEST", "$@: $(COMMAND)")
)
endef
do_test_human = \
        $(if $(findstring k, $(MAKEFLAGS)), $(do_test_human_k), $(do_test_human_no_k))

define do_test_tap
	$(call quiet-command, \
          { export MALLOC_PERTURB_=$${MALLOC_PERTURB_:-$$(( $${RANDOM:-0} % 255 + 1))} $2; \
            $(foreach COMMAND, $1, \
	      $(COMMAND) -m=$(SPEED) -k --tap < /dev/null \
	      | sed "s/^[a-z][a-z]* [0-9]* /&$(notdir $(COMMAND)) /" || true; ) } \
	      | ./scripts/tap-merge.pl | tee "$@" \
	      | ./scripts/tap-driver.pl $(if $(V),, --show-failures-only), \
	  "TAP","$@")
endef
866

867
.PHONY: $(patsubst %, check-qtest-%, $(QTEST_TARGETS))
868
$(patsubst %, check-qtest-%, $(QTEST_TARGETS)): check-qtest-%: subdir-%-softmmu $(check-qtest-y)
869 870 871
	$(call do_test_human,$(check-qtest-$*-y) $(check-qtest-generic-y), \
	  QTEST_QEMU_BINARY=$*-softmmu/qemu-system-$* \
	  QTEST_QEMU_IMG=qemu-img$(EXESUF))
872

873 874
check-unit: $(check-unit-y)
	$(call do_test_human, $^)
875

876 877
check-speed: $(check-speed-y)
	$(call do_test_human, $^)
K
Kevin Wolf 已提交
878

879
# gtester tests with TAP output
880

881 882 883 884
$(patsubst %, check-report-qtest-%.tap, $(QTEST_TARGETS)): check-report-qtest-%.tap: $(check-qtest-y)
	$(call do_test_tap, $(check-qtest-$*-y) $(check-qtest-generic-y), \
	  QTEST_QEMU_BINARY=$*-softmmu/qemu-system-$* \
	  QTEST_QEMU_IMG=qemu-img$(EXESUF))
K
Kevin Wolf 已提交
885

886 887
check-report-unit.tap: $(check-unit-y)
	$(call do_test_tap,$^)
K
Kevin Wolf 已提交
888

889
# Reports and overall runs
K
Kevin Wolf 已提交
890

891 892
check-report.tap: $(patsubst %,check-report-qtest-%.tap, $(QTEST_TARGETS)) check-report-unit.tap
	$(call quiet-command,./scripts/tap-merge.py $^ > $@,"GEN","$@")
P
Paolo Bonzini 已提交
893

894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910
# FPU Emulation tests (aka softfloat)
#
# As we still have some places that need fixing the rules are a little
# more complex than they need to be and have to override some of the
# generic Makefile expansions. Once we are cleanly passing all
# the tests we can simplify the make syntax.

FP_TEST_BIN=$(BUILD_DIR)/tests/fp/fp-test

# the build dir is created by configure
.PHONY: $(FP_TEST_BIN)
$(FP_TEST_BIN):
	$(call quiet-command, \
	 	$(MAKE) $(SUBDIR_MAKEFLAGS) -C $(dir $@) V="$(V)" $(notdir $@), \
	         "BUILD", "$(notdir $@)")

# The full test suite can take a bit of time, default to a quick run
911 912
# "-l 2 -r all" can take more than a day for some operations and is best
# run manually
913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011
FP_TL=-l 1

# $1 = tests, $2 = description
test-softfloat = $(call quiet-command, \
			cd $(BUILD_DIR)/tests/fp && \
			./fp-test -s $(FP_TL) $1 > $2.out 2>&1 || \
			(cat $2.out && exit 1;), \
			"FLOAT TEST", $2)

# Conversion Routines:
# FIXME: i32_to_extF80 (broken), i64_to_extF80 (broken)
#        ui32_to_f128 (not implemented), f128_to_ui32 (not implemented)
#        extF80_roundToInt (broken)
#
check-softfloat-conv: $(FP_TEST_BIN)
	$(call test-softfloat, \
		i32_to_f16 i64_to_f16 \
		i32_to_f32 i64_to_f32 \
		i32_to_f64 i64_to_f64 \
		i32_to_f128 i64_to_f128, int-to-float)
	$(call test-softfloat, \
		ui32_to_f16 ui64_to_f16 \
		ui32_to_f32 ui64_to_f32 \
		ui32_to_f64 ui64_to_f64 \
		ui64_to_f128, uint-to-float)
	$(call test-softfloat, \
		f16_to_i32 f16_to_i32_r_minMag \
		f32_to_i32 f32_to_i32_r_minMag \
		f64_to_i32 f64_to_i32_r_minMag \
		extF80_to_i32 extF80_to_i32_r_minMag \
		f128_to_i32 f128_to_i32_r_minMag \
		f16_to_i64 f16_to_i64_r_minMag \
		f32_to_i64 f32_to_i64_r_minMag \
		f64_to_i64 f64_to_i64_r_minMag \
		extF80_to_i64 extF80_to_i64_r_minMag \
		f128_to_i64 f128_to_i64_r_minMag, \
		float-to-int)
	$(call test-softfloat, \
		f16_to_ui32 f16_to_ui32_r_minMag \
		f32_to_ui32 f32_to_ui32_r_minMag \
		f64_to_ui32 f64_to_ui32_r_minMag \
		f16_to_ui64 f16_to_ui64_r_minMag \
		f32_to_ui64 f32_to_ui64_r_minMag \
		f64_to_ui64 f64_to_ui64_r_minMag, \
		float-to-uint)
	$(call test-softfloat, \
		f16_roundToInt f32_roundToInt \
		f64_roundToInt f128_roundToInt, \
		round-to-integer)

# Generic rule for all float operations
#
# Some patterns are overidden due to broken or missing tests.
# Hopefully these can be removed over time.

check-softfloat-%: $(FP_TEST_BIN)
	$(call test-softfloat, f16_$* f32_$* f64_$* extF80_$* f128_$*, $*)

# Float Compare routines
SF_COMPARE_OPS=eq eq_signaling le le_quiet lt_quiet
SF_COMPARE_RULES=$(patsubst %,check-softfloat-%, $(SF_COMPARE_OPS))

# FIXME: extF80_le_quiet (broken)
check-softfloat-le_quiet: $(FP_TEST_BIN)
	$(call test-softfloat, 				\
		f16_le_quiet f32_le_quiet f64_le_quiet  \
		f128_le_quiet, 				\
		le_quiet)

# FIXME: extF80_lt_quiet (broken)
check-softfloat-lt_quiet: $(FP_TEST_BIN)
	$(call test-softfloat, 				\
		f16_lt_quiet f32_lt_quiet f64_lt_quiet  \
		f128_lt_quiet, 				\
		lt_quiet)

.PHONY: check-softfloat-compare
check-softfloat-compare: $(SF_COMPARE_RULES)

# Math Operations

# FIXME: extF80_mulAdd (missing)
check-softfloat-mulAdd: $(FP_TEST_BIN)
	$(call test-softfloat, \
		f16_mulAdd f32_mulAdd f64_mulAdd f128_mulAdd, \
		mulAdd)

# FIXME: extF80_rem (broken)
check-softfloat-rem: $(FP_TEST_BIN)
	$(call test-softfloat, \
		f16_rem f32_rem f64_rem f128_rem, \
		rem)

SF_MATH_OPS=add sub mul mulAdd div rem sqrt
SF_MATH_RULES=$(patsubst %,check-softfloat-%, $(SF_MATH_OPS))

.PHONY: check-softfloat-ops
check-softfloat-ops: $(SF_MATH_RULES)

1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023
# Finally a generic rule to test all of softfoat. If TCG isnt't
# enabled we define a null operation which skips the tests.

.PHONY: check-softfloat
ifeq ($(CONFIG_TCG),y)
check-softfloat: check-softfloat-conv check-softfloat-compare check-softfloat-ops
else
check-softfloat:
	$(call quiet-command, /bin/true, "FLOAT TEST", \
		"SKIPPED for non-TCG builds")
endif

1024 1025
# Per guest TCG tests

1026
LINUX_USER_TARGETS=$(filter %-linux-user,$(TARGET_DIRS))
1027 1028 1029 1030
BUILD_TCG_TARGET_RULES=$(patsubst %,build-tcg-tests-%, $(LINUX_USER_TARGETS))
CLEAN_TCG_TARGET_RULES=$(patsubst %,clean-tcg-tests-%, $(LINUX_USER_TARGETS))
RUN_TCG_TARGET_RULES=$(patsubst %,run-tcg-tests-%, $(LINUX_USER_TARGETS))

1031 1032
ifeq ($(HAVE_USER_DOCKER),y)
# Probe for the Docker Builds needed for each build
1033
$(foreach PROBE_TARGET,$(TARGET_DIRS), 				\
1034 1035 1036 1037 1038
	$(eval -include $(SRC_PATH)/tests/tcg/Makefile.probe) 	\
	$(if $(DOCKER_PREREQ), 					\
		$(eval build-tcg-tests-$(PROBE_TARGET): $(DOCKER_PREREQ))))
endif

1039
build-tcg-tests-%:
1040 1041 1042
	$(call quiet-command,$(MAKE) $(SUBDIR_MAKEFLAGS) -C $* V="$(V)" \
		SKIP_DOCKER_BUILD=1 TARGET_DIR="$*/" guest-tests, \
		"BUILD", "TCG tests for $*")
1043 1044

run-tcg-tests-%: % build-tcg-tests-%
1045 1046 1047
	$(call quiet-command,$(MAKE) $(SUBDIR_MAKEFLAGS) -C $* V="$(V)" \
		SKIP_DOCKER_BUILD=1 TARGET_DIR="$*/" run-guest-tests, \
		"RUN", "TCG tests for $*")
1048 1049 1050 1051 1052 1053 1054 1055

clean-tcg-tests-%:
	$(call quiet-command,$(MAKE) $(SUBDIR_MAKEFLAGS) -C $* V="$(V)" TARGET_DIR="$*/" clean-guest-tests,)

.PHONY: build-tcg
build-tcg: $(BUILD_TCG_TARGET_RULES)

.PHONY: check-tcg
1056
check-tcg: check-softfloat $(RUN_TCG_TARGET_RULES)
1057 1058 1059

.PHONY: clean-tcg
clean-tcg: $(CLEAN_TCG_TARGET_RULES)
P
Paolo Bonzini 已提交
1060 1061 1062

# Other tests

1063
QEMU_IOTESTS_HELPERS-$(call land,$(CONFIG_SOFTMMU),$(CONFIG_LINUX)) = tests/qemu-iotests/socket_scm_helper$(EXESUF)
1064

P
Paolo Bonzini 已提交
1065
.PHONY: check-tests/qemu-iotests-quick.sh
1066
check-tests/qemu-iotests-quick.sh: tests/qemu-iotests-quick.sh qemu-img$(EXESUF) qemu-io$(EXESUF) $(QEMU_IOTESTS_HELPERS-y)
P
Paolo Bonzini 已提交
1067 1068
	$<

1069 1070
.PHONY: $(patsubst %, check-%, $(check-qapi-schema-y))
$(patsubst %, check-%, $(check-qapi-schema-y)): check-%.json: $(SRC_PATH)/%.json
1071
	$(call quiet-command, PYTHONPATH=$(SRC_PATH)/scripts \
M
Matthias Maier 已提交
1072
		$(PYTHON) $(SRC_PATH)/tests/qapi-schema/test-qapi.py \
1073
		$^ >$*.test.out 2>$*.test.err; \
1074
		echo $$? >$*.test.exit, \
1075
		"TEST","$*.out")
1076
	@# Sanitize error messages (make them independent of build directory)
1077 1078 1079
	@perl -p -e 's|\Q$(SRC_PATH)\E/||g' $*.test.err | diff -u $(SRC_PATH)/$*.err -
	@diff -u $(SRC_PATH)/$*.out $*.test.out
	@diff -u $(SRC_PATH)/$*.exit $*.test.exit
1080

1081 1082
.PHONY: check-tests/qapi-schema/doc-good.texi
check-tests/qapi-schema/doc-good.texi: tests/qapi-schema/doc-good.test.texi
1083
	@diff -u $(SRC_PATH)/tests/qapi-schema/doc-good.texi $<
1084

R
Richard Henderson 已提交
1085 1086 1087 1088 1089 1090 1091
.PHONY: check-decodetree
check-decodetree:
	$(call quiet-command, \
	  cd $(SRC_PATH)/tests/decode && \
          ./check.sh "$(PYTHON)" "$(SRC_PATH)/scripts/decodetree.py", \
          TEST, decodetree.py)

C
Cleber Rosa 已提交
1092 1093
# Python venv for running tests

1094
.PHONY: check-venv check-acceptance
C
Cleber Rosa 已提交
1095 1096 1097

TESTS_VENV_DIR=$(BUILD_DIR)/tests/venv
TESTS_VENV_REQ=$(SRC_PATH)/tests/requirements.txt
1098 1099 1100 1101 1102
TESTS_RESULTS_DIR=$(BUILD_DIR)/tests/results
# Controls the output generated by Avocado when running tests.
# Any number of command separated loggers are accepted.  For more
# information please refer to "avocado --help".
AVOCADO_SHOW=none
C
Cleber Rosa 已提交
1103

1104
ifneq ($(findstring v2,"v$(PYTHON_VERSION)"),v2)
C
Cleber Rosa 已提交
1105 1106 1107 1108 1109 1110 1111 1112 1113 1114 1115 1116 1117
$(TESTS_VENV_DIR): $(TESTS_VENV_REQ)
	$(call quiet-command, \
            $(PYTHON) -m venv --system-site-packages $@, \
            VENV, $@)
	$(call quiet-command, \
            $(TESTS_VENV_DIR)/bin/python -m pip -q install -r $(TESTS_VENV_REQ), \
            PIP, $(TESTS_VENV_REQ))
	$(call quiet-command, touch $@)
else
$(TESTS_VENV_DIR):
	$(error "venv directory for tests requires Python 3")
endif

1118 1119 1120 1121
$(TESTS_RESULTS_DIR):
	$(call quiet-command, mkdir -p $@, \
            MKDIR, $@)

C
Cleber Rosa 已提交
1122 1123
check-venv: $(TESTS_VENV_DIR)

1124 1125 1126 1127 1128 1129 1130
check-acceptance: check-venv $(TESTS_RESULTS_DIR)
	$(call quiet-command, \
            $(TESTS_VENV_DIR)/bin/python -m avocado \
            --show=$(AVOCADO_SHOW) run --job-results-dir=$(TESTS_RESULTS_DIR) \
            --failfast=on $(SRC_PATH)/tests/acceptance, \
            "AVOCADO", "tests/acceptance")

P
Paolo Bonzini 已提交
1131 1132
# Consolidated targets

W
Wenchao Xia 已提交
1133
.PHONY: check-qapi-schema check-qtest check-unit check check-clean
1134
check-qapi-schema: $(patsubst %,check-%, $(check-qapi-schema-y)) check-tests/qapi-schema/doc-good.texi
1135
check-qtest: $(patsubst %,check-qtest-%, $(QTEST_TARGETS))
P
Paolo Bonzini 已提交
1136
check-block: $(patsubst %,check-%, $(check-block-y))
1137
check: check-qapi-schema check-unit check-softfloat check-qtest check-decodetree
W
Wenchao Xia 已提交
1138
check-clean:
A
Andreas Färber 已提交
1139
	rm -rf $(check-unit-y) tests/*.o $(QEMU_IOTESTS_HELPERS-y)
1140
	rm -rf $(sort $(foreach target,$(SYSEMU_TARGET_LIST), $(check-qtest-$(target)-y)) $(check-qtest-generic-y))
1141
	rm -f tests/test-qapi-gen-timestamp
1142
	rm -rf $(TESTS_VENV_DIR) $(TESTS_RESULTS_DIR)
W
Wenchao Xia 已提交
1143 1144

clean: check-clean
1145

1146 1147 1148 1149
# Build the help program automatically

all: $(QEMU_IOTESTS_HELPERS-y)

1150
-include $(wildcard tests/*.d)
A
Anthony Liguori 已提交
1151
-include $(wildcard tests/libqos/*.d)
1152 1153

endif