Makefile.include 53.0 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)
73
check-unit-y += tests/test-bdrv-graph-mod$(EXESUF)
A
Alberto Garcia 已提交
74
check-unit-y += tests/test-blockjob$(EXESUF)
S
Stefan Hajnoczi 已提交
75
check-unit-y += tests/test-blockjob-txn$(EXESUF)
76
check-unit-y += tests/test-block-backend$(EXESUF)
77
check-unit-y += tests/test-block-iothread$(EXESUF)
78
check-unit-y += tests/test-image-locking$(EXESUF)
79 80
check-unit-y += tests/test-x86-cpuid$(EXESUF)
# all code tested by test-x86-cpuid is inside topology.h
81
ifeq ($(CONFIG_SOFTMMU),y)
O
Orit Wasserman 已提交
82
check-unit-y += tests/test-xbzrle$(EXESUF)
83 84
check-unit-$(CONFIG_POSIX) += tests/test-vmstate$(EXESUF)
endif
85
check-unit-y += tests/test-cutils$(EXESUF)
86
check-unit-y += tests/test-shift128$(EXESUF)
87
check-unit-y += tests/test-mul64$(EXESUF)
88 89
check-unit-y += tests/test-int128$(EXESUF)
# all code tested by test-int128 is inside int128.h
P
Paolo Bonzini 已提交
90
check-unit-y += tests/rcutorture$(EXESUF)
M
Mike Day 已提交
91
check-unit-y += tests/test-rcu-list$(EXESUF)
E
Emilio G. Cota 已提交
92
check-unit-y += tests/test-rcu-simpleq$(EXESUF)
E
Emilio G. Cota 已提交
93
check-unit-y += tests/test-rcu-tailq$(EXESUF)
E
Emilio G. Cota 已提交
94
check-unit-y += tests/test-qdist$(EXESUF)
E
Emilio G. Cota 已提交
95
check-unit-y += tests/test-qht$(EXESUF)
96
check-unit-y += tests/test-qht-par$(EXESUF)
97
check-unit-y += tests/test-bitops$(EXESUF)
A
Alex Bennée 已提交
98
check-unit-y += tests/test-bitcnt$(EXESUF)
99
check-unit-y += tests/test-qdev-global-props$(EXESUF)
I
Igor Mammedov 已提交
100
check-unit-y += tests/check-qom-interface$(EXESUF)
101
check-unit-y += tests/check-qom-proplist$(EXESUF)
L
Leandro Dorileo 已提交
102
check-unit-y += tests/test-qemu-opts$(EXESUF)
M
Markus Armbruster 已提交
103
check-unit-y += tests/test-keyval$(EXESUF)
104
check-unit-y += tests/test-write-threshold$(EXESUF)
105
check-unit-y += tests/test-crypto-hash$(EXESUF)
106
check-speed-y += tests/benchmark-crypto-hash$(EXESUF)
107
check-unit-y += tests/test-crypto-hmac$(EXESUF)
108
check-speed-y += tests/benchmark-crypto-hmac$(EXESUF)
109
check-unit-y += tests/test-crypto-cipher$(EXESUF)
110
check-speed-y += tests/benchmark-crypto-cipher$(EXESUF)
111
check-unit-y += tests/test-crypto-secret$(EXESUF)
112
check-unit-$(CONFIG_GNUTLS) += tests/test-crypto-tlscredsx509$(EXESUF)
113
check-unit-$(CONFIG_GNUTLS) += tests/test-crypto-tlssession$(EXESUF)
114
ifneq (,$(findstring qemu-ga,$(TOOLS)))
115
check-unit-$(call land,$(CONFIG_LINUX),$(CONFIG_VIRTIO_SERIAL)) += tests/test-qga$(EXESUF)
116
endif
117
check-unit-y += tests/test-timed-average$(EXESUF)
118
check-unit-$(CONFIG_INOTIFY1) += tests/test-util-filemonitor$(EXESUF)
119
check-unit-y += tests/test-util-sockets$(EXESUF)
120
check-unit-y += tests/test-authz-simple$(EXESUF)
121
check-unit-y += tests/test-authz-list$(EXESUF)
122
check-unit-y += tests/test-authz-listfile$(EXESUF)
123
check-unit-$(CONFIG_AUTH_PAM) += tests/test-authz-pam$(EXESUF)
124
check-unit-y += tests/test-io-task$(EXESUF)
125
check-unit-y += tests/test-io-channel-socket$(EXESUF)
D
Daniel P. Berrange 已提交
126
check-unit-y += tests/test-io-channel-file$(EXESUF)
D
Daniel P. Berrange 已提交
127
check-unit-$(CONFIG_GNUTLS) += tests/test-io-channel-tls$(EXESUF)
128
check-unit-y += tests/test-io-channel-command$(EXESUF)
129
check-unit-y += tests/test-io-channel-buffer$(EXESUF)
130
check-unit-y += tests/test-base64$(EXESUF)
131
check-unit-$(if $(CONFIG_NETTLE),y,$(CONFIG_GCRYPT)) += tests/test-crypto-pbkdf$(EXESUF)
132
check-unit-y += tests/test-crypto-ivgen$(EXESUF)
133
check-unit-y += tests/test-crypto-afsplit$(EXESUF)
134
check-unit-y += tests/test-crypto-xts$(EXESUF)
135
check-unit-y += tests/test-crypto-block$(EXESUF)
136
check-unit-y += tests/test-logging$(EXESUF)
137
check-unit-$(CONFIG_REPLICATION) += tests/test-replication$(EXESUF)
138
check-unit-y += tests/test-bufferiszero$(EXESUF)
F
Fam Zheng 已提交
139
check-unit-y += tests/test-uuid$(EXESUF)
P
Paolo Bonzini 已提交
140
check-unit-y += tests/ptimer-test$(EXESUF)
141
check-unit-y += tests/test-qapi-util$(EXESUF)
P
Paolo Bonzini 已提交
142 143 144

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

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

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

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

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

156 157 158
check-qtest-virtio-y += tests/virtio-net-test$(EXESUF)
check-qtest-virtio-y += tests/virtio-blk-test$(EXESUF)
check-qtest-virtio-y += tests/virtio-scsi-test$(EXESUF)
A
Andreas Färber 已提交
159

