1*4882a593Smuzhiyun# SPDX-License-Identifier: GPL-2.0 2*4882a593Smuzhiyun 3*4882a593Smuzhiyun# Shorthand 4*4882a593Smuzhiyunwarning = $(warning-if,y,$(1)) 5*4882a593Smuzhiyun 6*4882a593Smuzhiyun# Simply expanded variable. 7*4882a593SmuzhiyunX := 1 8*4882a593SmuzhiyunSIMPLE := $(X) 9*4882a593SmuzhiyunX := 2 10*4882a593Smuzhiyun$(warning,SIMPLE = $(SIMPLE)) 11*4882a593Smuzhiyun 12*4882a593Smuzhiyun# Recursively expanded variable. 13*4882a593SmuzhiyunX := 1 14*4882a593SmuzhiyunRECURSIVE = $(X) 15*4882a593SmuzhiyunX := 2 16*4882a593Smuzhiyun$(warning,RECURSIVE = $(RECURSIVE)) 17*4882a593Smuzhiyun 18*4882a593Smuzhiyun# Append something to a simply expanded variable. 19*4882a593SmuzhiyunY := 3 20*4882a593SmuzhiyunSIMPLE += $(Y) 21*4882a593SmuzhiyunY := 4 22*4882a593Smuzhiyun$(warning,SIMPLE = $(SIMPLE)) 23*4882a593Smuzhiyun 24*4882a593Smuzhiyun# Append something to a recursively expanded variable. 25*4882a593SmuzhiyunY := 3 26*4882a593SmuzhiyunRECURSIVE += $(Y) 27*4882a593SmuzhiyunY := 4 28*4882a593Smuzhiyun$(warning,RECURSIVE = $(RECURSIVE)) 29*4882a593Smuzhiyun 30*4882a593Smuzhiyun# Use += operator to an undefined variable. 31*4882a593Smuzhiyun# This works as a recursively expanded variable. 32*4882a593SmuzhiyunY := 3 33*4882a593SmuzhiyunUNDEFINED_VARIABLE += $(Y) 34*4882a593SmuzhiyunY := 4 35*4882a593Smuzhiyun$(warning,UNDEFINED_VARIABLE = $(UNDEFINED_VARIABLE)) 36*4882a593Smuzhiyun 37*4882a593Smuzhiyun# You can use variable references for the lefthand side of assignment statement. 38*4882a593SmuzhiyunX := A 39*4882a593SmuzhiyunY := B 40*4882a593Smuzhiyun$(X)$(Y) := 5 41*4882a593Smuzhiyun$(warning,AB = $(AB)) 42*4882a593Smuzhiyun 43*4882a593Smuzhiyun# User-defined function. 44*4882a593Smuzhiyungreeting = $(1), my name is $(2). 45*4882a593Smuzhiyun$(warning,$(greeting,Hello,John)) 46*4882a593Smuzhiyun 47*4882a593Smuzhiyun# The number of arguments is not checked for user-defined functions. 48*4882a593Smuzhiyun# If some arguments are optional, it is useful to pass fewer parameters. 49*4882a593Smuzhiyun# $(2) will be blank in this case. 50*4882a593Smuzhiyun$(warning,$(greeting,Hello)) 51*4882a593Smuzhiyun 52*4882a593Smuzhiyun# Unreferenced parameters are just ignored. 53*4882a593Smuzhiyun$(warning,$(greeting,Hello,John,ignored,ignored)) 54