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.