Create a new internal interface for defining new make functions.
[make.git] / README.cvs
1                                                                      -*-text-*-
3 -------------------------------------------------------------------------------
4 Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011,
5 2012 Free Software Foundation, Inc.
6 This file is part of GNU Make.
8 GNU Make is free software; you can redistribute it and/or modify it under the
9 terms of the GNU General Public License as published by the Free Software
10 Foundation; either version 3 of the License, or (at your option) any later
11 version.
13 GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY
14 WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
15 A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
17 You should have received a copy of the GNU General Public License along with
18 this program.  If not, see <>.
19 -------------------------------------------------------------------------------
21 Obtaining CVS Code
22 ------------------
24 This seems redundant, since if you're reading this you most likely have
25 already performed this step; however, for completeness, you can obtain
26 the GNU make source code via anonymous CVS from the FSF's Savannah
27 project <>:
29   $ cvs co make
31 You might want to use the "-z3" option to get compression, and you most
32 certainly will want the -P option to avoid unneeded directories
33 cluttering up your source.  Personally I add these (as well as -dP for
34 update) to my ~/.cvsrc file.
37 If you have an older version of CVS, you might have to login first.
38 There is no password; just hit the ENTER key if you are asked for one.
41 Building From CVS
42 -----------------
44 To build GNU make from CVS, you will need Autoconf, Automake, and
45 Gettext, and any tools that those utilities require (GNU m4, Perl,
46 etc.).  See the file to find the minimum versions of each
47 of these tools.  You will also need a copy of wget.
49 When building from CVS you must build in the source directory: "VPATH
50 builds" from remote directories are not supported.  Once you've created
51 a distribution, of course, you can unpack it and do a VPATH build from
52 there.
54 After checking out the code, you will need to perform these steps to get
55 to the point where you can run "make".
58  1) $ autoreconf -i
60     This rebuilds all the things that need rebuilding, installing
61     missing files as symbolic links.
63     You may get warnings here about missing files like README, etc.
64     Ignore them, they are harmless.
67  2) $ ./configure
69     Generate a Makefile
72  3) $ make update
74     Use wget to retrieve various other files that GNU make relies on,
75     but does not keep in its own source tree.
77     NB: You may need GNU make to correctly perform this step; if you use
78     a platform-local make you may get problems with missing files in doc/.
81 At this point you have successfully brought your CVS copy of the GNU
82 make source directory up to the point where it can be treated
83 more-or-less like the official package you would get from
84 That is, you can just run:
86   $ make && make check && make install
88 to build and install GNU make.
91 Windows builds from CVS
92 -----------------------
94 If you have a UNIX emulation like CYGWIN you can opt to run the general
95 build procedure above; it will work.  Be sure to read
96 README.W32.template for information on options you might want to use
97 when running ./configure.
99 If you can't or don't want to do that, then rename the file
100 README.W32.template to README.W32 and follow those instructions.
103 Creating a Package
104 ------------------
106 Once you have performed the above steps (including the configuration and
107 build) you can create a GNU make package.  This is very simple, just
108 run:
110   $ make dist-gzip
112 and, if you like:
114   $ make dist-bzip2
116 Even better, you should run this:
118   $ make distcheck
120 Which will build both .gz and .bz2 package files, then unpack them into
121 a temporary location, try to build them, and repack them, verifying that
122 everything works, you get the same results, _and_ no extraneous files
123 are left over after the "distclean" rule--whew!!  Now, _that_ is why
124 converting to Automake is worth the trouble!  A big "huzzah!" to Tom
125 T. and the AutoToolers!
128 Steps to Release
129 ----------------
131 Here are the things that need to be done (in more or less this order)
132 before making an official release:
134   * Update the file with the new release number.
135   * Update the NEWS file with the release number and date.
136   * Create the new release in the Savannah "Bugs" Administration for
137     both the "Component Version" and "Fixed Release" fields.
138   * Create the new release in the Savannah "Patches" Administration for
139     the "Fixed Release" field.
140   * Update the Savannah bug list URL in the NEWS file to use the correct
141     "Fixed Release" ID number.
142   * Run "make distcheck" to be sure it all works.
143   * Commit everything.
144   * cvs tag <RTAG> where RTAG is constructed by replacing each "." in
145     the version with "-" and prefixing it with "make-".
148 Publishing a Package
149 --------------------
151 In order to publish a package on the FSF FTP site, either the release
152 site, or the prerelease site, you
153 first need to have my GPG private key and my passphrase to unlock it.
154 And, you can't have them!  So there!  But, just so I remember here's
155 what you do:
157   Make sure the "Steps to Release" are complete and committed and tagged.
159   cvs -d \
160      export -r<RTAG> -d make-release make
162   cd make-release
164   <run the commands above to build the release>
166   make upload-alpha             # for (pre-releases)
167        -OR-
168   make upload-ftp               # for (official releases)
170 It will ask for the GPG passphrase _THREE_ times.  Sigh.
173 For both final releases and pre-releases, send an email with the URL of
174 the package to the GNU translation robot to allow the translators to
175 work on it:
177      <>
180 Where to Announce
181 -----------------
183 Create the announcement in a text file, then sign it with GPG.
185   gpg --clearsign <announcement.txt>
187 Upload to, then login and send from my account there.
189 Email to:,,,
190 Email to:
192 Add a news item to the Savannah project site.
194 Add an update to
197 Appendix A - For The Brave
198 --------------------------
200 For those of you who trust me implicitly, or are just brave (or
201 foolhardy), here is a canned sequence of commands to build a GNU make
202 distribution package from a virgin CVS source checkout (assuming all the
203 prerequisites are available of course).
205 This list is eminently suitable for a quick swipe o' the mouse and a
206 swift click o' mouse-2 into an xterm.  Go for it!
208 autoreconf -i
209 ./configure
210 make update
211 make
212 make check
214 Or, for a debugging version:
216 autoreconf -i && ./configure CFLAGS=-g && make update && make && make check
218 Or, all-in-one:
220 autoreconf -i && ./configure && make update && make && make check