diff options
author | Neil Booth <neil@daikokuya.demon.co.uk> | 2002-03-11 21:11:36 +0000 |
---|---|---|
committer | Neil Booth <neil@gcc.gnu.org> | 2002-03-11 21:11:36 +0000 |
commit | 40adaa27975cbd1913dbf18e98d200c41be82122 (patch) | |
tree | 0a940070bdd33bb337e019f4c4afcb0d8c78f7b0 /gcc/doc/invoke.texi | |
parent | abd3d6007c581a427a47feabd0f8d95c777574ec (diff) | |
download | gcc-40adaa27975cbd1913dbf18e98d200c41be82122.zip gcc-40adaa27975cbd1913dbf18e98d200c41be82122.tar.gz gcc-40adaa27975cbd1913dbf18e98d200c41be82122.tar.bz2 |
Makefile.in: Update.
* Makefile.in: Update.
doc:
* cppenv.texi, cppopts.texi: Split out of cpp.texi and gcc.texi.
Update documentation.
* gcc.texi: Include cppopts.texi and cppenv.texi.
* cpp.texi: Include cppopts.texi and cppenv.texi.
From-SVN: r50599
Diffstat (limited to 'gcc/doc/invoke.texi')
-rw-r--r-- | gcc/doc/invoke.texi | 378 |
1 files changed, 17 insertions, 361 deletions
diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi index 393a20e..c1689c0 100644 --- a/gcc/doc/invoke.texi +++ b/gcc/doc/invoke.texi @@ -3867,339 +3867,18 @@ Some of these options make sense only together with @option{-E} because they cause the preprocessor output to be unsuitable for actual compilation. -@table @gcctabopt -@item -include @var{file} -@opindex include -Process @var{file} as input before processing the regular input file. -In effect, the contents of @var{file} are compiled first. Any @option{-D} -and @option{-U} options on the command line are always processed before -@option{-include @var{file}}, regardless of the order in which they are -written. All the @option{-include} and @option{-imacros} options are -processed in the order in which they are written. - -@item -imacros @var{file} -@opindex imacros -Process @var{file} as input, discarding the resulting output, before -processing the regular input file. Because the output generated from -@var{file} is discarded, the only effect of @option{-imacros @var{file}} -is to make the macros defined in @var{file} available for use in the -main input. All the @option{-include} and @option{-imacros} options are -processed in the order in which they are written. - -@item -idirafter @var{dir} -@opindex idirafter -@cindex second include path -Add the directory @var{dir} to the second include path. The directories -on the second include path are searched when a header file is not found -in any of the directories in the main include path (the one that -@option{-I} adds to). - -@item -iprefix @var{prefix} -@opindex iprefix -Specify @var{prefix} as the prefix for subsequent @option{-iwithprefix} -options. - -@item -iwithprefix @var{dir} -@opindex iwithprefix -Add a directory to the second include path. The directory's name is -made by concatenating @var{prefix} and @var{dir}, where @var{prefix} was -specified previously with @option{-iprefix}. If you have not specified a -prefix yet, the directory containing the installed passes of the -compiler is used as the default. - -@item -iwithprefixbefore @var{dir} -@opindex iwithprefixbefore -Add a directory to the main include path. The directory's name is made -by concatenating @var{prefix} and @var{dir}, as in the case of -@option{-iwithprefix}. - -@item -isystem @var{dir} -@opindex isystem -Add a directory to the beginning of the second include path, marking it -as a system directory, so that it gets the same special treatment as -is applied to the standard system directories. - -@item -nostdinc -@opindex nostdinc -Do not search the standard system directories for header files. Only -the directories you have specified with @option{-I} options (and the -current directory, if appropriate) are searched. @xref{Directory -Options}, for information on @option{-I}. - -By using both @option{-nostdinc} and @option{-I-}, you can limit the include-file -search path to only those directories you specify explicitly. - -@item -remap -@opindex remap -When searching for a header file in a directory, remap file names if a -file named @file{header.gcc} exists in that directory. This can be used -to work around limitations of file systems with file name restrictions. -The @file{header.gcc} file should contain a series of lines with two -tokens on each line: the first token is the name to map, and the second -token is the actual name to use. - -@item -undef -@opindex undef -Do not predefine any nonstandard macros. (Including architecture flags). - -@item -E -@opindex E -Run only the C preprocessor. Preprocess all the C source files -specified and output the results to standard output or to the -specified output file. - -@item -C -@opindex C -Tell the preprocessor not to discard comments. Used with the -@option{-E} option. - -@item -P -@opindex P -Tell the preprocessor not to generate @samp{#line} directives. -Used with the @option{-E} option. - -@cindex make -@cindex dependencies, make -@item -M -@opindex M -Instead of outputting the result of preprocessing, output a rule -suitable for @command{make} describing the dependencies of the main -source file. The preprocessor outputs one @command{make} rule containing -the object file name for that source file, a colon, and the names of all -the included files, including those coming from @option{-include} or -@option{-imacros} command line options. - -Unless specified explicitly (with @option{-MT} or @option{-MQ}), the -object file name consists of the basename of the source file with any -suffix replaced with object file suffix. If there are many included -files then the rule is split into several lines using @samp{\}-newline. -The rule has no commands. - -Passing @option{-M} to the driver implies @option{-E}. - -@item -MM -@opindex MM -Like @option{-M} but do not mention header files that are found in -system header directories, nor header files that are included, -directly or indirectly, from such a header. - -This implies that the choice of angle brackets or double quotes in an -@samp{#include} directive does not in itself determine whether that -header will appear in @option{-MM} dependency output. This is a -slight change in semantics from GCC versions 3.0 and earlier. - -@item -MD -@opindex MD -@option{-MD} is equivalent to @option{-M -MF @var{file}}, except that -@option{-E} is not implied. The driver determines @var{file} based on -whether an @option{-o} option is given. If it is, the driver uses its -argument but with a suffix of @file{.d}, otherwise it take the -basename of the input file and applies a @file{.d} suffix. - -If @option{-MD} is used in conjunction with @option{-E}, any -@option{-o} switch is understood to specify the dependency output file -(but @pxref{-MF}), but if used without @option{-E}, each @option{-o} -is understood to specify a target object file. - -Since @option{-E} is not implied, @option{-MD} can be used to generate -a dependency output file as a side-effect of the compilation process. - -With Mach, you can use the utility @code{md} to merge multiple -dependency files into a single dependency file suitable for using with -the @samp{make} command. - -@item -MMD -@opindex MMD -Like @option{-MD} except mention only user header files, not system --header files. - -@item -MF @var{file} -@opindex MF -@anchor{-MF} -When used with @option{-M} or @option{-MM}, specifies a -file to write the dependencies to. If no @option{-MF} switch is given -the preprocessor sends the rules to the same place it would have sent -preprocessed output. - -When used with the driver options @option{-MD} or @option{-MMD}, -@option{-MF} overrides the default dependency output file. - -Another way to specify output of a @code{make} rule is by setting -the environment variable @env{DEPENDENCIES_OUTPUT} (@pxref{Environment -Variables}). - -@item -MG -@opindex MG -When used with @option{-M} or @option{-MM}, @option{-MG} says to treat missing -header files as generated files and assume they live in the same -directory as the source file. It suppresses preprocessed output, as a -missing header file is ordinarily an error. - -This feature is used in automatic updating of makefiles. - -@item -MP -@opindex MP -This option instructs CPP to add a phony target for each dependency -other than the main file, causing each to depend on nothing. These -dummy rules work around errors @code{make} gives if you remove header -files without updating the @code{Makefile} to match. - -This is typical output:- - -@smallexample -/tmp/test.o: /tmp/test.c /tmp/test.h - -/tmp/test.h: -@end smallexample - -@item -MQ @var{target} -@item -MT @var{target} -@opindex MQ -@opindex MT -By default CPP uses the main file name, including any path, and appends -the object suffix, normally ``.o'', to it to obtain the name of the -target for dependency generation. With @option{-MT} you can specify a -target yourself, overriding the default one. - -If you want multiple targets, you can specify them as a single argument -to @option{-MT}, or use multiple @option{-MT} options. - -The targets you specify are output in the order they appear on the -command line. @option{-MQ} is identical to @option{-MT}, except that the -target name is quoted for Make, but with @option{-MT} it isn't. For -example, @option{-MT '$(objpfx)foo.o'} gives - -@smallexample -$(objpfx)foo.o: /tmp/foo.c -@end smallexample - -but @option{-MQ '$(objpfx)foo.o'} gives - -@smallexample -$$(objpfx)foo.o: /tmp/foo.c -@end smallexample - -The default target is automatically quoted, as if it were given with -@option{-MQ}. - -@item -H -@opindex H -Print the name of each header file used, in addition to other normal -activities. - -@item -A@var{question}(@var{answer}) -@opindex A -Assert the answer @var{answer} for @var{question}, in case it is tested -with a preprocessing conditional such as @samp{#if -#@var{question}(@var{answer})}. @option{-A-} disables the standard -assertions that normally describe the target machine. - -@item -D@var{macro} -@opindex D -Define macro @var{macro} with the string @samp{1} as its definition. - -@item -D@var{macro}=@var{defn} -Define macro @var{macro} as @var{defn}. All instances of @option{-D} on -the command line are processed before any @option{-U} options. - -Any @option{-D} and @option{-U} options on the command line are processed in -order, and always before @option{-imacros @var{file}}, regardless of the -order in which they are written. - -@item -U@var{macro} -@opindex U -Undefine macro @var{macro}. @option{-U} options are evaluated after all -@option{-D} options, but before any @option{-include} and @option{-imacros} -options. - -Any @option{-D} and @option{-U} options on the command line are processed in -order, and always before @option{-imacros @var{file}}, regardless of the -order in which they are written. - -@item -dM -@opindex dM -Tell the preprocessor to output only a list of the macro definitions -that are in effect at the end of preprocessing. Used with the @option{-E} -option. - -@item -dD -@opindex dD -Tell the preprocessing to pass all macro definitions into the output, in -their proper sequence in the rest of the output. - -@item -dN -@opindex dN -Like @option{-dD} except that the macro arguments and contents are omitted. -Only @samp{#define @var{name}} is included in the output. - -@item -dI -@opindex dI -Output @samp{#include} directives in addition to the result of -preprocessing. - -@item -fpreprocessed -@opindex fpreprocessed -Indicate to the preprocessor that the input file has already been -preprocessed. This suppresses things like macro expansion, trigraph -conversion, escaped newline splicing, and processing of most directives. -The preprocessor still recognizes and removes comments, so that you can -pass a file preprocessed with @option{-C} to the compiler without -problems. In this mode the integrated preprocessor is little more than -a tokenizer for the front ends. - -@option{-fpreprocessed} is implicit if the input file has one of the -extensions @samp{i}, @samp{ii} or @samp{mi}. These are the extensions -that GCC uses for preprocessed files created by @option{-save-temps}. - -@item -trigraphs -@opindex trigraphs -Process ISO standard trigraph sequences. These are three-character -sequences, all starting with @samp{??}, that are defined by ISO C to -stand for single characters. For example, @samp{??/} stands for -@samp{\}, so @samp{'??/n'} is a character constant for a newline. By -default, GCC ignores trigraphs, but in standard-conforming modes it -converts them. See the @option{-std} and @option{-ansi} options. - -The nine trigraph sequences are -@table @samp -@item ??( -@expansion{} @samp{[} - -@item ??) -@expansion{} @samp{]} - -@item ??< -@expansion{} @samp{@{} - -@item ??> -@expansion{} @samp{@}} - -@item ??= -@expansion{} @samp{#} - -@item ??/ -@expansion{} @samp{\} - -@item ??' -@expansion{} @samp{^} - -@item ??! -@expansion{} @samp{|} - -@item ??- -@expansion{} @samp{~} - -@end table - -Trigraph support is not popular, so many compilers do not implement it -properly. Portable code should not rely on trigraphs being either -converted or ignored. - -@item -Wp,@var{option} @opindex Wp -Pass @var{option} as an option to the preprocessor. If @var{option} -contains commas, it is split into multiple options at the commas. -@end table +You can use @option{-Wp,@var{option}} to bypass the compiler driver +and pass @var{option} directly through to the preprocessor. If +@var{option} contains commas, it is split into multiple options at the +commas. However, many options are modified, translated or interpreted +by the compiler driver before being passed to the preprocessor, and +@option{-Wp} forcibly bypasses this phase. The preprocessor's direct +interface is undocumented and subject to change, so whenever possible +you should avoid using @option{-Wp} and let the driver handle the +options instead. + +@include cppopts.texi @node Assembler Options @section Passing Options to the Assembler @@ -10274,35 +9953,6 @@ using GCC also uses these directories when searching for ordinary libraries for the @option{-l} option (but directories specified with @option{-L} come first). -@item C_INCLUDE_PATH -@itemx CPLUS_INCLUDE_PATH -@itemx OBJC_INCLUDE_PATH -@findex C_INCLUDE_PATH -@findex CPLUS_INCLUDE_PATH -@findex OBJC_INCLUDE_PATH -@c @itemx OBJCPLUS_INCLUDE_PATH -These environment variables pertain to particular languages. Each -variable's value is a colon-separated list of directories, much like -@env{PATH}. When GCC searches for header files, it tries the -directories listed in the variable for the language you are using, after -the directories specified with @option{-I} but before the standard header -file directories. - -@item DEPENDENCIES_OUTPUT -@findex DEPENDENCIES_OUTPUT -@cindex dependencies for make as output -If this variable is set, its value specifies how to output dependencies -for Make based on the header files processed by the compiler. This -output looks much like the output from the @option{-M} option -(@pxref{Preprocessor Options}), but it goes to a separate file, and is -in addition to the usual results of compilation. - -The value of @env{DEPENDENCIES_OUTPUT} can be just a file name, in -which case the Make rules are written to that file, guessing the target -name from the source file name. Or the value can have the form -@samp{@var{file} @var{target}}, in which case the rules are written to -file @var{file} using @var{target} as the target name. - @item LANG @findex LANG @cindex locale definition @@ -10326,6 +9976,12 @@ compiler will use mblen and mbtowc as defined by the default locale to recognize and translate multibyte characters. @end table +@noindent +Some additional environments variables affect the behavior of the +preprocessor. + +@include cppenv.texi + @c man end @node Running Protoize |