Makefile.include 52.4 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)

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

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

216
check-qtest-alpha-y += tests/boot-serial-test$(EXESUF)
217
check-qtest-alpha-$(CONFIG_VGA) += tests/display-vga-test$(EXESUF)
218

219
check-qtest-hppa-y += tests/boot-serial-test$(EXESUF)
220
check-qtest-hppa-$(CONFIG_VGA) += tests/display-vga-test$(EXESUF)
221

222 223
check-qtest-m68k-y = tests/boot-serial-test$(EXESUF)

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

226
check-qtest-mips-$(CONFIG_ISA_TESTDEV) = tests/endianness-test$(EXESUF)
227
check-qtest-mips-$(CONFIG_VGA) += tests/display-vga-test$(EXESUF)
228 229

check-qtest-mips64-$(CONFIG_ISA_TESTDEV) = tests/endianness-test$(EXESUF)
230
check-qtest-mips64-$(CONFIG_VGA) += tests/display-vga-test$(EXESUF)
231 232

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

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

237
check-qtest-ppc-$(CONFIG_ISA_TESTDEV) = tests/endianness-test$(EXESUF)
238 239 240
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)
241
check-qtest-ppc-y += tests/boot-serial-test$(EXESUF)
242
check-qtest-ppc-$(CONFIG_M48T59) += tests/m48t59-test$(EXESUF)
243

244
check-qtest-ppc64-y += $(check-qtest-ppc-y)
245
check-qtest-ppc64-$(CONFIG_PSERIES) += tests/spapr-phb-test$(EXESUF)
246
check-qtest-ppc64-$(CONFIG_PSERIES) += tests/device-plug-test$(EXESUF)
247
check-qtest-ppc64-$(CONFIG_POWERNV) += tests/pnv-xscom-test$(EXESUF)
248
check-qtest-ppc64-y += tests/migration-test$(EXESUF)
249
check-qtest-ppc64-y += tests/test-announce-self$(EXESUF)
250
check-qtest-ppc64-$(CONFIG_PSERIES) += tests/rtas-test$(EXESUF)
251
check-qtest-ppc64-$(CONFIG_SLIRP) += tests/pxe-test$(EXESUF)
252
check-qtest-ppc64-$(CONFIG_USB_OHCI) += tests/usb-hcd-ohci-test$(EXESUF)
253
check-qtest-ppc64-$(CONFIG_USB_UHCI) += tests/usb-hcd-uhci-test$(EXESUF)
254
check-qtest-ppc64-$(CONFIG_USB_XHCI_NEC) += tests/usb-hcd-xhci-test$(EXESUF)
255
check-qtest-ppc64-$(CONFIG_SLIRP) += tests/test-netfilter$(EXESUF)
256
check-qtest-ppc64-$(CONFIG_POSIX) += tests/test-filter-mirror$(EXESUF)
257
check-qtest-ppc64-$(CONFIG_RTL8139_PCI) += tests/test-filter-redirector$(EXESUF)
258
check-qtest-ppc64-$(CONFIG_VGA) += tests/display-vga-test$(EXESUF)
259
check-qtest-ppc64-y += tests/numa-test$(EXESUF)
260
check-qtest-ppc64-$(CONFIG_IVSHMEM_DEVICE) += tests/ivshmem-test$(EXESUF)
261
check-qtest-ppc64-y += tests/cpu-plug-test$(EXESUF)
262

263 264 265 266
check-qtest-sh4-$(CONFIG_ISA_TESTDEV) = tests/endianness-test$(EXESUF)

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

267
check-qtest-sparc-y += tests/prom-env-test$(EXESUF)
268
check-qtest-sparc-y += tests/m48t59-test$(EXESUF)
269
check-qtest-sparc-y += tests/boot-serial-test$(EXESUF)
270

271
check-qtest-sparc64-$(CONFIG_ISA_TESTDEV) = tests/endianness-test$(EXESUF)
272
check-qtest-sparc64-y += tests/prom-env-test$(EXESUF)
273
check-qtest-sparc64-y += tests/boot-serial-test$(EXESUF)
274

