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