mirror of
https://github.com/jart/cosmopolitan.git
synced 2025-06-24 21:38:31 +00:00
add make-4.3.tar.gz
This commit is contained in:
parent
0a0997a872
commit
19f70a154e
458 changed files with 239669 additions and 0 deletions
282
third_party/make/tests/scripts/variables/define
vendored
Normal file
282
third_party/make/tests/scripts/variables/define
vendored
Normal file
|
@ -0,0 +1,282 @@
|
|||
# -*-perl-*-
|
||||
|
||||
$description = "Test define/endef variable assignments.";
|
||||
|
||||
$details = "";
|
||||
|
||||
# TEST 0: old-style basic define/endef
|
||||
|
||||
run_make_test('
|
||||
define multi
|
||||
@echo hi
|
||||
echo there
|
||||
endef
|
||||
|
||||
all: ; $(multi)
|
||||
',
|
||||
'', "hi\necho there\nthere\n");
|
||||
|
||||
# TEST 1: Various new-style define/endef
|
||||
|
||||
run_make_test('
|
||||
FOO = foo
|
||||
|
||||
define multi =
|
||||
echo hi
|
||||
@echo $(FOO)
|
||||
endef # this is the end
|
||||
|
||||
define simple :=
|
||||
@echo $(FOO)
|
||||
endef
|
||||
|
||||
define posix ::=
|
||||
@echo $(FOO)
|
||||
endef
|
||||
|
||||
append = @echo a
|
||||
|
||||
define append +=
|
||||
|
||||
@echo b
|
||||
endef
|
||||
|
||||
define cond ?= # this is a conditional
|
||||
@echo first
|
||||
endef
|
||||
|
||||
define cond ?=
|
||||
@echo second
|
||||
endef
|
||||
|
||||
FOO = there
|
||||
|
||||
all: ; $(multi)
|
||||
$(simple)
|
||||
$(posix)
|
||||
$(append)
|
||||
$(cond)
|
||||
',
|
||||
'', "echo hi\nhi\nthere\nfoo\nfoo\na\nb\nfirst\n");
|
||||
|
||||
# TEST 1a: Various new-style define/endef, with no spaces
|
||||
|
||||
run_make_test('
|
||||
FOO = foo
|
||||
|
||||
define multi=
|
||||
echo hi
|
||||
@echo $(FOO)
|
||||
endef # this is the end
|
||||
|
||||
define simple:=
|
||||
@echo $(FOO)
|
||||
endef
|
||||
|
||||
define posix::=
|
||||
@echo $(FOO)
|
||||
endef
|
||||
|
||||
append = @echo a
|
||||
|
||||
define append+=
|
||||
|
||||
@echo b
|
||||
endef
|
||||
|
||||
define cond?= # this is a conditional
|
||||
@echo first
|
||||
endef
|
||||
|
||||
define cond?=
|
||||
@echo second
|
||||
endef
|
||||
|
||||
FOO = there
|
||||
|
||||
all: ; $(multi)
|
||||
$(simple)
|
||||
$(posix)
|
||||
$(append)
|
||||
$(cond)
|
||||
',
|
||||
'', "echo hi\nhi\nthere\nfoo\nfoo\na\nb\nfirst\n");
|
||||
|
||||
# TEST 2: define in true section of conditional (containing conditional)
|
||||
|
||||
run_make_test('
|
||||
FOO = foo
|
||||
NAME = def
|
||||
def =
|
||||
ifdef BOGUS
|
||||
define $(subst e,e,$(NAME)) =
|
||||
ifeq (1,1)
|
||||
FOO = bar
|
||||
endif
|
||||
endef
|
||||
endif
|
||||
|
||||
$(eval $(def))
|
||||
all: ; @echo $(FOO)
|
||||
',
|
||||
'BOGUS=1', "bar\n");
|
||||
|
||||
# TEST 3: define in false section of conditional (containing conditional)
|
||||
|
||||
run_make_test(undef, '', "foo\n");
|
||||
|
||||
# TEST 4: nested define (supported?)
|
||||
|
||||
run_make_test('
|
||||
define outer
|
||||
define inner
|
||||
A = B
|
||||
endef
|
||||
endef
|
||||
|
||||
$(eval $(outer))
|
||||
|
||||
outer: ; @echo $(inner)
|
||||
',
|
||||
'', "A = B\n");
|
||||
|
||||
# TEST 5: NEGATIVE: Missing variable name
|
||||
|
||||
run_make_test('
|
||||
NAME =
|
||||
define $(NAME) =
|
||||
ouch
|
||||
endef
|
||||
all: ; @echo ouch
|
||||
',
|
||||
'', "#MAKEFILE#:3: *** empty variable name. Stop.\n", 512);
|
||||
|
||||
# TEST 6: NEGATIVE: extra text after define
|
||||
|
||||
run_make_test('
|
||||
NAME =
|
||||
define NAME = $(NAME)
|
||||
ouch
|
||||
endef
|
||||
all: ; @echo ok
|
||||
',
|
||||
'', "#MAKEFILE#:3: extraneous text after 'define' directive\nok\n");
|
||||
|
||||
# TEST 7: NEGATIVE: extra text after endef
|
||||
|
||||
run_make_test('
|
||||
NAME =
|
||||
define NAME =
|
||||
ouch
|
||||
endef $(NAME)
|
||||
all: ; @echo ok
|
||||
',
|
||||
'', "#MAKEFILE#:5: extraneous text after 'endef' directive\nok\n");
|
||||
|
||||
# TEST 8: NEGATIVE: missing endef
|
||||
|
||||
run_make_test('
|
||||
NAME =
|
||||
all: ; @echo ok
|
||||
define NAME =
|
||||
ouch
|
||||
endef$(NAME)
|
||||
',
|
||||
'', "#MAKEFILE#:4: *** missing 'endef', unterminated 'define'. Stop.\n", 512);
|
||||
|
||||
# -------------------------
|
||||
# Make sure that prefix characters apply properly to define/endef values.
|
||||
#
|
||||
# There's a bit of oddness here if you try to use a variable to hold the
|
||||
# prefix character for a define. Even though something like this:
|
||||
#
|
||||
# define foo
|
||||
# echo bar
|
||||
# endef
|
||||
#
|
||||
# all: ; $(V)$(foo)
|
||||
#
|
||||
# (where V=@) can be seen by the user to be obviously different than this:
|
||||
#
|
||||
# define foo
|
||||
# $(V)echo bar
|
||||
# endef
|
||||
#
|
||||
# all: ; $(foo)
|
||||
#
|
||||
# and the user thinks it should behave the same as when the "@" is literal
|
||||
# instead of in a variable, that can't happen because by the time make
|
||||
# expands the variables for the command line and sees it begins with a "@" it
|
||||
# can't know anymore whether the prefix character came before the variable
|
||||
# reference or was included in the first line of the variable reference.
|
||||
|
||||
# TEST #5
|
||||
# -------
|
||||
|
||||
run_make_test('
|
||||
define FOO
|
||||
$(V1)echo hello
|
||||
$(V2)echo world
|
||||
endef
|
||||
all: ; @$(FOO)
|
||||
', '', 'hello
|
||||
world');
|
||||
|
||||
# TEST #6
|
||||
# -------
|
||||
|
||||
run_make_test(undef, 'V1=@ V2=@', 'hello
|
||||
world');
|
||||
|
||||
# TEST #7
|
||||
# -------
|
||||
|
||||
run_make_test('
|
||||
define FOO
|
||||
$(V1)echo hello
|
||||
$(V2)echo world
|
||||
endef
|
||||
all: ; $(FOO)
|
||||
', 'V1=@', 'hello
|
||||
echo world
|
||||
world');
|
||||
|
||||
# TEST #8
|
||||
# -------
|
||||
|
||||
run_make_test(undef, 'V2=@', 'echo hello
|
||||
hello
|
||||
world');
|
||||
|
||||
# TEST #9
|
||||
# -------
|
||||
|
||||
run_make_test(undef, 'V1=@ V2=@', 'hello
|
||||
world');
|
||||
|
||||
# TEST #10
|
||||
# -------
|
||||
# Test the basics; a "@" internally to the variable applies to only one line.
|
||||
# A "@" before the variable applies to the entire variable.
|
||||
|
||||
run_make_test('
|
||||
define FOO
|
||||
@echo hello
|
||||
echo world
|
||||
endef
|
||||
define BAR
|
||||
echo hello
|
||||
echo world
|
||||
endef
|
||||
|
||||
all: foo bar
|
||||
foo: ; $(FOO)
|
||||
bar: ; @$(BAR)
|
||||
', '', 'hello
|
||||
echo world
|
||||
world
|
||||
hello
|
||||
world
|
||||
');
|
||||
|
||||
1;
|
Loading…
Add table
Add a link
Reference in a new issue