TenDRA Frequently Asked Questions
---------------------------------

I am preparing this list of frequently asked questions from the questions
people actually ask me, so it is far from complete.

    1.  QUESTION: I try to compile the following simple C++ program:

		#include <iostream.h>

		int main ()
		{
		    cout << "hello world\n" ;
		    return 0 ;
		}

	and the compiler is giving me errors.

	ANSWER: This release only contains the bare minimum language
	support library, not the fully standard C++ library.  See the
	C++ producer documentation for more details.

    2.	QUESTION: I try to build the release, but I am having problems
	in the API library building phase.

	ANSWER: Unfortunately this area is _very_ operating system
	dependent.  I've set it up so that it works for the operating
	systems listed under supported platforms, but this is not a
	cast iron guarantee that it will work for other versions of the
	same operating system.

	Some understanding of how the system works is useful in trying
	to work round problems.  The start-up files describing the
	macros needed to nagivate the system headers for a particular
	API are found in:

		src/lib/machines/<os>/<cpu>/startup/<api>.h

	where <os> is the operating system name, <cpu> is the CPU type,
	and <api> is the API name.  A set of replacement system headers,
	which are checked before the real system headers, are found in:

		src/lib/machines/<os>/<cpu>/include

	These are also used with the -Ysystem option to tcc, modifications
	which are specific to library building, should be enclosed in:

		#ifdef __BUILDING_LIBS
		.....
		#endif
	
	Good places to look for inspiration on how to customise these
	files for your particular system include looking to see how
	I've done things in similar circumstances.  Often a problem
	crops up on more than one machine; I may have a workround which
	works on another platform which you can steal.

	If you don't intend to re-distribute the TenDRA source code
	you also have an option which, for copyright reasons, is not
	available to us.  You can copy the system header into the include
	directory above and make minor corrections directly.

	If all else fails you can tell the library building to ignore
	the header.  Find the source file which is failing to compile.
	This should contain lines like:

		#define __BUILDING_TDF_<API>_<HEADER>
		#ifndef __WRONG_<API>
		#ifndef __WRONG_<API>_<HEADER>
		....
		#endif /* __WRONG_<API> */
		#endif /* __WRONG_<API>_<HEADER> */

	If you insert the line:

		#define __WRONG_<API>_<HEADER>

	in the corresponding API start-up file:

		src/lib/machines/<os>/<cpu>/startup/<api>.h

	then the library builder will ignore this header.  You will get
	a compile-time error ("token not defined") if you subsequently
	try to use one of the features from this header.
