xref: /aosp_15_r20/external/liburing/test/Makefile (revision 25da2bea747f3a93b4c30fd9708b0618ef55a0e6)
1prefix ?= /usr
2datadir ?= $(prefix)/share
3
4INSTALL=install
5
6ifneq ($(MAKECMDGOALS),clean)
7include ../config-host.mak
8endif
9
10CPPFLAGS ?=
11
12override CPPFLAGS += \
13	-D_GNU_SOURCE \
14	-D__SANE_USERSPACE_TYPES__ \
15	-I../src/include/ \
16	-include ../config-host.h
17
18CFLAGS ?= -g -O2 -Wall -Wextra
19XCFLAGS = -Wno-unused-parameter -Wno-sign-compare
20
21ifdef CONFIG_HAVE_STRINGOP_OVERFLOW
22	XCFLAGS += -Wstringop-overflow=0
23endif
24
25ifdef CONFIG_HAVE_ARRAY_BOUNDS
26	XCFLAGS += -Warray-bounds=0
27endif
28
29CXXFLAGS ?= $(CFLAGS)
30override CFLAGS += $(XCFLAGS) -DLIBURING_BUILD_TEST
31override CXXFLAGS += $(XCFLAGS) -std=c++11 -DLIBURING_BUILD_TEST
32
33LDFLAGS ?=
34override LDFLAGS += -L../src/ -luring -lpthread
35
36# Please keep this list sorted alphabetically.
37test_srcs := \
38	232c93d07b74.c \
39	35fa71a030ca.c \
40	500f9fbadef8.c \
41	7ad0e4b2f83c.c \
42	8a9973408177.c \
43	917257daa0fe.c \
44	a0908ae19763.c \
45	a4c0b3decb33.c \
46	accept.c \
47	accept-link.c \
48	accept-reuse.c \
49	accept-test.c \
50	across-fork.c \
51	b19062a56726.c \
52	b5837bd5311d.c \
53	buf-ring.c \
54	ce593a6c480a.c \
55	close-opath.c \
56	connect.c \
57	cq-full.c \
58	cq-overflow.c \
59	cq-peek-batch.c \
60	cq-ready.c \
61	cq-size.c \
62	d4ae271dfaae.c \
63	d77a67ed5f27.c \
64	defer.c \
65	double-poll-crash.c \
66	drop-submit.c \
67	eeed8b54e0df.c \
68	empty-eownerdead.c \
69	eventfd.c \
70	eventfd-disable.c \
71	eventfd-reg.c \
72	eventfd-ring.c \
73	exec-target.c \
74	exit-no-cleanup.c \
75	fadvise.c \
76	fallocate.c \
77	fc2a85cb02ef.c \
78	file-register.c \
79	files-exit-hang-poll.c \
80	files-exit-hang-timeout.c \
81	file-update.c \
82	file-verify.c \
83	fixed-buf-iter.c \
84	fixed-link.c \
85	fixed-reuse.c \
86	fpos.c \
87	fsync.c \
88	hardlink.c \
89	io-cancel.c \
90	iopoll.c \
91	io_uring_enter.c \
92	io_uring_register.c \
93	io_uring_setup.c \
94	lfs-openat.c \
95	lfs-openat-write.c \
96	link.c \
97	link_drain.c \
98	link-timeout.c \
99	madvise.c \
100	mkdir.c \
101	msg-ring.c \
102	multicqes_drain.c \
103	nop-all-sizes.c \
104	nop.c \
105	openat2.c \
106	open-close.c \
107	open-direct-link.c \
108	open-direct-pick.c \
109	personality.c \
110	pipe-eof.c \
111	pipe-reuse.c \
112	poll.c \
113	poll-cancel.c \
114	poll-cancel-all.c \
115	poll-cancel-ton.c \
116	poll-link.c \
117	poll-many.c \
118	poll-mshot-update.c \
119	poll-ring.c \
120	poll-v-poll.c \
121	pollfree.c \
122	probe.c \
123	read-before-exit.c \
124	read-write.c \
125	recv-msgall.c \
126	recv-msgall-stream.c \
127	register-restrictions.c \
128	rename.c \
129	ringbuf-read.c \
130	ring-leak2.c \
131	ring-leak.c \
132	rsrc_tags.c \
133	rw_merge_test.c \
134	self.c \
135	sendmsg_fs_cve.c \
136	send_recv.c \
137	send_recvmsg.c \
138	shared-wq.c \
139	short-read.c \
140	shutdown.c \
141	sigfd-deadlock.c \
142	skip-cqe.c \
143	socket.c \
144	socket-rw.c \
145	socket-rw-eagain.c \
146	socket-rw-offset.c \
147	splice.c \
148	sq-full.c \
149	sq-full-cpp.cc \
150	sqpoll-cancel-hang.c \
151	sqpoll-disable-exit.c \
152	sq-poll-dup.c \
153	sqpoll-exit-hang.c \
154	sq-poll-kthread.c \
155	sq-poll-share.c \
156	sqpoll-sleep.c \
157	sq-space_left.c \
158	stdout.c \
159	submit-link-fail.c \
160	submit-reuse.c \
161	symlink.c \
162	teardowns.c \
163	thread-exit.c \
164	timeout.c \
165	timeout-new.c \
166	timeout-overflow.c \
167	tty-write-dpoll.c \
168	unlink.c \
169	wakeup-hang.c \
170	xattr.c \
171	skip-cqe.c \
172	# EOL
173
174all_targets :=
175include ../Makefile.quiet
176
177ifdef CONFIG_HAVE_STATX
178	test_srcs += statx.c
179else ifdef CONFIG_HAVE_GLIBC_STATX
180	test_srcs += statx.c
181endif
182all_targets += statx.t
183
184ifdef CONFIG_HAVE_CXX
185	test_srcs += sq-full-cpp.cc
186endif
187all_targets += sq-full-cpp.t
188
189
190test_targets := $(patsubst %.c,%,$(test_srcs))
191test_targets := $(patsubst %.cc,%,$(test_targets))
192run_test_targets := $(patsubst %,%.run_test,$(test_targets))
193test_targets := $(patsubst %,%.t,$(test_targets))
194all_targets += $(test_targets)
195
196#
197# Build ../src/syscall.c manually from test's Makefile to support
198# liburing nolibc.
199#
200# Functions in ../src/syscall.c require libc to work with, if we
201# build liburing without libc, we don't have those functions
202# in liburing.a. So build it manually here.
203#
204helpers = helpers.o ../src/syscall.o
205
206all: $(test_targets)
207
208../src/syscall.o: ../src/syscall.c
209	$(QUIET_CC)$(CC) $(CPPFLAGS) $(CFLAGS) -o $@ -c $<
210
211helpers.o: helpers.c
212	$(QUIET_CC)$(CC) $(CPPFLAGS) $(CFLAGS) -o $@ -c $<
213
214%.t: %.c $(helpers) helpers.h ../src/liburing.a
215	$(QUIET_CC)$(CC) $(CPPFLAGS) $(CFLAGS) -o $@ $< $(helpers) $(LDFLAGS)
216
217%.t: %.cc $(helpers) helpers.h ../src/liburing.a
218	$(QUIET_CXX)$(CXX) $(CPPFLAGS) $(CXXFLAGS) -o $@ $< $(helpers) $(LDFLAGS)
219
220
221install: $(test_targets) runtests.sh runtests-loop.sh
222	$(INSTALL) -D -d -m 755 $(datadir)/liburing-test/
223	$(INSTALL) -D -m 755 $(test_targets) $(datadir)/liburing-test/
224	$(INSTALL) -D -m 755 runtests.sh  $(datadir)/liburing-test/
225	$(INSTALL) -D -m 755 runtests-loop.sh  $(datadir)/liburing-test/
226
227clean:
228	@rm -f $(all_targets) helpers.o output/*
229	@rm -rf output/
230
231runtests: all
232	@./runtests.sh $(test_targets)
233
234runtests-loop: all
235	@./runtests-loop.sh $(test_targets)
236
237%.run_test: %.t
238	@./runtests-quiet.sh $<
239
240runtests-parallel: $(run_test_targets)
241	@echo "All tests passed"
242
243.PHONY: all install clean runtests runtests-loop runtests-parallel
244