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>
175 lines
4.4 KiB
Plaintext
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
|