152 lines
3.5 KiB
Plaintext
152 lines
3.5 KiB
Plaintext
# Simple assignments (with bad formatting, as an additional test)
|
|
|
|
simple-recursive=foo
|
|
simple-immediate:=bar
|
|
# Should become recursive
|
|
simple-recursive-2+=baz
|
|
|
|
whitespaced = foo
|
|
|
|
|
|
# Simple += test. += should preserve the flavor of the variable (simple vs.
|
|
# recursive).
|
|
|
|
preserve-recursive = foo
|
|
preserve-recursive += bar
|
|
|
|
preserve-immediate := foo
|
|
preserve-immediate += bar
|
|
|
|
|
|
# Recursive substitution
|
|
|
|
recursive = $(foo) $(bar) $($(b-char)a$(z-char))
|
|
recursive += $(indir)
|
|
|
|
foo = abc
|
|
bar = def
|
|
baz = ghi
|
|
|
|
b-char = b
|
|
z-char = z
|
|
|
|
indir = jkl $(indir-2)
|
|
indir-2 = mno
|
|
|
|
|
|
# Immediate substitution
|
|
|
|
def = foo
|
|
immediate := $(undef)$(def)$(undef)$(def)
|
|
def = bar
|
|
undef = bar
|
|
|
|
|
|
# Function calls
|
|
|
|
# Chained function call
|
|
quote = "$(1)" "$(2)"
|
|
rev-quote = $(quote,$(2),$(1))
|
|
surround-rev-quote = $(0) $(rev-quote,$(1),$(2)) $(0)
|
|
surround-rev-quote-unused-arg = $(surround-rev-quote,$(1),$(2)) $(3)
|
|
# No value is passed for $(3), so it expands to nothing
|
|
fn-indir = surround-rev-quote
|
|
messy-fn-res = $($(fn-indir)-unused-arg, a b (,) , c d )
|
|
|
|
# Special characters in function call
|
|
comma = ,
|
|
right-paren = )
|
|
dollar = $
|
|
left-paren = (
|
|
fn = "$(1)"
|
|
special-chars-fn-res = $(fn,$(comma)$(dollar)$(left-paren)foo$(right-paren))
|
|
|
|
|
|
# Variable expansions in various locations (verified by checking how the symbol
|
|
# prints)
|
|
|
|
qaz = QAZ
|
|
echo = $(1)
|
|
ignore-first = $(2)
|
|
|
|
config PRINT_ME
|
|
string "$(ENV_1)" if ($(echo,FOO) && $(echo,BAR)) || !$(echo,BAZ) || !(($(qaz)))
|
|
default "$(echo,"foo")" if "foo $(echo,"bar") baz" = "$(undefined)"
|
|
|
|
# Expansion within a symbol token, with deliberate sloppiness
|
|
config PRINT_$(ignore-first, ,ME)_TOO
|
|
bool "foo"
|
|
default FOO$(ignore-first, ,BAR)BAZ$(qaz) if $(qaz)&&$(qaz)FOO&&x$(ignore-first, ,xx)
|
|
|
|
|
|
# Recursive expansion (throws an exception)
|
|
|
|
rec-1 = x $(rec-2) y
|
|
rec-2 = x $(rec-3) y
|
|
rec-3 = x $(rec-1) y
|
|
|
|
# Functions are allowed to reference themselves, but an exception is thrown if
|
|
# the function seems to be stuck (the recursion gets too deep)
|
|
safe-fn-rec = $($(1))
|
|
safe-fn-rec-2 = $(safe-fn-rec,safe-fn-rec-3)
|
|
safe-fn-rec-3 = foo
|
|
safe-fn-rec-res = $(safe-fn-rec,safe-fn-rec-2)
|
|
|
|
unsafe-fn-rec = $(unsafe-fn-rec,$(1))
|
|
|
|
|
|
# Expansion in the left-hand side of assignments
|
|
|
|
dummy-arg-fn = bar
|
|
lhs-indir-1 = lhs-indir-2
|
|
lhs-indir-2 = -baz
|
|
rhs = value
|
|
# LHS expands to foo-bar-baz
|
|
foo-$(dummy-arg-fn, ignored argument )$($(lhs-indir-1)) = $(rhs)
|
|
# Expands to empty string, accepted
|
|
$(undefined)
|
|
|
|
# Variable with a space in its name
|
|
empty =
|
|
space = $(empty) $(empty)
|
|
foo$(space)bar = value
|
|
space-var-res = $(foo bar)
|
|
|
|
|
|
# Built-in functions
|
|
|
|
# Expands to "baz qaz"
|
|
shell-res = $(shell,false && echo foo bar || echo baz qaz)
|
|
|
|
# Warns about output on stderr, expands to nothing
|
|
shell-stderr-res := $(shell,echo message on stderr >&2)
|
|
|
|
# Nested parens in macro call. Should give a single argument. Test it with
|
|
# $(shell) to get a free argument number check.
|
|
parens-res = pre-$(shell,echo '(a,$(b-char),(c,d),e)')-post
|
|
|
|
# Expands to the current location
|
|
location-res := $(filename):$(lineno)
|
|
|
|
# Adds one warning, expands to nothing
|
|
$(warning-if,,no warning)
|
|
$(warning-if,n,no warning)
|
|
warning-res := $(warning-if,y,a warning)
|
|
|
|
# Does not cause an error, expands to nothing
|
|
error-n-res := $(error-if,n,oops)
|
|
|
|
# Causes an error when expanded
|
|
error-y-res = $(error-if,y,oops)
|
|
|
|
|
|
# Environment variables (for testing Kconfig.env_vars). ENV_1 is already
|
|
# referenced above.
|
|
env_ref_1 := xxx $(ENV_2) xxx
|
|
env_ref_2 := $(shell,echo $(ENV_3))
|
|
env_ref_3 :=
|
|
env_ref_3 += $(ENV_4)
|
|
$(warning-if,$(ENV_5),$(ENV_UNDEFINED))
|
|
source "$(ENV_6)"
|
|
env_ref_4 = $(ENV_7) # Never evaluated
|