diff --git a/libxx/Kconfig b/libxx/Kconfig index 4707bb8715..b55bcd799a 100644 --- a/libxx/Kconfig +++ b/libxx/Kconfig @@ -38,6 +38,36 @@ config CXX_NEWLONG C++ library routines because the NuttX size_t might not have the same underlying type as your toolchain's size_t. + +comment "LLVM C++ Library (libcxx)" + +config LIBCXX + bool "Build LLVM libcxx (must be installed)" + default n + ---help--- + If you have installed libcxx into the NuttX source try, then it can + be built by selecting this option. See the README.txt file in the + libcxx packet for information on installing libcxx. + +if LIBCXX + +config LIBCXX_EXCEPTION + bool "Enable Exception Suppport" + default y + +config LIBCXX_IOSTREAM_BUFSIZE + int "IO Stream Buffer Size" + default 32 + +config LIBCXX_HAVE_LIBSUPCXX + bool "Have libsupc++ (required)" + default y + ---help--- + Select if your toolchain provides libsupc++. This option is required + at present because the built-in libsupc++ support is incomplete. + +endif + comment "uClibc++ Standard C++ Library" config UCLIBCXX diff --git a/libxx/Makefile b/libxx/Makefile index 02402dbf7d..766bd5d62d 100644 --- a/libxx/Makefile +++ b/libxx/Makefile @@ -41,18 +41,18 @@ ASRCS = CSRCS = CXXSRCS = libxx_cxapurevirtual.cxx libxx_eabi_atexit.cxx libxx_cxa_atexit.cxx -ifeq ($(CONFIG_UCLIBCXX_EXCEPTION),y) +ifneq (,$(findstring y,$(CONFIG_UCLIBCXX_EXCEPTION) $(CONFIG_LIBCXX_EXCEPTION))) CXXSRCS += libxx__gnu_unwind_find_exidx.cxx endif -# Some of the libxx/ files are not need if uClibc++ is installed because -# uClibx++ replaces them +# Some of the libxx/ files are not need if uClibc++ or libcxx is installed +# because uClibx++ or libcxx will replaces them -ifneq ($(CONFIG_UCLIBCXX),y) +ifeq (,$(findstring y,$(CONFIG_UCLIBCXX) $(CONFIG_LIBCXX))) CXXSRCS += libxx_delete.cxx libxx_deletea.cxx libxx_new.cxx libxx_newa.cxx CXXSRCS += libxx_stdthrow.cxx libxx_cxa_guard.cxx else -ifneq ($(UCLIBCXX_EXCEPTION),y) +ifeq (,$(findstring y,$(CONFIG_UCLIBCXX_EXCEPTION) $(CONFIG_LIBCXX_EXCEPTION))) CXXSRCS += libxx_stdthrow.cxx endif endif @@ -76,6 +76,10 @@ ifeq ($(CONFIG_UCLIBCXX),y) include uClibc++/Make.defs endif +ifeq ($(CONFIG_LIBCXX),y) +include libcxx/Make.defs +endif + # Object Files AOBJS = $(ASRCS:.S=$(OBJEXT))