A
Andreas Färber 已提交
160
check-qtest-pci-y += tests/e1000-test$(EXESUF)
161
check-qtest-pci-$(CONFIG_RTL8139_PCI) += tests/rtl8139-test$(EXESUF)
162
check-qtest-pci-$(CONFIG_PCNET_PCI) += tests/pcnet-test$(EXESUF)
163
check-qtest-pci-$(CONFIG_EEPRO100_PCI) += tests/eepro100-test$(EXESUF)
164
check-qtest-pci-$(CONFIG_NE2000_PCI) += tests/ne2000-test$(EXESUF)
165
check-qtest-pci-$(CONFIG_NVME_PCI) += tests/nvme-test$(EXESUF)
166
check-qtest-pci-$(CONFIG_AC97) += tests/ac97-test$(EXESUF)
167
check-qtest-pci-$(CONFIG_ES1370) += tests/es1370-test$(EXESUF)
168
check-qtest-pci-$(CONFIG_VIRTIO) += $(check-qtest-virtio-y)
169 170
check-qtest-pci-$(CONFIG_IPACK) += tests/tpci200-test$(EXESUF)
check-qtest-pci-$(CONFIG_IPACK) += $(check-qtest-ipack-y)
171
check-qtest-pci-$(CONFIG_VGA) += tests/display-vga-test$(EXESUF)
172
check-qtest-pci-$(CONFIG_HDA) += tests/intel-hda-test$(EXESUF)
173
check-qtest-pci-$(CONFIG_IVSHMEM_DEVICE) += tests/ivshmem-test$(EXESUF)
174
check-qtest-pci-$(CONFIG_MEGASAS_SCSI_PCI) += tests/megasas-test$(EXESUF)
A
Andreas Färber 已提交
175

176
check-qtest-i386-$(CONFIG_ISA_TESTDEV) = tests/endianness-test$(EXESUF)
177
check-qtest-i386-y += tests/fdc-test$(EXESUF)
K
Kevin Wolf 已提交
178
check-qtest-i386-y += tests/ide-test$(EXESUF)
179
check-qtest-i386-y += tests/ahci-test$(EXESUF)
180
check-qtest-i386-y += tests/hd-geo-test$(EXESUF)
181
check-qtest-i386-y += tests/boot-order-test$(EXESUF)
182
check-qtest-i386-y += tests/bios-tables-test$(EXESUF)
183
check-qtest-i386-$(CONFIG_SGA) += tests/boot-serial-test$(EXESUF)
184
check-qtest-i386-$(CONFIG_SLIRP) += tests/pxe-test$(EXESUF)
185
check-qtest-i386-y += tests/rtc-test$(EXESUF)
186
check-qtest-i386-$(CONFIG_ISA_IPMI_KCS) += tests/ipmi-kcs-test$(EXESUF)
P
Peter Maydell 已提交
187
# Disabled temporarily as it fails intermittently especially under NetBSD VM
188
# check-qtest-i386-$(CONFIG_ISA_IPMI_BT) += tests/ipmi-bt-test$(EXESUF)
189
check-qtest-i386-y += tests/i440fx-test$(EXESUF)
A
Anthony Liguori 已提交
190
check-qtest-i386-y += tests/fw_cfg-test$(EXESUF)
191
check-qtest-i386-y += tests/device-plug-test$(EXESUF)
192
check-qtest-i386-y += tests/drive_del-test$(EXESUF)
193
check-qtest-i386-$(CONFIG_WDT_IB700) += tests/wdt_ib700-test$(EXESUF)
194
check-qtest-i386-y += tests/tco-test$(EXESUF)
A
Andreas Färber 已提交
195
check-qtest-i386-y += $(check-qtest-pci-y)
196
check-qtest-i386-$(CONFIG_VMXNET3_PCI) += tests/vmxnet3-test$(EXESUF)
197
check-qtest-i386-$(CONFIG_PVPANIC) += tests/pvpanic-test$(EXESUF)
198
check-qtest-i386-$(CONFIG_I82801B11) += tests/i82801b11-test$(EXESUF)
199
check-qtest-i386-$(CONFIG_IOH3420) += tests/ioh3420-test$(EXESUF)
200
check-qtest-i386-$(CONFIG_USB_OHCI) += tests/usb-hcd-ohci-test$(EXESUF)
201
check-qtest-i386-$(CONFIG_USB_UHCI) += tests/usb-hcd-uhci-test$(EXESUF)
202
ifeq ($(CONFIG_USB_ECHI)$(CONFIG_USB_UHCI),yy)
A
Andreas Färber 已提交
203
check-qtest-i386-y += tests/usb-hcd-ehci-test$(EXESUF)
204
endif
205
check-qtest-i386-$(CONFIG_USB_XHCI_NEC) += tests/usb-hcd-xhci-test$(EXESUF)
206
check-qtest-i386-y += tests/cpu-plug-test$(EXESUF)
G
Gerd Hoffmann 已提交
207
check-qtest-i386-y += tests/q35-test$(EXESUF)
208
check-qtest-i386-y += tests/vmgenid-test$(EXESUF)
209
check-qtest-i386-$(CONFIG_VHOST_NET_USER) += tests/vhost-user-test$(EXESUF)
210 211 212 213
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)
214
check-qtest-i386-$(CONFIG_SLIRP) += tests/test-netfilter$(EXESUF)
215
check-qtest-i386-$(CONFIG_POSIX) += tests/test-filter-mirror$(EXESUF)
216
check-qtest-i386-$(CONFIG_RTL8139_PCI) += tests/test-filter-redirector$(EXESUF)
217
check-qtest-i386-y += tests/migration-test$(EXESUF)
218
check-qtest-i386-y += tests/test-announce-self$(EXESUF)
219
check-qtest-i386-y += tests/test-x86-cpuid-compat$(EXESUF)
220
check-qtest-i386-y += tests/numa-test$(EXESUF)
M
Marc-André Lureau 已提交
221
check-qtest-x86_64-y += $(check-qtest-i386-y)
222

