# Copyright (c) 2022 Nordic Semiconductor ASA
# SPDX-License-Identifier: Apache-2.0

menu "Deprecated"

config CPLUSPLUS
	bool "[DEPRECATED] C++ support for the application"
	select CPP
	select DEPRECATED
	help
	  This option enables the use of applications built with C++.

	  [DEPRECATED] Select CPP instead.

config LIB_CPLUSPLUS
	bool "[DEPRECATED] Link with STD C++ library"
	select REQUIRES_FULL_LIBC
	select REQUIRES_FULL_LIBCPP
	select DEPRECATED
	help
	  Link with STD C++ Library.

	  [DEPRECATED]
	  Select REQUIRES_FULL_LIBCPP or specify the C++ standard library
	  implementation to use from LIBCPP_IMPLEMENTATION.

if LIB_CPLUSPLUS

config EXCEPTIONS
	bool "[DEPRECATED] C++ exceptions support"
	depends on !NEWLIB_LIBC_NANO
	select CPP_EXCEPTIONS
	select DEPRECATED
	help
	  This option enables support of C++ exceptions.

	  [DEPRECATED] Select CPP_EXCEPTIONS instead.

config RTTI
	bool "[DEPRECATED] C++ RTTI support"
	select CPP_RTTI
	select DEPRECATED
	help
	  This option enables support of C++ RTTI.

	  [DEPRECATED] Select CPP_RTTI instead.

endif # LIB_CPLUSPLUS

endmenu
