Files
zephyr/lib/cpp/Kconfig
Anas Nashif 195dd3d7c1 toolchains: combine host variants
Combine toolchains provided by the host into one variant. This includes
both gcc and llvm installationt typically coming from the distribution
(on Linux).

Both gcc and llvm are now part of the 'host' variant, the default is the
gnu compiler, so setting

	ZEPHYR_TOOLCHAIN_VARIANT=host

Will select the gnu compiler. To select llvm or any other compuler
provided in this variant, use the follwoing format:

	ZEPHYR_TOOLCHAIN_VARIANT=<variant>/<compiler>

The following will select llvm:

	ZEPHYR_TOOLCHAIN_VARIANT=host/llvm

Although gnu is the default, it can also be selected using the above
syntax:

	ZEPHYR_TOOLCHAIN_VARIANT=host/gcc

This commit removes the llvm variant for now, it should be deperecated
in another commit to follow.

Signed-off-by: Anas Nashif <anas.nashif@intel.com>
2025-12-16 17:13:34 +09:00

175 lines
4.4 KiB
Plaintext

# C++ configuration options
# Copyright (c) 2018 B. Leforestier
# SPDX-License-Identifier: Apache-2.0
menu "C++ Language Support"
config CPP
bool "C++ support for the application"
help
This option enables the use of applications built with C++.
if CPP
config STD_CPP_VERSION
int
default 199711 if STD_CPP98
default 201103 if STD_CPP11
default 201402 if STD_CPP14
default 201703 if STD_CPP17
default 202002 if STD_CPP20 || STD_CPP2A
default 202302 if STD_CPP23 || STD_CPP2B
help
The version number of C++ standard being used (NOTE: this uses the
full year and month, and is the same as the __cplusplus macro defined
by the compiler). This config can be used to check for a minimum
supported version. Example:
depends on STD_CPP_VERSION >= 201703
Adding this to your library's enablement Kconfig will force a minimum
c++17 standard.
The full year is used so c++98 can be checked using > and < operators
without conflicting with c++11 or higher.
choice STD_CPP
prompt "C++ Standard"
default STD_CPP11
help
C++ Standards.
config STD_CPP98
bool "C++ 98"
help
1998 C++ standard as modified by the 2003 technical corrigendum
and some later defect reports.
config STD_CPP11
bool "C++ 11"
help
2011 C++ standard, previously known as C++0x.
config STD_CPP14
bool "C++ 14"
help
2014 C++ standard.
config STD_CPP17
bool "C++ 17"
help
2017 C++ standard, previously known as C++0x.
config STD_CPP2A
bool "C++ 2a"
help
Next revision of the C++ standard, which is expected to be published in 2020.
config STD_CPP20
bool "C++ 20"
help
2020 C++ standard, previously known as C++2A.
config STD_CPP2B
bool "C++ 2b"
help
Next revision of the C++ standard, which is expected to be published in 2023.
config STD_CPP23
bool "C++ 23"
help
2023 C++ standard, previously known as C++2B.
endchoice
config REQUIRES_FULL_LIBCPP
bool "Require complete C++ standard library"
select REQUIRES_FULL_LIBC
help
Indicates that a full C++ standard library is required, either by
a subsystem or an application. This will also include a full C
library implementation.
config FULL_LIBCPP_SUPPORTED
bool
help
Selected when the target has at least one C++ library that offers a
complete implementation and which would be selected when
REQUIRES_FULL_LIBCPP is set.
choice LIBCPP_IMPLEMENTATION
prompt "C++ Standard Library Implementation"
default EXTERNAL_LIBCPP if REQUIRES_FULL_LIBCPP && NATIVE_BUILD
default LIBCXX_LIBCPP if REQUIRES_FULL_LIBCPP && "$(TOOLCHAIN_HAS_LIBCXX)" = "y" && "$(TOOLCHAIN_VARIANT_COMPILER)" = "llvm"
default GLIBCXX_LIBCPP if REQUIRES_FULL_LIBCPP
default MINIMAL_LIBCPP
config MINIMAL_LIBCPP
bool "Minimal C++ Library"
depends on !REQUIRES_FULL_LIBCPP
help
Build with the minimal C++ library provided by Zephyr.
The Zephyr minimal C++ library only provides a very limited subset
of the standard C++ library and is mainly intended for use with the
applications that do not require the Standard Template Library (STL).
config GLIBCXX_LIBCPP
bool "GNU C++ Standard Library"
depends on "$(TOOLCHAIN_HAS_GLIBCXX)" = "y"
depends on NEWLIB_LIBC || PICOLIBC
select FULL_LIBCPP_SUPPORTED
help
Build with GNU C++ Standard Library (libstdc++) provided by the GNU
Compiler Collection (GCC)-based toolchain.
config LIBCXX_LIBCPP
bool "LLVM C++ Standard Library"
depends on "$(TOOLCHAIN_HAS_LIBCXX)" = "y"
depends on NEWLIB_LIBC || PICOLIBC
depends on "$(TOOLCHAIN_VARIANT_COMPILER)" = "llvm"
select FULL_LIBCPP_SUPPORTED
help
Build with LLVM C++ Standard Library (libc++) provided by LLVM
toolchain. Information about library can be found at
https://libcxx.llvm.org
config ARCMWDT_LIBCPP
bool "ARC MWDT C++ Library"
depends on ARCMWDT_LIBC
help
Build with ARC MetaWare C++ Standard Library provided by the ARC
MetaWare Development Tools (MWDT) toolchain.
config EXTERNAL_LIBCPP
bool "External C++ standard library"
help
Build and link with an external/user-provided C++ standard library.
config EXTERNAL_MODULE_LIBCPP
bool "External C++ standard library module"
help
Build an external/user-provided C++ standard library.
endchoice # LIBCPP_IMPLEMENTATION
if !MINIMAL_LIBCPP
config CPP_EXCEPTIONS
bool "C++ exceptions support"
depends on !NEWLIB_LIBC_NANO
help
This option enables support of C++ exceptions.
config CPP_RTTI
bool "C++ RTTI support"
help
This option enables support of C++ RTTI.
endif # !MINIMAL_LIBCPP
endif # CPP
endmenu