opt-m-include-dir.mk revision 1.5 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