Subversion Repositories tendra.SVN

Rev

Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

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.