mirror of
https://git.savannah.gnu.org/git/make.git
synced 2024-11-24 20:20:35 +00:00
a8f101d0bc
Update NEWS docs. Enhance the manual to use automake version.texi, and use the canonical FSF copyright features and statement. Some $(realpath ...) tests won't work on Windows; leave them out The jobserver filedescriptor test might fail if some FDs are reserved, so for now comment out that check.
208 lines
6.7 KiB
Text
208 lines
6.7 KiB
Text
-*-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 -r<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
|