aboutsummaryrefslogtreecommitdiff
path: root/gcc/cppdefault.h
diff options
context:
space:
mode:
authorIain Sandoe <iain@sandoe.co.uk>2019-11-27 13:58:10 +0000
committerIain Sandoe <iain@sandoe.co.uk>2020-12-24 10:08:42 +0000
commit662b9c55cf06d3df6682ef865fb2b685820317a9 (patch)
tree77c57d2f62a8f79a80dba61e66ebc6076b54f13b /gcc/cppdefault.h
parent168be2b3afddd41d4575ed55439231812bc3e7c9 (diff)
downloadgcc-662b9c55cf06d3df6682ef865fb2b685820317a9.zip
gcc-662b9c55cf06d3df6682ef865fb2b685820317a9.tar.gz
gcc-662b9c55cf06d3df6682ef865fb2b685820317a9.tar.bz2
C++ : Add the -stdlib= option.
This option allows the user to specifiy alternate C++ runtime libraries, for example when a platform uses libc++ as the installed C++ runtime. We introduce the command line option: -stdlib= which is the user-facing mechanism to select the C++ runtime to be used when compiling and linking code. This is the same option spelling as that used by clang to allow the use of libstdc++. The availability (and thus function) of the option are a configure-time choice using the configuration control: --with-gxx-libcxx-include-dir= Specification of the path for the libc++ headers, enables the -stdlib= option (using the path as given), default values are set when the path is unconfigured. If --with-gxx-libcxx-include-dir is given together with --with-sysroot=, then we test to see if the include path starts with the sysroot and, if so, record the sysroot-relative component as the local path. At runtime, we prepend the sysroot that is actually active. At link time, we use the C++ runtime in force and (if that is libc++) also append the libc++abi ABI library. As for other cases, if a target sets the name pointer for the ABI library to NULL the G++ driver will omit it from the link line. gcc/ChangeLog: * configure.ac: Add gxx-libcxx-include-dir handled in the same way as the regular cxx header directory. * Makefile.in: Regenerated. * config.in: Likewise. * configure: Likewise. * cppdefault.c: Pick up libc++ headers if the option is enabled. * cppdefault.h (struct default_include): Amend comments to reflect the extended use of the cplusplus field. * incpath.c (add_standard_paths): Allow for multiple c++ header include path variants. * doc/invoke.texi: Document the -stdlib= option. gcc/c-family/ChangeLog: * c.opt: Add -stdlib= option and enumerations for libstdc++ and libc++. gcc/cp/ChangeLog: * g++spec.c (LIBCXX, LIBCXX_PROFILE, LIBCXX_STATIC): New. (LIBCXXABI, LIBCXXABI_PROFILE, LIBCXXABI_STATIC): New. (enum stdcxxlib_kind): New. (lang_specific_driver): Allow selection amongst multiple c++ runtime libraries.
Diffstat (limited to 'gcc/cppdefault.h')
-rw-r--r--gcc/cppdefault.h7
1 files changed, 6 insertions, 1 deletions
diff --git a/gcc/cppdefault.h b/gcc/cppdefault.h
index a681264..35cf24e 100644
--- a/gcc/cppdefault.h
+++ b/gcc/cppdefault.h
@@ -36,7 +36,12 @@ struct default_include
const char *const fname; /* The name of the directory. */
const char *const component; /* The component containing the directory
(see update_path in prefix.c) */
- const char cplusplus; /* Only look here if we're compiling C++. */
+ const char cplusplus; /* When this is non-zero, we should only
+ consider this if we're compiling C++.
+ When the -stdlib option is configured, this
+ may take values greater than 1 to indicate
+ which C++ standard library should be
+ used. */
const char cxx_aware; /* Includes in this directory don't need to
be wrapped in extern "C" when compiling
C++. */