223
check-qtest-alpha-y += tests/boot-serial-test$(EXESUF)
224
check-qtest-alpha-$(CONFIG_VGA) += tests/display-vga-test$(EXESUF)
225

226
check-qtest-hppa-y += tests/boot-serial-test$(EXESUF)
227
check-qtest-hppa-$(CONFIG_VGA) += tests/display-vga-test$(EXESUF)
228

229 230
check-qtest-m68k-y = tests/boot-serial-test$(EXESUF)

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

233
check-qtest-mips-$(CONFIG_ISA_TESTDEV) = tests/endianness-test$(EXESUF)
234
check-qtest-mips-$(CONFIG_VGA) += tests/display-vga-test$(EXESUF)
235 236

check-qtest-mips64-$(CONFIG_ISA_TESTDEV) = tests/endianness-test$(EXESUF)
237
check-qtest-mips64-$(CONFIG_VGA) += tests/display-vga-test$(EXESUF)
238 239

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

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

244
check-qtest-ppc-$(CONFIG_ISA_TESTDEV) = tests/endianness-test$(EXESUF)
245 246 247
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)
248
check-qtest-ppc-y += tests/boot-serial-test$(EXESUF)
249
check-qtest-ppc-$(CONFIG_M48T59) += tests/m48t59-test$(EXESUF)
250

251
check-qtest-ppc64-y += $(check-qtest-ppc-y)
252
check-qtest-ppc64-$(CONFIG_PSERIES) += tests/spapr-phb-test$(EXESUF)
253
check-qtest-ppc64-$(CONFIG_PSERIES) += tests/device-plug-test$(EXESUF)
254
check-qtest-ppc64-$(CONFIG_POWERNV) += tests/pnv-xscom-test$(EXESUF)
255
check-qtest-ppc64-y += tests/migration-test$(EXESUF)
256
check-qtest-ppc64-y += tests/test-announce-self$(EXESUF)
257
check-qtest-ppc64-$(CONFIG_PSERIES) += tests/rtas-test$(EXESUF)
258
check-qtest-ppc64-$(CONFIG_SLIRP) += tests/pxe-test$(EXESUF)
259
check-qtest-ppc64-$(CONFIG_USB_OHCI) += tests/usb-hcd-ohci-test$(EXESUF)
260
check-qtest-ppc64-$(CONFIG_USB_UHCI) += tests/usb-hcd-uhci-test$(EXESUF)
261
check-qtest-ppc64-$(CONFIG_USB_XHCI_NEC) += tests/usb-hcd-xhci-test$(EXESUF)
262
check-qtest-ppc64-$(CONFIG_VIRTIO) += $(check-qtest-virtio-y)
263
check-qtest-ppc64-$(CONFIG_SLIRP) += tests/test-netfilter$(EXESUF)
264
check-qtest-ppc64-$(CONFIG_POSIX) += tests/test-filter-mirror$(EXESUF)
265
check-qtest-ppc64-$(CONFIG_RTL8139_PCI) += tests/test-filter-redirector$(EXESUF)
266
check-qtest-ppc64-$(CONFIG_VGA) += tests/display-vga-test$(EXESUF)
267
check-qtest-ppc64-y += tests/numa-test$(EXESUF)
268
check-qtest-ppc64-$(CONFIG_IVSHMEM_DEVICE) += tests/ivshmem-test$(EXESUF)
269
check-qtest-ppc64-y += tests/cpu-plug-test$(EXESUF)
270

271 272 273 274
check-qtest-sh4-$(CONFIG_ISA_TESTDEV) = tests/endianness-test$(EXESUF)

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

275
check-qtest-sparc-y += tests/prom-env-test$(EXESUF)
276
check-qtest-sparc-y += tests/m48t59-test$(EXESUF)
277
check-qtest-sparc-y += tests/boot-serial-test$(EXESUF)
278

279
check-qtest-sparc64-$(CONFIG_ISA_TESTDEV) = tests/endianness-test$(EXESUF)
280
check-qtest-sparc64-y += tests/prom-env-test$(EXESUF)
281
check-qtest-sparc64-y += tests/boot-serial-test$(EXESUF)
282

283
check-qtest-arm-y += tests/tmp105-test$(EXESUF)
284
check-qtest-arm-y += tests/pca9552-test$(EXESUF)
T
Thomas Huth 已提交
285
check-qtest-arm-y += tests/ds1338-test$(EXESUF)
286
check-qtest-arm-y += tests/microbit-test$(EXESUF)
C
Cédric Le Goater 已提交
287
check-qtest-arm-y += tests/m25p80-test$(EXESUF)
288
check-qtest-arm-$(CONFIG_VIRTIO_BLK) += tests/virtio-blk-test$(EXESUF)
289
check-qtest-arm-y += tests/test-arm-mptimer$(EXESUF)
290
check-qtest-arm-y += tests/boot-serial-test$(EXESUF)
291
check-qtest-arm-y += tests/hexloader-test$(EXESUF)
292

293
check-qtest-aarch64-y = tests/numa-test$(EXESUF)
294
check-qtest-aarch64-y += tests/boot-serial-test$(EXESUF)
W
Wei Huang 已提交
295
check-qtest-aarch64-y += tests/migration-test$(EXESUF)
296

297
check-qtest-microblazeel-y += $(check-qtest-microblaze-y)
298

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

301
check-qtest-s390x-y = tests/boot-serial-test$(EXESUF)
302
check-qtest-s390x-$(CONFIG_SLIRP) += tests/pxe-test$(EXESUF)
303 304 305
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)
306
check-qtest-s390x-y += tests/drive_del-test$(EXESUF)
307
check-qtest-s390x-y += tests/device-plug-test$(EXESUF)
308
check-qtest-s390x-y += tests/virtio-ccw-test$(EXESUF)
309
check-qtest-s390x-y += tests/cpu-plug-test$(EXESUF)
310
check-qtest-s390x-y += tests/migration-test$(EXESUF)
311

312
check-qtest-generic-y += tests/machine-none-test$(EXESUF)
M
Markus Armbruster 已提交
313
check-qtest-generic-y += tests/qom-test$(EXESUF)
314
check-qtest-generic-y += tests/test-hmp$(EXESUF)
315

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


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

