Home | History | Annotate | Download | only in libcxxabi
      1 #
      2 # Copyright (C) 2014 The Android Open Source Project
      3 #
      4 # Licensed under the Apache License, Version 2.0 (the "License");
      5 # you may not use this file except in compliance with the License.
      6 # You may obtain a copy of the License at
      7 #
      8 #      http://www.apache.org/licenses/LICENSE-2.0
      9 #
     10 # Unless required by applicable law or agreed to in writing, software
     11 # distributed under the License is distributed on an "AS IS" BASIS,
     12 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     13 # See the License for the specific language governing permissions and
     14 # limitations under the License.
     15 #
     16 
     17 LOCAL_PATH := $(call my-dir)
     18 
     19 LIBCXXABI_SRC_FILES := \
     20     src/abort_message.cpp \
     21     src/cxa_aux_runtime.cpp \
     22     src/cxa_default_handlers.cpp \
     23     src/cxa_demangle.cpp \
     24     src/cxa_exception.cpp \
     25     src/cxa_exception_storage.cpp \
     26     src/cxa_guard.cpp \
     27     src/cxa_handlers.cpp \
     28     src/cxa_new_delete.cpp \
     29     src/cxa_personality.cpp \
     30     src/cxa_thread_atexit.cpp \
     31     src/cxa_unexpected.cpp \
     32     src/cxa_vector.cpp \
     33     src/cxa_virtual.cpp \
     34     src/exception.cpp \
     35     src/fallback_malloc.ipp \
     36     src/private_typeinfo.cpp \
     37     src/stdexcept.cpp \
     38     src/typeinfo.cpp \
     39 
     40 LLVM_UNWIND_SRC_FILES := \
     41     src/Unwind/libunwind.cpp \
     42     src/Unwind/Unwind-EHABI.cpp \
     43     src/Unwind/Unwind-sjlj.c \
     44     src/Unwind/UnwindLevel1-gcc-ext.c \
     45     src/Unwind/UnwindLevel1.c \
     46     src/Unwind/UnwindRegistersSave.S \
     47     src/Unwind/UnwindRegistersRestore.S \
     48 
     49 LIBCXXABI_INCLUDES := \
     50     $(LOCAL_PATH)/include/ \
     51     external/libcxx/include/ \
     52 
     53 LIBCXXABI_RTTI_FLAG := -frtti
     54 LIBCXXABI_CPPFLAGS := \
     55     -std=c++11 \
     56     -fexceptions \
     57     -Wall \
     58     -Wextra \
     59     -Wno-unused-function \
     60     -Werror \
     61 
     62 include $(CLEAR_VARS)
     63 LOCAL_MODULE := libunwind_llvm
     64 LOCAL_CLANG := true
     65 LOCAL_SRC_FILES_arm := $(LLVM_UNWIND_SRC_FILES)
     66 LOCAL_C_INCLUDES := $(LIBCXXABI_INCLUDES)
     67 LOCAL_CPPFLAGS := $(LIBCXXABI_CPPFLAGS)
     68 LOCAL_CXX_STL := none
     69 # src/Unwind/UnwindRegistersSave.S does not compile.
     70 LOCAL_CLANG_ASFLAGS_arm += -no-integrated-as
     71 LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk
     72 include $(BUILD_STATIC_LIBRARY)
     73 
     74 include $(CLEAR_VARS)
     75 LOCAL_MODULE := libc++abi
     76 LOCAL_CLANG := true
     77 LOCAL_SRC_FILES := $(LIBCXXABI_SRC_FILES)
     78 LOCAL_C_INCLUDES := $(LIBCXXABI_INCLUDES)
     79 LOCAL_CPPFLAGS := $(LIBCXXABI_CPPFLAGS) -DHAVE___CXA_THREAD_ATEXIT_IMPL
     80 LOCAL_CPPFLAGS_arm := -DLIBCXXABI_USE_LLVM_UNWINDER=1
     81 LOCAL_CPPFLAGS_arm64 := -DLIBCXXABI_USE_LLVM_UNWINDER=0
     82 LOCAL_CPPFLAGS_mips := -DLIBCXXABI_USE_LLVM_UNWINDER=0
     83 LOCAL_CPPFLAGS_mips64 := -DLIBCXXABI_USE_LLVM_UNWINDER=0
     84 LOCAL_CPPFLAGS_x86 := -DLIBCXXABI_USE_LLVM_UNWINDER=0
     85 LOCAL_CPPFLAGS_x86_64 := -DLIBCXXABI_USE_LLVM_UNWINDER=0
     86 LOCAL_CXX_STL := none
     87 LOCAL_RTTI_FLAG := $(LIBCXXABI_RTTI_FLAG)
     88 LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk
     89 # src/Unwind/UnwindRegistersSave.S does not compile.
     90 LOCAL_CLANG_ASFLAGS_arm += -no-integrated-as
     91 # When src/cxa_exception.cpp is compiled with Clang assembler
     92 # __cxa_end_cleanup_impl, although marked as used, was discarded
     93 # since it is used only in embedded assembly code.
     94 # This caused the following warning when linking libc++.so:
     95 # libc++_static.a(cxa_exception.o)(.text.__cxa_end_cleanup+0x2):
     96 # warning: relocation refers to discarded section
     97 # See also http://llvm.org/bugs/show_bug.cgi?id=21292.
     98 LOCAL_CLANG_CFLAGS_arm += -no-integrated-as
     99 include $(BUILD_STATIC_LIBRARY)
    100 
    101 include $(CLEAR_VARS)
    102 LOCAL_MODULE := libc++abi
    103 LOCAL_CLANG := true
    104 LOCAL_SRC_FILES := $(LIBCXXABI_SRC_FILES)
    105 LOCAL_C_INCLUDES := $(LIBCXXABI_INCLUDES)
    106 LOCAL_CPPFLAGS := $(LIBCXXABI_CPPFLAGS)
    107 LOCAL_CXX_STL := none
    108 
    109 ifeq ($(HOST_OS),darwin)
    110 LOCAL_SRC_FILES += $(LLVM_UNWIND_SRC_FILES) src/Unwind/Unwind_AppleExtras.cpp
    111 # libcxxabi really doesn't like the non-LLVM assembler on Darwin
    112 LOCAL_ASFLAGS += -integrated-as
    113 LOCAL_CFLAGS += -integrated-as
    114 LOCAL_CPPFLAGS += -integrated-as
    115 endif
    116 
    117 LOCAL_RTTI_FLAG := $(LIBCXXABI_RTTI_FLAG)
    118 LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk
    119 LOCAL_MULTILIB := both
    120 include $(BUILD_HOST_STATIC_LIBRARY)
    121