                        Tiny Library for GCC

This archive contains all the files necessary to make a small library that
contains just everything that CLISP needs from external link libraries. It
works with the GCC-BuRP and GCC-Wild ports, with GCC1 and GCC2. Modify the
supplied Makefile to add your include paths etc.

Using this library with GCC-Wild makes CLISP (and possibly your programs)
independent of ixemul.library.


This library contains the following funtions: strlen(), set/longjmp(),
wbmain(), exit().

The setjmp.[ch] are not compatible with the GCC-Wild version, (they are
compatible with GCC-BuRP). Thus you must be careful with the order of -I
options (use this libs include before the standard GCC:include). See in the
Makefile how I used -nodtinc and -nostdlib to prevent gcc from looking at
the normal places.

wbmain() calls main() after parsing the tool and project ARGS tooltypes and
opening a window specified by the WINDOW tooltype of the tool icon. Note
however that the WINDOW filehandle is only available in the BPTR
Input_handle (or Output_handle, same value) variable. I didn't want to set
pr_CIS or such fields. Thus it always opens a Window for I/O and lets you
run as if from CLI (i.e. argc is never 0). If there's no ARGS tooltype for a
project, the project's name is simply dumped to the argv array. A token of *
is replaced by the name. Override wbmain() if you don't like this or want to
save few code:

        void wbmain(struct WBStartup *wbmsg) {}

The file lib/gnuarith.o comes from the GCC-BuRP project. It contains low-level
arithmetic needed by the GNU compiler.

The files lib/_ashldi3.o and lib/_ucmpdi2.o come from GCC-2.5.8.


Patches:

GCC-233 contained the following in gcc:os-include/inline/exec.h which is not
found in gcc-2.5.6. misc/CreatePort() needs it.
#ifndef __GNUG__
static __inline struct List *
NewList(struct List *list)
{
  list->lh_Tail = 0;
  list->lh_TailPred = (struct Node *)list;
  list->lh_Head = (struct Node *)&list->lh_Tail;
}
#endif

The ar found in the gcc-2.5.6-2.5.8 archives doesn't strip dirnames,
resulting in too long names. Ar from gcc-1.40 and gcc-2.3.3 worked ok.


TODO:

The Workbench startup code needs to be enhanced to allow project icons to be
found in other places than the tool directory. I need a NameFromLock() for
1.3 for this to work.

The WB code could set pr_ConsoleTask to make Execute() work under 1.3.

Not remove quotes in tokenize(), useful for LISP.

Handle quotes and Amiga escapes (*) in tokenize().


Enjoy,
        Jörg Höhle,     9-Jul-94
