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
2
libs/libxx/.gitignore
vendored
2
libs/libxx/.gitignore
vendored
@ -1,3 +1,5 @@
|
|||||||
/uClibc++
|
/uClibc++
|
||||||
/libcxx
|
/libcxx
|
||||||
|
/libcxxabi
|
||||||
/libcxx-*.src.tar.xz
|
/libcxx-*.src.tar.xz
|
||||||
|
/libcxxabi-*.src.tar.xz
|
||||||
|
@ -50,6 +50,25 @@ config UCLIBCXX
|
|||||||
|
|
||||||
endchoice
|
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
|
config HAVE_CXXINITIALIZE
|
||||||
bool "Have C++ initialization"
|
bool "Have C++ initialization"
|
||||||
default LIBCXX || UCLIBCXX
|
default LIBCXX || UCLIBCXX
|
||||||
@ -62,13 +81,6 @@ config CXX_EXCEPTION
|
|||||||
bool "Enable Exception Support"
|
bool "Enable Exception Support"
|
||||||
default LIBCXX || UCLIBCXX
|
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
|
if UCLIBCXX
|
||||||
|
|
||||||
config UCLIBCXX_BUFSIZE
|
config UCLIBCXX_BUFSIZE
|
||||||
|
@ -45,6 +45,10 @@ else
|
|||||||
include cxx.defs
|
include cxx.defs
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
ifeq ($(CONFIG_LIBCXXABI),y)
|
||||||
|
include libcxxabi.defs
|
||||||
|
endif
|
||||||
|
|
||||||
# Object Files
|
# Object Files
|
||||||
|
|
||||||
AOBJS = $(ASRCS:.S=$(OBJEXT))
|
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…
x
Reference in New Issue
Block a user