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