Node:Build Directories, Next:Automatic Remaking, Previous:Installation Directory Variables, Up:Makefile Substitutions
You can support compiling a software package for several architectures simultaneously from the same copy of the source code. The object files for each architecture are kept in their own directory.
To support doing this, make
uses the VPATH
variable to
find the files that are in the source directory. GNU make
and most other recent make
programs can do this. Older
make
programs do not support VPATH
; when using them, the
source code must be in the same directory as the object files.
To support VPATH
, each Makefile.in
should contain two
lines that look like:
srcdir = @srcdir@ VPATH = @srcdir@
Do not set VPATH
to the value of another variable, for example
VPATH = $(srcdir)
, because some versions of make
do not do
variable substitutions on the value of VPATH
.
configure
substitutes in the correct value for srcdir
when
it produces Makefile
.
Do not use the make
variable $<
, which expands to the
file name of the file in the source directory (found with VPATH
),
except in implicit rules. (An implicit rule is one such as .c.o
,
which tells how to create a .o
file from a .c
file.) Some
versions of make
do not set $<
in explicit rules; they
expand it to an empty value.
Instead, Makefile
command lines should always refer to source
files by prefixing them with $(srcdir)/
. For example:
time.info: time.texinfo $(MAKEINFO) $(srcdir)/time.texinfo