summaryrefslogtreecommitdiff
path: root/gcc/fix-header.c
diff options
context:
space:
mode:
authorneil <neil@138bc75d-0d04-0410-961f-82ee72b054a4>2003-03-01 14:31:21 +0000
committerneil <neil@138bc75d-0d04-0410-961f-82ee72b054a4>2003-03-01 14:31:21 +0000
commite69f4d0e31d76d27c6821b0cf1c721b0f6b96a44 (patch)
treea780e502dea6f5dd1bc734c51de06a64223427b4 /gcc/fix-header.c
parentd28c6096290a7e849849c730ec4cb120ebd39812 (diff)
downloadgcc-e69f4d0e31d76d27c6821b0cf1c721b0f6b96a44.tar.gz
* Makefile.in (C_AND_OBJC_OBJS, c-incpath.o, c-lex.o, LIBCPP_OBJS,
cppinit.o, cppdefault.o, fix-header): Update. * c-incpath.c: New file. * c-incpath.h: New file. * c-lex.c: Include c-incpath.h. (init_c_lex): Register path simplifier. * c-opts.c: Include cppdefault.h and c-incpath.h. (TARGET_SYSTEM_ROOT, verbose, iprefix, sysroot, std_inc, std_cxx_inc, quote_chain_split, add_prefixed_path): New. (COMMAND_LINE_OPTIONS): Add more options from cpplib. (missing_arg, c_common_decode_option): Handle them. (c_common_post_options): Register include chains. (print_help): Update. * cppdefault.h (struct default include): Update. Move some macros to ... * cppdefault.c: ... here. (cpp_include_defaults): Add extra field add_sysroot. * cppfiles.c (include_file, search_from, find_or_create_entry, cpp_included, find_include_file, remap_filename): Update for renaming of search_path to cpp_path, and of the chain headers. (remove_component_p, _cpp_simplify_pathname): Move to c-incpath.c. * cpphash.h (struct search_path): Move to cpplib.h. (struct cpp_buffer, struct cpp_reader): Update. (_cpp_simplify_pathname): Remove. * cppinit.c: Don't include prefix.h and cppdefault.h. (INO_T_EQ, INO_T_COPY, path_include, append_include_chain, remove_dup_dir, remove_dup_nonsys_dirs, remove_dup_dirs, init_standard_includes, BRACKET, SYSTEM, AFTER, no_dir, no_pth, cpp_handle_options): Remove. (struct pending_option): Remove chain members. (cpp_destroy, cpp_read_main_file, COMMAND_LINE_OPTIONS, cpp_handle_option): Update. * cpplib.h (struct cpp_path, cpp_set_include_chains): New. (struct cpp_options): Remove quote_include, bracket_include, include_prefix, include_prefix_len, verbose, ignore_srcdir, no_standard_includes, no_standard_cplusplus_includes. (struct cpp_callbacks): Add simplify_path. (cpp_handle_options): Remove. * fix-header.c: Include c-incpath.h. (read_scan_file): Update to use c-incpath functionality. * doc/passes.texi: Update. cp: * Make-lang.in (CXX_C_OBJS): Update. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@63612 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/fix-header.c')
-rw-r--r--gcc/fix-header.c28
1 files changed, 25 insertions, 3 deletions
diff --git a/gcc/fix-header.c b/gcc/fix-header.c
index d722450a622..305a8685222 100644
--- a/gcc/fix-header.c
+++ b/gcc/fix-header.c
@@ -1,6 +1,6 @@
/* fix-header.c - Make C header file suitable for C++.
Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998,
- 1999, 2000, 2001 Free Software Foundation, Inc.
+ 1999, 2000, 2001, 2003 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by the
@@ -78,6 +78,7 @@ Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#include "obstack.h"
#include "scan.h"
#include "cpplib.h"
+#include "c-incpath.h"
static void v_fatal PARAMS ((const char *, va_list)) ATTRIBUTE_PRINTF (1,0) ATTRIBUTE_NORETURN;
static void fatal PARAMS ((const char *, ...)) ATTRIBUTE_PRINTF_1 ATTRIBUTE_NORETURN;
@@ -616,7 +617,7 @@ read_scan_file (in_fname, argc, argv)
cpp_callbacks *cb;
cpp_options *options;
struct fn_decl *fn;
- int i;
+ int i, strings_processed;
struct symbol_list *cur_symbols;
obstack_init (&scan_file_obstack);
@@ -624,6 +625,7 @@ read_scan_file (in_fname, argc, argv)
scan_in = cpp_create_reader (CLK_GNUC89);
cb = cpp_get_callbacks (scan_in);
cb->file_change = cb_file_change;
+ cb->simplify_path = simplify_path;
/* We are going to be scanning a header file out of its proper context,
so ignore warnings and errors. */
@@ -631,12 +633,32 @@ read_scan_file (in_fname, argc, argv)
options->inhibit_warnings = 1;
options->inhibit_errors = 1;
- i = cpp_handle_options (scan_in, argc, argv);
+ for (i = 0; i < argc; i += strings_processed)
+ {
+ if (argv[i][0] == 'I')
+ {
+ if (argv[i][1] != '\0')
+ strings_processed = 1, add_path (argv[i] + 1, BRACKET, false);
+ else if (i + 1 == argc)
+ strings_processed = 0;
+ else
+ strings_processed = 2, add_path (argv[i + 1], BRACKET, false);
+ }
+ else
+ strings_processed = cpp_handle_option (scan_in, argc - i, argv + i);
+
+ if (strings_processed == 0)
+ break;
+ }
+
if (i < argc)
cpp_error (scan_in, DL_ERROR, "invalid option `%s'", argv[i]);
if (cpp_errors (scan_in))
exit (FATAL_EXIT_CODE);
+ register_include_chains (scan_in, NULL /* sysroot */, NULL /* iprefix */,
+ true /* stdinc */, false /* cxx_stdinc */,
+ false /* verbose */);
if (! cpp_read_main_file (scan_in, in_fname, NULL))
exit (FATAL_EXIT_CODE);