The Project

Target Platforms

This page describes the platforms and systems we attempt to target with the projects forming TenDRA.

Runtime

All TenDRA projects intend to build and run on POSIX.

Language Standards

C code (both handwritten and generated) is intended to be standard C (that is C89/C90 or C99). We do not intend to write in non-standard dialects or rely on implementation-dependent behaviour. No implementation-dependent extensions are intended to be used in general code (for example, #pragma is avoided).

There are two exceptions to the above:

  • Implementation-dependent extensions are used for TenDRA-specific features where those features are the fundamental motivation for that project. (For example #pragma token is used to assert API conformance using tspec).
  • Non-standard dialects are optionally generated to support legacy systems. In all cases these are superseded by equivalents which generate standardised code, and those are the defaults.

Building

This section details the build systems targeted for the various projects within The TenDRA Project. Projects in general do not use autoconf.

The TenDRA Compiler

For TenDRA itself (that is /tendra, the compiler proper), the following make dialects are supported:

  • bmake. This is our primary target. bmake is a portable fork of NetBSD's native make. Note that “bmake” does not mean “Any BSD's make”. bmake may be found at http://www.crufty.net/help/sjg/bmake.html.
  • NetBSD's native make
  • OpenBSD's native make

There are no intentions to provide support for other dialects for TenDRA itself.

Standalone tools

Standalone projects attempt to restrict their build systems to a portable subset. The following are supported:

  • The above dialects supported by TenDRA itself.
  • GNU make
  • FreeBSD's native make
  • pmake