varname-dot-path.mk revision 1.3 1 1.3 rillig # $NetBSD: varname-dot-path.mk,v 1.3 2020/10/02 18:46:54 rillig Exp $
2 1.1 rillig #
3 1.3 rillig # Tests for the special .PATH variable, which TODO: describe the purpose.
4 1.1 rillig
5 1.3 rillig _!= mkdir -p varname-dot-path.d
6 1.3 rillig
7 1.3 rillig # By default, .PATH consists of "." and .CURDIR.
8 1.3 rillig # XXX: Why both? Shouldn't they have the same effect?
9 1.3 rillig .if ${.PATH} != ". ${.CURDIR}"
10 1.3 rillig . error ${.PATH}
11 1.3 rillig .endif
12 1.3 rillig
13 1.3 rillig # The special target .PATH adds a directory to the path.
14 1.3 rillig .PATH: /
15 1.3 rillig .if ${.PATH} != ". ${.CURDIR} /"
16 1.3 rillig . error ${.PATH}
17 1.3 rillig .endif
18 1.3 rillig
19 1.3 rillig # Only existing directories are added to the path, the others are ignored.
20 1.3 rillig .PATH: /nonexistent
21 1.3 rillig .if ${.PATH} != ". ${.CURDIR} /"
22 1.3 rillig . error ${.PATH}
23 1.3 rillig .endif
24 1.3 rillig
25 1.3 rillig # Only directories are added to the path, not regular files.
26 1.3 rillig .PATH: ${.PARSEDIR}/${.PARSEFILE}
27 1.3 rillig .if ${.PATH} != ". ${.CURDIR} /"
28 1.3 rillig . error ${.PATH}
29 1.3 rillig .endif
30 1.3 rillig
31 1.3 rillig # Relative directories can be added as well.
32 1.3 rillig # Each directory is only added once to the path.
33 1.3 rillig .PATH: varname-dot-path.d /
34 1.3 rillig .if ${.PATH} != ". ${.CURDIR} / varname-dot-path.d"
35 1.3 rillig . error ${.PATH}
36 1.3 rillig .endif
37 1.3 rillig
38 1.3 rillig # The pathnames are not normalized before being added to the path.
39 1.3 rillig .PATH: ./.
40 1.3 rillig .if ${.PATH} != ". ${.CURDIR} / varname-dot-path.d ./."
41 1.3 rillig . error ${.PATH}
42 1.3 rillig .endif
43 1.3 rillig
44 1.3 rillig # The two default entries can be placed at the back of the path,
45 1.3 rillig # by adding the special entry ".DOTLAST" somewhere in the path.
46 1.3 rillig # The entry .DOTLAST, if any, is listed in the path, always at the
47 1.3 rillig # very beginning, to make this magic less surprising.
48 1.3 rillig .PATH: .DOTLAST
49 1.3 rillig .if ${.PATH} != ".DOTLAST / varname-dot-path.d ./. . ${.CURDIR}"
50 1.3 rillig . error ${.PATH}
51 1.3 rillig .endif
52 1.3 rillig
53 1.3 rillig _!= rmdir varname-dot-path.d
54 1.1 rillig
55 1.1 rillig all:
56 1.1 rillig @:;
57