gccYou can control the compilation driver.
| SWITCH_TAKES_ARG (char) | Macro |
A C expression which determines whether the option -char
takes arguments. The value should be the number of arguments that
option takes-zero, for many options.
By default, this macro is defined as
|
| WORD_SWITCH_TAKES_ARG (name) | Macro |
A C expression which determines whether the option -name
takes arguments. The value should be the number of arguments that
option takes-zero, for many options. This macro rather than
SWITCH_TAKES_ARG is used for multi-character option names.
By default, this macro is defined as
|
| SWITCH_CURTAILS_COMPILATION (char) | Macro |
A C expression which determines whether the option -char
stops compilation before the generation of an executable. The value is
boolean, nonzero if the option does stop an executable from being
generated, zero otherwise.
By default, this macro is defined as
|
| SWITCHES_NEED_SPACES | Macro |
|
A string-valued C expression which enumerates the options for which
the linker needs a space between the option and its argument.
If this macro is not defined, the default value is |
| TARGET_OPTION_TRANSLATE_TABLE | Macro |
If defined, a list of pairs of strings, the first of which is a
potential command line target to the gcc driver program, and the
second of which is a space-separated (tabs and other whitespace are not
supported) list of options with which to replace the first option. The
target defining this list is responsible for assuring that the results
are valid. Replacement options may not be the --opt style, they
must be the -opt style. It is the intention of this macro to
provide a mechanism for substitution that affects the multilibs chosen,
such as one option that enables many options, some of which select
multilibs. Example nonsensical definition, where -malt-abi,
-EB, and -mspoo cause different multilibs to be chosen:
#define TARGET_OPTION_TRANSLATE_TABLE \
{ "-fast", "-march=fast-foo -malt-abi -I/usr/fast-foo" }, \
{ "-compat", "-EB -malign=4 -mspoo" }
|
| DRIVER_SELF_SPECS | Macro |
|
A list of specs for the driver itself. It should be a suitable
initializer for an array of strings, with no surrounding braces.
The driver applies these specs to its own command line between loading
default This macro can be useful when a port has several interdependent target options. It provides a way of standardizing the command line so that the other specs are easier to write. Do not define this macro if it does not need to do anything. |
| OPTION_DEFAULT_SPECS | Macro |
A list of specs used to support configure-time default options (i.e.
--with options) in the driver. It should be a suitable initializer
for an array of structures, each containing two strings, without the
outermost pair of surrounding braces.
The first item in the pair is the name of the default. This must match
the code in The driver will apply these specs to its own command line between loading
default Do not define this macro if it does not need to do anything. |
| CPP_SPEC | Macro |
|
A C string constant that tells the GCC driver program options to
pass to CPP. It can also specify how to translate options you
give to GCC into options for GCC to pass to the CPP.
Do not define this macro if it does not need to do anything. |
| CPLUSPLUS_CPP_SPEC | Macro |
This macro is just like CPP_SPEC, but is used for C++, rather
than C. If you do not define this macro, then the value of
CPP_SPEC (if any) will be used instead.
|
| CC1_SPEC | Macro |
A C string constant that tells the GCC driver program options to
pass to cc1, cc1plus, f771, and the other language
front ends.
It can also specify how to translate options you give to GCC into options
for GCC to pass to front ends.
Do not define this macro if it does not need to do anything. |
| CC1PLUS_SPEC | Macro |
A C string constant that tells the GCC driver program options to
pass to cc1plus. It can also specify how to translate options you
give to GCC into options for GCC to pass to the cc1plus.
Do not define this macro if it does not need to do anything.
Note that everything defined in CC1_SPEC is already passed to
|
| ASM_SPEC | Macro |
A C string constant that tells the GCC driver program options to
pass to the assembler. It can also specify how to translate options
you give to GCC into options for GCC to pass to the assembler.
See the file sun3.h for an example of this.
Do not define this macro if it does not need to do anything. |
| ASM_FINAL_SPEC | Macro |
A C string constant that tells the GCC driver program how to
run any programs which cleanup after the normal assembler.
Normally, this is not needed. See the file mips.h for
an example of this.
Do not define this macro if it does not need to do anything. |
| AS_NEEDS_DASH_FOR_PIPED_INPUT | Macro |
Define this macro, with no value, if the driver should give the assembler
an argument consisting of a single dash, -, to instruct it to
read from its standard input (which will be a pipe connected to the
output of the compiler proper). This argument is given after any
-o option specifying the name of the output file.
If you do not define this macro, the assembler is assumed to read its
standard input if given no non-option arguments. If your assembler
cannot read standard input at all, use a |
| LINK_SPEC | Macro |
|
A C string constant that tells the GCC driver program options to
pass to the linker. It can also specify how to translate options you
give to GCC into options for GCC to pass to the linker.
Do not define this macro if it does not need to do anything. |
| LIB_SPEC | Macro |
Another C string constant used much like LINK_SPEC. The difference
between the two is that LIB_SPEC is used at the end of the
command given to the linker.
If this macro is not defined, a default is provided that
loads the standard C library from the usual place. See |
| LIBGCC_SPEC | Macro |
Another C string constant that tells the GCC driver program
how and when to place a reference to libgcc.a into the
linker command line. This constant is placed both before and after
the value of LIB_SPEC.
If this macro is not defined, the GCC driver provides a default that
passes the string |
| STARTFILE_SPEC | Macro |
Another C string constant used much like LINK_SPEC. The
difference between the two is that STARTFILE_SPEC is used at
the very beginning of the command given to the linker.
If this macro is not defined, a default is provided that loads the
standard C startup file from the usual place. See |
| ENDFILE_SPEC | Macro |
Another C string constant used much like LINK_SPEC. The
difference between the two is that ENDFILE_SPEC is used at
the very end of the command given to the linker.
Do not define this macro if it does not need to do anything. |
| THREAD_MODEL_SPEC | Macro |
GCC -v will print the thread model GCC was configured to use.
However, this doesn't work on platforms that are multilibbed on thread
models, such as AIX 4.3. On such platforms, define
THREAD_MODEL_SPEC such that it evaluates to a string without
blanks that names one of the recognized thread models. %*, the
default value of this macro, will expand to the value of
thread_file set in config.gcc.
|
| SYSROOT_SUFFIX_SPEC | Macro |
| Define this macro to add a suffix to the target sysroot when GCC is configured with a sysroot. This will cause GCC to search for usr/lib, et al, within sysroot+suffix. |
| SYSROOT_HEADERS_SUFFIX_SPEC | Macro |
| Define this macro to add a headers_suffix to the target sysroot when GCC is configured with a sysroot. This will cause GCC to pass the updated sysroot+headers_suffix to CPP, causing it to search for usr/include, et al, within sysroot+headers_suffix. |
| EXTRA_SPECS | Macro |
Define this macro to provide additional specifications to put in the
specs file that can be used in various specifications like
CC1_SPEC.
The definition should be an initializer for an array of structures, containing a string constant, that defines the specification name, and a string constant that provides the specification. Do not define this macro if it does not need to do anything.
For example, the PowerPC System V.4 targets use The #define EXTRA_SPECS \
{ "cpp_sysv_default", CPP_SYSV_DEFAULT },
#define CPP_SYS_DEFAULT ""
The #undef CPP_SPEC
#define CPP_SPEC \
"%{posix: -D_POSIX_SOURCE } \
%{mcall-sysv: -D_CALL_SYSV } \
%{!mcall-sysv: %(cpp_sysv_default) } \
%{msoft-float: -D_SOFT_FLOAT} %{mcpu=403: -D_SOFT_FLOAT}"
#undef CPP_SYSV_DEFAULT
#define CPP_SYSV_DEFAULT "-D_CALL_SYSV"
while the #undef CPP_SYSV_DEFAULT
#define CPP_SYSV_DEFAULT "-D_CALL_AIX"
|
| LINK_LIBGCC_SPECIAL | Macro |
Define this macro if the driver program should find the library
libgcc.a itself and should not pass -L options to the
linker. If you do not define this macro, the driver program will pass
the argument -lgcc to tell the linker to do the search and will
pass -L options to it.
|
| LINK_LIBGCC_SPECIAL_1 | Macro |
Define this macro if the driver program should find the library
libgcc.a. If you do not define this macro, the driver program will pass
the argument -lgcc to tell the linker to do the search.
This macro is similar to LINK_LIBGCC_SPECIAL, except that it does
not affect -L options.
|
| LINK_GCC_C_SEQUENCE_SPEC | Macro |
The sequence in which libgcc and libc are specified to the linker.
By default this is %G %L %G.
|
| LINK_COMMAND_SPEC | Macro |
A C string constant giving the complete command line need to execute the
linker. When you do this, you will need to update your port each time a
change is made to the link command line within gcc.c. Therefore,
define this macro only if you need to completely redefine the command
line for invoking the linker and there is no other way to accomplish
the effect you need. Overriding this macro may be avoidable by overriding
LINK_GCC_C_SEQUENCE_SPEC instead.
|
| LINK_ELIMINATE_DUPLICATE_LDIRECTORIES | Macro |
A nonzero value causes collect2 to remove duplicate -Ldirectory search
directories from linking commands. Do not give it a nonzero value if
removing duplicate search directories changes the linker's semantics.
|
| MULTILIB_DEFAULTS | Macro |
Define this macro as a C expression for the initializer of an array of
string to tell the driver program which options are defaults for this
target and thus do not need to be handled specially when using
MULTILIB_OPTIONS.
Do not define this macro if |
| RELATIVE_PREFIX_NOT_LINKDIR | Macro |
Define this macro to tell gcc that it should only translate
a -B prefix into a -L linker option if the prefix
indicates an absolute file name.
|
| MD_EXEC_PREFIX | Macro |
If defined, this macro is an additional prefix to try after
STANDARD_EXEC_PREFIX. MD_EXEC_PREFIX is not searched
when the -b option is used, or the compiler is built as a cross
compiler. If you define MD_EXEC_PREFIX, then be sure to add it
to the list of directories used to find the assembler in configure.in.
|
| STANDARD_STARTFILE_PREFIX | Macro |
Define this macro as a C string constant if you wish to override the
standard choice of libdir as the default prefix to
try when searching for startup files such as crt0.o.
STANDARD_STARTFILE_PREFIX is not searched when the compiler
is built as a cross compiler.
|
| MD_STARTFILE_PREFIX | Macro |
If defined, this macro supplies an additional prefix to try after the
standard prefixes. MD_EXEC_PREFIX is not searched when the
-b option is used, or when the compiler is built as a cross
compiler.
|
| MD_STARTFILE_PREFIX_1 | Macro |
If defined, this macro supplies yet another prefix to try after the
standard prefixes. It is not searched when the -b option is
used, or when the compiler is built as a cross compiler.
|
| INIT_ENVIRONMENT | Macro |
Define this macro as a C string constant if you wish to set environment
variables for programs called by the driver, such as the assembler and
loader. The driver passes the value of this macro to putenv to
initialize the necessary environment variables.
|
| LOCAL_INCLUDE_DIR | Macro |
Define this macro as a C string constant if you wish to override the
standard choice of /usr/local/include as the default prefix to
try when searching for local header files. LOCAL_INCLUDE_DIR
comes before SYSTEM_INCLUDE_DIR in the search order.
Cross compilers do not search either |
| MODIFY_TARGET_NAME | Macro |
|
Define this macro if you wish to define command-line switches that
modify the default target name.
For each switch, you can include a string to be appended to the first
part of the configuration name or a string to be deleted from the
configuration name, if present. The definition should be an initializer
for an array of structures. Each array element should have three
elements: the switch name (a string constant, including the initial
dash), one of the enumeration codes For example, on a machine where #define MODIFY_TARGET_NAME \
{ { "-32", DELETE, "64"}, \
{"-64", ADD, "64"}}
|
| SYSTEM_INCLUDE_DIR | Macro |
Define this macro as a C string constant if you wish to specify a
system-specific directory to search for header files before the standard
directory. SYSTEM_INCLUDE_DIR comes before
STANDARD_INCLUDE_DIR in the search order.
Cross compilers do not use this macro and do not search the directory specified. |
| STANDARD_INCLUDE_DIR | Macro |
Define this macro as a C string constant if you wish to override the
standard choice of /usr/include as the default prefix to
try when searching for header files.
Cross compilers ignore this macro and do not search either
|
| STANDARD_INCLUDE_COMPONENT | Macro |
The "component" corresponding to STANDARD_INCLUDE_DIR.
See INCLUDE_DEFAULTS, below, for the description of components.
If you do not define this macro, no component is used.
|
| INCLUDE_DEFAULTS | Macro |
Define this macro if you wish to override the entire default search path
for include files. For a native compiler, the default search path
usually consists of GCC_INCLUDE_DIR, LOCAL_INCLUDE_DIR,
SYSTEM_INCLUDE_DIR, GPLUSPLUS_INCLUDE_DIR, and
STANDARD_INCLUDE_DIR. In addition, GPLUSPLUS_INCLUDE_DIR
and GCC_INCLUDE_DIR are defined automatically by Makefile,
and specify private search areas for GCC. The directory
GPLUSPLUS_INCLUDE_DIR is used only for C++ programs.
The definition should be an initializer for an array of structures.
Each array element should have four elements: the directory name (a
string constant), the component name (also a string constant), a flag
for C++-only directories,
and a flag showing that the includes in the directory don't need to be
wrapped in The component name denotes what GNU package the include file is part of,
if any, in all uppercase letters. For example, it might be For example, here is the definition used for VAX/VMS: #define INCLUDE_DEFAULTS \
{ \
{ "GNU_GXX_INCLUDE:", "G++", 1, 1}, \
{ "GNU_CC_INCLUDE:", "GCC", 0, 0}, \
{ "SYS$SYSROOT:[SYSLIB.]", 0, 0, 0}, \
{ ".", 0, 0, 0}, \
{ 0, 0, 0, 0} \
}
|
Here is the order of prefixes tried for exec files:
-B.
GCC_EXEC_PREFIX, if any.
COMPILER_PATH.
STANDARD_EXEC_PREFIX.
/usr/lib/gcc/.
MD_EXEC_PREFIX, if any.
Here is the order of prefixes tried for startfiles:
-B.
GCC_EXEC_PREFIX, if any.
LIBRARY_PATH
(or port-specific name; native only, cross compilers do not use this).
STANDARD_EXEC_PREFIX.
/usr/lib/gcc/.
MD_EXEC_PREFIX, if any.
MD_STARTFILE_PREFIX, if any.
STANDARD_STARTFILE_PREFIX.
/lib/.
/usr/lib/.