defaults.h (CPLUSPLUS_CPP_SPEC): New macro.
* defaults.h (CPLUSPLUS_CPP_SPEC): New macro. * gcc.c (struct compiler): Add cpp_spec field. (input_file_compiler): New variable. (do_spec_1): Allow a particular compiler to handle `%C' specially. (main): Store the current compiler in input_file_compiler. * tm.texi (CPLUSPLUS_CPP_SPEC): Document. * lang-specs.h: Use CPLUSPLUS_CPP_SPEC for the preprocessor spec. From-SVN: r39524
This commit is contained in:
parent
7d4918a2d9
commit
a937484185
@ -1,3 +1,13 @@
|
|||||||
|
2001-02-07 Mark Mitchell <mark@codesourcery.com>
|
||||||
|
|
||||||
|
* defaults.h (CPLUSPLUS_CPP_SPEC): New macro.
|
||||||
|
* gcc.c (struct compiler): Add cpp_spec field.
|
||||||
|
(input_file_compiler): New variable.
|
||||||
|
(do_spec_1): Allow a particular compiler to handle `%C'
|
||||||
|
specially.
|
||||||
|
(main): Store the current compiler in input_file_compiler.
|
||||||
|
* tm.texi (CPLUSPLUS_CPP_SPEC): Document.
|
||||||
|
|
||||||
2001-02-07 Zack Weinberg <zack@wolery.stanford.edu>
|
2001-02-07 Zack Weinberg <zack@wolery.stanford.edu>
|
||||||
|
|
||||||
* cpphash.h (struct spec_nodes): Add n_true and n_false.
|
* cpphash.h (struct spec_nodes): Add n_true and n_false.
|
||||||
|
@ -1,3 +1,8 @@
|
|||||||
|
2001-02-07 Mark Mitchell <mark@codesourcery.com>
|
||||||
|
|
||||||
|
* lang-specs.h: Use CPLUSPLUS_CPP_SPEC for the preprocessor
|
||||||
|
spec.
|
||||||
|
|
||||||
2001-02-06 Nathan Sidwell <nathan@codesourcery.com>
|
2001-02-06 Nathan Sidwell <nathan@codesourcery.com>
|
||||||
|
|
||||||
* pt.c (lookup_template_class): Make sure it's a primary
|
* pt.c (lookup_template_class): Make sure it's a primary
|
||||||
|
@ -67,6 +67,9 @@ Boston, MA 02111-1307, USA. */
|
|||||||
%{ansi:-trigraphs -$}\
|
%{ansi:-trigraphs -$}\
|
||||||
%(cc1_options) %2 %{+e*}\
|
%(cc1_options) %2 %{+e*}\
|
||||||
%{!fsyntax-only:%(invoke_as)}}}}"
|
%{!fsyntax-only:%(invoke_as)}}}}"
|
||||||
|
#endif
|
||||||
|
#ifdef CPLUSPLUS_CPP_SPEC
|
||||||
|
, CPLUSPLUS_CPP_SPEC
|
||||||
#endif
|
#endif
|
||||||
},
|
},
|
||||||
{".ii", "@c++-cpp-output"},
|
{".ii", "@c++-cpp-output"},
|
||||||
|
@ -296,5 +296,13 @@ do { \
|
|||||||
#define BUILD_VA_LIST_TYPE(X) ((X) = ptr_type_node)
|
#define BUILD_VA_LIST_TYPE(X) ((X) = ptr_type_node)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/* By default, the preprocessor should be invoked the same way in C++
|
||||||
|
as in C. */
|
||||||
|
#ifndef CPLUSPLUS_CPP_SPEC
|
||||||
|
#ifdef CPP_SPEC
|
||||||
|
#define CPLUSPLUS_CPP_SPEC CPP_SPEC
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
#endif /* GCC_DEFAULTS_H */
|
#endif /* GCC_DEFAULTS_H */
|
||||||
|
|
||||||
|
35
gcc/gcc.c
35
gcc/gcc.c
@ -698,6 +698,10 @@ struct compiler
|
|||||||
whose names end in this suffix. */
|
whose names end in this suffix. */
|
||||||
|
|
||||||
const char *spec; /* To use this compiler, run this spec. */
|
const char *spec; /* To use this compiler, run this spec. */
|
||||||
|
|
||||||
|
const char *cpp_spec; /* If non-NULL, substitute this spec
|
||||||
|
for `%C', rather than the usual
|
||||||
|
cpp_spec. */
|
||||||
};
|
};
|
||||||
|
|
||||||
/* Pointer to a vector of `struct compiler' that gives the spec for
|
/* Pointer to a vector of `struct compiler' that gives the spec for
|
||||||
@ -3870,6 +3874,9 @@ static int suffixed_basename_length;
|
|||||||
static const char *input_basename;
|
static const char *input_basename;
|
||||||
static const char *input_suffix;
|
static const char *input_suffix;
|
||||||
|
|
||||||
|
/* The compiler used to process the current input file. */
|
||||||
|
static struct compiler *input_file_compiler;
|
||||||
|
|
||||||
/* These are variables used within do_spec and do_spec_1. */
|
/* These are variables used within do_spec and do_spec_1. */
|
||||||
|
|
||||||
/* Nonzero if an arg has been started and not yet terminated
|
/* Nonzero if an arg has been started and not yet terminated
|
||||||
@ -4441,9 +4448,15 @@ do_spec_1 (spec, inswitch, soft_matched_part)
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case 'C':
|
case 'C':
|
||||||
value = do_spec_1 (cpp_spec, 0, NULL_PTR);
|
{
|
||||||
if (value != 0)
|
const char* spec
|
||||||
return value;
|
= (input_file_compiler->cpp_spec
|
||||||
|
? input_file_compiler->cpp_spec
|
||||||
|
: cpp_spec);
|
||||||
|
value = do_spec_1 (spec, 0, NULL_PTR);
|
||||||
|
if (value != 0)
|
||||||
|
return value;
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'E':
|
case 'E':
|
||||||
@ -5795,7 +5808,6 @@ main (argc, argv)
|
|||||||
|
|
||||||
for (i = 0; (int) i < n_infiles; i++)
|
for (i = 0; (int) i < n_infiles; i++)
|
||||||
{
|
{
|
||||||
register struct compiler *cp = 0;
|
|
||||||
int this_file_error = 0;
|
int this_file_error = 0;
|
||||||
|
|
||||||
/* Tell do_spec what to substitute for %i. */
|
/* Tell do_spec what to substitute for %i. */
|
||||||
@ -5809,17 +5821,18 @@ main (argc, argv)
|
|||||||
|
|
||||||
/* Figure out which compiler from the file's suffix. */
|
/* Figure out which compiler from the file's suffix. */
|
||||||
|
|
||||||
cp = lookup_compiler (infiles[i].name, input_filename_length,
|
input_file_compiler
|
||||||
infiles[i].language);
|
= lookup_compiler (infiles[i].name, input_filename_length,
|
||||||
|
infiles[i].language);
|
||||||
if (cp)
|
|
||||||
|
if (input_file_compiler)
|
||||||
{
|
{
|
||||||
/* Ok, we found an applicable compiler. Run its spec. */
|
/* Ok, we found an applicable compiler. Run its spec. */
|
||||||
|
|
||||||
if (cp->spec[0] == '#')
|
if (input_file_compiler->spec[0] == '#')
|
||||||
error ("%s: %s compiler not installed on this system",
|
error ("%s: %s compiler not installed on this system",
|
||||||
input_filename, &cp->spec[1]);
|
input_filename, &input_file_compiler->spec[1]);
|
||||||
value = do_spec (cp->spec);
|
value = do_spec (input_file_compiler->spec);
|
||||||
if (value < 0)
|
if (value < 0)
|
||||||
this_file_error = 1;
|
this_file_error = 1;
|
||||||
}
|
}
|
||||||
|
@ -109,6 +109,12 @@ 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.
|
Do not define this macro if it does not need to do anything.
|
||||||
|
|
||||||
|
@findex CPLUSPLUS_CPP_SPEC
|
||||||
|
@item CPLUSPLUS_CPP_SPEC
|
||||||
|
This macro is just like @code{CPP_SPEC}, but is used for C++, rather
|
||||||
|
than C. If you do not define this macro, then the value of
|
||||||
|
@code{CPP_SPEC} (if any) will be used instead.
|
||||||
|
|
||||||
@findex NO_BUILTIN_SIZE_TYPE
|
@findex NO_BUILTIN_SIZE_TYPE
|
||||||
@item NO_BUILTIN_SIZE_TYPE
|
@item NO_BUILTIN_SIZE_TYPE
|
||||||
If this macro is defined, the preprocessor will not define the builtin macro
|
If this macro is defined, the preprocessor will not define the builtin macro
|
||||||
|
Loading…
Reference in New Issue
Block a user