GNU Info

Info Node: (autoconf.info)Installation Directory Variables

(autoconf.info)Installation Directory Variables


Next: Build Directories Prev: Preset Output Variables Up: Makefile Substitutions
Enter node , (file) or (file)node

Installation Directory Variables
--------------------------------

   The following variables specify the directories where the package
will be installed, see *Note Variables for Installation Directories:
(standards)Directory Variables, 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 deliberate 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 corresponding to the make-specified prefix.

`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 except 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.


automatically generated by info2www version 1.2.2.9