Autoconf, Automake, and Libtool: What goes in

| ## 13.2 What goes in Automake tries to make creating a distribution as easy as possible. The rules are set up by default to distribute those things which Automake knows belong in a distribution. For instance, Automake always distributes your ``configure'` script and your ``NEWS'` file. All the files Automake automatically distributes are shown by `automake --help`:
    $ automake --help
    ...
    Files which are automatically distributed, if found:
      ABOUT-GNU         README           config.guess      ltconfig
      ABOUT-NLS         THANKS           config.h.bot      ltmain.sh
      AUTHORS           TODO             config.h.top      mdate-sh
      BACKLOG           acconfig.h       config.sub        missing
      COPYING           acinclude.m4     configure         mkinstalldirs
      COPYING.LIB       aclocal.m4       configure.in      stamp-h.in
      ChangeLog         ansi2knr.1       elisp-comp        stamp-vti
      INSTALL           ansi2knr.c       install-sh        texinfo.tex
      NEWS              compile          libversion.in     ylwrap
    ...
Automake also distributes some files about which it has no built-in knowledge, but about which it learns from your ``Makefile.am'`. For instance, the source files listed in a ``_SOURCES'` variable go into the distribution. This is why you ought to list uninstalled header files in the ``_SOURCES'` variable: otherwise you'll just have to introduce another variable to distribute them -- Automake will only know about them if you tell it. Not all primaries are distributed by default. The rule is arbitrary, but pretty simple: of all the primaries, only ``_TEXINFOS'` and ``_HEADERS'` are distributed by default. (Sources that make up programs and libraries are also distributed by default, but, perhaps confusingly, ``_SOURCES'` is not considered a primary.) While there is no rhyme, there is a reason: defaults were chosen based on feedback from users. Typically, `enough' reports of the form `I auto-generate my ``_SCRIPTS'`. How do I prevent them from ending up in the distribution?' would cause a change in the default. Although the defaults are adequate in many situations, sometimes you have to distribute files which aren't covered automatically. It is easy to add additional files to a distribution; simply list them in the macro ``EXTRA_DIST'`. You can list files in subdirectories here. You can also list a directory's name here and the entire contents will be copied into the distribution by `make dist`. Use this last feature with care. A typical failure is that you'll put a `temporary' file in the directory and then it will end up in the distribution when you forget to remove it. Similarly, version control files, such as a ``CVS'` subdirectory, can easily end up in a distribution this way. If a primary is not distributed by default, but in your case it ought to be, you can easily correct it with ``EXTRA_DIST'`:
    EXTRA_DIST = $(bin_SCRIPTS)
The next major Automake release (28) will have a better method for controlling whether primaries do or do not go into the distribution. In 1.5 you will be able to use the ``dist'` and ``nodist'` prefixes to control distribution on a per-variable basis. You will even be able to simultaneously use both prefixes with a given primary to include some files and omit others:
    dist_bin_SCRIPTS = distribute-this
    nodist_bin_SCRIPTS = but-not-this

This document was generated by Gary V. Vaughan on February, 8 2006 using texi2html