Next: , Previous: , Up: GNU Automake   [Contents][Index]


13 What Goes in a Distribution

The dist target in the generated Makefile.in can be used to generate a gzip’d tar file for distribution. The tar file is named based on the ‘PACKAGE’ and ‘VERSION’ variables; more precisely it is named ‘package-version.tar.gz’. You can use the make variable ‘GZIP_ENV’ to control how gzip is run. The default setting is ‘--best’.

For the most part, the files to distribute are automatically found by Automake: all source files are automatically included in a distribution, as are all Makefile.ams and Makefile.ins. Automake also has a built-in list of commonly used files which, if present in the current directory, are automatically included. This list is printed by ‘automake --help’. Also, files which are read by configure (i.e. the source files corresponding to the files specified in the AC_OUTPUT invocation) are automatically distributed.

Still, sometimes there are files which must be distributed, but which are not covered in the automatic rules. These files should be listed in the EXTRA_DIST variable. You can mention files from subdirectories in EXTRA_DIST. You can also mention a directory there; in this case the entire directory will be recursively copied into the distribution.

If you define SUBDIRS, Automake will recursively include the subdirectories in the distribution. If SUBDIRS is defined conditionally (see Conditionals), Automake will normally include all directories that could possibly appear in SUBDIRS in the distribution. If you need to specify the set of directories conditionally, you can set the variable DIST_SUBDIRS to the exact list of subdirectories to include in the distribution.

Occasionally it is useful to be able to change the distribution before it is packaged up. If the dist-hook target exists, it is run after the distribution directory is filled, but before the actual tar (or shar) file is created. One way to use this is for distributing files in subdirectories for which a new Makefile.am is overkill:

dist-hook:
        mkdir $(distdir)/random
        cp -p $(srcdir)/random/a1 $(srcdir)/random/a2 $(distdir)/random

Automake also generates a distcheck target which can be help to ensure that a given distribution will actually work. distcheck makes a distribution, and then tries to do a VPATH build.


Next: Support for test suites, Previous: What Gets Cleaned, Up: GNU Automake   [Contents][Index]