summaryrefslogtreecommitdiff
path: root/gcc/config.in
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/config.in
parent168be2b3afddd41d4575ed55439231812bc3e7c9 (diff)
downloadgcc-662b9c55cf06d3df6682ef865fb2b685820317a9.tar.gz
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/config.in')
-rw-r--r--gcc/config.in6
1 files changed, 6 insertions, 0 deletions
diff --git a/gcc/config.in b/gcc/config.in
index 216505abd2c..10a13cde586 100644
--- a/gcc/config.in
+++ b/gcc/config.in
@@ -240,6 +240,12 @@
standards-compatible mode on s390 targets. */
#undef ENABLE_S390_EXCESS_FLOAT_PRECISION
+/* Define if the -stdlib= option should be enabled. */
+#ifndef USED_FOR_TARGET
+#undef ENABLE_STDLIB_OPTION
+#endif
+
+
/* Define if you want all operations on trees (the basic data structure of the
front ends) to be checked for dynamic type safety at runtime. This is
moderately expensive. */