xref: /openbsd/regress/usr.bin/pkg-config/Makefile (revision cca36db2)
1#	$OpenBSD: Makefile,v 1.27 2011/11/17 11:38:13 jasper Exp $
2
3REGRESS_TARGETS=cmp-vers1-1 \
4		cmp-vers1-2 \
5		cmp-vers1-3 \
6		cmp-vers2-1 \
7		cmp-vers2-2 \
8		cmp-vers2-3 \
9		cmp-vers2-4 \
10		cmp-vers3 \
11		cmp-vers4-1 \
12		cmp-vers4-2 \
13		cmp-vers4-3 \
14		cmp-vers4-4 \
15		cmp-vers4-5 \
16		cmp-vers4-6 \
17		cmp-vers4-7 \
18		cmp-vers4-8 \
19		cmp-vers4-9 \
20		cmp-vers5-1 \
21		cmp-vers5-2 \
22		cmp-vers5-3 \
23		cmp-vers5-4 \
24		cmp-vers5-5 \
25		cmp-vers5-6 \
26		cmp-vers5-7 \
27		cmp-vers6-1 \
28		cmp-vers6-2 \
29		corrupt1 \
30		corrupt2 \
31		corrupt3 \
32		print-provides \
33		print-req \
34		print-req-priv \
35		logfile \
36		sysroot-cflags \
37		sysroot-libs \
38		static-cflags1 \
39		static-cflags2 \
40		static-libs1 \
41		static-libs2 \
42		static-libs3 \
43		static-libs4 \
44		variable-get-1 \
45		variable-set \
46		missing-req-1 \
47		missing-req-2 \
48		missing-req-3 \
49		whitespace-cflags \
50		whitespace-libs \
51		whitespace-linebreak \
52		whitespace-name
53
54PKG_CONFIG=	pkg-config
55#PKG_CONFIG=	/usr/obj/ports/pkgconfig-0.26/fake-i386/usr/local/bin/pkg-config
56WANT=		${.OBJDIR}/$@.want
57GOT=		${.OBJDIR}/$@.got
58
59# Tests for corrupt pkg-config files.
60corrupt1:
61	# Test for missing variables/fields
62	@echo "Package '$@' has no Version: field" > ${WANT}
63	@if PKG_CONFIG_PATH=${.CURDIR}/pcdir/ ${PKG_CONFIG} \
64                --errors-to-stdout --print-errors --exists $@ > ${GOT}; then false; fi
65	@diff -u ${WANT} ${GOT}
66
67corrupt2:
68	# Test for missing variables/fields
69	@echo "Package '$@' has no Name: field" > ${WANT}
70	@if PKG_CONFIG_PATH=${.CURDIR}/pcdir/ ${PKG_CONFIG} \
71		--errors-to-stdout --print-errors --exists $@ > ${GOT}; then false; fi
72	@diff -u ${WANT} ${GOT}
73
74corrupt3:
75	# Test for empty file
76	@echo "Package file '$@.pc' appears to be empty" > ${WANT}
77	@echo "Package '$@' has no Name: field" >> ${WANT}
78	@if PKG_CONFIG_PATH=${.CURDIR}/pcdir/ ${PKG_CONFIG} \
79		--errors-to-stdout --print-errors --libs $@ > ${GOT}; then false; fi
80	@diff -u ${WANT} ${GOT}
81
82# Tests for various printing features
83print-provides:
84	# Test --print-provides
85	@echo "print-provides = 0.0.0" > ${WANT}
86	@PKG_CONFIG_PATH=${.CURDIR}/pcdir/ ${PKG_CONFIG} \
87		--print-provides $@ > ${GOT}
88	@diff -u ${WANT} ${GOT}
89
90print-req:
91	# Test --print-requires
92	@echo "print-req2>=0.0.1" > ${WANT}
93	@PKG_CONFIG_PATH=${.CURDIR}/pcdir/ ${PKG_CONFIG} \
94		--print-requires $@ > ${GOT}
95	@diff -u ${WANT} ${GOT}
96
97print-req-priv:
98	# Test --print-requires-private
99	@echo "print-req-priv2>=0.0.0" > ${WANT}
100	@PKG_CONFIG_PATH=${.CURDIR}/pcdir/ ${PKG_CONFIG} \
101		--print-requires-private $@ > ${GOT}
102	@diff -u ${WANT} ${GOT}
103
104# Tests for version comparison
105cmp-vers1-1:
106	# Test regular versions (a <= b)
107	@if PKG_CONFIG_PATH=${.CURDIR}/pcdir/ ${PKG_CONFIG} --exists \
108		"vers1 <= 0.0.2"; then false; fi
109
110cmp-vers1-2:
111	# Test regular versions (a <= b)
112	@PKG_CONFIG_PATH=${.CURDIR}/pcdir/ ${PKG_CONFIG} --exists "vers1 <= 0.1.0"
113
114cmp-vers1-3:
115	# Test regular versions (a < b)
116	@PKG_CONFIG_PATH=${.CURDIR}/pcdir/ ${PKG_CONFIG} --exists "vers1 < 0.2"
117
118cmp-vers2-1:
119	# Test regular versions (a >= b)
120	@PKG_CONFIG_PATH=${.CURDIR}/pcdir/ ${PKG_CONFIG} --exists "vers2 >= 0.0.1"
121
122cmp-vers2-2:
123	# Test regular versions (a >= b)
124	@PKG_CONFIG_PATH=${.CURDIR}/pcdir/ ${PKG_CONFIG} --exists "vers2 >= 0.0.0"
125
126cmp-vers2-3:
127	# Test regular versions (a >= b)
128	@PKG_CONFIG_PATH=${.CURDIR}/pcdir/ ${PKG_CONFIG} --exists "vers2 >= 0.1.0"
129
130cmp-vers2-4:
131	# Test regular versions (a >= b)
132	@if PKG_CONFIG_PATH=${.CURDIR}/pcdir/ ${PKG_CONFIG} --exists \
133		"vers2 > 0.2.0.0"; then false; fi
134
135cmp-vers3:
136	# Test regular versions (a = b)
137	@PKG_CONFIG_PATH=${.CURDIR}/pcdir/ ${PKG_CONFIG} --exists "vers2 = 0.2.0"
138
139cmp-vers4-1:
140	# Test suffixed versions (alpha >)
141	@touch ${WANT}
142	@PKG_CONFIG_PATH=${.CURDIR}/pcdir/ ${PKG_CONFIG}  \
143		--errors-to-stdout --print-errors "alpha > 0.1.0" > ${GOT}
144	@diff -u ${WANT} ${GOT}
145
146cmp-vers4-2:
147	# Test suffixed versions (alpha >)
148	@touch ${WANT}
149	@PKG_CONFIG_PATH=${.CURDIR}/pcdir/ ${PKG_CONFIG}  \
150		--errors-to-stdout --print-errors "alpha > 0.1.0alpha1" > ${GOT}
151	@diff -u ${WANT} ${GOT}
152
153cmp-vers4-3:
154	# Test suffixed versions (alpha >=)
155	@touch ${WANT}
156	@PKG_CONFIG_PATH=${.CURDIR}/pcdir/ ${PKG_CONFIG}  \
157		--errors-to-stdout --print-errors "alpha >= 0.1.0" > ${GOT}
158	@diff -u ${WANT} ${GOT}
159
160cmp-vers4-4:
161	# Test suffixed versions (alpha >=)
162	@touch ${WANT}
163	@PKG_CONFIG_PATH=${.CURDIR}/pcdir/ ${PKG_CONFIG}  \
164		--errors-to-stdout --print-errors "alpha >= 0.1.0alpha2" > ${GOT}
165	@diff -u ${WANT} ${GOT}
166
167cmp-vers4-5:
168	# Test suffixed versions (alpha <)
169	@touch ${WANT}
170	@PKG_CONFIG_PATH=${.CURDIR}/pcdir/ ${PKG_CONFIG}  \
171		--errors-to-stdout --print-errors "alpha < 0.1.1" > ${GOT}
172	@diff -u ${WANT} ${GOT}
173
174cmp-vers4-6:
175	# Test suffixed versions (alpha <)
176	@touch ${WANT}
177	@PKG_CONFIG_PATH=${.CURDIR}/pcdir/ ${PKG_CONFIG}  \
178		--errors-to-stdout --print-errors "alpha < 0.1.0alpha3" > ${GOT}
179	@diff -u ${WANT} ${GOT}
180
181cmp-vers4-7:
182	# Test suffixed versions (alpha <=)
183	@touch ${WANT}
184	@PKG_CONFIG_PATH=${.CURDIR}/pcdir/ ${PKG_CONFIG}  \
185		--errors-to-stdout --print-errors "alpha < 0.1.1" > ${GOT}
186	@diff -u ${WANT} ${GOT}
187
188cmp-vers4-8:
189	# Test suffixed versions (alpha <=)
190	@touch ${WANT}
191	@PKG_CONFIG_PATH=${.CURDIR}/pcdir/ ${PKG_CONFIG}  \
192		--errors-to-stdout --print-errors "alpha <= 0.1.0alpha2" > ${GOT}
193	@diff -u ${WANT} ${GOT}
194
195cmp-vers4-9:
196	# Test suffixed versions (alpha =)
197	@touch ${WANT}
198	@PKG_CONFIG_PATH=${.CURDIR}/pcdir/ ${PKG_CONFIG}  \
199		--errors-to-stdout --print-errors "alpha = 0.1.0alpha2" > ${GOT}
200	@diff -u ${WANT} ${GOT}
201
202
203cmp-vers5-1:
204	# Test suffixed versions (beta > alpha)
205	@touch ${WANT}
206	@PKG_CONFIG_PATH=${.CURDIR}/pcdir/ ${PKG_CONFIG}  \
207		--errors-to-stdout --print-errors "beta > 0.1.0alpha1" > ${GOT}
208	@diff -u ${WANT} ${GOT}
209
210cmp-vers5-2:
211	# Test suffixed versions (beta >= alpha)
212	@touch ${WANT}
213	@PKG_CONFIG_PATH=${.CURDIR}/pcdir/ ${PKG_CONFIG}  \
214		--errors-to-stdout --print-errors "beta >= 0.1.0beta1" > ${GOT}
215	@diff -u ${WANT} ${GOT}
216
217cmp-vers5-3:
218	# Test suffixed versions (alpha < rc)
219	@touch ${WANT}
220	@PKG_CONFIG_PATH=${.CURDIR}/pcdir/ ${PKG_CONFIG}  \
221		--errors-to-stdout --print-errors "alpha < 0.1.0rc2" > ${GOT}
222	@diff -u ${WANT} ${GOT}
223
224cmp-vers5-4:
225	# Test suffixed versions (beta < rc)
226	@touch ${WANT}
227	@PKG_CONFIG_PATH=${.CURDIR}/pcdir/ ${PKG_CONFIG}  \
228		--errors-to-stdout --print-errors "beta < 0.1.0rc2" > ${GOT}
229	@diff -u ${WANT} ${GOT}
230
231cmp-vers5-5:
232	# Test suffixed versions (alpha < beta)
233	@touch ${WANT}
234	@PKG_CONFIG_PATH=${.CURDIR}/pcdir/ ${PKG_CONFIG}  \
235		--errors-to-stdout --print-errors "alpha < 0.1.0beta2" > ${GOT}
236	@diff -u ${WANT} ${GOT}
237
238cmp-vers5-6:
239	# Test suffixed versions (rc > alpha)
240	@touch ${WANT}
241	@PKG_CONFIG_PATH=${.CURDIR}/pcdir/ ${PKG_CONFIG}  \
242		--errors-to-stdout --print-errors "rc > 0.1.0alpha2" > ${GOT}
243	@diff -u ${WANT} ${GOT}
244
245cmp-vers5-7:
246	# Test suffixed versions (rc > beta)
247	@touch ${WANT}
248	@PKG_CONFIG_PATH=${.CURDIR}/pcdir/ ${PKG_CONFIG}  \
249		--errors-to-stdout --print-errors "rc > 0.1.0beta2" > ${GOT}
250	@diff -u ${WANT} ${GOT}
251
252# These tests also fail with fd.o pkg-config, so keep them for later
253# to decide how our pkg-config should behave.
254cmp-vers5-8:
255	# Test suffixed versions (' ' > alpha)
256	@touch ${WANT}
257	@PKG_CONFIG_PATH=${.CURDIR}/pcdir/ ${PKG_CONFIG}  \
258		--errors-to-stdout --print-errors "vers1 > 0.1.0alpha2" > ${GOT}
259	@diff -u ${WANT} ${GOT}
260
261cmp-vers5-9:
262	# Test suffixed versions (' ' > beta)
263	@touch ${WANT}
264	@PKG_CONFIG_PATH=${.CURDIR}/pcdir/ ${PKG_CONFIG}  \
265		--errors-to-stdout --print-errors "beta <= 0.1.0beta2" > ${GOT}
266	@diff -u ${WANT} ${GOT}
267
268cmp-vers5-10:
269	# Test suffixed versions (' ' > rc)
270	@touch ${WANT}
271	@PKG_CONFIG_PATH=${.CURDIR}/pcdir/ ${PKG_CONFIG}  \
272		--errors-to-stdout --print-errors "beta <= 0.1.0rc2" > ${GOT}
273	@diff -u ${WANT} ${GOT}
274
275cmp-vers6-1:
276	# Test suffixed versions in Requires
277	@echo " -lalpha2" > ${WANT}
278	@PKG_CONFIG_PATH=${.CURDIR}/pcdir/ ${PKG_CONFIG} --errors-to-stdout \
279		--print-errors --libs requires-test2 > ${GOT}
280	@diff -u ${WANT} ${GOT}
281
282cmp-vers6-2:
283	# Test suffixed versions in Requires.private
284	@echo "Requested 'alpha >= 0.1.0alpha3' but version of alpha suffix test is 0.1.0alpha2" > ${WANT}
285	@if PKG_CONFIG_PATH=${.CURDIR}/pcdir/ ${PKG_CONFIG} --errors-to-stdout \
286		--print-errors --libs --static requires-test2 > ${GOT}; then \
287		false; fi
288	@diff -u ${WANT} ${GOT}
289
290# Tests for various environment variables
291builddir:
292	# Test PKG_CONFIG_TOP_BUILD_DIR
293
294logfile:
295	# Test PKG_CONFIG_LOG
296	@echo "[/usr/bin/pkg-config] [--exists] [sysroot >= 0.0.0]" > ${WANT}
297	@rm -f ${GOT}
298	@PKG_CONFIG_PATH=${.CURDIR}/pcdir/ PKG_CONFIG_LOG=${GOT} \
299		${PKG_CONFIG} --exists "sysroot >= 0.0.0"
300	@diff -u ${WANT} ${GOT}
301
302sysroot-cflags:
303	# Test PKG_CONFIG_SYSROOT_DIR (cflags)
304	@echo "-I/altroot/tmp/include -I/altroot/tmp/include/foo" > ${WANT}
305	@PKG_CONFIG_PATH=${.CURDIR}/pcdir/ PKG_CONFIG_SYSROOT_DIR=/altroot \
306		${PKG_CONFIG} --cflags sysroot > ${GOT}
307	@diff -u ${WANT} ${GOT}
308
309sysroot-libs:
310	# Test PKG_CONFIG_SYSROOT_DIR (libs)
311	@echo "-L/altroot/tmp/lib -L/altroot/tmp/lib/foo -lc" > ${WANT}
312	@PKG_CONFIG_PATH=${.CURDIR}/pcdir/ PKG_CONFIG_SYSROOT_DIR=/altroot \
313		${PKG_CONFIG} --libs sysroot > ${GOT}
314	@diff -u ${WANT} ${GOT}
315
316# Tests for static linking
317static-cflags1:
318	# Test grabbing Cflags (without Requires.private)
319	@echo "-I/usr/local/include/foo" > ${WANT}
320	@PKG_CONFIG_PATH=${.CURDIR}/pcdir/ ${PKG_CONFIG} --print-errors \
321		--errors-to-stdout --cflags --static static > ${GOT}
322	@diff -u ${WANT} ${GOT}
323
324static-cflags2:
325	# Test grabbing Cflags (with Requires.private)
326	@echo "-I/usr/local/include/foo -I/usr/local/include" > ${WANT}
327	@PKG_CONFIG_PATH=${.CURDIR}/pcdir/ ${PKG_CONFIG} --print-errors \
328		--errors-to-stdout --cflags --static static2 > ${GOT}
329	@diff -u ${WANT} ${GOT}
330
331static-libs1:
332	# Test grabbing Libs.private from this package
333	@echo "-L/usr/local/lib -lc -lm -ll" > ${WANT}
334	@PKG_CONFIG_PATH=${.CURDIR}/pcdir/ ${PKG_CONFIG} --print-errors \
335		--errors-to-stdout --libs --static static > ${GOT}
336	@diff -u ${WANT} ${GOT}
337
338static-libs2:
339	# Test grabbing Libs.private from Requires in order
340	@echo "-L/usr/local/lib -lc -lm -ll -lutil -lz" > ${WANT}
341	@PKG_CONFIG_PATH=${.CURDIR}/pcdir/ ${PKG_CONFIG} --print-errors \
342		--errors-to-stdout --libs --static static2 > ${GOT}
343	@diff -u ${WANT} ${GOT}
344
345static-libs3:
346	# Test grabbing Libs.private from Requires.private in order
347	@echo "-L/tmp/lib -L/tmp/lib/foo -L/usr/local/lib -lbaz\ quux -lc -lm -ll -lutil -lz" > ${WANT}
348	@PKG_CONFIG_PATH=${.CURDIR}/pcdir/ ${PKG_CONFIG} --print-errors \
349		--errors-to-stdout --libs --static static3 > ${GOT}
350	@diff -u ${WANT} ${GOT}
351
352static-libs4:
353	# Test Requires.private
354	@echo "-L/public-dep/lib -L/private-dep/lib -L/requires-test/lib -lpublic-dep -lprivate-dep -lrequires-test" > ${WANT}
355	@PKG_CONFIG_PATH=${.CURDIR}/pcdir/ ${PKG_CONFIG} --print-errors \
356		--errors-to-stdout --libs --static requires-test > ${GOT}
357	@diff -u ${WANT} ${GOT}
358
359# Misc. tests
360variable-get-1:
361	# Test --variable
362	@echo "/tmp" > ${WANT}
363	@PKG_CONFIG_PATH=${.CURDIR}/pcdir/ ${PKG_CONFIG} --errors-to-stdout \
364		--print-errors --variable prefix sysroot > ${GOT}
365	@diff -u ${WANT} ${GOT}
366
367variable-set:
368	# Test --define-variable
369	@echo "-I/usr/local2/include -I/usr/local2/include/foo" > ${WANT}
370	@PKG_CONFIG_PATH=${.CURDIR}/pcdir/ ${PKG_CONFIG} --errors-to-stdout \
371		--print-errors --define-variable=prefix=/usr/local2 \
372		--cflags sysroot > ${GOT}
373	@diff -u ${WANT} ${GOT}
374
375# This fails as we read and check Requires as well as Requires.private where
376# only Requires needs to be checked here as we ask for Libs and not Cflags.
377missing-req-1:
378	# Test for missing packages in Requires (libs)
379	@echo "Package nonexisting was not found in the pkg-config search path" > ${WANT}
380	@if PKG_CONFIG_PATH=${.CURDIR}/pcdir/ pkg-config --libs \
381		--errors-to-stdout --print-errors missing-req > ${GOT}; then false; fi
382	@diff -u ${WANT} ${GOT}
383
384missing-req-2:
385	# Test for missing packages in Requires (cflags)
386	@echo "Package nonexisting was not found in the pkg-config search path" > ${WANT}
387	@if PKG_CONFIG_PATH=${.CURDIR}/pcdir/ pkg-config --cflags \
388		--errors-to-stdout --print-errors missing-req > ${GOT}; then false; fi
389	@diff -u ${WANT} ${GOT}
390
391missing-req-3:
392	# Test for missing packages in Requires (version)
393	@echo "0.0.0" > ${WANT}
394	@PKG_CONFIG_PATH=${.CURDIR}/pcdir/ ${PKG_CONFIG} --modversion \
395		--errors-to-stdout --print-errors missing-req > ${GOT}
396	@diff -u ${WANT} ${GOT}
397
398whitespace-cflags:
399	# Test whitespace on various positions in Cflags
400	@echo "-I/tmp/include -I/tmp/include/include\ dir" > ${WANT}
401	@PKG_CONFIG_PATH=${.CURDIR}/pcdir/ ${PKG_CONFIG} --cflags \
402		--errors-to-stdout --print-errors whitespace > ${GOT}
403	@diff -u ${WANT} ${GOT}
404
405whitespace-libs:
406	# Test whitespace on various positions in Libs
407	@echo "-L/tmp/lib -L/tmp/lib/foo -lbaz\ quux" > ${WANT}
408	@PKG_CONFIG_PATH=${.CURDIR}/pcdir/ ${PKG_CONFIG} --libs \
409		--errors-to-stdout --print-errors whitespace > ${GOT}
410	@diff -u ${WANT} ${GOT}
411
412whitespace-linebreak:
413	# Test linebreak in Description field
414	@echo " -lc" > ${WANT}
415	@PKG_CONFIG_PATH=${.CURDIR}/pcdir/ ${PKG_CONFIG} --errors-to-stdout \
416		--print-errors --libs linebreak > ${GOT}
417	@diff -u ${WANT} ${GOT}
418
419whitespace-name:
420	# Test whitespace in Name
421	@echo "Requested 'whitespace > 0.2.0' but version of Whitespace test is 0.0.0" > ${WANT}
422	@if PKG_CONFIG_PATH=${.CURDIR}/pcdir/ ${PKG_CONFIG} --errors-to-stdout \
423		--print-errors "whitespace > 0.2.0" > ${GOT}; then false; fi
424	@diff -u ${WANT} ${GOT}
425
426clean:
427	rm -f *.want *.got
428
429.PHONY: ${REGRESS_TARGETS}
430
431.include <bsd.regress.mk>
432