DOC HOME SITE MAP MAN PAGES GNU INFO SEARCH PRINT BOOK
 

(automk14.info.gz) Top level

Info Catalog (automk14.info.gz) configure (automk14.info.gz) Top (automk14.info.gz) Programs
 
 6 The top-level `Makefile.am'
 *****************************
 
 In non-flat packages, the top level `Makefile.am' must tell Automake
 which subdirectories are to be built.  This is done via the `SUBDIRS'
 variable.  
 
    The `SUBDIRS' macro holds a list of subdirectories in which building
 of various sorts can occur.  Many targets (e.g. `all') in the generated
 `Makefile' will run both locally and in all specified subdirectories.
 Note that the directories listed in `SUBDIRS' are not required to
 contain `Makefile.am's; only `Makefile's (after configuration).  This
 allows inclusion of libraries from packages which do not use Automake
 (such as `gettext').  The directories mentioned in `SUBDIRS' must be
 direct children of the current directory.  For instance, you cannot put
 `src/subdir' into `SUBDIRS'.
 
    In a deep package, the top-level `Makefile.am' is often very short.
 For instance, here is the `Makefile.am' from the GNU Hello distribution:
 
      EXTRA_DIST = BUGS ChangeLog.O README-alpha
      SUBDIRS = doc intl po src tests
 
    It is possible to override the `SUBDIRS' variable if, like in the
 case of GNU `Inetutils', you want to only build a subset of the entire
 package.  In your `Makefile.am' include:
 
      SUBDIRS = @SUBDIRS@
 
    Then in your `configure.in' you can specify:
 
      SUBDIRS = "src doc lib po"
      AC_SUBST(SUBDIRS)
 
    The upshot of this is that Automake is tricked into building the
 package to take the subdirs, but doesn't actually bind that list until
 `configure' is run.
 
    Although the `SUBDIRS' macro can contain configure substitutions
 (e.g. `@DIRS@'); Automake itself does not actually examine the contents
 of this variable.
 
    If `SUBDIRS' is defined, then your `configure.in' must include
 `AC_PROG_MAKE_SET'.
 
    The use of `SUBDIRS' is not restricted to just the top-level
 `Makefile.am'.  Automake can be used to construct packages of arbitrary
 depth.
 
    By default, Automake generates `Makefiles' which work depth-first
 (`postfix').  However, it is possible to change this ordering.  You can
 do this by putting `.' into `SUBDIRS'.  For instance, putting `.'
 first will cause a `prefix' ordering of directories.
 
Info Catalog (automk14.info.gz) configure (automk14.info.gz) Top (automk14.info.gz) Programs
automatically generated byinfo2html