cpplib.h (struct cpp_options): Add canonical_system_headers.

* include/cpplib.h (struct cpp_options): Add canonical_system_headers.
    * files.c (find_file_in_dir): Call maybe_shorter_path() only if
    canonical_system_headers is set.
    * init.c (cpp_create_reader): Initialize canonical_system_headers.
    * configure.ac: Add new --enable-canonical-system-headers.
    * configure: Regenerate.
    * config.in: Regenerate.

    * doc/cppopts.texi: Document -f[no-]canonical-system-headers.
    * doc/install.texi: Document --enable-canonical-system-headers.

    * c.opt: Add f[no-]canonical-system-headers.
    * c-opts.c (c_common_handle_option): Handle
    OPT_fcanonical_system_headers.

From-SVN: r193569
This commit is contained in:
Simon Baldwin 2012-11-16 17:14:05 +00:00 committed by Simon Baldwin
parent b185792f52
commit 5dc99c4678
13 changed files with 80 additions and 1 deletions

View File

@ -1,3 +1,8 @@
2012-11-16 Simon Baldwin <simonb@google.com>
* doc/cppopts.texi: Document -f[no-]canonical-system-headers.
* doc/install.texi: Document --enable-canonical-system-headers.
2012-11-16 Vladimir Makarov <vmakarov@redhat.com>
PR rtl-optimization/55330

View File

@ -1,3 +1,9 @@
2012-11-16 Simon Baldwin <simonb@google.com>
* c.opt: Add f[no-]canonical-system-headers.
* c-opts.c (c_common_handle_option): Handle
OPT_fcanonical_system_headers.
2012-11-09 Ed Smith-Rowland <3dw4rd@verizon.net>
PR c++/54413

View File

@ -456,6 +456,10 @@ c_common_handle_option (size_t scode, const char *arg, int value,
handle_OPT_d (arg);
break;
case OPT_fcanonical_system_headers:
cpp_opts->canonical_system_headers = value;
break;
case OPT_fcond_mismatch:
if (!c_dialect_cxx ())
{

View File

@ -840,6 +840,10 @@ Recognize built-in functions
fbuiltin-
C ObjC C++ ObjC++ Joined
fcanonical-system-headers
C ObjC C++ ObjC++
Where shorter, use canonicalized paths to systems headers.
fcheck-new
C++ ObjC++ Var(flag_check_new)
Check the return value of new

View File

@ -564,6 +564,10 @@ Accept universal character names in identifiers. This option is
experimental; in a future version of GCC, it will be enabled by
default for C99 and C++.
@item -fno-canonical-system-headers
@opindex fno-canonical-system-headers
When preprocessing, do not shorten system header paths with canonicalization.
@item -fpreprocessed
@opindex fpreprocessed
Indicate to the preprocessor that the input file has already been

View File

@ -1719,6 +1719,14 @@ link time when @option{-fuse-linker-plugin} is enabled.
This linker should have plugin support such as gold starting with
version 2.20 or GNU ld starting with version 2.21.
See @option{-fuse-linker-plugin} for details.
@item --enable-canonical-system-headers
@itemx --disable-canonical-system-headers
Enable system header path canonicalization for @file{libcpp}. This can
produce shorter header file paths in diagnostics and dependency output
files, but these changed header paths may conflict with some compilation
environments. Enabled by default, and may be disabled using
@option{--disable-canonical-system-headers}.
@end table
@subheading Cross-Compiler-Specific Options

View File

@ -1,3 +1,13 @@
2012-11-16 Simon Baldwin <simonb@google.com>
* include/cpplib.h (struct cpp_options): Add canonical_system_headers.
* files.c (find_file_in_dir): Call maybe_shorter_path() only if
canonical_system_headers is set.
* init.c (cpp_create_reader): Initialize canonical_system_headers.
* configure.ac: Add new --enable-canonical-system-headers.
* configure: Regenerate.
* config.in: Regenerate.
2012-11-09 Ed Smith-Rowland <3dw4rd@verizon.net>
PR c++/54413

View File

@ -11,6 +11,9 @@
/* Define to 1 if using `alloca.c'. */
#undef C_ALLOCA
/* Define to enable system headers canonicalization. */
#undef ENABLE_CANONICAL_SYSTEM_HEADERS
/* Define if you want more run-time sanity checks. */
#undef ENABLE_CHECKING

16
libcpp/configure vendored
View File

@ -700,6 +700,7 @@ enable_rpath
with_libiconv_prefix
enable_maintainer_mode
enable_checking
enable_canonical_system_headers
'
ac_precious_vars='build_alias
host_alias
@ -1333,6 +1334,8 @@ Optional Features:
--disable-rpath do not hardcode runtime library paths
--enable-maintainer-mode enable rules only needed by maintainers
--enable-checking enable expensive run-time checks
--enable-canonical-system-headers
enable or disable system headers canonicalization
Optional Packages:
--with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
@ -7094,6 +7097,19 @@ $as_echo "#define ENABLE_CHECKING 1" >>confdefs.h
fi
# Check whether --enable-canonical-system-headers was given.
if test "${enable_canonical_system_headers+set}" = set; then :
enableval=$enable_canonical_system_headers;
else
enable_canonical_system_headers=yes
fi
if test $enable_canonical_system_headers != no; then
$as_echo "#define ENABLE_CANONICAL_SYSTEM_HEADERS 1" >>confdefs.h
fi
case $target in
aarch64*-*-* | \

View File

@ -132,6 +132,16 @@ if test $enable_checking != no ; then
[Define if you want more run-time sanity checks.])
fi
AC_ARG_ENABLE(canonical-system-headers,
[ --enable-canonical-system-headers
enable or disable system headers canonicalization],
[],
enable_canonical_system_headers=yes)
if test $enable_canonical_system_headers != no; then
AC_DEFINE(ENABLE_CANONICAL_SYSTEM_HEADERS,
1, [Define to enable system headers canonicalization.])
fi
m4_changequote(,)
case $target in
aarch64*-*-* | \

View File

@ -389,7 +389,7 @@ find_file_in_dir (cpp_reader *pfile, _cpp_file *file, bool *invalid_pch)
void **pp;
/* We try to canonicalize system headers. */
if (file->dir->sysp)
if (CPP_OPTION (pfile, canonical_system_headers) && file->dir->sysp)
{
char * canonical_path = maybe_shorter_path (path);
if (canonical_path)

View File

@ -493,6 +493,9 @@ struct cpp_options
/* True disables tokenization outside of preprocessing directives. */
bool directives_only;
/* True enables canonicalization of system header file paths. */
bool canonical_system_headers;
};
/* Callback for header lookup for HEADER, which is the name of a

View File

@ -28,6 +28,10 @@ along with this program; see the file COPYING3. If not see
#include "localedir.h"
#include "filenames.h"
#ifndef ENABLE_CANONICAL_SYSTEM_HEADERS
#define ENABLE_CANONICAL_SYSTEM_HEADERS 0
#endif
static void init_library (void);
static void mark_named_operators (cpp_reader *, int);
static void read_original_filename (cpp_reader *);
@ -182,6 +186,8 @@ cpp_create_reader (enum c_lang lang, cpp_hash_table *table,
CPP_OPTION (pfile, track_macro_expansion) = 2;
CPP_OPTION (pfile, warn_normalize) = normalized_C;
CPP_OPTION (pfile, warn_literal_suffix) = 1;
CPP_OPTION (pfile, canonical_system_headers)
= ENABLE_CANONICAL_SYSTEM_HEADERS;
CPP_OPTION (pfile, ext_numeric_literals) = 1;
/* Default CPP arithmetic to something sensible for the host for the