* 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
+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
+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
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 ())
{
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
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
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
+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
/* 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
with_libiconv_prefix
enable_maintainer_mode
enable_checking
+enable_canonical_system_headers
'
ac_precious_vars='build_alias
host_alias
--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]
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*-*-* | \
[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*-*-* | \
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)
/* 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
#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 *);
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