275
check-qtest-arm-y += tests/tmp105-test$(EXESUF)
276
check-qtest-arm-y += tests/pca9552-test$(EXESUF)
T
Thomas Huth 已提交
277
check-qtest-arm-y += tests/ds1338-test$(EXESUF)
278
check-qtest-arm-y += tests/microbit-test$(EXESUF)
C
Cédric Le Goater 已提交
279
check-qtest-arm-y += tests/m25p80-test$(EXESUF)
280
check-qtest-arm-y += tests/test-arm-mptimer$(EXESUF)
281
check-qtest-arm-y += tests/boot-serial-test$(EXESUF)
282
check-qtest-arm-y += tests/hexloader-test$(EXESUF)
283

284
check-qtest-aarch64-y = tests/numa-test$(EXESUF)
285
check-qtest-aarch64-y += tests/boot-serial-test$(EXESUF)
W
Wei Huang 已提交
286
check-qtest-aarch64-y += tests/migration-test$(EXESUF)
287

288
check-qtest-microblazeel-y += $(check-qtest-microblaze-y)
289

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

292
check-qtest-s390x-y = tests/boot-serial-test$(EXESUF)
293
check-qtest-s390x-$(CONFIG_SLIRP) += tests/pxe-test$(EXESUF)
294 295 296
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)
297
check-qtest-s390x-y += tests/drive_del-test$(EXESUF)
298
check-qtest-s390x-y += tests/device-plug-test$(EXESUF)
299
check-qtest-s390x-y += tests/virtio-ccw-test$(EXESUF)
300
check-qtest-s390x-y += tests/cpu-plug-test$(EXESUF)
301
check-qtest-s390x-y += tests/migration-test$(EXESUF)
302

303
check-qtest-generic-y += tests/machine-none-test$(EXESUF)
M
Markus Armbruster 已提交
304
check-qtest-generic-y += tests/qom-test$(EXESUF)
305
check-qtest-generic-y += tests/test-hmp$(EXESUF)
306

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


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

488 489 490 491 492 493 494 495 496 497 498 499
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 \
500
	tests/test-qapi-introspect.h
P
Paolo Bonzini 已提交
501

502
test-obj-y = tests/check-qnum.o tests/check-qstring.o tests/check-qdict.o \
503
	tests/check-qlist.o tests/check-qnull.o tests/check-qobject.o \
504
	tests/check-qjson.o tests/check-qlit.o \
505
	tests/check-block-qtest.o \
P
Paolo Bonzini 已提交
506
	tests/test-coroutine.o tests/test-string-output-visitor.o \
507
	tests/test-string-input-visitor.o tests/test-qobject-output-visitor.o \
E
Eric Blake 已提交
508
	tests/test-clone-visitor.o \
509
	tests/test-qobject-input-visitor.o \
510
	tests/test-qmp-cmds.o tests/test-visitor-serialization.o \
511
	tests/test-x86-cpuid.o tests/test-mul64.o tests/test-int128.o \
P
Paolo Bonzini 已提交
512
	tests/test-opts-visitor.o tests/test-qmp-event.o \
E
Emilio G. Cota 已提交
513
	tests/rcutorture.o tests/test-rcu-list.o \
E
Emilio G. Cota 已提交
514
	tests/test-rcu-simpleq.o \
E
Emilio G. Cota 已提交
515
	tests/test-rcu-tailq.o \
516
	tests/test-qdist.o tests/test-shift128.o \
E
Emilio G. Cota 已提交
517
	tests/test-qht.o tests/qht-bench.o tests/test-qht-par.o \
E
Emilio G. Cota 已提交
518
	tests/atomic_add-bench.o tests/atomic64-bench.o
P
Paolo Bonzini 已提交
519 520

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

523 524

