aboutsummaryrefslogtreecommitdiff
path: root/sources
diff options
context:
space:
mode:
authorAndrew Hsieh <andrewhsieh@google.com>2015-06-12 16:59:14 +0800
committerAndrew Hsieh <andrewhsieh@google.com>2015-09-02 10:29:47 +0800
commitd86b1891effc9b5f0bd58c1ccb15d5641de8dfdf (patch)
tree6dcb1a0cea53b060de65d538a8a845de25d100a1 /sources
parent0a7809ac690dfcba7c0ec5dddf5c11b5bcafccfd (diff)
downloadndk-d86b1891effc9b5f0bd58c1ccb15d5641de8dfdf.tar.gz
Build all libc++ with libc++abi
Previously x86/x86_64/mips/mips64's libc++ prebuilt libraries are built with gabi++. Change-Id: I33745b8390fdbfe5e769c074eafd3d769f7b1f0e
Diffstat (limited to 'sources')
-rw-r--r--sources/cxx-stl/llvm-libc++/Android.mk80
-rw-r--r--sources/cxx-stl/llvm-libc++abi/sources.mk8
2 files changed, 24 insertions, 64 deletions
diff --git a/sources/cxx-stl/llvm-libc++/Android.mk b/sources/cxx-stl/llvm-libc++/Android.mk
index 783597dd8..8ebbb1324 100644
--- a/sources/cxx-stl/llvm-libc++/Android.mk
+++ b/sources/cxx-stl/llvm-libc++/Android.mk
@@ -8,42 +8,12 @@ LOCAL_PATH := $(call my-dir)
#
LIBCXX_FORCE_REBUILD := $(strip $(LIBCXX_FORCE_REBUILD))
-
-__libcxx_force_rebuild := $(LIBCXX_FORCE_REBUILD)
-
ifndef LIBCXX_FORCE_REBUILD
ifeq (,$(strip $(wildcard $(LOCAL_PATH)/libs/$(TARGET_ARCH_ABI)/libc++_static$(TARGET_LIB_EXTENSION))))
$(call __ndk_info,WARNING: Rebuilding libc++ libraries from sources!)
$(call __ndk_info,You might want to use $$NDK/build/tools/build-cxx-stl.sh --stl=libc++)
$(call __ndk_info,in order to build prebuilt versions to speed up your builds!)
- __libcxx_force_rebuild := true
- endif
-endif
-
-# Use gabi++ for x86* and mips* until libc++/libc++abi is ready for them
-ifneq (,$(filter x86% mips%,$(TARGET_ARCH_ABI)))
- __prebuilt_libcxx_compiled_with_gabixx := true
-else
- __prebuilt_libcxx_compiled_with_gabixx := false
-endif
-
-__libcxx_use_gabixx := $(__prebuilt_libcxx_compiled_with_gabixx)
-
-LIBCXX_USE_GABIXX := $(strip $(LIBCXX_USE_GABIXX))
-ifeq ($(LIBCXX_USE_GABIXX),true)
- __libcxx_use_gabixx := true
-endif
-
-ifneq ($(__libcxx_use_gabixx),$(__prebuilt_libcxx_compiled_with_gabixx))
- ifneq ($(__libcxx_force_rebuild),true)
- ifeq ($(__prebuilt_libcxx_compiled_with_gabixx),true)
- $(call __ndk_info,WARNING: Rebuilding libc++ libraries from sources since libc++ prebuilt libraries for $(TARGET_ARCH_ABI))
- $(call __ndk_info,are compiled with gabi++ but LIBCXX_USE_GABIXX is not set to true)
- else
- $(call __ndk_info,WARNING: Rebuilding libc++ libraries from sources since libc++ prebuilt libraries for $(TARGET_ARCH_ABI))
- $(call __ndk_info,are not compiled with gabi++ and LIBCXX_USE_GABIXX is set to true)
- endif
- __libcxx_force_rebuild := true
+ LIBCXX_FORCE_REBUILD := true
endif
endif
@@ -93,34 +63,6 @@ endif
llvm_libc++_cxxflags := $(llvm_libc++_export_cxxflags)
llvm_libc++_cflags :=
-ifeq ($(__libcxx_use_gabixx),true)
-
-# Gabi++ emulates libcxxabi when building libcxx.
-llvm_libc++_cxxflags += -DLIBCXXABI=1
-
-# Find the GAbi++ sources to include them here.
-# The voodoo below is to allow building libc++ out of the NDK source
-# tree. This can make it easier to experiment / update / debug it.
-#
-libgabi++_sources_dir := $(strip $(wildcard $(LOCAL_PATH)/../gabi++))
-ifdef libgabi++_sources_dir
- libgabi++_sources_prefix := ../gabi++
-else
- libgabi++_sources_dir := $(strip $(wildcard $(NDK_ROOT)/sources/cxx-stl/gabi++))
- ifndef libgabi++_sources_dir
- $(error Can't find GAbi++ sources directory!!)
- endif
- libgabi++_sources_prefix := $(libgabi++_sources_dir)
-endif
-
-include $(libgabi++_sources_dir)/sources.mk
-llvm_libc++_sources += $(addprefix $(libgabi++_sources_prefix:%/=%)/,$(libgabi++_src_files))
-llvm_libc++_includes += $(libgabi++_c_includes)
-llvm_libc++_export_includes += $(libgabi++_c_includes)
-
-else
-# libc++abi
-
libcxxabi_sources_dir := $(strip $(wildcard $(LOCAL_PATH)/../llvm-libc++abi))
ifdef libcxxabi_sources_dir
libcxxabi_sources_prefix := ../llvm-libc++abi
@@ -133,13 +75,27 @@ else
endif
include $(libcxxabi_sources_dir)/sources.mk
+
+ifneq (,$(filter armeabi%,$(TARGET_ARCH_ABI)))
+# for armeabi*, use llvm libunwind
llvm_libc++_sources += $(addprefix $(libcxxabi_sources_prefix:%/=%)/,$(libcxxabi_src_files))
+llvm_libc++_cxxflags += -DLIBCXXABI_USE_LLVM_UNWINDER=1 -D__STDC_FORMAT_MACROS
+else
+llvm_libc++_sources += $(addprefix $(libcxxabi_sources_prefix:%/=%)/,$(libcxxabi_src_base_files))
+llvm_libc++_cxxflags += -DLIBCXXABI_USE_LLVM_UNWINDER=0
+endif
+
llvm_libc++_includes += $(libcxxabi_c_includes)
llvm_libc++_export_includes += $(libcxxabi_c_includes)
llvm_libc++_cflags += -D__STDC_FORMAT_MACROS
+
+ifeq (clang3.5,$(NDK_TOOLCHAIN_VERSION))
+# Workaround an issue of integrated-as (default in clang3.5) where it fails to compile
+# llvm-libc++abi/libcxxabi/src/Unwind/UnwindRegistersRestore.S
+llvm_libc++_cflags += -no-integrated-as
endif
-ifneq ($(__libcxx_force_rebuild),true)
+ifneq ($(LIBCXX_FORCE_REBUILD),true)
$(call ndk_log,Using prebuilt libc++ libraries)
@@ -176,7 +132,7 @@ LOCAL_EXPORT_CPPFLAGS := $(llvm_libc++_export_cxxflags)
include $(PREBUILT_SHARED_LIBRARY)
else
-# __libcxx_force_rebuild == true
+# LIBCXX_FORCE_REBUILD == true
$(call ndk_log,Rebuilding libc++ libraries from sources)
@@ -204,6 +160,6 @@ LOCAL_EXPORT_CPPFLAGS := $(llvm_libc++_export_cxxflags)
LOCAL_STATIC_LIBRARIES := android_support
include $(BUILD_SHARED_LIBRARY)
-endif # __libcxx_force_rebuild == true
+endif # LIBCXX_FORCE_REBUILD == true
$(call import-module, android/support)
diff --git a/sources/cxx-stl/llvm-libc++abi/sources.mk b/sources/cxx-stl/llvm-libc++abi/sources.mk
index 81f5dd995..40ef4eadb 100644
--- a/sources/cxx-stl/llvm-libc++abi/sources.mk
+++ b/sources/cxx-stl/llvm-libc++abi/sources.mk
@@ -1,6 +1,6 @@
libcxxabi_path := $(call my-dir)
-libcxxabi_src_files := \
+libcxxabi_src_base_files := \
libcxxabi/src/abort_message.cpp \
libcxxabi/src/cxa_aux_runtime.cpp \
libcxxabi/src/cxa_default_handlers.cpp \
@@ -18,7 +18,9 @@ libcxxabi_src_files := \
libcxxabi/src/exception.cpp \
libcxxabi/src/private_typeinfo.cpp \
libcxxabi/src/stdexcept.cpp \
- libcxxabi/src/typeinfo.cpp \
+ libcxxabi/src/typeinfo.cpp
+
+libcxxabi_src_unwind_files := \
libcxxabi/src/Unwind/libunwind.cpp \
libcxxabi/src/Unwind/Unwind-EHABI.cpp \
libcxxabi/src/Unwind/Unwind-sjlj.c \
@@ -27,5 +29,7 @@ libcxxabi_src_files := \
libcxxabi/src/Unwind/UnwindRegistersRestore.S \
libcxxabi/src/Unwind/UnwindRegistersSave.S
+libcxxabi_src_files := $(libcxxabi_src_base_files) $(libcxxabi_src_unwind_files)
+
libcxxabi_c_includes := $(libcxxabi_path)/libcxxabi/include