45 lines
1.2 KiB
Plaintext
45 lines
1.2 KiB
Plaintext
|
# SPDX-License-Identifier: GPL-2.0
|
||
|
|
||
|
# Shorthand
|
||
|
warning = $(warning-if,y,$(1))
|
||
|
|
||
|
# You can not pass commas directly to a function since they are treated as
|
||
|
# delimiters. You can use the following trick to do so.
|
||
|
comma := ,
|
||
|
$(warning,hello$(comma) world)
|
||
|
|
||
|
# Like Make, single quotes, double quotes, spaces are treated verbatim.
|
||
|
# The following prints the text as-is.
|
||
|
$(warning, ' " '" ' ''' "'")
|
||
|
|
||
|
# Unlike Make, '$' has special meaning only when it is followed by '('.
|
||
|
# No need to escape '$' itself.
|
||
|
$(warning,$)
|
||
|
$(warning,$$)
|
||
|
$ := 1
|
||
|
$(warning,$($))
|
||
|
|
||
|
# You need a trick to escape '$' followed by '('
|
||
|
# The following should print "$(X)". It should not be expanded further.
|
||
|
dollar := $
|
||
|
$(warning,$(dollar)(X))
|
||
|
|
||
|
# You need a trick to treat unbalanced parentheses.
|
||
|
# The following should print "(".
|
||
|
left_paren := (
|
||
|
$(warning,$(left_paren))
|
||
|
|
||
|
# A simple expanded should not be expanded multiple times.
|
||
|
# The following should print "$(X)". It should not be expanded further.
|
||
|
Y := $(dollar)(X)
|
||
|
$(warning,$(Y))
|
||
|
|
||
|
# The following should print "$(X)" as well.
|
||
|
Y = $(dollar)(X)
|
||
|
$(warning,$(Y))
|
||
|
|
||
|
# The following should print "$(".
|
||
|
# It should not be emit "unterminated reference" error.
|
||
|
unterminated := $(dollar)(
|
||
|
$(warning,$(unterminated))
|