================================================================
= This file

* This file attempts to describe the rules to use when hacking
  automake.

* Don't put this file into the distribution.  Don't mention it in the
  ChangeLog.


================================================================
= Administrivia

* If you incorporate a change from somebody on the net:
  First, if it is a large change, you must make sure they have signed the
  appropriate paperwork.
  Second, be sure to add their name and email address to THANKS

* If a change fixes a test, mention the test in the ChangeLog entry.

* If somebody reports a new bug, mention his name in the ChangeLog entry
  and in the test case you write.  Put him into THANKS.

* The correct response to most actual bugs is to write a new test case
  which demonstrates the bug.  Then fix the bug, re-run the test suite,
  and check everything in.

* Some files in the automake package are not owned by automake.  These
  files should never be edited here.  These files are COPYING, INSTALL,
  ansi2knr.1, ansi2knr.c, config.guess config.sub, install-sh, mdate-sh,
  missing, mkinstalldirs, texinfo.tex

* Changes other than bug fixes must be mentioned in NEWS


================================================================
= Naming

* We've adopted the convention that internal AC_SUBSTs should be
  named with a leading `am__', and internally generated targets should
  be named with a leading `am--'.  This convention is very new
  (as of Feb 7 2001) and so it isn't yet universally used.  But all
  new code should use it.

  We used to use `_am_' as the prefix for an internal AC_SUBST.
  However, it turns out that NEWS-OS 4.2R complains if a Makefile
  variable begins with `_'.  Yay for them.  I changed the target
  naming convention just to be safe.

================================================================
= Editing `.am' files

* Always use $(...) and not ${...}

* Use `:', not `true'.  Use `exit 1', not `false'.

* Use `##' comments liberally.  Comment anything even remotely
  unusual.

* Never use basename or dirname.  Instead use sed

* If you run `cd' within back-quotes, make sure you set `CDPATH=:',
  otherwise the directory name may be printed, depending on CDPATH.

* For install and uninstall rules, if a loop is required, it should be
  silent.  Then the body of the loop itself should print each
  "important" command it runs.  The printed commands should be preceded
  by a single space.


================================================================
= Editing automake.in and aclocal.in

* Follow existing indentation style.

* Perl 5 is now OK.


================================================================
= Test suite

* Use "make check" and "make maintainer-check" liberally

* Make sure each test file is executable


================================================================
= Release procedure

* Fetch new versions of the files that are maintained by the FSF.
  Commit.  Unfortunately you need an FSF account to do this.
  (You can also use `make fetch', but that is still woefully incomplete.)

* Update NEWS.  For an alpha release, update README-alpha.

* Update the version number in configure.in.
  (The idea is that every other alpha number will be a net release.
  The repository will always have its own "odd" number so we can easily
  distinguish net and repo versions.)

* Configure, build, and install.

* Run aclocal, automake, and autoconf.

* Commit

* Run `make cvs-dist'

* Put new release on ftp site and send announcement.
  (If not an alpha, announcement must also go to FSF.)

* Update version number in configure.in to next alpha number.
  Re-run autoconf and commit.
