|  | # 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 && "$(ZEPHYR_TOOLCHAIN_VARIANT)" = "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 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 NEWLIB_LIBC | 
|  | depends on "$(ZEPHYR_TOOLCHAIN_VARIANT)" = "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 |