www.delorie.com/gnu/docs/automake/automake_13.html   search  
 
Buy GNU books!


automake

[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

4. Creating a `Makefile.in'

To create all the `Makefile.in's for a package, run the automake program in the top level directory, with no arguments. automake will automatically find each appropriate `Makefile.am' (by scanning `configure.in'; see section 5. Scanning `configure.in') and generate the corresponding `Makefile.in'. Note that automake has a rather simplistic view of what constitutes a package; it assumes that a package has only one `configure.in', at the top. If your package has multiple `configure.in's, then you must run automake in each directory holding a `configure.in'. (Alternatively, you may rely on Autoconf's autoreconf, which is able to recurse your package tree and run automake where appropriate.)

You can optionally give automake an argument; `.am' is appended to the argument and the result is used as the name of the input file. This feature is generally only used to automatically rebuild an out-of-date `Makefile.in'. Note that automake must always be run from the topmost directory of a project, even if being used to regenerate the `Makefile.in' in some subdirectory. This is necessary because automake must scan `configure.in', and because automake uses the knowledge that a `Makefile.in' is in a subdirectory to change its behavior in some cases.

Automake will run autoconf to scan `configure.in' and its dependencies (`aclocal.m4'), therefore autoconf must be in your PATH. If there is an AUTOCONF variable in your environment it will be used instead of autoconf, this allows you to select a particular version of Autoconf. By the way, don't misunderstand this paragraph: Automake runs autoconf to scan your `configure.in', this won't build `configure' and you still have to run autoconf yourself for this purpose.

automake accepts the following options:

`-a'
`--add-missing'
Automake requires certain common files to exist in certain situations; for instance `config.guess' is required if `configure.in' runs AC_CANONICAL_HOST. Automake is distributed with several of these files (see section 2.6 Programs automake might require); this option will cause the missing ones to be automatically added to the package, whenever possible. In general if Automake tells you a file is missing, try using this option. By default Automake tries to make a symbolic link pointing to its own copy of the missing file; this can be changed with --copy.

`--libdir=dir'
Look for Automake data files in directory dir instead of in the installation directory. This is typically used for debugging.

`-c'
`--copy'
When used with --add-missing, causes installed files to be copied. The default is to make a symbolic link.

`--cygnus'
Causes the generated `Makefile.in's to follow Cygnus rules, instead of GNU or Gnits rules. For more information, see 22. The effect of --cygnus.

`-f'
`--force-missing'
When used with --add-missing, causes standard files to be reinstalled even if they already exist in the source tree. This involves removing the file from the source tree before creating the new symlink (or, with --copy, copying the new file).

`--foreign'
Set the global strictness to `foreign'. For more information, see 2.2 Strictness.

`--gnits'
Set the global strictness to `gnits'. For more information, see 21. The effect of --gnu and --gnits.

`--gnu'
Set the global strictness to `gnu'. For more information, see 21. The effect of --gnu and --gnits. This is the default strictness.

`--help'
Print a summary of the command line options and exit.

`-i'
`--ignore-deps'
This disables the dependency tracking feature in generated `Makefile's; see 9.14 Automatic dependency tracking.

`--include-deps'
This enables the dependency tracking feature. This feature is enabled by default. This option is provided for historical reasons only and probably should not be used.

`--no-force'
Ordinarily automake creates all `Makefile.in's mentioned in `configure.in'. This option causes it to only update those `Makefile.in's which are out of date with respect to one of their dependents.

`-o dir'
`--output-dir=dir'
Put the generated `Makefile.in' in the directory dir. Ordinarily each `Makefile.in' is created in the directory of the corresponding `Makefile.am'. This option is deprecated and will be removed in a future release.

`-v'
`--verbose'
Cause Automake to print information about which files are being read or created.

`--version'
Print the version number of Automake and exit.

`-W CATEGORY'
`--warnings=category'
Output warnings falling in category. category can be one of:
`gnu'
warnings related to the GNU Coding Standards (see section `Top' in The GNU Coding Standards).
`obsolete'
obsolete features or constructions
`portability'
portability issues (e.g., use of Make features which are known not portable)
`syntax'
weird syntax, unused variables, typos
`unsupported'
unsupported or incomplete features
`all'
all the warnings
`none'
turn off all the warnings
`error'
treat warnings as errors

A category can be turned off by prefixing its name with `no-'. For instance `-Wno-syntax' will hide the warnings about unused variables.

The categories output by default are `syntax' and `unsupported'. Additionally, `gnu' is enabled in `--gnu' and `--gnits' strictness.

`portability' warnings are currently disabled by default, but they will be enabled in `--gnu' and `--gnits' strictness in a future release.

The environment variable `WARNINGS' can contain a comma separated list of categories to enable. It will be taken into account before the command-line switches, this way `-Wnone' will also ignore any warning category enabled by `WARNINGS'. This variable is also used by other tools like autoconf; unknown categories are ignored for this reason.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

  webmaster   donations   bookstore     delorie software   privacy  
  Copyright 2003   by The Free Software Foundation     Updated Jun 2003