---
name: "tspec"
section: "1"
platform: "linux"
package: "tendra"
version: "4.1.2-19"
release: "Debian 6.0 (Squeeze)"
platforms: ["linux"]
url: "https://new.carta.tech/tspec"
---

# tspec(1)

An API specification tool

## NAME

tspec - An API specification tool

## SYNOPSIS

**tspec** \[ *options* \] *api*

**tspec** \[ *options* \] *api* *header*

**tspec** \[ *options* \] *api* *header* *subset*

**tspec** \[ *options* \] **-l** *file*

## DESCRIPTION

**tspec** is a tool for translating a form of API (Application Programming Interface) description into the *#pragma* headers used by [*tcc*(1)](/tcc/1.md) to represent such APIs.  It is more fully documented in *tspec - An API Specification Tool*.

There are two basic forms of command-line.  The first specifies that **tspec** should process the whole of the API description *api*, or just one header from it, *header*, or just a subset of that header, *subset*, writing its output to the standard output directory.  The second (using the **-l** option) specifies that it should process a single file, writing the output to the standard output.

## OPTIONS

- **-C***file*

  Causes **tspec** to insert the contents of *file* as a copyright message at the start of each output file.  This can also be specified using the **TSPEC\_COPYRIGHT** environmental variable.  The order of precedence for this and other similar options is, built-in values lowest, environmental variables next, and command-line options highest.

- **-I***dir*

  Add the colon-separated list of directories *dir* to the list of directories searched for input files.   Input directories can also be specified using the **TSPEC\_INPUT** environmental variable.

- **-O***dir*

  Specifies that the directory *dir* should be used as a base for the include output files.  This can also be specified using the **TSPEC\_INCL\_OUTPUT** or the **TSPEC\_OUTPUT** environmental variable. In the latter case it is given by **${TSPEC\_OUTPUT}/include**.

- **-S***dir*

  Specifies that the directory *dir* should be used as a base for the source output files.  This can also be specified using the **TSPEC\_SRC\_OUTPUT** or the **TSPEC\_OUTPUT** environmental variable. In the latter case it is given by **${TSPEC\_OUTPUT}/src**.

- **-c**

  Causes **tspec** to only check the input files, not to generate any output files.

- **-e**

  Causes **tspec** to only run its preprocessor phase, writing the output to the standard output.

- **-f**

  Causes **tspec** to ignore date stamps when deciding whether it is necessary to update an output file, and to force it to be updated.

- **-i**

  Causes **tspec** to print an index of all the objects specified in the input files to the standard output.  This index is designed to be used as a quick guide to the contents of an API.

- **-l**

  Specifies local input mode (see above).

- **-m**

  Causes **tspec** to print an index intended for machine processing of all the objects specified in the input files to the standard output. This index is suitable for processing with text processing tools such as [*awk*(1)](/awk/1.md).

- **-n**

  Causes **tspec** to update any output files which are younger than the **tspec** executable.  This is useful primarily in development work on **tspec**.

- **-p**

  Indicates to **tspec** that its input has already been preprocessed (i.e. that it is the output of a previous **-e** option).

- **-r**

  Causes **tspec** to only produce output for implemented, as opposed to used, objects.

- **-s**

  Causes **tspec** to check each header in an API separately, as opposed to all at once (as with the **-c** option).

- **-u**

  Causes **tspec** to generate unique token names for the objects in its input files.

- **-v**

  Causes **tspec** to enter verbose mode, in which it reports on the output files it creates.  If two **-v** options are given then **tspec** enters very verbose mode, in which it gives more information on its activities.

## SEE ALSO

[*tcc*(1)](/tcc/1.md), *tdfc*(1).
