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
17cc_library_static {
18    name: "libc++abi",
19    host_supported: true,
20    clang: true,
21    srcs: [
22        "src/abort_message.cpp",
23        "src/cxa_aux_runtime.cpp",
24        "src/cxa_default_handlers.cpp",
25        "src/cxa_demangle.cpp",
26        "src/cxa_exception.cpp",
27        "src/cxa_exception_storage.cpp",
28        "src/cxa_guard.cpp",
29        "src/cxa_handlers.cpp",
30        "src/cxa_new_delete.cpp",
31        "src/cxa_personality.cpp",
32        "src/cxa_thread_atexit.cpp",
33        "src/cxa_unexpected.cpp",
34        "src/cxa_vector.cpp",
35        "src/cxa_virtual.cpp",
36        "src/exception.cpp",
37        "src/private_typeinfo.cpp",
38        "src/stdexcept.cpp",
39        "src/typeinfo.cpp",
40    ],
41    include_dirs: ["external/libcxx/include"],
42    local_include_dirs:  ["include"],
43    export_include_dirs: ["include"],
44    cppflags: [
45        "-std=c++14",
46        "-fexceptions",
47        "-Wall",
48        "-Wextra",
49        "-Wno-unused-function",
50        "-Werror",
51    ],
52    sanitize: ["never"],
53    stl: "none",
54    rtti: true,
55    arch: {
56        arm: {
57            include_dirs: ["external/libunwind_llvm/include"],
58            cppflags: ["-DLIBCXXABI_USE_LLVM_UNWINDER=1"],
59        },
60        arm64: {
61            cppflags: ["-DLIBCXXABI_USE_LLVM_UNWINDER=0"],
62        },
63        mips: {
64            cppflags: ["-DLIBCXXABI_USE_LLVM_UNWINDER=0"],
65        },
66        mips64: {
67            cppflags: ["-DLIBCXXABI_USE_LLVM_UNWINDER=0"],
68        },
69        x86: {
70            cppflags: ["-DLIBCXXABI_USE_LLVM_UNWINDER=0"],
71        },
72        x86_64: {
73            cppflags: ["-DLIBCXXABI_USE_LLVM_UNWINDER=0"],
74        },
75    },
76    target: {
77        android: {
78            cppflags: ["-DHAVE___CXA_THREAD_ATEXIT_IMPL"],
79        },
80        darwin: {
81            // libcxxabi really doesn't like the non-LLVM assembler on Darwin
82            asflags: ["-integrated-as"],
83            cflags: ["-integrated-as"],
84            cppflags: ["-integrated-as"],
85        },
86    },
87
88}
89