GNU Make v3.68 for the Amiga
============================

Short: Amiga port of GNU Make 3.68

1. Contents of this archive:

   glob (dir)
     Makefile
   bin (dir)
     make
   build.sh
   config.h
   config.status
   COPYING
   make.diff
   Makefile
   README

2. Installation

   Just copy bin/make to a place in your path (e.g. BIN:). You will also
   need ixemul.library in LIBS:, which is available on aminet.

   GNU make is free software.  See the file COPYING for copying permission.

   Currently, the vfork() system call from ixemul.library, as used by GNU
   make, requires OS2.x. I have not been able to test make under 1.x, it
   *might* work in some simple cases, but will certainly not if vfork() is
   invoked. Full functionality is available at least under 2.x. With 3.0,
   however, there should be no problems, but I couldn't test that, too.

3. Recompile

   Source and documentation of GNU make-3.68 are available via anonymous
   ftp from various sites, most probably from the site you got this archive
   from. Please check make.diff for modifications! Eg. you will probably
   want to adjust the stuff around INCLUDEDIR and LIBDIR in read.c and
   remake.c if your gcc: tree layout diverges from the standard one.

   There are several ways to recompile:

   (1) use 'config.status' to recreate 'build.sh' and the Makefiles
       > sh config.status

   (2) use 'build.sh' in the current dir to rebuild 'make' without a
       make-tool
       > sh build.sh

   (3) use the original 'configure' shell script:
       > sh configure

   (4) use 'bin/make' or your (up to now) favorite make-tool and the
       included Makefiles :); ./Makefile might need editing for correct
       pathes and binaries on your machine

     Except for (4) the following binaries are required in your path,
     which are available from the gcc-release, SKsh, pdksh, GNU
     file- and textutils, GNU-grep etc.: sh, rm, tr, chmod, sed, cat,
     egrep, grep, mv, gcc/v.

     HINT: if you have an 'install'-programm in your path (e.g from
     GNU-fileutils), please rename ./INSTALL; if the current directory is
     in your path before the location the 'install'-programm resides,
     'configure' inserts ./INSTALL as install-programm, because AmigaOS is
     not case-sensitive. Also beware of C:Install.

     If sh cannot find your binaries: '"set" or "setenv" PATH <where the
     bins reside>' (you could also recompile pdksh with your preferred path
     builtin).

     IMPORTANT: check make.diff for the modifications to the
     'configure'-script. It will only work with gccv instead of gcc!

     The created 'config.h' sometimes contains wrong '#define's' and needs
     editing by hand. I have no idea if this arises from pdksh or is a
     deficiency of 'configure'. So check carefully or use the included
     config.h.

4. Documentation

   There are no docs included. Full documentation is available via
   anonymous ftp (make-doc-3.68.tar.gz). Using 'makeinfo' (see
   aminet:text/hyper/mkguide*) with 'make.texinfo' from the source
   distribution you can create a plain ASCII-file, a 'TeX'-ed
   documentation, the make.info-?-files for use with InfoView or even an
   AmigaGuide-style docfile.

   GNU make offers several features not provided by other make utilities:
   - recursive make (descending directory trees, make, ascend)
   - multiple concurrent make jobs (really works, but needs LOTS of ram!)
   - a lot of additional implicit rules

5. Hints (Hi Rainer and Ed!)

   - RAM, RAM, RAM and more RAM! Using make recursively on nested
     directories, such as often found inside GNU-distributions, requires
     several MB of RAM (several > 5, usually). Eg., when compiling groff or
     libg++, at some point of execution you may find two or more instances
     of each make and pdksh running concurrently, additionally to the
     compilers. Since gcc requires at least around 250k of stack you must
     have set your current shell's stack to that value. Unfortunately,
     *all* of the executables started by make will have that large stack
     allocated, resulting in 1--3 MB of RAM for stack only! To save you
     some RAM, it might be exciting to find out how *small* the stacksize
     may be but have gcc still working ... :). Maybe GigaMem or something
     similar provides you a satisfactory solution. I have tried 'Virtual'
     from the german 'Amiga-Magazin' PD-Disk, but this does work with
     resident'ed executables.
   - make often starts subprocesses via pdksh ($SH = /bin/sh). Therefore it
     is quite useful to have 'sh' resident.
   - To save some memory when using make recursively I tried to compile
     'make' with '-resident'; it compiled properly, but the resulting
     binary ignored all command line options and was likely to meet the
     guru. Any idea on this?

Send bugs, comments, needles and pins, A5000's, SPARC-2-Notebooks to
	<st000002@hrz1.hrz.th-darmstadt.de>

And, as always, have fun! (>;-))
Lars Hecking
