manpagez: man pages & more
info autoconf
Home | html | info | man

File: autoconf.info,  Node: Changed Directory Variables,  Next: Build Directories,  Prev: Installation Directory Variables,  Up: Makefile Substitutions

4.8.3 Changed Directory Variables
---------------------------------

In Autoconf 2.60, the set of directory variables has changed, and the
defaults of some variables have been adjusted (*note Installation
Directory Variables::) to changes in the GNU Coding Standards.  Notably,
‘datadir’, ‘infodir’, and ‘mandir’ are now expressed in terms of
‘datarootdir’.  If you are upgrading from an earlier Autoconf version,
you may need to adjust your files to ensure that the directory variables
are substituted correctly (*note Defining Directories::), and that a
definition of ‘datarootdir’ is in place.  For example, in a
‘Makefile.in’, adding

     datarootdir = @datarootdir@

is usually sufficient.  If you use Automake to create ‘Makefile.in’, it
will add this for you.

   To help with the transition, Autoconf warns about files that seem to
use ‘datarootdir’ without defining it.  In some cases, it then expands
the value of ‘$datarootdir’ in substitutions of the directory variables.
The following example shows such a warning:

     $ cat configure.ac
     AC_INIT
     AC_CONFIG_FILES([Makefile])
     AC_OUTPUT
     $ cat Makefile.in
     prefix = @prefix@
     datadir = @datadir@
     $ autoconf
     $ configure
     configure: creating ./config.status
     config.status: creating Makefile
     config.status: WARNING:
                    Makefile.in seems to ignore the --datarootdir setting
     $ cat Makefile
     prefix = /usr/local
     datadir = ${prefix}/share

   Usually one can easily change the file to accommodate both older and
newer Autoconf releases:

     $ cat Makefile.in
     prefix = @prefix@
     datarootdir = @datarootdir@
     datadir = @datadir@
     $ configure
     configure: creating ./config.status
     config.status: creating Makefile
     $ cat Makefile
     prefix = /usr/local
     datarootdir = ${prefix}/share
     datadir = ${datarootdir}

   In some cases, however, the checks may not be able to detect that a
suitable initialization of ‘datarootdir’ is in place, or they may fail
to detect that such an initialization is necessary in the output file.
If, after auditing your package, there are still spurious ‘configure’
warnings about ‘datarootdir’, you may add the line

     AC_DEFUN([AC_DATAROOTDIR_CHECKED])

to your ‘configure.ac’ to disable the warnings.  This is an exception to
the usual rule that you should not define a macro whose name begins with
‘AC_’ (*note Macro Names::).

© manpagez.com 2000-2024
Individual documents may contain additional copyright information.