1 1.6 rillig # $NetBSD: varmod-head.mk,v 1.6 2024/06/01 18:44:05 rillig Exp $ 2 1.1 rillig # 3 1.2 rillig # Tests for the :H variable modifier, which returns the dirname of 4 1.2 rillig # each of the words in the variable value. 5 1.1 rillig 6 1.5 rillig .if ${:U a/b/c :H} != "a/b" 7 1.5 rillig . error 8 1.5 rillig .endif 9 1.5 rillig 10 1.5 rillig .if ${:U def :H} != "." 11 1.5 rillig . error 12 1.5 rillig .endif 13 1.5 rillig 14 1.5 rillig .if ${:U a.b.c :H} != "." 15 1.5 rillig . error 16 1.5 rillig .endif 17 1.5 rillig 18 1.5 rillig .if ${:U a.b/c :H} != "a.b" 19 1.5 rillig . error 20 1.5 rillig .endif 21 1.5 rillig 22 1.5 rillig .if ${:U a :H} != "." 23 1.5 rillig . error 24 1.5 rillig .endif 25 1.5 rillig 26 1.5 rillig .if ${:U a.a :H} != "." 27 1.5 rillig . error 28 1.5 rillig .endif 29 1.5 rillig 30 1.5 rillig .if ${:U .gitignore :H} != "." 31 1.5 rillig . error 32 1.5 rillig .endif 33 1.5 rillig 34 1.5 rillig .if ${:U trailing/ :H} != "trailing" 35 1.5 rillig . error 36 1.5 rillig .endif 37 1.5 rillig 38 1.5 rillig .if ${:U /abs/dir/file :H} != "/abs/dir" 39 1.5 rillig . error 40 1.5 rillig .endif 41 1.5 rillig 42 1.5 rillig .if ${:U rel/dir/file :H} != "rel/dir" 43 1.5 rillig . error 44 1.5 rillig .endif 45 1.5 rillig 46 1.5 rillig # The head of "/" was an empty string before 2020.07.20.14.50.41, leading to 47 1.5 rillig # the output "before after", with two spaces. Since 2020.07.20.14.50.41, the 48 1.5 rillig # output is "before after", discarding the empty word. 49 1.5 rillig .if ${:U before/ / after/ :H} == "before after" 50 1.5 rillig # OK 51 1.5 rillig .elif ${:U before/ / after/ :H} == "before after" 52 1.5 rillig # No '.info' to keep the file compatible with old make versions. 53 1.5 rillig _!= echo "The modifier ':H' generates an empty word." 1>&2; echo 54 1.5 rillig .else 55 1.5 rillig . error 56 1.5 rillig .endif 57 1.5 rillig 58 1.5 rillig # An empty list is split into a single empty word. 59 1.5 rillig # The dirname of this empty word is ".". 60 1.5 rillig .if ${:U :H} != "." 61 1.5 rillig . error 62 1.5 rillig .endif 63 1.5 rillig 64 1.6 rillig # If the ':H' is not directly followed by a delimiting ':' or '}', the 65 1.6 rillig # ':from=to' modifier is tried as a fallback. 66 1.6 rillig .if ${:U Head :Head=replaced} != "replaced" 67 1.6 rillig . error 68 1.6 rillig .endif 69 1.6 rillig 70 1.5 rillig all: .PHONY 71