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