| # 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 |
| |
| 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. |
| |
| 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 !NATIVE_APPLICATION |
| 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 !NATIVE_APPLICATION |
| 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 !NATIVE_APPLICATION |
| 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 |
| |
| config CPP_MAIN |
| bool "[DEPRECATED] C++ main() function definition" |
| select DEPRECATED |
| help |
| This option used to be necessary to instruct the Zephyr kernel to |
| call 'int main(void)' instead of the old Zephyr default, 'void |
| main(void)'. |
| |
| As the Zephyr type now matches the C++ required type, this option |
| is no longer necessary. |
| |
| 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 |
| |
| config CPP_STATIC_INIT_GNU |
| # As of today only ARC MWDT toolchain doesn't support GNU-compatible |
| # initialization of CPP static objects, new toolchains can be added |
| # here if required. |
| def_bool "$(ZEPHYR_TOOLCHAIN_VARIANT)" != "arcmwdt" |
| help |
| GNU-compatible initialization of CPP static objects |
| |
| endif # CPP |
| |
| rsource "Kconfig.deprecated" |
| |
| endmenu |