                                                                     -*-text-*-

-------------------------------------------------------------------------------
Copyright (C) 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
This file is part of GNU Make.

GNU Make is free software; you can redistribute it and/or modify it under the
terms of the GNU General Public License as published by the Free Software
Foundation; either version 2, or (at your option) any later version.

GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
A PARTICULAR PURPOSE.  See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with
GNU Make; see the file COPYING.  If not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-------------------------------------------------------------------------------

Obtaining CVS Code
------------------

This seems redundant, since if you're reading this you most likely have
already performed this step; however, for completeness, you can obtain
the GNU make source code via anonymous CVS from the FSF's Savannah
project <http://savannah.gnu.org/projects/make/>:

  $ cvs -d:pserver:anoncvs@cvs.savannah.gnu.org:/sources/make co make

You might want to use the "-z3" option to get compression, and you most
certainly will want the -P option to avoid unneeded directories
cluttering up your source.  Personally I add these (as well as -dP for
update) to my ~/.cvsrc file.


If you have an older version of CVS, you might have to login first.
There is no password; just hit the ENTER key if you are asked for one.


Building From CVS
-----------------

To build GNU make from CVS, you will need Autoconf, Automake, and
Gettext, and any tools that those utilities require (GNU m4, Perl,
etc.).  See the configure.in file to find the minimum versions of each
of these tools.  You will also need a copy of wget.

When building from CVS you must build in the source directory: "VPATH
builds" from remote directories are not supported.  Once you've created
a distribution, of course, you can unpack it and do a VPATH build from
there.

After checking out the code, you will need to perform these steps to get
to the point where you can run "make".


 1) $ autoreconf -i

    This rebuilds all the things that need rebuilding, installing
    missing files as symbolic links.

    You may get warnings here about missing files like README, etc.
    Ignore them, they are harmless.


 2) $ ./configure

    Generate a Makefile


 3) $ make update

    Use wget to retrieve various other files that GNU make relies on,
    but does not keep in its own source tree.

    NB: You may need GNU make to correctly perform this step; if you use
    a platform-local make you may get problems with missing files in doc/.


At this point you have successfully brought your CVS copy of the GNU
make source directory up to the point where it can be treated
more-or-less like the official package you would get from ftp.gnu.org.
That is, you can just run:

  $ make && make check && make install

to build and install GNU make.


Windows builds from CVS
-----------------------

If you have a UNIX emulation like CYGWIN you can opt to run the general
build procedure above; it will work.  Be sure to read
README.W32.template for information on options you might want to use
when running ./configure.

If you can't or don't want to do that, then rename the file
README.W32.template to README.W32 and follow those instructions.


Creating a Package
------------------

Once you have performed the above steps (including the configuration and
build) you can create a GNU make package.  This is very simple, just
run:

  $ make dist-gzip

and, if you like:

  $ make dist-bzip2

Even better, you should run this:

  $ make distcheck

Which will build both .gz and .bz2 package files, then unpack them into
a temporary location, try to build them, and repack them, verifying that
everything works, you get the same results, _and_ no extraneous files
are left over after the "distclean" rule--whew!!  Now, _that_ is why
converting to Automake is worth the trouble!  A big "huzzah!" to Tom
T. and the AutoToolers!


Steps to Release
----------------

Here are the things that need to be done (in more or less this order)
before making an official release:

  * Update the configure.in file with the new release number.
  * Update the NEWS file with the release number and date.
  * Create the new release in the Savannah "Bugs" Administration for
    both the "Component Version" and "Fixed Release" fields.
  * Create the new release in the Savannah "Patches" Administration for
    the "Fixed Release" field.
  * Update the Savannah bug list URL in the NEWS file to use the correct
    "Fixed Release" ID number.
  * Run "make distcheck" to be sure it all works.
  * Commit everything.
  * cvs tag <RTAG> where RTAG is constructed by replacing each "." in
    the version with "-" and prefixing it with "make-".


Publishing a Package
--------------------

In order to publish a package on the FSF FTP site, either the release
site ftp://ftp.gnu.org, or the prerelease site ftp://alpha.gnu.org, you
first need to have my GPG private key and my passphrase to unlock it.
And, you can't have them!  So there!  But, just so I remember here's
what you do:

  Make sure the "Steps to Release" are complete and committed and tagged.

  cvs -d :pserver:anonymous@cvs.savannah.gnu.org:/sources/make \
     export -r<RTAG> -d make-release make

  cd make-release

  <run the commands above to build the release>

  make upload-alpha             # for alpha.gnu.org (pre-releases)
       -OR-
  make upload-ftp               # for ftp.gnu.org (official releases)

It will ask for the GPG passphrase _THREE_ times.  Sigh.


Where to Announce
-----------------

Create the announcement in a text file, then sign it with GPG.

  gpg --clearsign <announcement.txt>

Upload to gnu.org, then login and send from my account there.

Email to: make-alpha@gnu.org, bug-make@gnu.org, help-make@gnu.org, make-w32@gnu.org.
Email to: info-gnu@gnu.org

Add a news item to the Savannah project site.

Add an update to freshmeat.net.


Appendix A - For The Brave
--------------------------

For those of you who trust me implicitly, or are just brave (or
foolhardy), here is a canned sequence of commands to build a GNU make
distribution package from a virgin CVS source checkout (assuming all the
prerequisites are available of course).

This list is eminently suitable for a quick swipe o' the mouse and a
swift click o' mouse-2 into an xterm.  Go for it!

autoreconf -i
./configure
make update
make
make check

Or, all-in-one:

autoreconf -i && ./configure && make update && make && make check
