File: make.info, Node: Quick Reference, Next: Error Messages, Prev: Makefile Conventions, Up: Top Appendix A Quick Reference ************************** This appendix summarizes the directives, text manipulation functions, and special variables which GNU 'make' understands. *Note Special Targets::, *note Catalogue of Built-In Rules: Catalogue of Rules, and *note Summary of Options: Options Summary, for other summaries. Here is a summary of the directives GNU 'make' recognizes: 'define VARIABLE' 'define VARIABLE =' 'define VARIABLE :=' 'define VARIABLE ::=' 'define VARIABLE :::=' 'define VARIABLE +=' 'define VARIABLE ?=' 'endef' Define multi-line variables. *Note Multi-Line::. 'undefine VARIABLE' Undefining variables. *Note Undefine Directive::. 'ifdef VARIABLE' 'ifndef VARIABLE' 'ifeq (A,B)' 'ifeq "A" "B"' 'ifeq 'A' 'B'' 'ifneq (A,B)' 'ifneq "A" "B"' 'ifneq 'A' 'B'' 'else' 'endif' Conditionally evaluate part of the makefile. *Note Conditionals::. 'include FILE' '-include FILE' 'sinclude FILE' Include another makefile. *Note Including Other Makefiles: Include. 'override VARIABLE-ASSIGNMENT' Define a variable, overriding any previous definition, even one from the command line. *Note The 'override' Directive: Override Directive. 'export' Tell 'make' to export all variables to child processes by default. *Note Communicating Variables to a Sub-'make': Variables/Recursion. 'export VARIABLE' 'export VARIABLE-ASSIGNMENT' 'unexport VARIABLE' Tell 'make' whether or not to export a particular variable to child processes. *Note Communicating Variables to a Sub-'make': Variables/Recursion. 'private VARIABLE-ASSIGNMENT' Do not allow this variable assignment to be inherited by prerequisites. *Note Suppressing Inheritance::. 'vpath PATTERN PATH' Specify a search path for files matching a '%' pattern. *Note The 'vpath' Directive: Selective Search. 'vpath PATTERN' Remove all search paths previously specified for PATTERN. 'vpath' Remove all search paths previously specified in any 'vpath' directive. Here is a summary of the built-in functions (*note Functions::): '$(subst FROM,TO,TEXT)' Replace FROM with TO in TEXT. *Note Functions for String Substitution and Analysis: Text Functions. '$(patsubst PATTERN,REPLACEMENT,TEXT)' Replace words matching PATTERN with REPLACEMENT in TEXT. *Note Functions for String Substitution and Analysis: Text Functions. '$(strip STRING)' Remove excess whitespace characters from STRING. *Note Functions for String Substitution and Analysis: Text Functions. '$(findstring FIND,TEXT)' Locate FIND in TEXT. *Note Functions for String Substitution and Analysis: Text Functions. '$(filter PATTERN...,TEXT)' Select words in TEXT that match one of the PATTERN words. *Note Functions for String Substitution and Analysis: Text Functions. '$(filter-out PATTERN...,TEXT)' Select words in TEXT that _do not_ match any of the PATTERN words. *Note Functions for String Substitution and Analysis: Text Functions. '$(sort LIST)' Sort the words in LIST lexicographically, removing duplicates. *Note Functions for String Substitution and Analysis: Text Functions. '$(word N,TEXT)' Extract the Nth word (one-origin) of TEXT. *Note Functions for String Substitution and Analysis: Text Functions. '$(words TEXT)' Count the number of words in TEXT. *Note Functions for String Substitution and Analysis: Text Functions. '$(wordlist S,E,TEXT)' Returns the list of words in TEXT from S to E. *Note Functions for String Substitution and Analysis: Text Functions. '$(firstword NAMES...)' Extract the first word of NAMES. *Note Functions for String Substitution and Analysis: Text Functions. '$(lastword NAMES...)' Extract the last word of NAMES. *Note Functions for String Substitution and Analysis: Text Functions. '$(dir NAMES...)' Extract the directory part of each file name. *Note Functions for File Names: File Name Functions. '$(notdir NAMES...)' Extract the non-directory part of each file name. *Note Functions for File Names: File Name Functions. '$(suffix NAMES...)' Extract the suffix (the last '.' and following characters) of each file name. *Note Functions for File Names: File Name Functions. '$(basename NAMES...)' Extract the base name (name without suffix) of each file name. *Note Functions for File Names: File Name Functions. '$(addsuffix SUFFIX,NAMES...)' Append SUFFIX to each word in NAMES. *Note Functions for File Names: File Name Functions. '$(addprefix PREFIX,NAMES...)' Prepend PREFIX to each word in NAMES. *Note Functions for File Names: File Name Functions. '$(join LIST1,LIST2)' Join two parallel lists of words. *Note Functions for File Names: File Name Functions. '$(wildcard PATTERN...)' Find file names matching a shell file name pattern (_not_ a '%' pattern). *Note The Function 'wildcard': Wildcard Function. '$(realpath NAMES...)' For each file name in NAMES, expand to an absolute name that does not contain any '.', '..', nor symlinks. *Note Functions for File Names: File Name Functions. '$(abspath NAMES...)' For each file name in NAMES, expand to an absolute name that does not contain any '.' or '..' components, but preserves symlinks. *Note Functions for File Names: File Name Functions. '$(error TEXT...)' When this function is evaluated, 'make' generates a fatal error with the message TEXT. *Note Functions That Control Make: Make Control Functions. '$(warning TEXT...)' When this function is evaluated, 'make' generates a warning with the message TEXT. *Note Functions That Control Make: Make Control Functions. '$(shell COMMAND)' Execute a shell command and return its output. *Note The 'shell' Function: Shell Function. '$(origin VARIABLE)' Return a string describing how the 'make' variable VARIABLE was defined. *Note The 'origin' Function: Origin Function. '$(flavor VARIABLE)' Return a string describing the flavor of the 'make' variable VARIABLE. *Note The 'flavor' Function: Flavor Function. '$(let VAR [VAR ...],WORDS,TEXT)' Evaluate TEXT with the VARs bound to the words in WORDS. *Note The 'let' Function: Let Function. '$(foreach VAR,WORDS,TEXT)' Evaluate TEXT with VAR bound to each word in WORDS, and concatenate the results. *Note The 'foreach' Function: Foreach Function. '$(if CONDITION,THEN-PART[,ELSE-PART])' Evaluate the condition CONDITION; if it's non-empty substitute the expansion of the THEN-PART otherwise substitute the expansion of the ELSE-PART. *Note Functions for Conditionals: Conditional Functions. '$(or CONDITION1[,CONDITION2[,CONDITION3...]])' Evaluate each condition CONDITIONN one at a time; substitute the first non-empty expansion. If all expansions are empty, substitute the empty string. *Note Functions for Conditionals: Conditional Functions. '$(and CONDITION1[,CONDITION2[,CONDITION3...]])' Evaluate each condition CONDITIONN one at a time; if any expansion results in the empty string substitute the empty string. If all expansions result in a non-empty string, substitute the expansion of the last CONDITION. *Note Functions for Conditionals: Conditional Functions. '$(intcmp LHS,RHS[,LT-PART[,EQ-PART[,GT-PART]]])' Compare LHS and RHS numerically; substitute the expansion of LT-PART, EQ-PART, or GT-PART depending on whether the left-hand side is less-than, equal-to, or greater-than the right-hand side, respectively. *Note Functions for Conditionals: Conditional Functions. '$(call VAR,PARAM,...)' Evaluate the variable VAR replacing any references to '$(1)', '$(2)' with the first, second, etc. PARAM values. *Note The 'call' Function: Call Function. '$(eval TEXT)' Evaluate TEXT then read the results as makefile commands. Expands to the empty string. *Note The 'eval' Function: Eval Function. '$(file OP FILENAME,TEXT)' Expand the arguments, then open the file FILENAME using mode OP and write TEXT to that file. *Note The 'file' Function: File Function. '$(value VAR)' Evaluates to the contents of the variable VAR, with no expansion performed on it. *Note The 'value' Function: Value Function. Here is a summary of the automatic variables. *Note Automatic Variables::, for full information. '$@' The file name of the target. '$%' The target member name, when the target is an archive member. '$<' The name of the first prerequisite. '$?' The names of all the prerequisites that are newer than the target, with spaces between them. For prerequisites which are archive members, only the named member is used (*note Archives::). '$^' '$+' The names of all the prerequisites, with spaces between them. For prerequisites which are archive members, only the named member is used (*note Archives::). The value of '$^' omits duplicate prerequisites, while '$+' retains them and preserves their order. '$*' The stem with which an implicit rule matches (*note How Patterns Match: Pattern Match.). '$(@D)' '$(@F)' The directory part and the file-within-directory part of '$@'. '$(*D)' '$(*F)' The directory part and the file-within-directory part of '$*'. '$(%D)' '$(%F)' The directory part and the file-within-directory part of '$%'. '$(