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

Short: Amiga port of GNU Make 3.67

1. Contents of this archive:

   libs (dir)
     ixemul.library
     COPYING.LIB
   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:) and
   libs/ixemul.library to LIBS:. You will not be able to run make nor
   recompile without ixemul.library! The library was created by Markus Wild
   (<wild@nessie.cs.id.ethz.ch>) and provides emulation of *NIX
   kernel/system functions (again credits where credits belong: Thank you
   Markus, thank you!).

   NOTE: GNU make and ixemul.library are FREE software. Please refer to
   libs/COPYING.LIB for copyright stuff concerning the library and COPYING
   for the GNU GENERAL PUBLIC LICENSE. The library source is available via
   anonymous ftp from amiga.physik.unizh.ch and mirrors.

   Currently, the vfork() system call from ixemul.library, as utilized by
   GNU make, requires OS2.x. I have not been able to test make under 1.x,
   it *might* work, 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.67 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:

   - use 'config.status' to recreate 'build.sh' and the Makefiles
     > sh config.status

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

   - use the original 'configure' shell script:
     > sh configure

   - 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 the last possibility 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 to something (completely :))
     different; 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' will contain some wrong '#define's' and needs
     editing by hand. I have no idea if this arises from the 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.67.tar.z). Using 'makeinfo' from AmigaLibDisk
   787 with 'make.texinfo' from the original 'make-3.67.tar.z'-archive 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, usually
     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 not
     seem to work orderly when using 'gccv -pipe' and the subcompilers
     resident'ed.
   - make starts it's subprocesses via pdksh. Therefore it is very 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, Them Bones, A5000's to
	<st000002@hrz1.hrz.th-darmstadt.de>

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