# -*-perl-*- $description = "Test 'private' variables."; $details = ""; # 1: Simple verification that private variables are not inherited &run_make_test(' a: F = g a: F = a b: private F = b a b c: ; @echo $@: F=$(F) a: b b: c ', '', "c: F=a\nb: F=b\na: F=a\n"); # 2: Again, but this time we start with "b" so "a"'s variable is not in scope &run_make_test(undef, 'b', "c: F=g\nb: F=b\n"); # 3: Verification with pattern-specific variables &run_make_test(' t.a: F1 = g F2 = g %.a: private F1 = a %.a: F2 = a t.a t.b: ; @echo $@: F1=$(F1) / F2=$(F2) t.a: t.b ', '', "t.b: F1=g / F2=a\nt.a: F1=a / F2=a\n"); # 4: Test private global variables &run_make_test(' a: private F = g G := $(F) a: b: F = b a b: ; @echo $@: F=$(F) / G=$(G) a: b ', '', "b: F=b / G=g\na: F= / G=g\n"); # 5: Multiple conditions on the same variable. Test export. delete $ENV{'_X'}; &run_make_test(' _X = x a: export override private _X = a a: ; @echo _X=$(_X) / _X=$$_X ', '', "_X=a / _X=a"); # 6: Test override. &run_make_test(undef, '_X=c', "_X=a / _X=a\n"); # 7: Ensure keywords still work as targets &run_make_test(' a: export override private foo bar foo bar export override private: ; @echo $@ ', '', "export\noverride\nprivate\nfoo\nbar\n"); # 8: Ensure keywords still work as variables &run_make_test(' private = g a: private = a a: b a b: ; @echo $@=$(private) ', '', "b=a\na=a\n"); # 9: make sure private suppresses inheritance run_make_test(q! DEFS = FOO all: bar1 bar1: private DEFS += 1 bar3: private DEFS += 3 bar1: bar2 bar2: bar3 bar1 bar2 bar3: ; @echo '$@: $(DEFS)' !, '', "bar3: FOO 3\nbar2: FOO\nbar1: FOO 1\n"); # 10: Test append with pattern-specific variables and private run_make_test(q! IA = global PA = global PS = global S = global PS = global SV = global b%: IA += b% b%: private PA += b% b%: private PS = b% bar: all bar: IA += bar bar: private PA += bar bar: private PS = bar a%: IA += a% a%: private PA += a% a%: private PS = a% all: IA += all all: private PA += all all: private PS = all bar all: ; @echo '$@: IA=$(IA)'; echo '$@: PA=$(PA)'; echo '$@: PS=$(PS)' !, '', "all: IA=global b% bar a% all all: PA=global a% all all: PS=all bar: IA=global b% bar bar: PA=global b% bar bar: PS=bar\n"); 1;