diff options
Diffstat (limited to 'contrib/bmake/unit-tests/archive.mk')
-rw-r--r-- | contrib/bmake/unit-tests/archive.mk | 51 |
1 files changed, 50 insertions, 1 deletions
diff --git a/contrib/bmake/unit-tests/archive.mk b/contrib/bmake/unit-tests/archive.mk index 2cd43a99e9ad..f19c63f29632 100644 --- a/contrib/bmake/unit-tests/archive.mk +++ b/contrib/bmake/unit-tests/archive.mk @@ -1,4 +1,4 @@ -# $NetBSD: archive.mk,v 1.12 2021/04/09 14:42:00 christos Exp $ +# $NetBSD: archive.mk,v 1.14 2025/01/10 23:00:38 rillig Exp $ # # Very basic demonstration of handling archives, based on the description # in PSD.doc/tutorial.ms. @@ -21,9 +21,19 @@ all: @${MAKE} -f ${MAKEFILE} create-archive @${MAKE} -f ${MAKEFILE} list-archive @${MAKE} -f ${MAKEFILE} list-archive-wildcard + @${MAKE} -f ${MAKEFILE} list-archive-undef-archive || echo "exit $$?" + @echo + @${MAKE} -f ${MAKEFILE} list-archive-undef-member || echo "exit $$?" + @echo @${MAKE} -f ${MAKEFILE} depend-on-existing-member @${MAKE} -f ${MAKEFILE} depend-on-nonexistent-member @${MAKE} -f ${MAKEFILE} remove-archive + @${MAKE} -f ${MAKEFILE} set-up-library + @${MAKE} -f ${MAKEFILE} -dm library 2>&1 \ + | sed -n '/^Examining/p' \ + | sed 's,\.\.\.modified[^.]*,,' + @${MAKE} -f ${MAKEFILE} tear-down-library + create-archive: ${ARCHIVE} pre post @@ -45,6 +55,20 @@ list-archive: ${ARCHIVE} pre post list-archive-wildcard: ${ARCHIVE}([at]*.mk) pre post @printf '%s\n' ${.ALLSRC:O:@member@${.TARGET:Q}': '${member:Q}@} +.if make(list-archive-undef-archive) +# TODO: Be more specific: mention that the variable "UNDEF" is not defined. +# expect+1: Error in source archive spec "libprog.a${UNDEF}(archive.mk) pre post" +list-archive-undef-archive: ${ARCHIVE}$${UNDEF}(archive.mk) pre post + @printf '%s\n' ${.ALLSRC:O:@member@${.TARGET:Q}': '${member:Q}@} +.endif + +.if make(list-archive-undef-member) +# TODO: Be more specific: mention that the variable "UNDEF" is not defined. +# expect+1: Error in source archive spec "libprog.a" +list-archive-undef-member: ${ARCHIVE}(archive$${UNDEF}.mk) pre post + @printf '%s\n' ${.ALLSRC:O:@member@${.TARGET:Q}': '${member:Q}@} +.endif + depend-on-existing-member: ${ARCHIVE}(archive.mk) pre post @echo $@ @@ -58,3 +82,28 @@ pre: .USEBEFORE @echo Making ${.TARGET} ${.OODATE:C,.+,out-of-date,W} ${.OODATE:O} post: .USE @echo + + +set-up-library: .PHONY + @echo "member" > member.txt + @echo "not a library" > libbad.a + @ar cr libgood.a member.txt + @echo "begin library" + +.if make(library) +.SUFFIXES: .a +.LIBS: .a +.endif +# The two lines for libgood contain the word "library", the two lines for +# libbad don't. +# +# expect: Examining libbad.a...up-to-date. +# expect: Examining -lbad...up-to-date. +# expect: Examining libgood.a...library...up-to-date. +# expect: Examining -lgood...library...up-to-date. +library: .PHONY libbad.a -lbad libgood.a -lgood + : Making ${.TARGET} from ${.ALLSRC} + +tear-down-library: .PHONY + @echo "end library" + @rm member.txt libbad.a libgood.a |