Make::Functions(3)

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.