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

File: autoconf.info,  Node: Automatic Remaking,  Prev: Build Directories,  Up: Makefile Substitutions

4.8.5 Automatic Remaking
------------------------

You can put rules like the following in the top-level ‘Makefile.in’ for
a package to automatically update the configuration information when you
change the configuration files.  This example includes all of the
optional files, such as ‘aclocal.m4’ and those related to configuration
header files.  Omit from the ‘Makefile.in’ rules for any of these files
that your package does not use.

   The ‘$(srcdir)/’ prefix is included because of limitations in the
‘VPATH’ mechanism.

   The ‘stamp-’ files are necessary because the timestamps of
‘config.h.in’ and ‘config.h’ are not changed if remaking them does not
change their contents.  This feature avoids unnecessary recompilation.
You should include the file ‘stamp-h.in’ in your package's distribution,
so that ‘make’ considers ‘config.h.in’ up to date.  Don't use ‘touch’
(*note Limitations of Usual Tools: touch.); instead, use ‘echo’ (using
‘date’ would cause needless differences, hence CVS conflicts, etc.).

     $(srcdir)/configure: configure.ac aclocal.m4
             cd '$(srcdir)' && autoconf

     # autoheader might not change config.h.in, so touch a stamp file.
     $(srcdir)/config.h.in: stamp-h.in ;
     $(srcdir)/stamp-h.in: configure.ac aclocal.m4
             cd '$(srcdir)' && autoheader
             echo timestamp > '$(srcdir)/stamp-h.in'

     config.h: stamp-h ;
     stamp-h: config.h.in config.status
             ./config.status

     Makefile: Makefile.in config.status
             ./config.status

     config.status: configure
             ./config.status --recheck

(Be careful if you copy these lines directly into your makefile, as you
need to convert the indented lines to start with the tab character.)

   In addition, you should use

     AC_CONFIG_FILES([stamp-h], [echo timestamp > stamp-h])

so ‘config.status’ ensures that ‘config.h’ is considered up to date.
*Note Output::, for more information about ‘AC_OUTPUT’.

   *Note config.status Invocation::, for more examples of handling
configuration-related dependencies.

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