//
// Copyright (C) 2014 The Android Open Source Project
//
// Licensed 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.
//

package {
    default_applicable_licenses: ["external_libunwind_llvm_license"],
}

// Added automatically by a large-scale-change that took the approach of
// 'apply every license found to every target'. While this makes sure we respect
// every license restriction, it may not be entirely correct.
//
// e.g. GPL in an MIT project might only apply to the contrib/ directory.
//
// Please consider splitting the single license below into multiple licenses,
// taking care not to lose any license_kind information, and overriding the
// default license using the 'licenses: [...]' property on targets as needed.
//
// For unused files, consider creating a 'fileGroup' with "//visibility:private"
// to attach the license to, and including a comment whether the files may be
// used in the current project.
//
// large-scale-change included anything that looked like it might be a license
// text as a license_text. e.g. LICENSE, NOTICE, COPYING etc.
//
// Please consider removing redundant or irrelevant files from 'license_text:'.
// See: http://go/android-license-faq
license {
    name: "external_libunwind_llvm_license",
    visibility: [":__subpackages__"],
    license_kinds: [
        "SPDX-license-identifier-Apache-2.0",
        "SPDX-license-identifier-BSD",
        "SPDX-license-identifier-MIT",
        "SPDX-license-identifier-NCSA",
    ],
    license_text: [
        "LICENSE.TXT",
        "NOTICE",
    ],
}

LIBUNWIND_SRC_FILES = [
    "src/libunwind.cpp",
    "src/Unwind-EHABI.cpp",
    "src/Unwind-sjlj.c",
    "src/UnwindLevel1-gcc-ext.c",
    "src/UnwindLevel1.c",
    "src/UnwindRegistersSave.S",
    "src/UnwindRegistersRestore.S",
]

LIBUNWIND_INCLUDES = [
    "external/libcxx/include",
]

LIBUNWIND_LOCAL_INCLUDES = [
    "include",
]

LIBUNWIND_CFLAGS = [
    "-Wall",
    "-Werror",
    "-D_LIBUNWIND_USE_DLADDR=0",
    "-D_LIBUNWIND_IS_NATIVE_ONLY",
]

LIBUNWIND_CPPFLAGS = [
    "-std=c++14",
    "-fexceptions",
    "-Wextra",
    "-Wno-implicit-fallthrough",
    // src/Unwind-EHABI.cpp line 97 and 100 have implicit fallthrough.
    "-Wno-unused-function",
    "-Wno-unused-parameter",
    "-Wno-unused-local-typedef",
    "-Wno-bitwise-conditional-parentheses", // in src/UnwindCursor.hpp:1437
]

cc_library_static {
    name: "libunwind_llvm",
    sdk_version: "21",
    vendor_available: true,
    product_available: true,
    ramdisk_available: true,
    vendor_ramdisk_available: true,
    recovery_available: true,
    native_bridge_supported: true,
    srcs: LIBUNWIND_SRC_FILES,
    include_dirs: LIBUNWIND_INCLUDES,
    local_include_dirs: LIBUNWIND_LOCAL_INCLUDES,
    cflags: LIBUNWIND_CFLAGS,
    cppflags: LIBUNWIND_CPPFLAGS,
    stl: "none",
    system_shared_libs: [],
    header_libs: ["libc_headers"],
    sanitize: {
        never: true,
    },
    enabled: false,
    arch: {
        arm: {
            enabled: true,
        },
    },
    min_sdk_version: "apex_inherit",
}