# Deps that are common to various different sets of tests below
P
Paolo Bonzini 已提交
525
test-util-obj-y = libqemuutil.a
526
test-qom-obj-y = $(qom-obj-y) $(test-util-obj-y)
527 528 529 530 531 532
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 \
533
	tests/test-qapi-introspect.o \
534
	$(test-qom-obj-y)
535 536
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)
537
test-io-obj-y = $(io-obj-y) $(test-crypto-obj-y)
538
test-authz-obj-y = $(test-qom-obj-y) $(authz-obj-y)
539
test-block-obj-y = $(block-obj-y) $(test-io-obj-y) tests/iothread.o
540

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

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

584 585 586
tests/fp/%:
	$(MAKE) -C $(dir $@) $(notdir $@)

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

602 603
tests/test-logging$(EXESUF): tests/test-logging.o $(test-util-obj-y)

604 605 606
tests/test-replication$(EXESUF): tests/test-replication.o $(test-util-obj-y) \
	$(test-block-obj-y)

607
tests/test-qapi-types.c tests/test-qapi-types.h \
608 609 610 611
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 \
612
tests/test-qapi-visit.c tests/test-qapi-visit.h \
613 614 615 616
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 \
617
tests/test-qapi-commands.h tests/test-qapi-commands.c \
618 619 620 621
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 \
622
tests/test-qapi-events.c tests/test-qapi-events.h \
623 624 625 626
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 \
627
tests/test-qapi-introspect.c tests/test-qapi-introspect.h: \
628
tests/test-qapi-gen-timestamp ;
629 630 631 632 633
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 已提交
634
	$(call quiet-command,$(PYTHON) $(SRC_PATH)/scripts/qapi-gen.py \
635 636 637 638 639
		-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 已提交
640
	$(call quiet-command,$(PYTHON) $(SRC_PATH)/scripts/qapi-gen.py \
641
		-o tests/qapi-schema -p "doc-good-" $<, \
642
		"GEN","$@")
643 644
	@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]
645

646 647
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)
648
tests/test-qmp-event$(EXESUF): tests/test-qmp-event.o $(test-qapi-obj-y) tests/test-qapi-events.o
649
tests/test-qobject-output-visitor$(EXESUF): tests/test-qobject-output-visitor.o $(test-qapi-obj-y)
E
Eric Blake 已提交
650
tests/test-clone-visitor$(EXESUF): tests/test-clone-visitor.o $(test-qapi-obj-y)
651
tests/test-qobject-input-visitor$(EXESUF): tests/test-qobject-input-visitor.o $(test-qapi-obj-y)
652
tests/test-qmp-cmds$(EXESUF): tests/test-qmp-cmds.o tests/test-qapi-commands.o $(test-qapi-obj-y)
653 654
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)
655

656
tests/test-shift128$(EXESUF): tests/test-shift128.o $(test-util-obj-y)
657 658
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 已提交
659
tests/test-bitcnt$(EXESUF): tests/test-bitcnt.o $(test-util-obj-y)
660
tests/test-crypto-hash$(EXESUF): tests/test-crypto-hash.o $(test-crypto-obj-y)
661
tests/benchmark-crypto-hash$(EXESUF): tests/benchmark-crypto-hash.o $(test-crypto-obj-y)
662
tests/test-crypto-hmac$(EXESUF): tests/test-crypto-hmac.o $(test-crypto-obj-y)
663
tests/benchmark-crypto-hmac$(EXESUF): tests/benchmark-crypto-hmac.o $(test-crypto-obj-y)
664
tests/test-crypto-cipher$(EXESUF): tests/test-crypto-cipher.o $(test-crypto-obj-y)
665
tests/benchmark-crypto-cipher$(EXESUF): tests/benchmark-crypto-cipher.o $(test-crypto-obj-y)
666
tests/test-crypto-secret$(EXESUF): tests/test-crypto-secret.o $(test-crypto-obj-y)
667
tests/test-crypto-xts$(EXESUF): tests/test-crypto-xts.o $(test-crypto-obj-y)
668 669 670 671 672 673

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)
674 675
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)
676 677

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

