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