Build the unwinder as a separate library.

Since gcc_personality_v0.c from compiler-rt depends on having an
unwinder, but we don't want to pull in _all_ of libc++abi, build the
unwinder as a separate library, libllvmunwind.

This is going to be a part of a larger cleanup where we stop bundling
everything into libc++ and instead link libc++, libc++abi, the
compiler runtime library, and whatever unwinder as separate libraries.
This change probably won't happen until we can select all of these
libraries as the default.

Change-Id: I6140f001b2ab000dc748aea5fde695afc2e86a8e
diff --git a/Android.mk b/Android.mk
index 078ce26..f2deba6 100644
--- a/Android.mk
+++ b/Android.mk
@@ -20,67 +20,77 @@
 LOCAL_PATH := $(call my-dir)
 
 LIBCXXABI_SRC_FILES := \
-	src/abort_message.cpp \
-	src/cxa_aux_runtime.cpp \
-	src/cxa_default_handlers.cpp \
-	src/cxa_demangle.cpp \
-	src/cxa_exception.cpp \
-	src/cxa_exception_storage.cpp \
-	src/cxa_guard.cpp \
-	src/cxa_handlers.cpp \
-	src/cxa_new_delete.cpp \
-	src/cxa_personality.cpp \
-	src/cxa_unexpected.cpp \
-	src/cxa_vector.cpp \
-	src/cxa_virtual.cpp \
-	src/exception.cpp \
-	src/fallback_malloc.ipp \
-	src/private_typeinfo.cpp \
-	src/stdexcept.cpp \
-	src/typeinfo.cpp \
+    src/abort_message.cpp \
+    src/cxa_aux_runtime.cpp \
+    src/cxa_default_handlers.cpp \
+    src/cxa_demangle.cpp \
+    src/cxa_exception.cpp \
+    src/cxa_exception_storage.cpp \
+    src/cxa_guard.cpp \
+    src/cxa_handlers.cpp \
+    src/cxa_new_delete.cpp \
+    src/cxa_personality.cpp \
+    src/cxa_unexpected.cpp \
+    src/cxa_vector.cpp \
+    src/cxa_virtual.cpp \
+    src/exception.cpp \
+    src/fallback_malloc.ipp \
+    src/private_typeinfo.cpp \
+    src/stdexcept.cpp \
+    src/typeinfo.cpp \
 
 LLVM_UNWIND_SRC_FILES := \
-	src/Unwind/libunwind.cpp \
-	src/Unwind/Unwind-EHABI.cpp \
-	src/Unwind/Unwind-sjlj.c \
-	src/Unwind/UnwindLevel1-gcc-ext.c \
-	src/Unwind/UnwindLevel1.c \
-	src/Unwind/UnwindRegistersSave.S \
-	src/Unwind/UnwindRegistersRestore.S \
+    src/Unwind/libunwind.cpp \
+    src/Unwind/Unwind-EHABI.cpp \
+    src/Unwind/Unwind-sjlj.c \
+    src/Unwind/UnwindLevel1-gcc-ext.c \
+    src/Unwind/UnwindLevel1.c \
+    src/Unwind/UnwindRegistersSave.S \
+    src/Unwind/UnwindRegistersRestore.S \
 
-LIBCXXABI_CFLAGS := \
-	-I$(LOCAL_PATH)/include/ \
+LIBCXXABI_INCLUDES := \
+    $(LOCAL_PATH)/include/ \
+    external/libcxx/include/ \
 
 LIBCXXABI_RTTI_FLAG := -frtti
 LIBCXXABI_CPPFLAGS := \
-	-Iexternal/libcxx/include/ \
-	-std=c++11 \
-	-fexceptions \
+    -std=c++11 \
+    -fexceptions \
 
 include $(CLEAR_VARS)
-LOCAL_MODULE := libc++abi
+LOCAL_MODULE := libunwind_llvm
 LOCAL_CLANG := true
-LOCAL_SRC_FILES := $(LIBCXXABI_SRC_FILES)
 LOCAL_SRC_FILES_arm := $(LLVM_UNWIND_SRC_FILES)
-LOCAL_CFLAGS := $(LIBCXXABI_CFLAGS)
+LOCAL_C_INCLUDES := $(LIBCXXABI_INCLUDES)
 LOCAL_CPPFLAGS := $(LIBCXXABI_CPPFLAGS)
 LOCAL_CXX_STL := none
-LOCAL_RTTI_FLAG := $(LIBCXXABI_RTTI_FLAG)
-LOCAL_WHOLE_STATIC_LIBRARIES_arm64 := libunwind
-LOCAL_WHOLE_STATIC_LIBRARIES_mips := libunwind
-LOCAL_WHOLE_STATIC_LIBRARIES_mips64 := libunwind
-LOCAL_WHOLE_STATIC_LIBRARIES_x86 := libunwind
-LOCAL_WHOLE_STATIC_LIBRARIES_x86_64 := libunwind
-LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk
 # src/Unwind/UnwindRegistersSave.S does not compile.
 LOCAL_CLANG_ASFLAGS_arm += -no-integrated-as
+LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk
 include $(BUILD_STATIC_LIBRARY)
 
 include $(CLEAR_VARS)
 LOCAL_MODULE := libc++abi
 LOCAL_CLANG := true
 LOCAL_SRC_FILES := $(LIBCXXABI_SRC_FILES)
-LOCAL_CFLAGS := $(LIBCXXABI_CFLAGS)
+LOCAL_C_INCLUDES := $(LIBCXXABI_INCLUDES)
+LOCAL_CPPFLAGS := $(LIBCXXABI_CPPFLAGS)
+LOCAL_CXX_STL := none
+LOCAL_RTTI_FLAG := $(LIBCXXABI_RTTI_FLAG)
+LOCAL_WHOLE_STATIC_LIBRARIES_arm := libunwind_llvm
+LOCAL_WHOLE_STATIC_LIBRARIES_arm64 := libunwind
+LOCAL_WHOLE_STATIC_LIBRARIES_mips := libunwind
+LOCAL_WHOLE_STATIC_LIBRARIES_mips64 := libunwind
+LOCAL_WHOLE_STATIC_LIBRARIES_x86 := libunwind
+LOCAL_WHOLE_STATIC_LIBRARIES_x86_64 := libunwind
+LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk
+include $(BUILD_STATIC_LIBRARY)
+
+include $(CLEAR_VARS)
+LOCAL_MODULE := libc++abi
+LOCAL_CLANG := true
+LOCAL_SRC_FILES := $(LIBCXXABI_SRC_FILES)
+LOCAL_C_INCLUDES := $(LIBCXXABI_INCLUDES)
 LOCAL_CPPFLAGS := $(LIBCXXABI_CPPFLAGS)
 LOCAL_CXX_STL := none