713 714 715
libqgraph-obj-y = tests/libqos/qgraph.o

libqos-obj-y = $(libqgraph-obj-y) tests/libqos/pci.o tests/libqos/fw_cfg.o
P
Paolo Bonzini 已提交
716
libqos-obj-y += tests/libqos/malloc.o
J
John Snow 已提交
717
libqos-obj-y += tests/libqos/i2c.o tests/libqos/libqos.o
718 719
libqos-spapr-obj-y = $(libqos-obj-y) tests/libqos/malloc-spapr.o
libqos-spapr-obj-y += tests/libqos/libqos-spapr.o
720
libqos-spapr-obj-y += tests/libqos/rtas.o
L
Laurent Vivier 已提交
721
libqos-spapr-obj-y += tests/libqos/pci-spapr.o
722
libqos-pc-obj-y = $(libqos-obj-y) tests/libqos/pci-pc.o
J
John Snow 已提交
723
libqos-pc-obj-y += tests/libqos/malloc-pc.o tests/libqos/libqos-pc.o
J
John Snow 已提交
724
libqos-pc-obj-y += tests/libqos/ahci.o
A
Andreas Färber 已提交
725
libqos-omap-obj-y = $(libqos-obj-y) tests/libqos/i2c-omap.o
726
libqos-imx-obj-y = $(libqos-obj-y) tests/libqos/i2c-imx.o
727
libqos-usb-obj-y = $(libqos-spapr-obj-y) $(libqos-pc-obj-y) tests/libqos/usb.o
728

729 730
# Devices
qos-test-obj-y = tests/qos-test.o $(libqgraph-obj-y)
731
qos-test-obj-y += $(libqos-pc-obj-y) $(libqos-spapr-obj-y)
732
qos-test-obj-y += tests/libqos/e1000e.o
733
qos-test-obj-y += tests/libqos/sdhci.o
734
qos-test-obj-y += tests/libqos/virtio.o
735
qos-test-obj-$(CONFIG_VIRTFS) += tests/libqos/virtio-9p.o
736
qos-test-obj-y += tests/libqos/virtio-balloon.o
737
qos-test-obj-y += tests/libqos/virtio-blk.o
738
qos-test-obj-y += tests/libqos/virtio-mmio.o
739
qos-test-obj-y += tests/libqos/virtio-net.o
740
qos-test-obj-y += tests/libqos/virtio-pci.o
741
qos-test-obj-y += tests/libqos/virtio-rng.o
742
qos-test-obj-y += tests/libqos/virtio-scsi.o
743
qos-test-obj-y += tests/libqos/virtio-serial.o
744

745
# Machines
746
qos-test-obj-y += tests/libqos/aarch64-xlnx-zcu102-machine.o
747
qos-test-obj-y += tests/libqos/arm-raspi2-machine.o
748
qos-test-obj-y += tests/libqos/arm-sabrelite-machine.o
749
qos-test-obj-y += tests/libqos/arm-smdkc210-machine.o
750
qos-test-obj-y += tests/libqos/arm-virt-machine.o
751
qos-test-obj-y += tests/libqos/arm-xilinx-zynq-a9-machine.o
752
qos-test-obj-y += tests/libqos/ppc64_pseries-machine.o
753 754
qos-test-obj-y += tests/libqos/x86_64_pc-machine.o

