Getting Environment Variables into GNU makeSetting Variables from Outside the MakefileThe Environment Used by CommandsThe $(shell) EnvironmentTarget-Specific and Pattern-Specific VariablesTarget-Specific VariablesPattern-Specific VariablesVersion CheckingMAKE_VERSION.FEATURESDetecting $(eval)Using Boolean ValuesUndefined Variables in ConditionalsConsistent Truth ValuesLogical Operations Using Boolean ValuesUser-Defined Logical OperatorsBuilt-in Logical Operators (GNU make 3.81 and Later)Command DetectionDelayed Variable AssignmentSimple List ManipulationUser-Defined FunctionsThe BasicsArgument-Handling GotchasCalling Built-in FunctionsRecent GNU make Versions: 3.81, 3.82, and 4.0What’s New in GNU make 3.81.SECONDEXPANSIONelseThe -L Command Line Option.INCLUDE_DIRS.FEATURES.DEFAULT_GOALMAKE_RESTARTSNew FunctionsWhat’s New in GNU make 3.82Backward IncompatibilitiesNew Command Line Option: --evalNew Special Variables: .RECIPEPREFIX and .SHELLFLAGSThe .ONESHELL TargetChanging Variables with the private and undefine KeywordsWhat’s New in GNU make 4.0GNU GuileLoading Dynamic ObjectsSyncing Output with --output-syncThe --trace Command Line OptionNew Assignment Operators: != and ::=The $(file) FunctionWhat’s New in GNU make 4.1