Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 3 Current »

The Build System

PDCLib is built with Jam. The only tested and supported version is FT Jam 2.5.3rc2, which you can find here.

Compilers

PDClib requires at minimum a C99 capable compiler, and recommends a C11 capable one. In addition, some GNU C extensions are required (primarily supporting some functions such as stdarg.h, which require compiler assistance) The following compilers are suggested:

  • Recent versions of GCC (GPLv3)
  • Recent versions of Clang (UUIC) (in C99 mode; Clang's C11 mode is not yet sufficiently functional)

Other compilers which may work, but are untested:

Compilers which will not work

  • Microsoft Visual C(++), as it lacks C99 support (and Microsoft have explicitly stated that this is not an aim)
  • OpenWatcom, as it has incomplete C99 support and no support for the required GNU C extensions

Future directions include a better compiler abstraction and detection system.

Specify the C compiler to be used to build PDClib with the CC environment variable.

Linkers & Librarians

The PDCLib tests at present assumes GNU LD, or compatible linker. Removing this requirement is a target.

PDCLib itself requires a simple librarian.

Building

PDCLib itself can be built by issuing

# Win32 only: must specify which toolchain is in use
export JAM_TOOLSET=MINGW
# If not building for the host platform
export PDCLIB_PLATFORM=your_platform 
# -q will cause Jam to exit after the first error.
jam -q

To speed up the compilation, you may wish to pass -jN (where N is the number of processes to run in parallel) as a parameter to Jam, as this will speed up the compilation.

Running tests

PDClib includes two sets of tests:

  • The standard tests, executed by running jam test. These are built against PDCLib itself, and are therefore form a functionality test suite
  • "regtests", which are executed by running jam regtest. These the mostly same tests, but run against your compiler's default C library. They serve two functions:
    • They enable you to test the conformance of your system's existing C library
    • They provide a mechanism for testing our tests - while executing correctly on the host system does not imply they are correct, failing to execute is an indicator that the test should be re-checked agianst the standard.

 

  • No labels