755
# Tests
756
qos-test-obj-y += tests/ac97-test.o
757
qos-test-obj-y += tests/e1000e-test.o
758
qos-test-obj-y += tests/pci-test.o
759
qos-test-obj-y += tests/sdhci-test.o
P
Paolo Bonzini 已提交
760
qos-test-obj-$(CONFIG_VHOST_NET_USER) += tests/vhost-user-test.o $(chardev-obj-y) $(test-io-obj-y)
761
qos-test-obj-y += tests/virtio-test.o
762
qos-test-obj-$(CONFIG_VIRTFS) += tests/virtio-9p-test.o
P
Paolo Bonzini 已提交
763
qos-test-obj-y += tests/virtio-blk-test.o
764
qos-test-obj-y += tests/virtio-net-test.o
765
qos-test-obj-y += tests/virtio-rng-test.o
766
qos-test-obj-y += tests/virtio-scsi-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-ccw-test$(EXESUF): tests/virtio-ccw-test.o
A
Andreas Färber 已提交
814
tests/tpci200-test$(EXESUF): tests/tpci200-test.o
G
Gerd Hoffmann 已提交
815
tests/display-vga-test$(EXESUF): tests/display-vga-test.o
A
Andreas Färber 已提交
816
tests/ipoctal232-test$(EXESUF): tests/ipoctal232-test.o
A
Andreas Färber 已提交
817
tests/qom-test$(EXESUF): tests/qom-test.o
818
tests/test-hmp$(EXESUF): tests/test-hmp.o
819
tests/machine-none-test$(EXESUF): tests/machine-none-test.o
820
tests/device-plug-test$(EXESUF): tests/device-plug-test.o
821
tests/drive_del-test$(EXESUF): tests/drive_del-test.o
822
tests/nvme-test$(EXESUF): tests/nvme-test.o $(libqos-pc-obj-y)
A
Andreas Färber 已提交
823
tests/pvpanic-test$(EXESUF): tests/pvpanic-test.o
A
Andreas Färber 已提交
824
tests/i82801b11-test$(EXESUF): tests/i82801b11-test.o
A
Andreas Färber 已提交
825
tests/es1370-test$(EXESUF): tests/es1370-test.o
A
Andreas Färber 已提交
826
tests/intel-hda-test$(EXESUF): tests/intel-hda-test.o
A
Andreas Färber 已提交
827
tests/ioh3420-test$(EXESUF): tests/ioh3420-test.o
828
tests/usb-hcd-ohci-test$(EXESUF): tests/usb-hcd-ohci-test.o $(libqos-usb-obj-y)
829
tests/usb-hcd-uhci-test$(EXESUF): tests/usb-hcd-uhci-test.o $(libqos-usb-obj-y)
830
tests/usb-hcd-ehci-test$(EXESUF): tests/usb-hcd-ehci-test.o $(libqos-usb-obj-y)
831
tests/usb-hcd-xhci-test$(EXESUF): tests/usb-hcd-xhci-test.o $(libqos-usb-obj-y)
832
tests/cpu-plug-test$(EXESUF): tests/cpu-plug-test.o
833
tests/migration-test$(EXESUF): tests/migration-test.o
834
tests/test-announce-self$(EXESUF): tests/test-announce-self.o
835
tests/qemu-iotests/socket_scm_helper$(EXESUF): tests/qemu-iotests/socket_scm_helper.o
836
tests/test-qemu-opts$(EXESUF): tests/test-qemu-opts.o $(test-util-obj-y)
837
tests/test-keyval$(EXESUF): tests/test-keyval.o $(test-util-obj-y) $(test-qapi-obj-y)
838
tests/test-write-threshold$(EXESUF): tests/test-write-threshold.o $(test-block-obj-y)
839
tests/test-netfilter$(EXESUF): tests/test-netfilter.o $(qtest-obj-y)
840
tests/test-filter-mirror$(EXESUF): tests/test-filter-mirror.o $(qtest-obj-y)
841
tests/test-filter-redirector$(EXESUF): tests/test-filter-redirector.o $(qtest-obj-y)
842
tests/test-x86-cpuid-compat$(EXESUF): tests/test-x86-cpuid-compat.o $(qtest-obj-y)
843
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 已提交
844
tests/megasas-test$(EXESUF): tests/megasas-test.o $(libqos-spapr-obj-y) $(libqos-pc-obj-y)
845
tests/vhost-user-bridge$(EXESUF): tests/vhost-user-bridge.o $(test-util-obj-y) libvhost-user.a
F
Fam Zheng 已提交
846
tests/test-uuid$(EXESUF): tests/test-uuid.o $(test-util-obj-y)
847
tests/test-arm-mptimer$(EXESUF): tests/test-arm-mptimer.o
848
tests/test-qapi-util$(EXESUF): tests/test-qapi-util.o $(test-util-obj-y)
849
tests/numa-test$(EXESUF): tests/numa-test.o
850
tests/vmgenid-test$(EXESUF): tests/vmgenid-test.o tests/boot-sector.o tests/acpi-utils.o
851
tests/cdrom-test$(EXESUF): tests/cdrom-test.o tests/boot-sector.o $(libqos-obj-y)
B
Blue Swirl 已提交
852

