NAME

Make::Functions - Functions in Makefile macros

SYNOPSIS

require Make::Functions;
my ($dir) = Make::Functions::dir($fsmap, "x/y");
# $dir now "x"

DESCRIPTION

Package that contains the various functions used by Make.

FUNCTIONS

Implements GNU-make style functions. The call interface for all these Perl functions is:

my @return_list = func($fsmap, @args);

The args will have been extracted from the Makefile, comma-separated, as in GNU make. The first arg is a "FSFunctionMap" in Make.

wildcard

Returns all its args expanded using glob.

shell

Runs the command, returns the output with all newlines replaced by spaces.

addprefix

Prefixes each word in the second arg with first arg:

$(addprefix x/,1 2)
# becomes x/1 x/2

addsuffix

Suffixes each word in the second arg with first arg:

$(addprefix /x,1 2)
# becomes 1/x 2/x

notdir

Returns everything after last /.

dir

Returns everything up to last /. If no /, returns ./.

subst

In the third arg, replace every instance of first arg with second. E.g.:

$(subst .o,.c,a.o b.o c.o)
# becomes a.c b.c c.c

Since, as with GNU make, all whitespace gets ignored in the expression as written, and the commas cannot be quoted, you need to use variable expansion for some scenarios:

comma = ,
empty =
space = $(empty) $(empty)
foo = a b c
bar = $(subst $(space),$(comma),$(foo))
# bar is now "a,b,c"

patsubst

Like "subst", but only operates when the pattern is at the end of a word.

mktmp

Like the dmake macro, but does not support a file argument straight after the macro-name.

The text after further whitespace is inserted in a temporary file, whose name is returned. E.g.:

$(mktmp $(shell echo hi))
# becomes a temporary filename, and that file contains "hi"

COPYRIGHT AND LICENSE

Copyright (c) 1996-1999 Nick Ing-Simmons.

This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.