Notes for future maintainers


As well as a C compiler, you'll also need yacc or bison to compile lcc
(because of the gram.y file). Alternatively, download the main lcc
distribution and get gram.c from that.

I've made few changes to the lcc sources, except of course for the
introduction of the ARM back-end, arm.md, and the RISC OS specific part of
lcc, riscos.c. The other changes fall into four categories:

1. Bugs in lcc. These have been acknowledged by the authors as bugs and they
intend to incorporate my changes, so you needn't worry about them.

2. Other machine-dependent changes. I think the only one is the addition of
the -Bunix option. I'll try to get that incorporated into lcc as well.

3. Code removal 1: by default, lcc will compile for any of the platforms on
which it can run. Since I wanted the smallest compiler possible, I've
removed all the other targets, including the null target (effectively a
syntax-checking mode) and the symbolic target (spews out the intermediate
code, which is really only useful for debugging lcc).

4. Code removal 2: lcc and some of the test programs contain implementations
of standard C library functions such as memmove and strlen. On most systems
this is fine, but the linker complains about duplicate symbols if you try to
link object files containing such functions with the Shared C Library.

Essentially, assuming I've sorted out 2, if you download and compile the
current version of the sources they should work fine, except that the
compiler will be a lot larger, and you'll have to comment out any
reimplementations of standard functions.