853
tests/migration/stress$(EXESUF): tests/migration/stress.o
854
	$(call quiet-command, $(LINKPROG) -static -O3 $(PTHREAD_LIB) -o $@ $< ,"LINK","$(TARGET_DIR)$@")
855 856 857 858 859 860 861 862 863 864

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)

865 866
# QTest rules

867
TARGETS=$(patsubst %-softmmu,%, $(filter %-softmmu,$(TARGET_DIRS)))
868
ifeq ($(CONFIG_POSIX),y)
M
Markus Armbruster 已提交
869
QTEST_TARGETS = $(TARGETS)
870
check-qtest-y=$(foreach TARGET,$(TARGETS), $(check-qtest-$(TARGET)-y))
M
Markus Armbruster 已提交
871 872 873
check-qtest-y += $(check-qtest-generic-y)
else
QTEST_TARGETS =
874
endif
875

876
qtest-obj-y = tests/libqtest.o $(test-util-obj-y)
877 878
$(check-qtest-y): $(qtest-obj-y)

879 880
tests/test-qga$(EXESUF): qemu-ga$(EXESUF)
tests/test-qga$(EXESUF): tests/test-qga.o $(qtest-obj-y)
881

P
Paolo Bonzini 已提交
882
SPEED = quick
883

P
Paolo Bonzini 已提交
884
# gtester tests, possibly with verbose output
885 886 887 888 889 890 891 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
# 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
918

919
.PHONY: $(patsubst %, check-qtest-%, $(QTEST_TARGETS))
920
$(patsubst %, check-qtest-%, $(QTEST_TARGETS)): check-qtest-%: subdir-%-softmmu $(check-qtest-y)
921 922 923
	$(call do_test_human,$(check-qtest-$*-y) $(check-qtest-generic-y), \
	  QTEST_QEMU_BINARY=$*-softmmu/qemu-system-$* \
	  QTEST_QEMU_IMG=qemu-img$(EXESUF))
924

925 926
check-unit: $(check-unit-y)
	$(call do_test_human, $^)
927

928 929
check-speed: $(check-speed-y)
	$(call do_test_human, $^)
K
Kevin Wolf 已提交
930

931
# gtester tests with TAP output
932

933 934 935 936
$(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 已提交
937

938 939
check-report-unit.tap: $(check-unit-y)
	$(call do_test_tap,$^)
K
Kevin Wolf 已提交
940

941
# Reports and overall runs
K
Kevin Wolf 已提交
942

943 944
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 已提交
945

946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962
# 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
963 964
# "-l 2 -r all" can take more than a day for some operations and is best
# run manually
965
FP_TL=-l 1 -r all
966

967
# $1 = tests, $2 = description, $3 = test flags
968 969
test-softfloat = $(call quiet-command, \
			cd $(BUILD_DIR)/tests/fp && \
970
			./fp-test -s $(if $3,$3,$(FP_TL)) $1 > $2.out 2>&1 || \
971 972 973 974 975
			(cat $2.out && exit 1;), \
			"FLOAT TEST", $2)

# Conversion Routines:
# FIXME: i32_to_extF80 (broken), i64_to_extF80 (broken)
976
#        ui32_to_f128 (not implemented), extF80_roundToInt (broken)
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
#
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 \
1005
		f128_to_ui32 f128_to_ui32_r_minMag \
1006 1007
		f16_to_ui64 f16_to_ui64_r_minMag \
		f32_to_ui64 f32_to_ui64_r_minMag \
1008 1009
		f64_to_ui64 f64_to_ui64_r_minMag \
		f128_to_ui64 f128_to_ui64_r_minMag, \
1010 1011 1012 1013 1014 1015 1016 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
		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, \
1051
		mulAdd,-l 1)
