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