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