Cache the results of compiler auto-detection.

Signed-off-by: Daniel Thompson <daniel@redfelineninja.org.uk>
README: Reflow a few overly long lines.

Signed-off-by: Daniel Thompson <daniel@redfelineninja.org.uk>
Put some unique(ish) property into temporary filenames.

Without this it is not possible to execute the test suite in parallel
because some of the derive files interfere with each other.

Signed-off-by: Daniel Thompson <daniel@redfelineninja.org.uk>
Bump the version numver and distribute the test support files.

Signed-off-by: Daniel Thompson <daniel@redfelineninja.org.uk>
Add support for compile-in-place

We also extended the pre-pre-processor to spot when a //#! sequence
occurs within a string (meaning it will be ignored).

Signed-off-by: Daniel Thompson <daniel@redfelineninja.org.uk>
Improve temporary file handling.

Keep better track of when temporary files are created and ensure they
are removed.

Signed-off-by: Daniel Thompson <daniel@redfelineninja.org.uk>
Reduce the flag explosion due to parsing header files.

Since commit 6ae8d3 ("Pre-pre-process local include files.") the self
hosting test now has half a page of identical compile/link flags. Reduce
the build up by skipping identical clusters of flags when these are added
to compilation units or toolsets.

We don't attempt to eliminate all duplicated flags because we must avoid
breaking the build with single pass linkers (libraries with cyclic
dependancies between them require one or both of the them to appear on
the link line twice).

Signed-off-by: Daniel Thompson <daniel@redfelineninja.org.uk>