meta-cmd-cmp.mk revision 1.3 1 # $NetBSD: meta-cmd-cmp.mk,v 1.3 2022/01/14 19:31:44 sjg Exp $
2 #
3 # Tests META_MODE command line comparison
4 #
5
6 .MAIN: all
7
8 .MAKE.MODE= meta verbose silent=yes curdirok=yes
9 tf:= .${.PARSEFILE:R}
10
11 .if ${.TARGETS:Nall} == ""
12 all: prep one two change1 change2 filter0 filter1 filter2 post
13
14 CLEANFILES= ${tf}*
15
16 prep post: .PHONY
17 @rm -f ${CLEANFILES}
18
19 .endif
20
21 FLAGS?=
22 FLAGS2?=
23
24 tests= ${tf}.cmp ${tf}.nocmp ${tf}.cmp2
25 filter_tests= ${tf}.filter
26
27 ${tf}.cmp:
28 @echo FLAGS=${FLAGS:Uempty} > $@
29
30 ${tf}.nocmp: .NOMETA_CMP
31 @echo FLAGS=${FLAGS:Uempty} > $@
32
33 # a line containing ${.OODATE} will not be compared
34 # this allows the trick below
35 ${tf}.cmp2:
36 @echo FLAGS2=${FLAGS2:Uempty} > $@
37 @echo This line not compared FLAGS=${FLAGS:Uempty} ${.OODATE:MNOMETA_CMP}
38
39 CCACHE= ccache
40 .ifdef WITH_CMP_FILTER
41 .MAKE.META.CMP_FILTER += Nccache Ndistcc
42 .endif
43
44 ${tf}.filter:
45 @echo ${CCACHE} cc -c foo.c > $@
46
47 # these do the same
48 one two: .PHONY
49 @echo $@:
50 @${.MAKE} -dM -r -C ${.CURDIR} -f ${MAKEFILE} ${tests}
51
52 change1: .PHONY
53 @echo $@:
54 @${.MAKE} -dM -r -C ${.CURDIR} -f ${MAKEFILE} FLAGS=changed ${tests}
55
56 change2: .PHONY
57 @echo $@:
58 @${.MAKE} -dM -r -C ${.CURDIR} -f ${MAKEFILE} FLAGS2=changed ${tests}
59
60 filter0: .PHONY
61 @echo $@:
62 @${.MAKE} -dM -r -C ${.CURDIR} -f ${MAKEFILE} ${filter_tests}
63
64 filter1: .PHONY
65 @echo $@:
66 @${.MAKE} -dM -r -C ${.CURDIR} -f ${MAKEFILE} CCACHE= ${filter_tests}
67
68 filter2: .PHONY
69 @echo $@:
70 @${.MAKE} -dM -r -C ${.CURDIR} -f ${MAKEFILE} -DWITH_CMP_FILTER \
71 CCACHE=distcc ${filter_tests}
72
73 # don't let gcov mess up the results
74 .MAKE.META.IGNORE_PATTERNS+= *.gcda
75