===================================================================
@@ -564,6 +564,10 @@ Accept universal character names in iden
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
===================================================================
@@ -1710,6 +1710,14 @@ link time when @option{-fuse-linker-plug
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
===================================================================
@@ -755,6 +755,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
===================================================================
@@ -552,6 +552,10 @@ c_common_handle_option (size_t scode, co
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 ())
{
===================================================================
@@ -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" >>c
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
alpha*-*-* | \
===================================================================
@@ -385,7 +385,7 @@ find_file_in_dir (cpp_reader *pfile, _cp
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)
===================================================================
@@ -489,6 +489,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
===================================================================
@@ -28,6 +28,10 @@ along with this program; see the file CO
#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
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;
/* Default CPP arithmetic to something sensible for the host for the
benefit of dumb users like fix-header. */
===================================================================
@@ -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
alpha*-*-* | \
===================================================================
@@ -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