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