prev UP NEXT Using and Porting GNU CC

16.1: Controlling the Compilation Driver, `gcc'

SWITCH_TAKES_ARG (char)
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 to handle the standard options properly. You need not define it unless you wish to add additional options which take arguments.

WORD_SWITCH_TAKES_ARG (name)
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 DEFAULT_WORD_SWITCH_TAKES_ARG, which handles the standard options properly. You need not define WORD_SWITCH_TAKES_ARG unless you wish to add additional options which take arguments. Any redefinition should call DEFAULT_WORD_SWITCH_TAKES_ARG and then check for additional options.

SWITCHES_NEED_SPACES
A string-valued C expression which is nonempty if the linker needs a space between the `-L' or `-o' option and its argument.

If this macro is not defined, the default value is 0.

CPP_SPEC
A C string constant that tells the GNU CC driver program options to pass to CPP. It can also specify how to translate options you give to GNU CC into options for GNU CC to pass to the CPP.

Do not define this macro if it does not need to do anything.

NO_BUILTIN_SIZE_TYPE
If this macro is defined, the preprocessor will not define the builtin macro __SIZE_TYPE__. The macro __SIZE_TYPE__ must then be defined by CPP_SPEC instead.

This should be defined if SIZE_TYPE depends on target dependent flags which are not accessible to the preprocessor. Otherwise, it should not be defined.

NO_BUILTIN_PTRDIFF_TYPE
If this macro is defined, the preprocessor will not define the builtin macro __PTRDIFF_TYPE__. The macro __PTRDIFF_TYPE__ must then be defined by CPP_SPEC instead.

This should be defined if PTRDIFF_TYPE depends on target dependent flags which are not accessible to the preprocessor. Otherwise, it should not be defined.

SIGNED_CHAR_SPEC
A C string constant that tells the GNU CC driver program options to pass to CPP. By default, this macro is defined to pass the option `-D__CHAR_UNSIGNED__' to CPP if char will be treated as unsigned char by cc1.

Do not define this macro unless you need to override the default definition.

CC1_SPEC
A C string constant that tells the GNU CC driver program options to pass to cc1. It can also specify how to translate options you give to GNU CC into options for GNU CC to pass to the cc1.

Do not define this macro if it does not need to do anything.

CC1PLUS_SPEC
A C string constant that tells the GNU CC driver program options to pass to cc1plus. It can also specify how to translate options you give to GNU CC into options for GNU CC to pass to the cc1plus.

Do not define this macro if it does not need to do anything.

ASM_SPEC
A C string constant that tells the GNU CC driver program options to pass to the assembler. It can also specify how to translate options you give to GNU CC into options for GNU CC 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
A C string constant that tells the GNU CC 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.

LINK_SPEC
A C string constant that tells the GNU CC driver program options to pass to the linker. It can also specify how to translate options you give to GNU CC into options for GNU CC to pass to the linker.

Do not define this macro if it does not need to do anything.

LIB_SPEC
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 `gcc.c'.

STARTFILE_SPEC
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 `gcc.c'.

ENDFILE_SPEC
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.

LINK_LIBGCC_SPECIAL
Define this macro meaning that gcc should find the library `libgcc.a' by hand, rather than passing the argument `-lgcc' to tell the linker to do the search; also, gcc should not generate `-L' options to pass to the linker (as it normally does).
LINK_LIBGCC_SPECIAL_1
Define this macro meaning that gcc should find the library `libgcc.a' by hand, rather than passing the argument `-lgcc' to tell the linker to do the search.
RELATIVE_PREFIX_NOT_LINKDIR
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.
STANDARD_EXEC_PREFIX
Define this macro as a C string constant if you wish to override the standard choice of `/usr/local/lib/gcc-lib/' as the default prefix to try when searching for the executable files of the compiler.
MD_EXEC_PREFIX
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.
STANDARD_STARTFILE_PREFIX
Define this macro as a C string constant if you wish to override the standard choice of `/usr/local/lib/' as the default prefix to try when searching for startup files such as `crt0.o'.
MD_STARTFILE_PREFIX
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
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.
LOCAL_INCLUDE_DIR
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 use this macro and do not search either `/usr/local/include' or its replacement.

SYSTEM_INCLUDE_DIR
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
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 do not use this macro and do not search either `/usr/include' or its replacement.

INCLUDE_DEFAULTS
Define this macro if you wish to override the entire default search path for include files. The default search path includes 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 two elements: the directory name (a string constant) and a flag for C++-only directories. Mark the end of the array with a null element. For example, here is the definition used for VMS:

#define INCLUDE_DEFAULTS \
{                                       \
  { "GNU_GXX_INCLUDE:", 1},             \
  { "GNU_CC_INCLUDE:", 0},              \
  { "SYS$SYSROOT:[SYSLIB.]", 0},        \
  { ".", 0},                            \
  { 0, 0}                               \
}

Here is the order of prefixes tried for exec files:

  1. Any prefixes specified by the user with `-B'.
  2. The environment variable GCC_EXEC_PREFIX, if any.
  3. The directories specified by the environment variable COMPILER_PATH.
  4. The macro STANDARD_EXEC_PREFIX.
  5. `/usr/lib/gcc/'.
  6. The macro MD_EXEC_PREFIX, if any.

Here is the order of prefixes tried for startfiles:

  1. Any prefixes specified by the user with `-B'.
  2. The environment variable GCC_EXEC_PREFIX, if any.
  3. The directories specified by the environment variable LIBRARY_PATH.
  4. The macro STANDARD_EXEC_PREFIX.
  5. `/usr/lib/gcc/'.
  6. The macro MD_EXEC_PREFIX, if any.
  7. The macro MD_STARTFILE_PREFIX, if any.
  8. The macro STANDARD_STARTFILE_PREFIX.
  9. `/lib/'.
  10. `/usr/lib/'.