mirror of
https://github.com/apache/nuttx.git
synced 2025-01-13 10:58:49 +08:00
libc:libxx: add new low level c++ standard library support
LLVM libc++abi is a new implementation of low level support for a standard C++ library. Change-Id: Ica9c81bd96fd27b169a06e352b0c394d47aed5b6
This commit is contained in:
parent
bcce3314e5
commit
7f48d13c47
4 changed files with 79 additions and 7 deletions
2
libs/libxx/.gitignore
vendored
2
libs/libxx/.gitignore
vendored
|
@ -1,3 +1,5 @@
|
|||
/uClibc++
|
||||
/libcxx
|
||||
/libcxxabi
|
||||
/libcxx-*.src.tar.xz
|
||||
/libcxxabi-*.src.tar.xz
|
||||
|
|
|
@ -50,6 +50,25 @@ config UCLIBCXX
|
|||
|
||||
endchoice
|
||||
|
||||
choice
|
||||
prompt "C++ low level library select"
|
||||
default CXX_LIBSUPCXX
|
||||
|
||||
config LIBCXXABI
|
||||
bool "LLVM low level C++ Library"
|
||||
---help---
|
||||
LLVM "libc++abi" C++ Standard Library
|
||||
https://libcxxabi.llvm.org/
|
||||
Select if your use libc++abi as lower level c++ library
|
||||
|
||||
config CXX_LIBSUPCXX
|
||||
bool "GNU low level libsupc++"
|
||||
---help---
|
||||
Select if your toolchain provides libsupc++ and use libsupc++ as lower
|
||||
level c++ library.
|
||||
|
||||
endchoice
|
||||
|
||||
config HAVE_CXXINITIALIZE
|
||||
bool "Have C++ initialization"
|
||||
default LIBCXX || UCLIBCXX
|
||||
|
@ -62,13 +81,6 @@ config CXX_EXCEPTION
|
|||
bool "Enable Exception Support"
|
||||
default LIBCXX || UCLIBCXX
|
||||
|
||||
config CXX_LIBSUPCXX
|
||||
bool "Have libsupc++ (required)"
|
||||
default LIBCXX || UCLIBCXX
|
||||
---help---
|
||||
Select if your toolchain provides libsupc++. This option is required
|
||||
at present because the built-in libsupc++ support is incomplete.
|
||||
|
||||
if UCLIBCXX
|
||||
|
||||
config UCLIBCXX_BUFSIZE
|
||||
|
|
|
@ -45,6 +45,10 @@ else
|
|||
include cxx.defs
|
||||
endif
|
||||
|
||||
ifeq ($(CONFIG_LIBCXXABI),y)
|
||||
include libcxxabi.defs
|
||||
endif
|
||||
|
||||
# Object Files
|
||||
|
||||
AOBJS = $(ASRCS:.S=$(OBJEXT))
|
||||
|
|
54
libs/libxx/libcxxabi.defs
Normal file
54
libs/libxx/libcxxabi.defs
Normal file
|
@ -0,0 +1,54 @@
|
|||
############################################################################
|
||||
# libs/libxx/libcxxabi.defs
|
||||
#
|
||||
# Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
# contributor license agreements. See the NOTICE file distributed with
|
||||
# this work for additional information regarding copyright ownership. The
|
||||
# ASF licenses this file to you under the Apache License, Version 2.0 (the
|
||||
# "License"); you may not use this file except in compliance with the
|
||||
# License. You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
#
|
||||
###########################################################################
|
||||
|
||||
VERSION=12.0.0
|
||||
|
||||
libcxxabi-$(VERSION).src.tar.xz:
|
||||
$(Q) curl -O -L https://github.com/llvm/llvm-project/releases/download/llvmorg-$(VERSION)/libcxxabi-$(VERSION).src.tar.xz
|
||||
|
||||
libcxxabi: libcxxabi-$(VERSION).src.tar.xz
|
||||
$(Q) tar -xf libcxxabi-$(VERSION).src.tar.xz
|
||||
$(Q) mv libcxxabi-$(VERSION).src libcxxabi
|
||||
$(Q) touch $@
|
||||
|
||||
distclean::
|
||||
$(Q) $(DELFILE) libcxxabi-$(VERSION).src.tar.xz
|
||||
$(call DELDIR, libcxxabi)
|
||||
|
||||
context:: libcxxabi
|
||||
|
||||
# C++ABI files
|
||||
CPPSRCS += cxa_aux_runtime.cpp cxa_default_handlers.cpp cxa_demangle.cpp cxa_exception_storage.cpp
|
||||
CPPSRCS += cxa_guard.cpp cxa_handlers.cpp cxa_thread_atexit.cpp cxa_vector.cpp cxa_virtual.cpp
|
||||
# C++ STL files
|
||||
CPPSRCS += stdlib_exception.cpp stdlib_new_delete.cpp stdlib_stdexcept.cpp stdlib_typeinfo.cpp
|
||||
# Internal files
|
||||
CPPSRCS += abort_message.cpp fallback_malloc.cpp private_typeinfo.cpp
|
||||
|
||||
ifeq ($(CONFIG_CXX_EXCEPTION), y)
|
||||
CXXFLAGS += ${shell $(DEFINE) "$(CC)" LIBCXXABI_ENABLE_EXCEPTIONS}
|
||||
CPPSRCS += cxa_exception.cpp cxa_personality.cpp
|
||||
else
|
||||
CPPSRCS += cxa_noexception.cpp
|
||||
endif
|
||||
|
||||
DEPPATH += --dep-path libcxxabi/src
|
||||
VPATH += libcxxabi/src
|
||||
|
Loading…
Reference in a new issue