This directory contains an Amiga lmkfile and associated tools/scripts
to actually build a developer's support disk, which is to say it
gathers all the pieces that engineering supplies:

- Public include files
- Autodocs
- FD files
- linker libraries (amiga.lib, debug.lib, etc.)
- Engineering-supplied examples
- Engineering-supplied tools

Further, it ensures that each include file is valid.

INCLUDE FILES:

The lmkfile invokes the BuildIncludes script, specifying the list of
include directories to use as $(INCDIRS).  The lmkfile thus enumerates
which include files we make public.  Include directories like
/pragmas, /internal, and so on are not part of INCDIRS because we
don't release them.

The BuildIncludes script processes each include file in the specified
directory.  It does so using Andy's foreach command, which is in
V:aug/bin.  It runs each file through fixheader (in V:aug/src and
V:aug/bin), which is a program which verifies the correctness of
each include file's header, and puts a standard "release header"
on each file.  For example:

The original include file header:

    /*
    **  %Id: intuition.h,v 38.26 93/02/15 19:00:09 peter Exp %
    **
    **  Interface definitions for Intuition applications.
    **
    **  (C) Copyright 1985,1986,1987,1988,1989,1990 Commodore-Amiga, Inc.
    **	    All Rights Reserved
    */

Is converted to:

    /*
    **  $VER: intuition.h 38.26 (15.2.93)
    **  Includes Release 40.13
    **
    **  Interface definitions for Intuition applications.
    **
    **  (C) Copyright 1985-1993 Commodore-Amiga, Inc.
    **	    All Rights Reserved
    */

(NB:  In the original text, I converted the dollar signs in the "Id:"
line to percent signs, because this ReadMe is under RCS, and it
would otherwise replace the example line with a correct dollar-ID
line for this ReadMe!)

In particular, the $Id line is converted to a c:version-compatible
$VER string.  The copyright message is normalized, and automatically
extended to include the current year.  This current year is extracted
from the support_rev.h file using the ExtractYear and ExtractYearGrunt
scripts, which are typically ugly shell scripts.

Finally, every include file is branded with the version/revision of
the support-disk release, 40.13 in this example.

After FixHeader, BuildIncludes does a test-compile (for .h files) or a
test-assemble (for .i files) to verify that the include file correctly
stands alone.  The sc compiler and hx68 assembler are used.

If an error occurs, we pop an EasyRequest with an informative message
and continue.  When the process is complete, there will be a stack
of EasyRequests, one per failure.

(It turns out that the foreach command makes it difficult to interact
with the user inside the loop.  The "ask" command doesn't work because
foreach doesn't connect up the standard-input when it runs the loop.
Also, quit and exit type commands are hard or impossible to use inside
foreach.  That's why I originally opted for the "run requestchoice"
method.  The foreach command should be fixed to not have these kinds
of problems.

Ways in which the validation tests are not strict enough:
- I'm not sure that FixHeader errors-out if a bad file is found.
  Currently, exec/exec_lib.i does not have a header.  I never
  worried about this one.
- hx68 is more lenient than some really awful assemblers.  In
  particular, some assemblers allow the asterisk as a comment
  introducer only in the first column, but most assemblers including
  hx68 let this pass.  Perhaps an assembler option could make
  it more picky.

FD FILES:

The FD files are copied straight from V:FD to disk/support/FD.  All
files there are copied.

AUTODOCS:

The autodocs are copied straight from V:doc to disk/support/doc.  All
files there are copied.

LINKER LIBRARIES:

The four libraries (amiga.lib, small.lib, debug.lib, ddebug.lib) are
copied from V:lib to disk/support/linker_libs.  These files are copied
by name; no other files from V:lib are grabbed.

EXAMPLE CODE:

All example code in V:src/examples/ is copied to
disk/support/examples.

TOOLS:

Those tools explicitly provided for in the makefile are copied.  Currently,
we copy CatComp, CatComp.doc, rekick, and Enforcer.lzh.



The resulting directory is written out as V:disk/support/.  Anybody
should be able to run the script, but so far it's only been run by
me, so I make no guarantees as to the absence of any file ownership
issues.

cd V:src/other/support
lmk (or smake)
