make/tests/scripts/variables/flavors

201 lines
3.3 KiB
Text
Raw Normal View History

# -*-perl-*-
$description = "Test various flavors of make variable setting.";
$details = "";
# TEST 0: Recursive
run_make_test('
ugh = Goodbye
foo = $(bar)
bar = ${ugh}
ugh = Hello
all: ; @echo $(foo)
',
'', "Hello\n");
# TEST 1: Simple
run_make_test('
bar = Goodbye
foo := $(bar)
bar = ${ugh}
ugh = Hello
all: ; @echo $(foo)
',
'', "Goodbye\n");
# TEST 2: Append to recursive
run_make_test('
foo = Hello
ugh = Goodbye
foo += $(bar)
bar = ${ugh}
ugh = Hello
all: ; @echo $(foo)
',
'', "Hello Hello\n");
# TEST 3: Append to simple
run_make_test('
foo := Hello
ugh = Goodbye
bar = ${ugh}
foo += $(bar)
ugh = Hello
all: ; @echo $(foo)
',
'', "Hello Goodbye\n");
# TEST 4: Conditional pre-set
run_make_test('
foo = Hello
ugh = Goodbye
bar = ${ugh}
foo ?= $(bar)
ugh = Hello
all: ; @echo $(foo)
',
'', "Hello\n");
# TEST 5: Conditional unset
run_make_test('
ugh = Goodbye
bar = ${ugh}
foo ?= $(bar)
ugh = Hello
all: ; @echo $(foo)
',
'', "Hello\n");
# TEST 6: Simple using POSIX syntax
run_make_test('
bar = Goodbye
foo ::= $(bar)
bar = ${ugh}
ugh = Hello
all: ; @echo $(foo)
',
'', "Goodbye\n");
# TEST 7: POSIX syntax no spaces
run_make_test('
bar = Goodbye
foo::=$(bar)
bar = ${ugh}
ugh = Hello
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;