| -*-text-*- |
| |
| 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@subversions.gnu.org:/cvsroot/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 2.53 (or better), |
| Automake 1.6.3 (or better), and Gettext 0.11.5 (or better), and any |
| tools that those utilities require (GNU m4, Perl, etc.). You will also |
| need a copy of wget. |
| |
| After checking out the code, you will need to perform these steps to get |
| to the point where you can run "make". |
| |
| |
| 1) $ autopoint |
| |
| This will instantiate various m4 macros files, etc. in the config |
| and po directories. |
| |
| |
| 2) $ aclocal -I config |
| |
| Generate the proper aclocal.m4 file. |
| |
| |
| 3) $ autoheader |
| |
| Generate a "config.h.in" file from the contents of configure.in, |
| etc. |
| |
| |
| 4) $ automake --add-missing |
| |
| Add (symlink) missing files into the distribution, and generate |
| Makefile.in's from Makefile.am's. |
| |
| You will see these perhaps unexpected messages (among others which |
| you should be expecting :)); just ignore them--I know what I'm doing |
| :). |
| |
| Makefile.am: required file `./README' not found |
| configure.in:xxx: required file `./build.sh.in' not found |
| Makefile.am:xxx: automatically discovered file `getloadavg.c' should not be explicitly mentioned |
| |
| |
| 5) $ autoconf |
| |
| Generate a "configure" script from configure.in and acinclude.m4. |
| |
| |
| 6) $ ./configure |
| |
| Generate a Makefile |
| |
| |
| 7) $ make update |
| |
| Use wget to retrieve various other files that GNU make relies on, |
| but does not keep in its own source tree. |
| |
| |
| 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. |
| |
| |
| 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! |
| |
| |
| That's it, you're done! |
| |
| |
| 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! |
| |
| |
| autopoint |
| aclocal -I config |
| autoheader |
| automake --add-missing |
| autoconf |
| ./configure |
| make update |
| make |
| make check |
| make distcheck |