1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064

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

1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076
# 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

1077 1078
# Per guest TCG tests

1079
LINUX_USER_TARGETS=$(filter %-linux-user,$(TARGET_DIRS))
1080 1081 1082 1083
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))

1084 1085
ifeq ($(HAVE_USER_DOCKER),y)
# Probe for the Docker Builds needed for each build
1086
$(foreach PROBE_TARGET,$(TARGET_DIRS), 				\
1087 1088 1089 1090 1091
	$(eval -include $(SRC_PATH)/tests/tcg/Makefile.probe) 	\
	$(if $(DOCKER_PREREQ), 					\
		$(eval build-tcg-tests-$(PROBE_TARGET): $(DOCKER_PREREQ))))
endif

1092
build-tcg-tests-%:
1093 1094 1095
	$(call quiet-command,$(MAKE) $(SUBDIR_MAKEFLAGS) -C $* V="$(V)" \
		SKIP_DOCKER_BUILD=1 TARGET_DIR="$*/" guest-tests, \
		"BUILD", "TCG tests for $*")
1096 1097

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

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
1109
check-tcg: check-softfloat $(RUN_TCG_TARGET_RULES)
1110 1111 1112

.PHONY: clean-tcg
clean-tcg: $(CLEAN_TCG_TARGET_RULES)
P
Paolo Bonzini 已提交
1113 1114 1115

# Other tests

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

P
Paolo Bonzini 已提交
1118
.PHONY: check-tests/qemu-iotests-quick.sh
1119
check-tests/qemu-iotests-quick.sh: tests/qemu-iotests-quick.sh qemu-img$(EXESUF) qemu-io$(EXESUF) $(QEMU_IOTESTS_HELPERS-y)
P
Paolo Bonzini 已提交
1120 1121
	$<

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

1134 1135
.PHONY: check-tests/qapi-schema/doc-good.texi
check-tests/qapi-schema/doc-good.texi: tests/qapi-schema/doc-good.test.texi
1136
	@diff -u $(SRC_PATH)/tests/qapi-schema/doc-good.texi $<
1137

R
Richard Henderson 已提交
1138 1139 1140 1141 1142 1143 1144
.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 已提交
1145 1146
# Python venv for running tests

1147
.PHONY: check-venv check-acceptance
C
Cleber Rosa 已提交
1148 1149 1150

TESTS_VENV_DIR=$(BUILD_DIR)/tests/venv
TESTS_VENV_REQ=$(SRC_PATH)/tests/requirements.txt
1151 1152 1153 1154 1155
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 已提交
1156

1157
ifneq ($(findstring v2,"v$(PYTHON_VERSION)"),v2)
C
Cleber Rosa 已提交
1158 1159 1160 1161 1162 1163 1164 1165 1166 1167 1168 1169 1170
$(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

1171 1172 1173 1174
$(TESTS_RESULTS_DIR):
	$(call quiet-command, mkdir -p $@, \
            MKDIR, $@)

C
Cleber Rosa 已提交
1175 1176
check-venv: $(TESTS_VENV_DIR)

1177 1178 1179 1180 1181 1182 1183
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 已提交
1184 1185
# Consolidated targets

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

clean: check-clean
1198

1199 1200 1201 1202
# Build the help program automatically

all: $(QEMU_IOTESTS_HELPERS-y)

1203
-include $(wildcard tests/*.d)
A
Anthony Liguori 已提交
1204
-include $(wildcard tests/libqos/*.d)
1205 1206

endif