Imported Upstream version 4.4
[platform/upstream/make.git] / tests / scripts / variables / flavors
index ba133ea..627672f 100644 (file)
@@ -93,4 +93,108 @@ all: ; @echo $(foo)
 ',
               '', "Goodbye\n");
 
+# TEST 8: Append to empty
+run_make_test(q!
+recur =
+recur += foo
+simple :=
+simple += bar
+recur_empty = foo
+recur_empty +=
+simple_empty := bar
+simple_empty +=
+empty_recur =
+empty_recur +=
+empty_simple :=
+empty_simple +=
+
+all: ; @: $(info recur=/$(recur)/ simple=/$(simple)/ recure=/$(recur_empty)/ simplee=/$(simple_empty)/ erecur=/$(empty_recur)/ esimple=/$(empty_simple)/)
+!,
+              '', "recur=/foo/ simple=/bar/ recure=/foo/ simplee=/bar/ erecur=// esimple=//\n");
+
+# TEST 9: Line continuation
+run_make_test(q!
+recur = $\
+  one$\
+  two$\
+  three
+simple := $\
+  four$\
+  five$\
+  six
+
+all: d$\
+     e$\
+     p; @:
+
+.PHONY: dep
+dep: ; @: $(info recur=/$(recur)/ simple=/$(simple)/)
+!,
+             '', "recur=/onetwothree/ simple=/fourfivesix/\n");
+
+# TEST 9: Line continuation
+run_make_test(q!
+.POSIX:
+recur = $\
+  one$\
+  two$\
+  three
+simple := $\
+  four$\
+  five$\
+  six
+
+all: d$\
+     e$\
+     p; @:
+
+.PHONY: dep
+dep: ; @: $(info recur=/$(recur)/ simple=/$(simple)/)
+!,
+             '', "recur=/onetwothree/ simple=/fourfivesix/\n");
+
+# Test POSIX :::=
+# This creates a recursive variable, but it expands the RHS first.  Any
+# variable escapes ('$$') are preserved so that this recursive variable can be
+# expanded again without changing its contents.
+run_make_test('
+bar = Goodbye
+foo :::= $(bar)
+bar = ${ugh}
+ugh = Hello
+all: ; @echo $(foo)
+',
+              '', "Goodbye");
+
+# POSIX :::= no spaces
+run_make_test(q!
+bar = Goodbye
+foo:::=$(bar)
+bar = ${ugh}
+ugh = Hello
+all: ; @echo $(foo)
+!,
+              '', "Goodbye");
+
+# Variable escapes ('$$') are preserved.
+run_make_test(q!
+bar = Good$$bye
+foo :::= $(bar) $$what
+bar = ${ugh}
+ugh = Hello
+all: ; @echo '$(foo)'
+!,
+              '', 'Good$bye $what');
+
+# Append works as expected
+run_make_test(q!
+bar = Good$$bye
+foo :::= $(bar)
+foo += $$what $(bar)
+bar = ${ugh}
+ugh = Hello
+all: ; @echo '$(foo)'
+!,
+              '', 'Good$bye $what Hello');
+
 1;