497 498 499 500 501 502 503 504 505 506 507 508
GENERATED_FILES += tests/test-qapi-types.h \
	tests/include/test-qapi-types-sub-module.h \
	tests/test-qapi-types-sub-sub-module.h \
	tests/test-qapi-visit.h \
	tests/include/test-qapi-visit-sub-module.h \
	tests/test-qapi-visit-sub-sub-module.h \
	tests/test-qapi-commands.h \
	tests/include/test-qapi-commands-sub-module.h \
	tests/test-qapi-commands-sub-sub-module.h \
	tests/test-qapi-events.h \
	tests/include/test-qapi-events-sub-module.h \
	tests/test-qapi-events-sub-sub-module.h \
509
	tests/test-qapi-introspect.h
P
Paolo Bonzini 已提交
510

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

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

532 533

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

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

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

593 594 595
tests/fp/%:
	$(MAKE) -C $(dir $@) $(notdir $@)

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

611 612
tests/test-logging$(EXESUF): tests/test-logging.o $(test-util-obj-y)

613 614 615
tests/test-replication$(EXESUF): tests/test-replication.o $(test-util-obj-y) \
	$(test-block-obj-y)

616
tests/test-qapi-types.c tests/test-qapi-types.h \
617 618 619 620
tests/include/test-qapi-types-sub-module.c \
tests/include/test-qapi-types-sub-module.h \
tests/test-qapi-types-sub-sub-module.c \
tests/test-qapi-types-sub-sub-module.h \
621
tests/test-qapi-visit.c tests/test-qapi-visit.h \
622 623 624 625
tests/include/test-qapi-visit-sub-module.c \
tests/include/test-qapi-visit-sub-module.h \
tests/test-qapi-visit-sub-sub-module.c \
tests/test-qapi-visit-sub-sub-module.h \
626
tests/test-qapi-commands.h tests/test-qapi-commands.c \
627 628 629 630
tests/include/test-qapi-commands-sub-module.h \
tests/include/test-qapi-commands-sub-module.c \
tests/test-qapi-commands-sub-sub-module.h \
tests/test-qapi-commands-sub-sub-module.c \
631
tests/test-qapi-events.c tests/test-qapi-events.h \
632 633 634 635
tests/include/test-qapi-events-sub-module.c \
tests/include/test-qapi-events-sub-module.h \
tests/test-qapi-events-sub-sub-module.c \
tests/test-qapi-events-sub-sub-module.h \
636
tests/test-qapi-introspect.c tests/test-qapi-introspect.h: \
637
tests/test-qapi-gen-timestamp ;
638 639 640 641 642
tests/test-qapi-gen-timestamp: \
		$(SRC_PATH)/tests/qapi-schema/qapi-schema-test.json \
		$(SRC_PATH)/tests/qapi-schema/include/sub-module.json \
		$(SRC_PATH)/tests/qapi-schema/sub-sub-module.json \
		$(qapi-py)
M
Matthias Maier 已提交
643
	$(call quiet-command,$(PYTHON) $(SRC_PATH)/scripts/qapi-gen.py \
644 645 646 647 648
		-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 已提交
649
	$(call quiet-command,$(PYTHON) $(SRC_PATH)/scripts/qapi-gen.py \
650
		-o tests/qapi-schema -p "doc-good-" $<, \
651
		"GEN","$@")
652 653
	@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]
654

655 656
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)
657
tests/test-qmp-event$(EXESUF): tests/test-qmp-event.o $(test-qapi-obj-y) tests/test-qapi-events.o
658
tests/test-qobject-output-visitor$(EXESUF): tests/test-qobject-output-visitor.o $(test-qapi-obj-y)
E
Eric Blake 已提交
659
tests/test-clone-visitor$(EXESUF): tests/test-clone-visitor.o $(test-qapi-obj-y)
660
tests/test-qobject-input-visitor$(EXESUF): tests/test-qobject-input-visitor.o $(test-qapi-obj-y)
661
tests/test-qmp-cmds$(EXESUF): tests/test-qmp-cmds.o tests/test-qapi-commands.o $(test-qapi-obj-y)
662 663
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)
664

665
tests/test-shift128$(EXESUF): tests/test-shift128.o $(test-util-obj-y)
666 667
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 已提交
668
tests/test-bitcnt$(EXESUF): tests/test-bitcnt.o $(test-util-obj-y)
669
tests/test-crypto-hash$(EXESUF): tests/test-crypto-hash.o $(test-crypto-obj-y)
670
tests/benchmark-crypto-hash$(EXESUF): tests/benchmark-crypto-hash.o $(test-crypto-obj-y)
671
tests/test-crypto-hmac$(EXESUF): tests/test-crypto-hmac.o $(test-crypto-obj-y)
672
tests/benchmark-crypto-hmac$(EXESUF): tests/benchmark-crypto-hmac.o $(test-crypto-obj-y)
673
tests/test-crypto-cipher$(EXESUF): tests/test-crypto-cipher.o $(test-crypto-obj-y)
674
tests/benchmark-crypto-cipher$(EXESUF): tests/benchmark-crypto-cipher.o $(test-crypto-obj-y)
675
tests/test-crypto-secret$(EXESUF): tests/test-crypto-secret.o $(test-crypto-obj-y)
676
tests/test-crypto-xts$(EXESUF): tests/test-crypto-xts.o $(test-crypto-obj-y)
677 678 679 680 681 682

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)
683 684
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)
685 686

tests/test-crypto-tlssession.o-cflags := $(TASN1_CFLAGS)
687
tests/test-crypto-tlssession$(EXESUF): tests/test-crypto-tlssession.o \
688 689 690
	tests/crypto-tls-x509-helpers.o tests/pkix_asn1_tab.o \
	tests/crypto-tls-psk-helpers.o \
        $(test-crypto-obj-y)
691 692
tests/test-util-filemonitor$(EXESUF): tests/test-util-filemonitor.o \
	$(test-util-obj-y)
693 694
tests/test-util-sockets$(EXESUF): tests/test-util-sockets.o \
	tests/socket-helpers.o $(test-util-obj-y)
