#                                                                    -*-perl-*-
$description = "Test target-specific variable settings.";

$details = "\
Create a makefile containing various flavors of target-specific variable
values, override and non-override, and using various variable expansion
rules, semicolon interference, etc.";

run_make_test('
SHELL = /bin/sh
export FOO = foo
export BAR = bar
one: override FOO = one
one two: ; @echo $(FOO) $(BAR)
two: BAR = two
three: ; BAR=1000
	@echo $(FOO) $(BAR)
# Some things that shouldn not be target vars
funk : override
funk : override adelic
adelic override : ; echo $@
# Test per-target recursive variables
four:FOO=x
four:VAR$(FOO)=ok
four: ; @echo "$(FOO) $(VAR$(FOO)) $(VAR) $(VARx)"
five:FOO=x
five six : VAR$(FOO)=good
five six: ;@echo "$(FOO) $(VAR$(FOO)) $(VAR) $(VARx) $(VARfoo)"
# Test per-target variable inheritance
seven: eight
seven eight: ; @echo $@: $(FOO) $(BAR)
seven: BAR = seven
seven: FOO = seven
eight: BAR = eight
# Test the export keyword with per-target variables
nine: ; @echo $(FOO) $(BAR) $$FOO $$BAR
nine: FOO = wallace
nine-a: export BAZ = baz
nine-a: ; @echo $$BAZ
# Test = escaping
EQ = =
ten: one$(EQ)two
ten: one $(EQ) two
ten one$(EQ)two $(EQ):;@echo $@
.PHONY: one two three four five six seven eight nine ten $(EQ) one$(EQ)two
# Test target-specific vars with pattern/suffix rules
QVAR = qvar
RVAR = =
%.q : ; @echo $(QVAR) $(RVAR)
foo.q : RVAR += rvar
# Target-specific vars with multiple LHS pattern rules
%.r %.s %.t: ; @echo $(QVAR) $(RVAR) $(SVAR) $(TVAR)
foo.r : RVAR += rvar
foo.t : TVAR := $(QVAR)
',
                 "one two three", "one bar\nfoo two\nBAR=1000\nfoo bar\n");

# TEST #2

run_make_test(undef, "one two FOO=1 BAR=2", "one 2\n1 2\n");

# TEST #3

run_make_test(undef, "four", "x ok  ok\n");

# TEST #4

run_make_test(undef, "seven", "eight: seven eight\nseven: seven seven\n");

# TEST #5

run_make_test(undef, "nine", "wallace bar wallace bar\n");

# TEST #5-a

run_make_test(undef, "nine-a", "baz\n");

# TEST #6

run_make_test(undef, "ten", "one=two\none bar\n=\nfoo two\nten\n");

# TEST #6

run_make_test(undef, "foo.q bar.q", "qvar = rvar\nqvar =\n");

# TEST #7

run_make_test(undef, "foo.t bar.s", "qvar = qvar\nqvar =\n");


# TEST #8
# For PR/1378: Target-specific vars don't inherit correctly

run_make_test('
foo: FOO = foo
bar: BAR = bar
foo: bar
bar: baz
baz: ; @echo $(FOO) $(BAR)
', "", "foo bar\n");

# TEST #9
# For PR/1380: Using += assignment in target-specific variables sometimes fails
# Also PR/1831

run_make_test('
.PHONY: all one
all: FOO += baz
all: one; @echo $(FOO)

FOO = bar

one: FOO += biz
one: FOO += boz
one: ; @echo $(FOO)
',
              '', "bar baz biz boz\nbar baz\n");

# Test #10

run_make_test(undef, 'one', "bar biz boz\n");

# Test #11
# PR/1709: Test semicolons in target-specific variable values

run_make_test('
foo : FOO = ; ok
foo : ; @echo "$(FOO)"
',
              '', "; ok\n");

# Test #12
# PR/2020: More hassles with += target-specific vars.  I _really_ think
# I nailed it this time :-/.

run_make_test('
.PHONY: a

BLAH := foo
COMMAND = echo $(BLAH)

a: ; @$(COMMAND)

a: BLAH := bar
a: COMMAND += snafu $(BLAH)
',
              '', "bar snafu bar\n");

# Test #13
# Test double-colon rules with target-specific variable values

run_make_test('
W = bad
X = bad
foo: W = ok
foo:: ; @echo $(W) $(X) $(Y) $(Z)
foo:: ; @echo $(W) $(X) $(Y) $(Z)
foo: X = ok

Y = foo
bar: foo
bar: Y = bar

Z = nopat
ifdef PATTERN
  fo% : Z = pat
endif
',
             'foo', "ok ok foo nopat\nok ok foo nopat\n");

# Test #14
# Test double-colon rules with target-specific variable values and
# inheritance

run_make_test(undef, 'bar', "ok ok bar nopat\nok ok bar nopat\n");

# Test #15
# Test double-colon rules with pattern-specific variable values

run_make_test(undef, 'foo PATTERN=yes', "ok ok foo pat\nok ok foo pat\n");

# Test #16
# Test target-specific variables with very long command line
# (> make default buffer length)

run_make_test('
base_metals_fmd_reports.sun5 base_metals_fmd_reports CreateRealPositions        CreateMarginFunds deals_changed_since : BUILD_OBJ=$(shell if [ -f               "build_information.generate" ]; then echo "$(OBJ_DIR)/build_information.o"; else echo "no build information"; fi  )

deals_changed_since: ; @echo $(BUILD_OBJ)
',
              '', "no build information\n");

# TEST #17

# Test a merge of set_lists for files, where one list is much longer
# than the other.  See Savannah bug #15757.

mkdir('t1', 0777);
touch('t1/rules.mk');

run_make_test('
VPATH = t1
include rules.mk
.PHONY: all
all: foo.x
foo.x : rules.mk ; @echo MYVAR=$(MYVAR) FOOVAR=$(FOOVAR) ALLVAR=$(ALLVAR)
all: ALLVAR = xxx
foo.x: FOOVAR = bar
rules.mk : MYVAR = foo
.INTERMEDIATE: foo.x rules.mk
',
              '-I t1', 'MYVAR= FOOVAR=bar ALLVAR=xxx');

rmfiles('t1/rules.mk');
rmdir('t1');

# TEST #18

# Test appending to a simple variable containing a "$": avoid a
# double-expansion.  See Savannah bug #15913.

run_make_test('
VAR := $$FOO
foo: VAR += BAR
foo: ; @echo '."'".'$(VAR)'."'".'
',
              '', '$FOO BAR');

# TEST #19: Override with append variables

run_make_test('
a: override FOO += f1
a: FOO += f2
a: ; @echo "$(FOO)"
',
              '', "f1\n");

run_make_test(undef, 'FOO=C', "C f1\n");

# TEST #19: Conditional variables with command-line settings

run_make_test('
a: FOO ?= f1
a: ; @echo "$(FOO)"
',
              '', "f1\n");

run_make_test(undef, 'FOO=C', "C\n");

# TEST #20: Check for continuation after semicolons

run_make_test(q!
a: A = 'hello;\
world'
a: ; @echo $(A)
!,
              '', "hello; world\n");

# TEST #19: Test define/endef variables as target-specific vars

# run_make_test('
# define b
# @echo global
# endef
# a: define b
# @echo local
# endef

# a: ; $(b)
# ',
#               '', "local\n");

1;
