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

File: autoconf.info,  Node: Subdirectories,  Next: Default Prefix,  Prev: Configuration Links,  Up: Setup

4.12 Configuring Other Packages in Subdirectories
=================================================

In most situations, calling ‘AC_OUTPUT’ is sufficient to produce
makefiles in subdirectories.  However, ‘configure’ scripts that control
more than one independent package can use ‘AC_CONFIG_SUBDIRS’ to run
‘configure’ scripts for other packages in subdirectories.

 -- Macro: AC_CONFIG_SUBDIRS (DIR ...)
     Make ‘AC_OUTPUT’ run ‘configure’ in each subdirectory DIR in the
     given blank-or-newline-separated list.  Each DIR should be a
     literal, i.e., please do not use:

          if test "x$package_foo_enabled" = xyes; then
            my_subdirs="$my_subdirs foo"
          fi
          AC_CONFIG_SUBDIRS([$my_subdirs])

     because this prevents ‘./configure --help=recursive’ from
     displaying the options of the package ‘foo’.  Instead, you should
     write:

          AS_IF([test "x$package_foo_enabled" = xyes],
            [AC_CONFIG_SUBDIRS([foo])])

     If a given DIR is not found at ‘configure’ run time, a warning is
     reported; if the subdirectory is optional, write:

          AS_IF([test -d "$srcdir/foo"],
            [AC_CONFIG_SUBDIRS([foo])])

     These examples use ‘AS_IF’ instead of ordinary shell ‘if’ to avoid
     problems that Autoconf has with macro calls in shell conditionals
     outside macro definitions.  *Note Common Shell Constructs::.

     If a given DIR contains ‘configure.gnu’, it is run instead of
     ‘configure’.  This is for packages that might use a non-Autoconf
     script ‘Configure’, which can't be called through a wrapper
     ‘configure’ since it would be the same file on case-insensitive
     file systems.

     The subdirectory ‘configure’ scripts are given the same command
     line options that were given to this ‘configure’ script, with minor
     changes if needed, which include:

        − adjusting a relative name for the cache file;

        − adjusting a relative name for the source directory;

        − propagating the current value of ‘$prefix’, including if it
          was defaulted, and if the default values of the top level and
          of the subdirectory ‘configure’ differ.

     This macro also sets the output variable ‘subdirs’ to the list of
     directories ‘DIR ...’.  Make rules can use this variable to
     determine which subdirectories to recurse into.

     This macro may be called multiple times.

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