695
tests/test-authz-simple$(EXESUF): tests/test-authz-simple.o $(test-authz-obj-y)
696
tests/test-authz-list$(EXESUF): tests/test-authz-list.o $(test-authz-obj-y)
697
tests/test-authz-listfile$(EXESUF): tests/test-authz-listfile.o $(test-authz-obj-y)
698
tests/test-authz-pam$(EXESUF): tests/test-authz-pam.o $(test-authz-obj-y)
699
tests/test-io-task$(EXESUF): tests/test-io-task.o $(test-io-obj-y)
700
tests/test-io-channel-socket$(EXESUF): tests/test-io-channel-socket.o \
701
        tests/io-channel-helpers.o tests/socket-helpers.o $(test-io-obj-y)
702
tests/tpm-crb-swtpm-test$(EXESUF): tests/tpm-crb-swtpm-test.o tests/tpm-emu.o \
703
	tests/tpm-util.o tests/tpm-tests.o $(test-io-obj-y)
704
tests/tpm-crb-test$(EXESUF): tests/tpm-crb-test.o tests/tpm-emu.o $(test-io-obj-y)
705 706
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)
707
tests/tpm-tis-test$(EXESUF): tests/tpm-tis-test.o tests/tpm-emu.o $(test-io-obj-y)
D
Daniel P. Berrange 已提交
708 709
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 已提交
710 711 712
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)
713 714
tests/test-io-channel-command$(EXESUF): tests/test-io-channel-command.o \
        tests/io-channel-helpers.o $(test-io-obj-y)
715 716
tests/test-io-channel-buffer$(EXESUF): tests/test-io-channel-buffer.o \
        tests/io-channel-helpers.o $(test-io-obj-y)
717
tests/test-crypto-pbkdf$(EXESUF): tests/test-crypto-pbkdf.o $(test-crypto-obj-y)
718
tests/test-crypto-ivgen$(EXESUF): tests/test-crypto-ivgen.o $(test-crypto-obj-y)
719
tests/test-crypto-afsplit$(EXESUF): tests/test-crypto-afsplit.o $(test-crypto-obj-y)
720
tests/test-crypto-block$(EXESUF): tests/test-crypto-block.o $(test-crypto-obj-y)
721

722 723 724 725
libqgraph-obj-y = tests/libqos/qgraph.o

libqos-obj-y = $(libqgraph-obj-y) tests/libqos/pci.o tests/libqos/fw_cfg.o
libqos-obj-y += tests/libqos/malloc.o tests/libqos/malloc-generic.o
J
John Snow 已提交
726
libqos-obj-y += tests/libqos/i2c.o tests/libqos/libqos.o
727 728
libqos-spapr-obj-y = $(libqos-obj-y) tests/libqos/malloc-spapr.o
libqos-spapr-obj-y += tests/libqos/libqos-spapr.o
729
libqos-spapr-obj-y += tests/libqos/rtas.o
L
Laurent Vivier 已提交
730
libqos-spapr-obj-y += tests/libqos/pci-spapr.o
731
libqos-pc-obj-y = $(libqos-obj-y) tests/libqos/pci-pc.o
J
John Snow 已提交
732
libqos-pc-obj-y += tests/libqos/malloc-pc.o tests/libqos/libqos-pc.o
J
John Snow 已提交
733
libqos-pc-obj-y += tests/libqos/ahci.o
A
Andreas Färber 已提交
734
libqos-omap-obj-y = $(libqos-obj-y) tests/libqos/i2c-omap.o
735
libqos-imx-obj-y = $(libqos-obj-y) tests/libqos/i2c-imx.o
736
libqos-usb-obj-y = $(libqos-spapr-obj-y) $(libqos-pc-obj-y) tests/libqos/usb.o
737 738
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

739 740
# Devices
qos-test-obj-y = tests/qos-test.o $(libqgraph-obj-y)
741
qos-test-obj-y += $(libqos-pc-obj-y) $(libqos-spapr-obj-y)
742
qos-test-obj-y += tests/libqos/e1000e.o
743
qos-test-obj-y += tests/libqos/sdhci.o
744
qos-test-obj-y += $(libqos-virtio-obj-y)
745
qos-test-obj-$(CONFIG_VIRTFS) += tests/libqos/virtio-9p.o
746
qos-test-obj-y += tests/libqos/virtio-balloon.o
747
qos-test-obj-y += tests/libqos/virtio-rng.o
748
qos-test-obj-y += tests/libqos/virtio-serial.o
749

750
# Machines
751
qos-test-obj-y += tests/libqos/aarch64-xlnx-zcu102-machine.o
752
qos-test-obj-y += tests/libqos/arm-raspi2-machine.o
753
qos-test-obj-y += tests/libqos/arm-sabrelite-machine.o
754
qos-test-obj-y += tests/libqos/arm-smdkc210-machine.o
755
qos-test-obj-y += tests/libqos/arm-virt-machine.o
756
qos-test-obj-y += tests/libqos/arm-xilinx-zynq-a9-machine.o
757
qos-test-obj-y += tests/libqos/ppc64_pseries-machine.o
758 759
qos-test-obj-y += tests/libqos/x86_64_pc-machine.o

760
# Tests
761
qos-test-obj-y += tests/e1000e-test.o
762
qos-test-obj-y += tests/pci-test.o
763
qos-test-obj-y += tests/sdhci-test.o
764
qos-test-obj-y += tests/virtio-test.o
765
qos-test-obj-$(CONFIG_VIRTFS) += tests/virtio-9p-test.o
766
qos-test-obj-y += tests/virtio-rng-test.o
767
qos-test-obj-y += tests/virtio-serial-test.o
768

769 770 771 772
check-unit-y += tests/test-qgraph$(EXESUF)
tests/test-qgraph$(EXESUF): tests/test-qgraph.o $(libqgraph-obj-y)

check-qtest-generic-y += tests/qos-test$(EXESUF)
773
tests/qos-test$(EXESUF): $(qos-test-obj-y)
774

