11.15Srillig# $NetBSD: cond-func-defined.mk,v 1.15 2025/06/28 22:39:28 rillig Exp $ 21.1Srillig# 31.2Srillig# Tests for the defined() function in .if conditions. 41.1Srillig 51.3SrilligDEF= defined 61.3Srillig${:UA B}= variable name with spaces 71.3Srillig 81.3Srillig.if !defined(DEF) 91.5Srillig. error 101.3Srillig.endif 111.3Srillig 121.4Srillig# Horizontal whitespace (space tab) after the opening parenthesis is ignored. 131.3Srillig.if !defined( DEF) 141.5Srillig. error 151.3Srillig.endif 161.3Srillig 171.4Srillig# Horizontal whitespace (space tab) before the closing parenthesis is ignored. 181.3Srillig.if !defined(DEF ) 191.5Srillig. error 201.3Srillig.endif 211.3Srillig 221.3Srillig# The argument of a function must not directly contain whitespace. 231.15Srillig# expect+1: Missing ")" after argument "A" for "defined" 241.3Srillig.if !defined(A B) 251.5Srillig. error 261.3Srillig.endif 271.3Srillig 281.11Srillig# If necessary, the whitespace can be generated by an expression. 291.3Srillig.if !defined(${:UA B}) 301.5Srillig. error 311.3Srillig.endif 321.1Srillig 331.15Srillig# expect+1: Missing ")" after argument "DEF" for "defined" 341.6Srillig.if defined(DEF 351.6Srillig. error 361.6Srillig.else 371.6Srillig. error 381.6Srillig.endif 391.6Srillig 401.7Srillig# Variables from .for loops are not defined. 411.7Srillig# See directive-for.mk for more details. 421.7Srillig.for var in value 431.7Srillig. if defined(var) 441.7Srillig. error 451.7Srillig. else 461.12Srillig# In .for loops, expressions based on the loop variables are substituted at 471.12Srillig# evaluation time. There is no actual variable involved, even if the code in 481.12Srillig# the makefiles looks like it. 491.7Srillig. endif 501.7Srillig.endfor 511.7Srillig 521.14Srillig# Expressions in the argument of a function call don't have to be defined. 531.14Srillig.if defined(${UNDEF}) 541.14Srillig. error 551.14Srillig.endif 561.14Srillig 571.9Srillig# Neither of the conditions is true. Before July 2020, the right-hand 581.9Srillig# condition was evaluated even though it was irrelevant. 591.9Srillig.if defined(UNDEF) && ${UNDEF:Mx} != "" 601.9Srillig. error 611.9Srillig.endif 621.9Srillig 631.9Srilligall: .PHONY 64