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))
 |