775
tests/qmp-test$(EXESUF): tests/qmp-test.o
776
tests/qmp-cmd-test$(EXESUF): tests/qmp-cmd-test.o
777
tests/device-introspect-test$(EXESUF): tests/device-introspect-test.o
778 779
tests/rtc-test$(EXESUF): tests/rtc-test.o
tests/m48t59-test$(EXESUF): tests/m48t59-test.o
780
tests/hexloader-test$(EXESUF): tests/hexloader-test.o
781
tests/endianness-test$(EXESUF): tests/endianness-test.o
782
tests/spapr-phb-test$(EXESUF): tests/spapr-phb-test.o $(libqos-obj-y)
783
tests/prom-env-test$(EXESUF): tests/prom-env-test.o $(libqos-obj-y)
784
tests/rtas-test$(EXESUF): tests/rtas-test.o $(libqos-spapr-obj-y)
785
tests/fdc-test$(EXESUF): tests/fdc-test.o
K
Kevin Wolf 已提交
786
tests/ide-test$(EXESUF): tests/ide-test.o $(libqos-pc-obj-y)
J
John Snow 已提交
787
tests/ahci-test$(EXESUF): tests/ahci-test.o $(libqos-pc-obj-y)
C
Corey Minyard 已提交
788 789
tests/ipmi-kcs-test$(EXESUF): tests/ipmi-kcs-test.o
tests/ipmi-bt-test$(EXESUF): tests/ipmi-bt-test.o
790
tests/hd-geo-test$(EXESUF): tests/hd-geo-test.o
791
tests/boot-order-test$(EXESUF): tests/boot-order-test.o $(libqos-obj-y)
792
tests/boot-serial-test$(EXESUF): tests/boot-serial-test.o $(libqos-obj-y)
793
tests/bios-tables-test$(EXESUF): tests/bios-tables-test.o \
794
	tests/boot-sector.o tests/acpi-utils.o $(libqos-obj-y)
795
tests/pxe-test$(EXESUF): tests/pxe-test.o tests/boot-sector.o $(libqos-obj-y)
A
Andreas Färber 已提交
796
tests/tmp105-test$(EXESUF): tests/tmp105-test.o $(libqos-omap-obj-y)
797
tests/pca9552-test$(EXESUF): tests/pca9552-test.o $(libqos-omap-obj-y)
798
tests/ds1338-test$(EXESUF): tests/ds1338-test.o $(libqos-imx-obj-y)
799
tests/microbit-test$(EXESUF): tests/microbit-test.o
C
Cédric Le Goater 已提交
800
tests/m25p80-test$(EXESUF): tests/m25p80-test.o
801
tests/i440fx-test$(EXESUF): tests/i440fx-test.o $(libqos-pc-obj-y)
G
Gerd Hoffmann 已提交
802
tests/q35-test$(EXESUF): tests/q35-test.o $(libqos-pc-obj-y)
A
Anthony Liguori 已提交
803
tests/fw_cfg-test$(EXESUF): tests/fw_cfg-test.o $(libqos-pc-obj-y)
A
Andreas Färber 已提交
804
tests/e1000-test$(EXESUF): tests/e1000-test.o
805
tests/rtl8139-test$(EXESUF): tests/rtl8139-test.o $(libqos-pc-obj-y)
A
Andreas Färber 已提交
806
tests/pcnet-test$(EXESUF): tests/pcnet-test.o
807
tests/pnv-xscom-test$(EXESUF): tests/pnv-xscom-test.o
A
Andreas Färber 已提交
808
tests/eepro100-test$(EXESUF): tests/eepro100-test.o
A
Andreas Färber 已提交
809
tests/vmxnet3-test$(EXESUF): tests/vmxnet3-test.o
A
Andreas Färber 已提交
810
tests/ne2000-test$(EXESUF): tests/ne2000-test.o
P
Paolo Bonzini 已提交
811
tests/wdt_ib700-test$(EXESUF): tests/wdt_ib700-test.o
812
tests/tco-test$(EXESUF): tests/tco-test.o $(libqos-pc-obj-y)
813
tests/virtio-blk-test$(EXESUF): tests/virtio-blk-test.o $(libqos-virtio-obj-y)
814
tests/virtio-ccw-test$(EXESUF): tests/virtio-ccw-test.o
815
tests/virtio-net-test$(EXESUF): tests/virtio-net-test.o $(libqos-pc-obj-y) $(libqos-virtio-obj-y)
816
tests/virtio-scsi-test$(EXESUF): tests/virtio-scsi-test.o $(libqos-virtio-obj-y)
A
Andreas Färber 已提交
817
tests/tpci200-test$(EXESUF): tests/tpci200-test.o
G
Gerd Hoffmann 已提交
818
tests/display-vga-test$(EXESUF): tests/display-vga-test.o
A
Andreas Färber 已提交
819
tests/ipoctal232-test$(EXESUF): tests/ipoctal232-test.o
A
Andreas Färber 已提交
820
tests/qom-test$(EXESUF): tests/qom-test.o
821
tests/test-hmp$(EXESUF): tests/test-hmp.o
822
tests/machine-none-test$(EXESUF): tests/machine-none-test.o
823
tests/device-plug-test$(EXESUF): tests/device-plug-test.o
824
tests/drive_del-test$(EXESUF): tests/drive_del-test.o $(libqos-virtio-obj-y)
825
tests/nvme-test$(EXESUF): tests/nvme-test.o $(libqos-pc-obj-y)
A
Andreas Färber 已提交
826
tests/pvpanic-test$(EXESUF): tests/pvpanic-test.o
A
Andreas Färber 已提交
827
tests/i82801b11-test$(EXESUF): tests/i82801b11-test.o
A
Andreas Färber 已提交
828
tests/ac97-test$(EXESUF): tests/ac97-test.o
A
Andreas Färber 已提交
829
tests/es1370-test$(EXESUF): tests/es1370-test.o
A
Andreas Färber 已提交
830
tests/intel-hda-test$(EXESUF): tests/intel-hda-test.o
A
Andreas Färber 已提交
831
tests/ioh3420-test$(EXESUF): tests/ioh3420-test.o
832
tests/usb-hcd-ohci-test$(EXESUF): tests/usb-hcd-ohci-test.o $(libqos-usb-obj-y)
833
tests/usb-hcd-uhci-test$(EXESUF): tests/usb-hcd-uhci-test.o $(libqos-usb-obj-y)
834
tests/usb-hcd-ehci-test$(EXESUF): tests/usb-hcd-ehci-test.o $(libqos-usb-obj-y)
835
tests/usb-hcd-xhci-test$(EXESUF): tests/usb-hcd-xhci-test.o $(libqos-usb-obj-y)
836
tests/cpu-plug-test$(EXESUF): tests/cpu-plug-test.o
837
tests/migration-test$(EXESUF): tests/migration-test.o
838
tests/test-announce-self$(EXESUF): tests/test-announce-self.o
839
tests/vhost-user-test$(EXESUF): tests/vhost-user-test.o $(test-util-obj-y) \
M
Marc-André Lureau 已提交
840 841
	$(qtest-obj-y) $(test-io-obj-y) $(libqos-virtio-obj-y) $(libqos-pc-obj-y) \
	$(chardev-obj-y)
