3.2 Strictness

While Automake is intended to be used by maintainers of GNU packages, it does make some effort to accommodate those who wish to use it, but do not want to use all the GNU conventions.

To this end, Automake supports three levels of strictness—how stringently Automake should enforce conformance with GNU conventions. Each strictness level can be selected using an option of the same name; see Changing Automake’s Behavior.

The strictness levels are:

gnu

This is the default level of strictness. Automake will check for basic compliance with the GNU standards for software packaging. See The GNU Coding Standards, for full details of these standards. Currently the following checks are made:

  • The files INSTALL, NEWS, README, AUTHORS, and ChangeLog, plus one of COPYING.LIB, COPYING.LESSER or COPYING, are required at the topmost directory of the package.

    If the --add-missing option is given, automake will add a generic version of the INSTALL file as well as the COPYING file containing the text of the current version of the GNU General Public License existing at the time of this Automake release (version 3 as this is written, https://www.gnu.org/copyleft/gpl.html). However, an existing COPYING file will never be overwritten by automake.

  • The options no-installman and no-installinfo are prohibited.

Future versions of Automake will add more checks at this level of strictness; it is advisable to be familiar with the precise requirements of the GNU standards.

Future versions of Automake may, at this level of strictness, require certain non-standard GNU tools to be available to maintainer-only Makefile rules. For instance, in the future pathchk (see pathchk invocation in GNU Coreutils) may be required to run ‘make dist’.

foreign

Automake will check for only those things that are absolutely required for proper operation. For instance, whereas GNU standards dictate the existence of a NEWS file, it will not be required in this mode. This strictness will also turn off some warnings by default (among them, portability warnings).

gnits

Automake will check for compliance to the as-yet-unwritten Gnits standards. These are based on the GNU standards, but are even more detailed. Unless you are a Gnits standards contributor, it is recommended that you avoid this option until such time as the Gnits standard is published (which is unlikely to ever happen).

Currently, --gnits does all the checks that --gnu does, and checks the following as well:

  • make installcheck’ will check to make sure that the --help and --version print a usage message and a version string, respectively. This is the std-options option (see Changing Automake’s Behavior).
  • make dist’ will check to make sure the NEWS file has been updated to the current version.
  • VERSION is checked to make sure its format complies with Gnits standards.
  • If VERSION indicates that this is an alpha release, and the file README-alpha appears in the topmost directory of a package, then it is included in the distribution. This is done in --gnits mode, and no other, because this mode is the only one where version number formats are constrained, and hence the only mode where Automake can automatically determine whether README-alpha should be included.
  • The file THANKS is required.