]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - contrib/bmake/unit-tests/archive.mk
Merge llvm, clang, compiler-rt, libc++, libunwind, lld, lldb and openmp
[FreeBSD/FreeBSD.git] / contrib / bmake / unit-tests / archive.mk
1 # $NetBSD: archive.mk,v 1.5 2020/08/23 17:51:24 rillig Exp $
2 #
3 # Very basic demonstration of handling archives, based on the description
4 # in PSD.doc/tutorial.ms.
5
6 ARCHIVE=        libprog.${EXT.a}
7 FILES=          archive.${EXT.mk} modmisc.${EXT.mk} varmisc.mk
8
9 EXT.a=          a
10 EXT.mk=         mk
11
12 MAKE_CMD=       ${.MAKE} -f ${MAKEFILE}
13 RUN?=           @set -eu;
14
15 all:
16         ${RUN} ${MAKE_CMD} remove-archive
17         ${RUN} ${MAKE_CMD} create-archive
18         ${RUN} ${MAKE_CMD} list-archive
19         ${RUN} ${MAKE_CMD} list-archive-wildcard
20         ${RUN} ${MAKE_CMD} depend-on-existing-member
21         ${RUN} ${MAKE_CMD} depend-on-nonexistent-member
22         ${RUN} ${MAKE_CMD} remove-archive
23
24 create-archive: ${ARCHIVE}
25 ${ARCHIVE}: ${ARCHIVE}(${FILES})
26         ar cru ${.TARGET} ${.OODATE}
27         ranlib ${.TARGET}
28
29 list-archive: ${ARCHIVE}
30         ar t ${.ALLSRC}
31
32 # XXX: I had expected that this dependency would select all *.mk files from
33 # the archive.  Instead, the globbing is done in the current directory.
34 # To prevent an overly long file list, the pattern is restricted to [at]*.mk.
35 list-archive-wildcard: ${ARCHIVE}([at]*.mk)
36         ${RUN} printf '%s\n' ${.ALLSRC:O:@member@${.TARGET:Q}': '${member:Q}@}
37
38 depend-on-existing-member: ${ARCHIVE}(archive.mk)
39         ${RUN} echo $@
40
41 depend-on-nonexistent-member: ${ARCHIVE}(nonexistent.mk)
42         ${RUN} echo $@
43
44 remove-archive:
45         rm -f ${ARCHIVE}