842
tests/qemu-iotests/socket_scm_helper$(EXESUF): tests/qemu-iotests/socket_scm_helper.o
843
tests/test-qemu-opts$(EXESUF): tests/test-qemu-opts.o $(test-util-obj-y)
844
tests/test-keyval$(EXESUF): tests/test-keyval.o $(test-util-obj-y) $(test-qapi-obj-y)
845
tests/test-write-threshold$(EXESUF): tests/test-write-threshold.o $(test-block-obj-y)
846
tests/test-netfilter$(EXESUF): tests/test-netfilter.o $(qtest-obj-y)
847
tests/test-filter-mirror$(EXESUF): tests/test-filter-mirror.o $(qtest-obj-y)
848
tests/test-filter-redirector$(EXESUF): tests/test-filter-redirector.o $(qtest-obj-y)
849
tests/test-x86-cpuid-compat$(EXESUF): tests/test-x86-cpuid-compat.o $(qtest-obj-y)
850
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 已提交
851
tests/megasas-test$(EXESUF): tests/megasas-test.o $(libqos-spapr-obj-y) $(libqos-pc-obj-y)
852
tests/vhost-user-bridge$(EXESUF): tests/vhost-user-bridge.o $(test-util-obj-y) libvhost-user.a
F
Fam Zheng 已提交
853
tests/test-uuid$(EXESUF): tests/test-uuid.o $(test-util-obj-y)
854
tests/test-arm-mptimer$(EXESUF): tests/test-arm-mptimer.o
855
tests/test-qapi-util$(EXESUF): tests/test-qapi-util.o $(test-util-obj-y)
856
tests/numa-test$(EXESUF): tests/numa-test.o
857
tests/vmgenid-test$(EXESUF): tests/vmgenid-test.o tests/boot-sector.o tests/acpi-utils.o
858
tests/cdrom-test$(EXESUF): tests/cdrom-test.o tests/boot-sector.o $(libqos-obj-y)
B
Blue Swirl 已提交
859

860
tests/migration/stress$(EXESUF): tests/migration/stress.o
861
	$(call quiet-command, $(LINKPROG) -static -O3 $(PTHREAD_LIB) -o $@ $< ,"LINK","$(TARGET_DIR)$@")
862 863 864 865 866 867 868 869 870 871

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)

872 873
# QTest rules

874
TARGETS=$(patsubst %-softmmu,%, $(filter %-softmmu,$(TARGET_DIRS)))
875
ifeq ($(CONFIG_POSIX),y)
M
Markus Armbruster 已提交
876
QTEST_TARGETS = $(TARGETS)
877
check-qtest-y=$(foreach TARGET,$(TARGETS), $(check-qtest-$(TARGET)-y))
M
Markus Armbruster 已提交
878 879 880
check-qtest-y += $(check-qtest-generic-y)
else
QTEST_TARGETS =
881
endif
882

883
qtest-obj-y = tests/libqtest.o $(test-util-obj-y)
884 885
$(check-qtest-y): $(qtest-obj-y)

886 887
tests/test-qga$(EXESUF): qemu-ga$(EXESUF)
tests/test-qga$(EXESUF): tests/test-qga.o $(qtest-obj-y)
888

P
Paolo Bonzini 已提交
889
SPEED = quick
890

P
Paolo Bonzini 已提交
891
# gtester tests, possibly with verbose output
892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924
# 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
925

926
.PHONY: $(patsubst %, check-qtest-%, $(QTEST_TARGETS))
927
$(patsubst %, check-qtest-%, $(QTEST_TARGETS)): check-qtest-%: subdir-%-softmmu $(check-qtest-y)
928 929 930
	$(call do_test_human,$(check-qtest-$*-y) $(check-qtest-generic-y), \
	  QTEST_QEMU_BINARY=$*-softmmu/qemu-system-$* \
	  QTEST_QEMU_IMG=qemu-img$(EXESUF))
931

932 933
check-unit: $(check-unit-y)
	$(call do_test_human, $^)
934

935 936
check-speed: $(check-speed-y)
	$(call do_test_human, $^)
K
Kevin Wolf 已提交
937

938
# gtester tests with TAP output
939

940 941 942 943
$(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 已提交
944

945 946
check-report-unit.tap: $(check-unit-y)
	$(call do_test_tap,$^)
K
Kevin Wolf 已提交
947

948
# Reports and overall runs
K
Kevin Wolf 已提交
949

950 951
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 已提交
952

953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969
# 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
970 971
# "-l 2 -r all" can take more than a day for some operations and is best
# run manually
972
FP_TL=-l 1 -r all
973

974
# $1 = tests, $2 = description, $3 = test flags
975 976
test-softfloat = $(call quiet-command, \
			cd $(BUILD_DIR)/tests/fp && \
977
			./fp-test -s $(if $3,$3,$(FP_TL)) $1 > $2.out 2>&1 || \
978 979 980 981 982
			(cat $2.out && exit 1;), \
			"FLOAT TEST", $2)

# Conversion Routines:
# FIXME: i32_to_extF80 (broken), i64_to_extF80 (broken)
983
#        ui32_to_f128 (not implemented), extF80_roundToInt (broken)
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
#
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 \
1012
		f128_to_ui32 f128_to_ui32_r_minMag \
1013 1014
		f16_to_ui64 f16_to_ui64_r_minMag \
		f32_to_ui64 f32_to_ui64_r_minMag \
1015 1016
		f64_to_ui64 f64_to_ui64_r_minMag \
		f128_to_ui64 f128_to_ui64_r_minMag, \
1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 1041 1042 1043 1044 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057
		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, \
1058
		mulAdd,-l 1)
