Home | History | Annotate | Line # | Download | only in unit-tests
      1 # $NetBSD: opt-m-include-dir.mk,v 1.5 2024/04/30 16:13:34 sjg Exp $
      2 #
      3 # Tests for the -m command line option, which adds a directory to the
      4 # search path for the .include <...> directive.
      5 #
      6 # The .../canary.mk special argument starts searching in the current
      7 # directory and walks towards the file system root, until it finds a
      8 # directory that contains a file called canary.mk.
      9 #
     10 # To set up this scenario, the file step2.mk is created deep in a hierarchy
     11 # of subdirectories.  Another file called opt-m-step3.mk is created a few
     12 # steps up in the directory hierarchy, serving as the canary file.
     13 #
     14 # Next to the canary file, there is opt-m-step3.mk.  This file is found
     15 # by mentioning its simple name in an .include directive.  It defines the
     16 # target "step2" that is needed by "step2.mk".
     17 
     18 .if ${.PARSEFILE:T} == "opt-m-include-dir.mk"
     19 
     20 # Set up the other files needed for this test.
     21 
     22 TEST_DIR:=	${.PARSEFILE:R}.tmp/sub/sub/sub/workdir
     23 CANARY_FILE:=	${.PARSEFILE:R}.tmp/sub/opt-m-canary.mk
     24 ACTUAL_FILE:=	${.PARSEFILE:R}.tmp/sub/opt-m-step3.mk
     25 WANTED_FILE:=	${.PARSEFILE:R}.tmp/sub/opt-m-check.mk
     26 
     27 _!=	mkdir -p ${TEST_DIR}
     28 _!=	> ${CANARY_FILE}
     29 _!=	cp ${MAKEFILE} ${TEST_DIR}/step2.mk
     30 _!=	cp ${MAKEFILE} ${ACTUAL_FILE}
     31 _!=	echo CHECK=ok > ${WANTED_FILE}
     32 _!=	echo CHECK=${WANTED_FILE:T} found in .CURDIR > ${TEST_DIR}/${WANTED_FILE:T}
     33 
     34 step1:
     35 	@${.MAKE} -C ${TEST_DIR} -f step2.mk step2
     36 
     37 .END:
     38 	@rm -rf ${MAKEFILE:R}.tmp
     39 
     40 .elif ${.PARSEFILE:T} == "step2.mk"
     41 
     42 # This is the file deep in the directory hierarchy.  It sets up the
     43 # search path for the .include <...> directive and then includes a
     44 # single file from that search path.
     45 
     46 # This option adds .tmp/sub to the search path for .include <...>.
     47 .MAKEFLAGS: -m .../opt-m-canary.mk
     48 
     49 # This option does not add any directory to the search path since the
     50 # canary file does not exist.
     51 .MAKEFLAGS: -m .../does-not-exist
     52 
     53 .include <opt-m-step3.mk>
     54 
     55 .elif ${.PARSEFILE:T} == "opt-m-step3.mk"
     56 
     57 # This file is included by step2.mk.
     58 .include <opt-m-check.mk>
     59 
     60 step2:
     61 	@echo ${CHECK}
     62 
     63 .else
     64 .  error
     65 .endif
     66