4.6.2 Installation Directory Variables 
The following variables specify the directories where the package will
be installed, see section `Variables for Installation Directories' in The GNU Coding Standards, for more information.
See the end of this section for details on when and how to use these
variables.
- Variable: bindir
 - 
The directory for installing executables that users run.
 
- Variable: datadir
 - 
The directory for installing read-only architecture-independent data.
 
- Variable: exec_prefix
 - 
The installation prefix for architecture-dependent files.  By default
it's the same as prefix.  You should avoid installing anything
directly to exec_prefix.  However, the default value for
directories containing architecture-dependent files should be relative
to exec_prefix.
 
- Variable: includedir
 - 
The directory for installing C header files.
 
- Variable: infodir
 - 
The directory for installing documentation in Info format.
 
- Variable: libdir
 - 
The directory for installing object code libraries.
 
- Variable: libexecdir
 - 
The directory for installing executables that other programs run.
 
- Variable: localstatedir
 - 
The directory for installing modifiable single-machine data.
 
- Variable: mandir
 - 
The top-level directory for installing documentation in man format.
 
- Variable: oldincludedir
 - 
The directory for installing C header files for non-gcc compilers.
 
- Variable: prefix
 - 
The common installation prefix for all files. If exec_prefix
is defined to a different value, prefix is used only for
architecture-independent files.
 
- Variable: sbindir
 - 
The directory for installing executables that system
administrators run.
 
- Variable: sharedstatedir
 - 
The directory for installing modifiable architecture-independent data.
 
- Variable: sysconfdir
 - 
The directory for installing read-only single-machine data.
 
Most of these variables have values that rely on prefix or
exec_prefix.  It is on purpose that the directory output
variables keep them unexpanded: typically `@datadir@' will be
replaced by `${prefix}/share', not `/usr/local/share'.
This behavior is mandated by the GNU coding standards, so that when
the user runs:
- `make'
 - she can still specify a different prefix from the one specified to
configure, in which case, if needed, the package shall hard
code dependencies to her late desires.
 - `make install'
 - she can specify a different installation location, in which case the
package must still depend on the location which was compiled in
(i.e., never recompile when `make install' is run).  This is an
extremely important feature, as many people may decide to install all
the files of a package grouped together, and then install links from
the final locations to there.
 
In order to support these features, it is essential that datadir
remains being defined as `${prefix}/share' to depend upon the
current value of prefix.
A corollary is that you should not use these variables but in Makefiles.
For instance, instead of trying to evaluate datadir in
`configure' and hardcoding it in Makefiles using
e.g. `AC_DEFINE_UNQUOTED(DATADIR, "$datadir")', you should add
`-DDATADIR="$(datadir)"' to your CPPFLAGS.
Similarly you should not rely on AC_OUTPUT_FILES to replace
datadir and friends in your shell scripts and other files, rather
let make manage their replacement.  For instance Autoconf
ships templates of its shell scripts ending with `.sh', and uses
this Makefile snippet:
|   | .sh:
        rm -f $@ $@.tmp
        sed 's,@datadir\@,$(pkgdatadir),g' $< >$@.tmp
        chmod +x $@.tmp
        mv $@.tmp $@
 | 
Three things are noteworthy:
- `@datadir\@'
 - The backslash prevents 
configure from replacing
`@datadir@' in the sed expression itself.
 - `$(pkgdatadir)'
 - Don't use `@pkgdatadir@'!  Use the matching makefile variable
instead.
 - `,'
 - Don't use `/' in the sed expression(s) since most probably the
variables you use, such as `$(pkgdatadir)', will contain
some.
 
  
This document was generated
by Mohit Agarwal on February, 18  2002
using texi2html