1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071

# 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)

1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083
# 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

1084 1085
# Per guest TCG tests

1086
LINUX_USER_TARGETS=$(filter %-linux-user,$(TARGET_DIRS))
1087 1088 1089 1090
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))

1091 1092
ifeq ($(HAVE_USER_DOCKER),y)
# Probe for the Docker Builds needed for each build
1093
$(foreach PROBE_TARGET,$(TARGET_DIRS), 				\
1094 1095 1096 1097 1098
	$(eval -include $(SRC_PATH)/tests/tcg/Makefile.probe) 	\
	$(if $(DOCKER_PREREQ), 					\
		$(eval build-tcg-tests-$(PROBE_TARGET): $(DOCKER_PREREQ))))
endif

1099
build-tcg-tests-%:
1100 1101 1102
	$(call quiet-command,$(MAKE) $(SUBDIR_MAKEFLAGS) -C $* V="$(V)" \
		SKIP_DOCKER_BUILD=1 TARGET_DIR="$*/" guest-tests, \
		"BUILD", "TCG tests for $*")
1103 1104

run-tcg-tests-%: % build-tcg-tests-%
1105 1106 1107
	$(call quiet-command,$(MAKE) $(SUBDIR_MAKEFLAGS) -C $* V="$(V)" \
		SKIP_DOCKER_BUILD=1 TARGET_DIR="$*/" run-guest-tests, \
		"RUN", "TCG tests for $*")
1108 1109 1110 1111 1112 1113 1114 1115

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
1116
check-tcg: check-softfloat $(RUN_TCG_TARGET_RULES)
1117 1118 1119

.PHONY: clean-tcg
clean-tcg: $(CLEAN_TCG_TARGET_RULES)
P
Paolo Bonzini 已提交
1120 1121 1122

# Other tests

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

P
Paolo Bonzini 已提交
1125
.PHONY: check-tests/qemu-iotests-quick.sh
1126
check-tests/qemu-iotests-quick.sh: tests/qemu-iotests-quick.sh qemu-img$(EXESUF) qemu-io$(EXESUF) $(QEMU_IOTESTS_HELPERS-y)
P
Paolo Bonzini 已提交
1127 1128
	$<

1129 1130
.PHONY: $(patsubst %, check-%, $(check-qapi-schema-y))
$(patsubst %, check-%, $(check-qapi-schema-y)): check-%.json: $(SRC_PATH)/%.json
1131
	$(call quiet-command, PYTHONPATH=$(SRC_PATH)/scripts \
M
Matthias Maier 已提交
1132
		$(PYTHON) $(SRC_PATH)/tests/qapi-schema/test-qapi.py \
1133
		$^ >$*.test.out 2>$*.test.err; \
1134
		echo $$? >$*.test.exit, \
1135
		"TEST","$*.out")
1136
	@# Sanitize error messages (make them independent of build directory)
1137 1138 1139
	@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
1140

1141 1142
.PHONY: check-tests/qapi-schema/doc-good.texi
check-tests/qapi-schema/doc-good.texi: tests/qapi-schema/doc-good.test.texi
1143
	@diff -u $(SRC_PATH)/tests/qapi-schema/doc-good.texi $<
1144

R
Richard Henderson 已提交
1145 1146 1147 1148 1149 1150 1151
.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 已提交
1152 1153
# Python venv for running tests

1154
.PHONY: check-venv check-acceptance
C
Cleber Rosa 已提交
1155 1156 1157

TESTS_VENV_DIR=$(BUILD_DIR)/tests/venv
TESTS_VENV_REQ=$(SRC_PATH)/tests/requirements.txt
1158 1159 1160 1161 1162
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 已提交
1163

1164
ifneq ($(findstring v2,"v$(PYTHON_VERSION)"),v2)
C
Cleber Rosa 已提交
1165 1166 1167 1168 1169 1170 1171 1172 1173 1174 1175 1176 1177
$(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

1178 1179 1180 1181
$(TESTS_RESULTS_DIR):
	$(call quiet-command, mkdir -p $@, \
            MKDIR, $@)

C
Cleber Rosa 已提交
1182 1183
check-venv: $(TESTS_VENV_DIR)

1184 1185 1186 1187 1188 1189 1190
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 已提交
1191 1192
# Consolidated targets

W
Wenchao Xia 已提交
1193
.PHONY: check-qapi-schema check-qtest check-unit check check-clean
1194
check-qapi-schema: $(patsubst %,check-%, $(check-qapi-schema-y)) check-tests/qapi-schema/doc-good.texi
1195
check-qtest: $(patsubst %,check-qtest-%, $(QTEST_TARGETS))
P
Paolo Bonzini 已提交
1196
check-block: $(patsubst %,check-%, $(check-block-y))
1197
check: check-qapi-schema check-unit check-softfloat check-qtest check-decodetree
W
Wenchao Xia 已提交
1198
check-clean:
A
Andreas Färber 已提交
1199
	rm -rf $(check-unit-y) tests/*.o $(QEMU_IOTESTS_HELPERS-y)
1200
	rm -rf $(sort $(foreach target,$(SYSEMU_TARGET_LIST), $(check-qtest-$(target)-y)) $(check-qtest-generic-y))
1201
	rm -f tests/test-qapi-gen-timestamp
1202
	rm -rf $(TESTS_VENV_DIR) $(TESTS_RESULTS_DIR)
W
Wenchao Xia 已提交
1203 1204

clean: check-clean
1205

1206 1207 1208 1209
# Build the help program automatically

all: $(QEMU_IOTESTS_HELPERS-y)

1210
-include $(wildcard tests/*.d)
A
Anthony Liguori 已提交
1211
-include $(wildcard tests/libqos/*.d)
1212 1213

endif