(autoconf.info)Build Directories

Next: Automatic Remaking Prev: Changed Directory Variables Up: Makefile Substitutions

4.8.4 Build Directories

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 can do this.  Most
other recent `make' programs can do this as well, though they may have
difficulties and it is often simpler to recommend GNU `make' (*note
VPATH and Make::).  Older `make' programs do not support `VPATH'; when
using them, the source code must be in the same directory as the object

   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 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, Make command lines should always refer to source files by
prefixing them with `$(srcdir)/'.  For example:

     time.info: time.texinfo
             $(MAKEINFO) '$(srcdir)/time.texinfo'

automatically generated by info2www