blob: 6ac4dae170a44c134ea566cdfcda66266f40418e [file] [log] [blame]
# 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