$(dir names...)
Extracts the directory-part
of each file name in names. The directory-part of the file name is everything
up through (and including) the last slash in it. If the file name contains
no slash, the directory part is the string ./.
For example, $(dir
src/foo.c hacks)
produces the result, src/
./.
$(notdir names ...)
Extracts all but the directory-part
of each file name in names.
If the file name contains no slash, it is left unchanged. Otherwise, everything
through the last slash is removed from it.
A file name that ends with
a slash becomes an empty string. This is unfortunate because it means that
the result does not always have the same number of whitespace-separated
file names as the argument had; but we do not see any other valid alternative.
For example, $(notdir
src/foo.c hacks)
produces the resulting file name, foo.c
hacks.
$(suffix names ...)
Extracts the suffix of each
file name in names. If the file name contains a period, the suffix is everything
starting with the last period. Otherwise, the suffix is the empty string.
This frequently means that the result will be empty when names is not,
and if names contains multiple file names, the result may contain fewer
file names.
For example, $(suffix
src/foo.c hacks)
produces the result, .c.
$(basename names...)
Extracts all but the suffix
of each file name in names.If
the file name contains a period, the basename is everything starting up
to (and not including) the last period. Otherwise, the basename is the
entire file name. For example, $(basename
src/foo.c hacks)
produces the result, src/foo
hacks.
$(addsuffix suffix, names...)
The argument, names,
is regarded as a series of names, sep-arated by whitespace; suffix
is used as a unit. The value of suffix
is appended to the end of each individual name and the resulting larger
names are concatenated with single spaces between them.
For example, $(addsuffix
.c,foo bar) results
infoo.c bar.c.
$(addprefix prefix, names...)
The argument, names,
is regarded as a series of names, separated by whitespace; prefix
is used as a unit. The value of prefix
is prepended to the front of each individual name and the resulting larger
names are concatenated with single spaces between them.
For example,
$(addprefix src/,foo bar)
results in src/foo
src/bar.
$(join list1, list2)
Concatenates the two arguments
word by word; the two first words (one from each argument), concatenated,
form the first word of the result; the two second words form the second
word of the result, and so on. So the nth
word of the result comes from the nth
word of each argument. If one argument has more words that the other, the
extra words are copied unchanged into the result.
For example, $(join
a b,.c .o) produces
a.c b.o.
Whitespace between the words
in the lists is not preserved; it is replaced with a single space. This
function can merge the results of the dir
and notdir
functions to produce the original list of files which was given to those
two functions.
$(word n, text)
Returns the nth
word of text.
The legitimate values of n
start from 1. If n
is bigger
than the number of words in text,
the value is empty.
For example, $(word
2, foo bar baz) returns
bar.
$(words text)
Returns the number of words
in text.
Thus, the last word of text
is $(word
$(words text),text).
$(firstword names...)
The argument, names,
is regarded as a series of names, separated by whitespace. The value is
the first name in the series. The rest of the names are ignored.
For example, $(firstword
foo bar) produces
the result foo.
Although $(firstword
text) is
the same as $(word
1, text),
the firstword
function is retained for its simplicity.
$(wildcard pattern)
The argument pattern
is a file name pattern, typically containing wildcard characters (as in
shell file name patterns). The result of wildcard is a space-separated
list of the names of existing files that match the pattern. See Using
wildcard characters in file names.