NAME
tccenv - Environments for tcc
DESCRIPTION
Tcc environments are used to configure the behaviour of tcc(1), a
special case of which is specifying the APIs used. The standard
environments supplied with the release are used to represent a number
of commonly used APIs, implement certain tcc(1) command-line options,
and provide a means of implementing system-specific options. User-
defined environments can easily be written to correspond to a user-
defined API, or to group together a number of tcc(1) command-line
options into a single file.
An environment is just a file which is interpreted by tcc(1) when it is
specified with the command-line option -Ystring, where string is the
name of the file. Each environment file consists of lines of the form
*IDENTIFIER "text"
where IDENTIFIER is one of the environmental identifiers, text tells
tcc(1) how to modify the value given by this identifier, and * stands
for one of the environment prefixes + < and >.
USER-DEFINED ENVIRONMENTS
The simplest example of a user-defined environment contains lines of
the form
+FLAG "text"
which tells tcc(1) to interpret text as if it were passed on the
command-line. So, for example, an environment consisting of the lines
+FLAG "-Yposix"
+FLAG "-Xs"
+FLAG "-I/home/user/include"
will modify tcc(1) to use the POSIX 1003.1 API with strict checks, and
add the directory /home/user/include to the search path for #included
files.
By default, tcc(1) looks for environments in the current working
directory and in the default environments directory. In addition, if
the system variable TCCENV is defined, this specifies a colon-separated
list of directories along which tcc(1) searches for any environment
which is not a full pathname.
FULL ENVIRONMENT LIST
The majority of the standard environments can be divided into two
classes: those which correspond to APIs and those which implement
tcc(1) command-line options. (In addition to these, a small number are
used to enable extra tools and to specify minimum integer sizes.)
The API environments are subdivided into base APIs (such as ANSI,
POSIX) and extension APIs (such as the X11 environments):
ansi the ANSI X3.159 API (this is the default API environment)
iso the ISO/IEC 9899:1990 (Amendment 1:L1995 (E)) API
posix the POSIX (IEEE 1003.1:1988) API
posix1 the POSIX.1 (ISO/IEC 9945-1:1990) API
posix2 the POSIX.2 (ISO/IEC 9945-2:1993) API
xpg3 the X/Open Portability Guide 3
xpg4 the X/Open Portability Guide 4
unix95 the X/Open Single UNIX Specification (Spec 1170)
svid3 the System V Interface Definition (3rd Edition)
aes the Application Environment Specification (Revision A) API
bsd_extn BSD-like extension for use with POSIX, etc.
x5_lib X11 (Release 5) X Library
x5_t X11 (Release 5) Intrinsics Toolkit
x5_mu X11 (Release 5) Miscellaneous Utilities
x5_aw X11 (Release 5) Athena Widgets
x5_mit X11 (Release 5) MIT Implementation
x5_proto X11 (Release 5) Protocol Extension
x5_ext X11 (Release 5) Extensions
motif_1_1 Motif (Release 1.1)
motif_1_2 Motif (Release 1.2)
system System headers as main API
system+ System headers as last resort extension API
tdf_ext compilation using TDF Version 4.0 extensions
Some environments are available which modify access to previously
specified APIs:
x5_private permit access to X11 Release 5 private headers (*P.h)
motif_private permit access to Motif private headers (*P.h)
Note that TDF token libraries for all these APIs will not be available
on all platforms, so it may not be possible run installers for programs
compiled with all API environments. It will always be possible to
check code with any API environment using tchk(1).
The following environments are used to specify the use of particular
tools (where available) which are not enabled by default:
c++ enables the C++ producer/checker tcpplus.
pl_tdf enables the PL_TDF compiler pl.
tnc enables the TDF notation compiler tnc.
The default behaviour of tcc(1) is to assume the minimal sizes of
integer types allowed by ANSI. This behaviour can be modified with the
following environments:
16bit specifies minimal integer sizes allowed by ANSI (default)
32bit specifies integer sizes found on most 32-bit machines
In addition to these, the following implement target-specific options:
aout Use a.out instead of ELF format (386 Linux ELF only).
static Use static instead of dynamic linking (Alpha only).
ENVIRONMENTAL IDENTIFIERS
In the following list, the environmental prefix * must be replaced by
one of + (which replaces the existing value), < (which adds a value to
the beginning of the existing list), or > (which adds a value to the
end of the existing list).
*API_NAME modifies the list of API analysis environment names
*AS modifies the system assembler executable
*AS1 modifies the auxiliary assembler executable (Mips and Alpha only)
*CC modifies the system compiler executable
*CPP_SPEC_LINK modifies the C++ spec linker executable
*CRT0 modifies the first list of initial default .o files
*CRT1 modifies the second list of initial default .o files
*CRTP_N modifies the list of additional default .o files (-Yprom only)
*CRTN modifies the list of final default .o files
*DISP modifies the TDF pretty printer executable
*DUMP_ANAL modifies the dump-file analyser executable
*DUMP_LINK modifies the dump linker executable
*DYN_LINK modifies the dynamic-initialisation linker executable (RS6000 and Sparc only)
+ENVDIR sets the default environment directory
+FLAG passes a flag to tcc(1)
+FLAG_AS passes a flag to the assembler
+FLAG_AS1 passes a flag to the auxiliary assembler (Mips and Alpha only)
+FLAG_CC passes a flag to the system compiler
+FLAG_CPP_SPEC_LINK passes a flag to the C++ spec linker
+FLAG_DISP passes a flag to the TDF pretty printer
+FLAG_DUMP_ANAL passes a flag to the dump-file analyser
+FLAG_DUMP_LINK passes a flag to the dump linker
+FLAG_DYN_LINK passes a flag to the dynamic-initialisation linker ((RS6000 and Sparc only)
+FLAG_INSTALL passes a flag to the TDF archive builder
+FLAG_LD passes a flag to the system linker
+FLAG_PL_TDF passes a flag to the PL_TDF compiler
+FLAG_SPEC_LINKER passes a flag to the C spec linker
+FLAG_TCPPLUS passes a flag to the C++ producer
+FLAG_TCPPLUSPP passes a flag to the C++ preprocessor
+FLAG_TDFC passes a flag to the C producer
+FLAG_TDFCPP passes a flag to the C preprocessor
+FLAG_TLD passes a flag to the TDF linker
+FLAG_TNC passes a flag to the TDF notation compiler
+FLAG_TRANS passes a flag to the TDF translator
*INCL modifies the list of default include file directories
*INFO modifies the list of API information
*LD modifies the system linker executable
*LIB modifies the list of default TDF libraries
+LINE_START inserts a line in the tcc(1) built-in start-up file
+LINE_END inserts a line in the tcc(1) built-in end-up file
*LINK modifies the list of default TDF library directories
*LINK_ENTRY modifies the linker options specifying the entry point
+MACHINE sets the target machine type
+PORTABILITY sets the producer portability table
*PL_TDF modifies the PL_TDF compiler executable
*SPEC_LINK modifies the C spec linker executable
*STARTUP modifies the list of default C producer start-up files
*STARTUP_DIR modifies the list of default C producer start-up directories
*STARTUP_CPP modifies the list of default C++ producer start-up files
*STARTUP_CPP_DIR modifies the list of default C++ producer start-up directories
*SUFFIX_CPP sets the filename suffix override for C++ source files
*SYS_LIB modifies the list of default system libraries
*SYS_LIBC modifies the list of standard system libraries
*SYS_LINK modifies the list of default system library directories
*TCPPLUS modifies the C++ producer executable
*TCPPLUSPP modifies the C++ preprocessor executable
*TDFC modifies the C producer executable
*TDFCPP modifies the C preprocessor executable
+TEMP sets the temporary directory
*TLD modifies the TDF linker executable
*TNC modifies the TDF notation compiler executable
*TRANS modifies the TDF translator executable
+VERSION sets the target machine version (Mips only)
SEE ALSO
tcc(1), tchk(1), tcpplus(1), pl(1), tnc(1).
tccenv(5)