1include ../Makefile.global
2
3top		= ..
4RUNTESTS_CFLAGS	= -DC_TAP_SOURCE='"$(abs_builddir)/tests"' -DC_TAP_BUILD='"$(abs_builddir)/tests"'
5CFLAGS		= $(GCFLAGS) $(BDB_CPPFLAGS) $(DBM_CPPFLAGS) $(SQLITE3_CPPFLAGS) $(PERL_CPPFLAGS) $(PYTHON_CPPFLAGS) $(SSL_CPPFLAGS) $(SASL_CPPFLAGS) $(KRB5_CPPFLAGS) $(RUNTESTS_CFLAGS) -I.
6
7##  On some platforms, linking with libm is needed as the test suite uses
8##  math functions (currently only lib/confparse-t.c).
9LIBM_LDFLAGS    = '-lm'
10
11##  The tests that need to be built.  Tests in the form of shell scripts
12##  or some other form that doesn't require compiling shouldn't be in this
13##  list.  If they need other things compiled, those other things should be
14##  added to EXTRA.
15
16TESTS	= authprogs/ident.t innd/artparse.t innd/chan.t lib/artnumber.t lib/asprintf.t \
17	lib/buffer.t lib/concat.t lib/conffile.t lib/confparse.t lib/date.t \
18	lib/dispatch.t lib/fdflag.t \
19	lib/getaddrinfo.t lib/getnameinfo.t lib/hash.t \
20	lib/hashtab.t lib/headers.t lib/hex.t lib/inet_aton.t \
21	lib/inet_ntoa.t lib/inet_ntop.t lib/innconf.t lib/list.t lib/md5.t \
22	lib/messageid.t lib/messages.t lib/mkstemp.t \
23	lib/network/addr-ipv4.t lib/network/addr-ipv6.t \
24	lib/network/client.t lib/network/server.t \
25	lib/pread.t lib/pwrite.t lib/qio.t lib/reallocarray.t \
26	lib/setenv.t lib/snprintf.t lib/strlcat.t \
27	lib/strlcpy.t lib/tst.t lib/uwildmat.t lib/vector.t lib/wire.t \
28	lib/xwrite.t nnrpd/auth-ext.t overview/api.t overview/buffindexed.t \
29	overview/tradindexed.t overview/xref.t util/innbind.t
30
31##  Extra stuff that needs to be built before tests can be run.
32
33EXTRA	= runtests clients/server-list docs/pod.t lib/xmalloc
34
35all check test tests: $(TESTS) $(EXTRA)
36	./runtests -l TESTS
37
38build: $(TESTS) $(EXTRA)
39
40warnings:
41	$(MAKE) COPT='$(WARNINGS)' build
42
43clean clobber distclean maintclean:
44	rm -f *.o *.lo */*.o */*.lo */*/*.o */*/*.o \
45	  .pure */.pure */*/.pure $(TESTS) $(EXTRA)
46	rm -rf .libs */.libs */*/.libs
47
48$(FIXSCRIPT):
49	@echo Run configure before running make.  See INSTALL for details.
50	@exit 1
51
52.c.o:
53	$(CC) $(CFLAGS) -c -o $@ $*.c
54
55LINK		= $(LIBLD) $(LDFLAGS) $(BDB_LDFLAGS) $(SSL_LDFLAGS) $(SASL_LDFLAGS) $(KRB5_LDFLAGS) -o $@
56LINKDEPS	= $(LIBLDDEPS) $(LDFLAGS) $(BDB_LDFLAGS) $(SSL_LDFLAGS) $(SASL_LDFLAGS) $(KRB5_LDFLAGS) -o $@
57STORAGEDEPS	= $(LIBSTORAGE) $(LIBHIST) $(LIBINN)
58STORAGELIBS	= $(STORAGEDEPS) $(STORAGE_LIBS)
59
60# All of the innd object files other than innd.o, for INN unit testing.
61INNOBJS		= ../innd/art.o ../innd/cc.o ../innd/chan.o ../innd/icd.o \
62		../innd/keywords.o ../innd/lc.o ../innd/nc.o \
63		../innd/newsfeeds.o ../innd/ng.o ../innd/perl.o \
64		../innd/proc.o ../innd/python.o ../innd/rc.o ../innd/site.o \
65		../innd/status.o ../innd/util.o ../innd/wip.o
66
67# The libraries innd needs to link.
68INNDLIBS        = $(LIBSTORAGE) $(LIBHIST) $(LIBINN) $(STORAGE_LIBS) \
69		  $(SYSTEMD_LIBS) \
70		  $(PYTHON_LIBS) $(REGEX_LIBS) $(LIBS) $(PERL_LIBS)
71
72runtests: runtests.o
73	$(LINK) runtests.o
74
75clients/server-list: clients/server-list.in $(FIXSCRIPT)
76	$(FIXSCRIPT) -i clients/server-list.in
77
78docs/pod.t: docs/pod.t.in $(FIXSCRIPT)
79	$(FIXSCRIPT) -i docs/pod.t.in
80
81authprogs/ident.t: authprogs/ident-t.o tap/basic.o $(LIBINN)
82	$(LINK) authprogs/ident-t.o tap/basic.o $(LIBINN) $(LIBS)
83
84innd/artparse.t: innd/artparse-t.o innd/fakeinnd.o tap/basic.o $(INNOBJS)
85	$(LINK) innd/artparse-t.o innd/fakeinnd.o tap/basic.o $(INNOBJS) \
86	    $(INNDLIBS)
87
88innd/chan.t: innd/chan-t.o innd/fakeinnd.o tap/basic.o $(INNOBJS)
89	$(LINK) innd/chan-t.o innd/fakeinnd.o tap/basic.o $(INNOBJS) $(INNDLIBS)
90
91lib/artnumber.t: lib/artnumber-t.o tap/basic.o $(LIBINN)
92	$(LINK) lib/artnumber-t.o tap/basic.o $(LIBINN)
93
94lib/asprintf.o: ../lib/asprintf.c
95	$(CC) $(CFLAGS) -DTESTING -c -o $@ ../lib/asprintf.c
96
97lib/asprintf.t: lib/asprintf.o lib/asprintf-t.o tap/basic.o $(LIBINN)
98	$(LINK) lib/asprintf.o lib/asprintf-t.o tap/basic.o $(LIBINN) $(LIBS)
99
100lib/buffer.t: lib/buffer-t.o tap/basic.o $(LIBINN)
101	$(LINK) lib/buffer-t.o tap/basic.o $(LIBINN)
102
103lib/concat.t: lib/concat-t.o tap/basic.o $(LIBINN)
104	$(LINK) lib/concat-t.o tap/basic.o $(LIBINN)
105
106lib/conffile.t: lib/conffile-t.o tap/basic.o $(LIBINN)
107	$(LINK) lib/conffile-t.o tap/basic.o $(LIBINN)
108
109lib/confparse.t: lib/confparse-t.o tap/basic.o tap/float.o tap/messages.o tap/string.o $(LIBINN)
110	$(LINK) $(LIBM_LDFLAGS) lib/confparse-t.o tap/basic.o tap/float.o \
111	    tap/messages.o tap/string.o $(LIBINN)
112
113lib/date.t: lib/date-t.o tap/basic.o tap/string.o $(LIBINN)
114	$(LINK) lib/date-t.o tap/basic.o tap/string.o $(LIBINN)
115
116lib/dispatch.t: lib/dispatch-t.o tap/basic.o $(LIBINN)
117	$(LINK) lib/dispatch-t.o tap/basic.o $(LIBINN)
118
119lib/fdflag.t: lib/fdflag-t.o tap/basic.o $(LIBINN)
120	$(LINK) lib/fdflag-t.o tap/basic.o $(LIBINN) $(LIBS)
121
122lib/getaddrinfo.o: ../lib/getaddrinfo.c
123	$(CC) $(CFLAGS) -DTESTING -c -o $@ ../lib/getaddrinfo.c
124
125lib/getaddrinfo.t: lib/getaddrinfo.o lib/getaddrinfo-t.o tap/basic.o $(LIBINN)
126	$(LINK) lib/getaddrinfo.o lib/getaddrinfo-t.o tap/basic.o \
127	    $(LIBINN) $(LIBS)
128
129lib/getnameinfo.o: ../lib/getnameinfo.c
130	$(CC) $(CFLAGS) -DTESTING -c -o $@ ../lib/getnameinfo.c
131
132lib/getnameinfo.t: lib/getnameinfo.o lib/getnameinfo-t.o tap/basic.o $(LIBINN)
133	$(LINK) lib/getnameinfo.o lib/getnameinfo-t.o tap/basic.o \
134	    $(LIBINN) $(LIBS)
135
136lib/hash.t: lib/hash-t.o tap/basic.o $(LIBINN)
137	$(LINK) lib/hash-t.o tap/basic.o $(LIBINN)
138
139lib/hashtab.t: lib/hashtab-t.o tap/basic.o $(LIBINN)
140	$(LINK) lib/hashtab-t.o tap/basic.o $(LIBINN)
141
142lib/headers.t: lib/headers-t.o tap/basic.o $(LIBINN)
143	$(LINK) lib/headers-t.o tap/basic.o $(LIBINN)
144
145lib/hex.t: lib/hex-t.o tap/basic.o $(LIBINN)
146	$(LINK) lib/hex-t.o tap/basic.o $(LIBINN) $(LIBS)
147
148lib/inet_aton.o: ../lib/inet_aton.c
149	$(CC) $(CFLAGS) -DTESTING -c -o $@ ../lib/inet_aton.c
150
151lib/inet_aton.t: lib/inet_aton.o lib/inet_aton-t.o tap/basic.o $(LIBINN)
152	$(LINK) lib/inet_aton.o lib/inet_aton-t.o tap/basic.o $(LIBINN)
153
154lib/inet_ntoa.o: ../lib/inet_ntoa.c
155	$(CC) $(CFLAGS) -DTESTING -c -o $@ ../lib/inet_ntoa.c
156
157lib/inet_ntoa.t: lib/inet_ntoa.o lib/inet_ntoa-t.o tap/basic.o $(LIBINN)
158	$(LINK) lib/inet_ntoa.o lib/inet_ntoa-t.o tap/basic.o $(LIBINN)
159
160lib/inet_ntop.o: ../lib/inet_ntop.c
161	$(CC) $(CFLAGS) -DTESTING -c -o $@ ../lib/inet_ntop.c
162
163lib/inet_ntop.t: lib/inet_ntop.o lib/inet_ntop-t.o tap/basic.o $(LIBINN)
164	$(LINK) lib/inet_ntop.o lib/inet_ntop-t.o tap/basic.o $(LIBINN)
165
166lib/innconf.t: lib/innconf-t.o tap/basic.o tap/messages.o tap/string.o $(LIBINN)
167	$(LINK) lib/innconf-t.o tap/basic.o tap/messages.o \
168	    tap/string.o $(LIBINN) $(LIBS)
169
170lib/list.t: lib/list-t.o tap/basic.o $(LIBINN)
171	$(LINK) lib/list-t.o tap/basic.o $(LIBINN) $(LIBS)
172
173lib/md5.t: lib/md5-t.o tap/basic.o $(LIBINN)
174	$(LINK) lib/md5-t.o tap/basic.o $(LIBINN)
175
176lib/messageid.t: lib/messageid-t.o tap/basic.o $(LIBINN)
177	$(LINK) lib/messageid-t.o tap/basic.o $(LIBINN)
178
179lib/messages.t: lib/messages-t.o tap/basic.o tap/process.o tap/string.o $(LIBINN)
180	$(LINK) lib/messages-t.o tap/basic.o tap/process.o tap/string.o \
181	    $(LIBINN)
182
183lib/mkstemp.o: ../lib/mkstemp.c
184	$(CC) $(CFLAGS) -DTESTING -c -o $@ ../lib/mkstemp.c
185
186lib/mkstemp.t: lib/mkstemp.o lib/mkstemp-t.o tap/basic.o $(LIBINN)
187	$(LINK) lib/mkstemp.o lib/mkstemp-t.o tap/basic.o $(LIBINN)
188
189lib/network/addr-ipv4.t: lib/network/addr-ipv4-t.o tap/basic.o $(LIBINN)
190	$(LINK) lib/network/addr-ipv4-t.o tap/basic.o $(LIBINN) $(LIBS)
191
192lib/network/addr-ipv6.t: lib/network/addr-ipv6-t.o tap/basic.o $(LIBINN)
193	$(LINK) lib/network/addr-ipv6-t.o tap/basic.o $(LIBINN) $(LIBS)
194
195lib/network/client.t: lib/network/client-t.o tap/basic.o tap/messages.o tap/string.o $(LIBINN)
196	$(LINK) lib/network/client-t.o tap/basic.o tap/messages.o \
197	    tap/string.o $(LIBINN) $(LIBS)
198
199lib/network/server.t: lib/network/server-t.o tap/basic.o tap/messages.o tap/string.o $(LIBINN)
200	$(LINK) lib/network/server-t.o tap/basic.o tap/messages.o \
201	    tap/string.o $(LIBINN) $(LIBS)
202
203lib/pread.o: ../lib/pread.c
204	$(CC) $(CFLAGS) -DTESTING -c -o $@ ../lib/pread.c
205
206lib/pread.t: lib/pread.o lib/pread-t.o tap/basic.o $(LIBINN)
207	$(LINK) lib/pread.o lib/pread-t.o tap/basic.o $(LIBINN)
208
209lib/pwrite.o: ../lib/pwrite.c
210	$(CC) $(CFLAGS) -DTESTING -c -o $@ ../lib/pwrite.c
211
212lib/pwrite.t: lib/pwrite.o lib/pwrite-t.o tap/basic.o $(LIBINN)
213	$(LINK) lib/pwrite.o lib/pwrite-t.o tap/basic.o $(LIBINN)
214
215lib/qio.t: lib/qio-t.o tap/basic.o $(LIBINN)
216	$(LINK) lib/qio-t.o tap/basic.o $(LIBINN)
217
218lib/reallocarray.o: ../lib/reallocarray.c
219	$(CC) $(CFLAGS) -DTESTING -c -o $@ ../lib/reallocarray.c
220
221lib/reallocarray.t: lib/reallocarray.o lib/reallocarray-t.o tap/basic.o $(LIBINN)
222	$(LINK) lib/reallocarray.o lib/reallocarray-t.o tap/basic.o $(LIBINN)
223
224lib/setenv.o: ../lib/setenv.c
225	$(CC) $(CFLAGS) -DTESTING -c -o $@ ../lib/setenv.c
226
227lib/setenv.t: lib/setenv.o lib/setenv-t.o tap/basic.o $(LIBINN)
228	$(LINK) lib/setenv.o lib/setenv-t.o tap/basic.o $(LIBINN)
229
230lib/snprintf.o: ../lib/snprintf.c
231	$(CC) $(CFLAGS) -DTESTING -c -o $@ ../lib/snprintf.c
232
233lib/snprintf.t: lib/snprintf.o lib/snprintf-t.o tap/basic.o $(LIBINN)
234	$(LINK) lib/snprintf.o lib/snprintf-t.o tap/basic.o $(LIBINN)
235
236lib/strlcat.o: ../lib/strlcat.c
237	$(CC) $(CFLAGS) -DTESTING -c -o $@ ../lib/strlcat.c
238
239lib/strlcat.t: lib/strlcat.o lib/strlcat-t.o tap/basic.o $(LIBINN)
240	$(LINK) lib/strlcat.o lib/strlcat-t.o tap/basic.o $(LIBINN)
241
242lib/strlcpy.o: ../lib/strlcpy.c
243	$(CC) $(CFLAGS) -DTESTING -c -o $@ ../lib/strlcpy.c
244
245lib/strlcpy.t: lib/strlcpy.o lib/strlcpy-t.o tap/basic.o $(LIBINN)
246	$(LINK) lib/strlcpy.o lib/strlcpy-t.o tap/basic.o $(LIBINN)
247
248lib/tst.t: lib/tst-t.o tap/basic.o $(LIBINN)
249	$(LINK) lib/tst-t.o tap/basic.o $(LIBINN)
250
251lib/uwildmat.t: lib/uwildmat-t.o tap/basic.o $(LIBINN)
252	$(LINK) lib/uwildmat-t.o tap/basic.o $(LIBINN)
253
254lib/vector.t: lib/vector-t.o tap/basic.o tap/string.o $(LIBINN)
255	$(LINK) lib/vector-t.o tap/basic.o tap/string.o $(LIBINN)
256
257lib/wire.t: lib/wire-t.o tap/basic.o $(LIBINN)
258	$(LINK) lib/wire-t.o tap/basic.o $(LIBINN)
259
260lib/xmalloc: lib/xmalloc.o $(LIBINN)
261	$(LINK) lib/xmalloc.o $(LIBINN)
262
263lib/xwrite.o: ../lib/xwrite.c
264	$(CC) $(CFLAGS) -DTESTING -c -o $@ ../lib/xwrite.c
265
266lib/xwrite.t: lib/xwrite-t.o lib/xwrite.o lib/fakewrite.o tap/basic.o $(LIBINN)
267	$(LINK) lib/xwrite-t.o lib/xwrite.o lib/fakewrite.o tap/basic.o \
268	    $(LIBINN)
269
270nnrpd/auth-ext.t: nnrpd/auth-ext-t.o ../nnrpd/auth-ext.o tap/basic.o tap/messages.o tap/string.o $(LIBINN)
271	$(LINK) nnrpd/auth-ext-t.o ../nnrpd/auth-ext.o tap/basic.o \
272	    tap/messages.o tap/string.o $(LIBINN)
273
274overview/api.t: overview/api-t.o tap/basic.o $(STORAGEDEPS)
275	$(LINKDEPS) overview/api-t.o tap/basic.o $(STORAGELIBS) $(LIBS)
276
277overview/buffindexed-t.o: overview/overview-t.c
278	$(CC) $(CFLAGS) -DOVTYPE=buffindexed -c -o $@ overview/overview-t.c
279
280overview/buffindexed.t: overview/buffindexed-t.o tap/basic.o $(STORAGEDEPS)
281	$(LINKDEPS) overview/buffindexed-t.o tap/basic.o $(STORAGELIBS) $(LIBS)
282
283overview/tradindexed-t.o: overview/overview-t.c
284	$(CC) $(CFLAGS) -DOVTYPE=tradindexed -c -o $@ overview/overview-t.c
285
286overview/tradindexed.t: overview/tradindexed-t.o tap/basic.o $(STORAGEDEPS)
287	$(LINKDEPS) overview/tradindexed-t.o tap/basic.o $(STORAGELIBS) $(LIBS)
288
289overview/xref.t: overview/xref-t.o tap/basic.o $(STORAGEDEPS)
290	$(LINKDEPS) overview/xref-t.o tap/basic.o $(STORAGELIBS) $(LIBS)
291
292util/innbind.t: util/innbind-t.o tap/basic.o $(LIBINN)
293	$(LINK) util/innbind-t.o tap/basic.o $(LIBINN) $(LIBS)
294