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