2009-10-06 06:56:57 +00:00
|
|
|
# -*-perl-*-
|
|
|
|
|
|
|
|
$description = "Test variable undefine.";
|
|
|
|
|
|
|
|
$details = "";
|
|
|
|
|
|
|
|
# TEST 0: basic undefine functionality
|
|
|
|
|
|
|
|
run_make_test('
|
|
|
|
a = a
|
|
|
|
b := b
|
|
|
|
define c
|
|
|
|
c
|
|
|
|
endef
|
|
|
|
|
|
|
|
$(info $(flavor a) $(flavor b) $(flavor c))
|
|
|
|
|
|
|
|
n := b
|
|
|
|
|
|
|
|
undefine a
|
|
|
|
undefine $n
|
|
|
|
undefine c
|
|
|
|
|
|
|
|
$(info $(flavor a) $(flavor b) $(flavor c))
|
|
|
|
|
|
|
|
|
|
|
|
all: ;@:
|
|
|
|
',
|
|
|
|
'', "recursive simple recursive\nundefined undefined undefined");
|
|
|
|
|
|
|
|
|
|
|
|
# TEST 1: override
|
|
|
|
|
|
|
|
run_make_test('
|
|
|
|
undefine a
|
|
|
|
override undefine b
|
|
|
|
|
|
|
|
$(info $(flavor a) $(flavor b))
|
|
|
|
|
|
|
|
|
|
|
|
all: ;@:
|
|
|
|
',
|
|
|
|
'a=a b=b', "recursive undefined");
|
|
|
|
|
|
|
|
1;
|
|
|
|
|
|
|
|
# TEST 2: undefine in eval (make sure we undefine from the global var set)
|
|
|
|
|
|
|
|
run_make_test('
|
|
|
|
define undef
|
|
|
|
$(eval undefine $$1)
|
|
|
|
endef
|
|
|
|
|
|
|
|
a := a
|
|
|
|
$(call undef,a)
|
|
|
|
$(info $(flavor a))
|
|
|
|
|
|
|
|
|
|
|
|
all: ;@:
|
|
|
|
',
|
|
|
|
'', "undefined");
|
|
|
|
|
|
|
|
|
|
|
|
# TEST 3: Missing variable name
|
|
|
|
|
|
|
|
run_make_test('
|
|
|
|
a =
|
|
|
|
undefine $a
|
|
|
|
all: ;@echo ouch
|
|
|
|
',
|
|
|
|
'', "#MAKEFILE#:3: *** empty variable name. Stop.\n", 512);
|
|
|
|
|
2021-03-14 20:32:47 +00:00
|
|
|
# Ensure that define can be a target when not appearing in a variable
|
|
|
|
# definition context. See SV 59870
|
|
|
|
|
|
|
|
run_make_test(q!
|
|
|
|
undefine = undefine
|
|
|
|
|
|
|
|
$(undefine) : ;@echo $@
|
|
|
|
|
|
|
|
%:undefine
|
|
|
|
|
|
|
|
all: undefine foo
|
|
|
|
|
|
|
|
%.x : undefine
|
|
|
|
|
|
|
|
foo:;
|
|
|
|
!,
|
|
|
|
'', "undefine\n");
|
|
|
|
|
2009-10-06 06:56:57 +00:00
|
|
|
1;
|