( Shell Function

Info Catalog ( Flavor Function ( Functions ( Make Control Functions
 8.11 The `shell' Function
 The `shell' function is unlike any other function other than the
 `wildcard' function ( The Function `wildcard' Wildcard Function.)
 in that it communicates with the world outside of `make'.
    The `shell' function performs the same function that backquotes
 (``') perform in most shells: it does "command expansion".  This means
 that it takes as an argument a shell command and evaluates to the
 output of the command.  The only processing `make' does on the result
 is to convert each newline (or carriage-return / newline pair) to a
 single space.  If there is a trailing (carriage-return and) newline it
 will simply be removed.
    The commands run by calls to the `shell' function are run when the
 function calls are expanded ( How `make' Reads a Makefile Reading
 Makefiles.).  Because this function involves spawning a new shell, you
 should carefully consider the performance implications of using the
 `shell' function within recursively expanded variables vs. simply
 expanded variables ( The Two Flavors of Variables Flavors.).
    Here are some examples of the use of the `shell' function:
      contents := $(shell cat foo)
 sets `contents' to the contents of the file `foo', with a space (rather
 than a newline) separating each line.
      files := $(shell echo *.c)
 sets `files' to the expansion of `*.c'.  Unless `make' is using a very
 strange shell, this has the same result as `$(wildcard *.c)' (as long
 as at least one `.c' file exists).
Info Catalog ( Flavor Function ( Functions ( Make Control Functions
automatically generated byinfo2html