1 1.1 sjg # $NetBSD: meta-ignore.inc,v 1.1 2023/02/23 05:21:27 sjg Exp $ 2 1.1 sjg 3 1.1 sjg # common logic for testing .MAKE.META.IGNORE_* 4 1.1 sjg 5 1.1 sjg # we want a directory outside of .OBJDIR to drop a file 6 1.1 sjg # that our meta file refers to. 7 1.1 sjg IGNORE:= ${TMPDIR}/ignore 8 1.1 sjg OBJ:= ${TMPDIR}/obj 9 1.1 sjg 10 1.1 sjg # this is always ignored so make sure it isn't used above 11 1.1 sjg TMPDIR= /tmp/nothanks 12 1.1 sjg 13 1.1 sjg all: one two three 14 1.1 sjg 15 1.1 sjg setup: 16 1.1 sjg @mkdir -p ${IGNORE} ${OBJ} 17 1.1 sjg @echo > ${IGNORE}/check 18 1.1 sjg @rm -f ${OBJ}/check-ignore 19 1.1 sjg 20 1.1 sjg makefile:= ${.INCLUDEDFROMDIR}/${.INCLUDEDFROMFILE} 21 1.1 sjg TEST:= ${.INCLUDEDFROMFILE:R} 22 1.1 sjg 23 1.1 sjg DESC.one= Initialize check-ignore.meta 24 1.1 sjg DESC.two= Use .MAKE.META.IGNORE_* - check-ignore is up to date 25 1.1 sjg DESC.three= Skip .MAKE.META.IGNORE_* - check-ignore is out of date 26 1.1 sjg 27 1.1 sjg # just in case someone runs us with -jN 28 1.1 sjg .ORDER: one two three 29 1.1 sjg one two three: .MAKE setup 30 1.1 sjg @echo "${DESC.${.TARGET}}"; \ 31 1.1 sjg ${MAKE} -C ${.CURDIR} -f ${makefile} check-ignore parent=${.TARGET} 32 1.1 sjg 33 1.1 sjg .if make(check-ignore) 34 1.1 sjg .MAKEFLAGS: -dM 35 1.1 sjg .MAKE.MODE = meta verbose silent=yes 36 1.1 sjg .OBJDIR: ${OBJ} 37 1.1 sjg .if ${parent} == "two" 38 1.1 sjg .if ${TEST:M*ignore_paths} != "" 39 1.1 sjg # this is a prefix list - any path that matches 40 1.1 sjg # one of these prefixes will be ignored 41 1.1 sjg .MAKE.META.IGNORE_PATHS = ${IGNORE} 42 1.1 sjg .elif ${TEST:M*ignore_patterns} != "" 43 1.1 sjg # more flexible but more expensive 44 1.1 sjg # this example is equivalent to M*/ignore/* 45 1.1 sjg # a match means ignore 46 1.1 sjg .MAKE.META.IGNORE_PATTERNS = */ignore/* 47 1.1 sjg .elif ${TEST:M*ignore_filter} != "" 48 1.1 sjg # this is the most flexible, but also most expensive 49 1.1 sjg # if this expands to nothing - ignore the path 50 1.1 sjg .MAKE.META.IGNORE_FILTER = N${IGNORE}/* 51 1.1 sjg .endif 52 1.1 sjg .endif 53 1.1 sjg 54 1.1 sjg # : < just reads from ${IGNORE}/check 55 1.1 sjg # so that our filemon trace will have a reference to it 56 1.1 sjg # we ensure it is always newer than the target. 57 1.1 sjg check-ignore: .META .NOPATH 58 1.1 sjg @: < ${IGNORE}/check > ${.TARGET} 59 1.1 sjg @sleep 1; echo ${.TARGET} > ${IGNORE}/check 60 1.1 sjg 61 1.1 sjg .endif 62