//
// 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.
//

cc_defaults {
    name: "libbacktrace_common",

    cflags: [
        "-Wall",
        "-Werror",
    ],

    // The latest clang (r230699) does not allow SP/PC to be declared in inline asm lists.
    clang_cflags: ["-Wno-inline-asm"],

    include_dirs: ["external/libunwind/include/tdep"],


    target: {
        darwin: {
            enabled: false,
        },
    },

    multilib: {
        lib32: {
            suffix: "32",
        },
        lib64: {
            suffix: "64",
        },
    }
}

libbacktrace_sources = [
    "Backtrace.cpp",
    "BacktraceCurrent.cpp",
    "BacktracePtrace.cpp",
    "thread_utils.c",
    "ThreadEntry.cpp",
    "UnwindCurrent.cpp",
    "UnwindMap.cpp",
    "UnwindPtrace.cpp",
]

cc_library_headers {
    name: "libbacktrace_headers",
    vendor_available: true,
    export_include_dirs: ["include"],
}

cc_library {
    name: "libbacktrace",
    vendor_available: true,
    vndk: {
        enabled: true,
        support_system_process: true,
    },
    defaults: ["libbacktrace_common"],
    host_supported: true,

    srcs: [
        "BacktraceMap.cpp",
    ],

    export_include_dirs: ["include"],

    target: {
        darwin: {
            enabled: true,
        },
        linux: {
            srcs: libbacktrace_sources,

            shared_libs: [
                "libbase",
                "liblog",
                "libunwind",
            ],

            static_libs: ["libcutils"],
            host_ldlibs: ["-lrt"],
        },
        linux_bionic: {
            enabled: true,
            srcs: libbacktrace_sources,

            shared_libs: [
                "libbase",
                "liblog",
                "libunwind",
            ],

            static_libs: ["libcutils"],
        },
        android: {
            srcs: libbacktrace_sources,

            shared_libs: [
                "libbase",
                "liblog",
                "libunwind",
            ],

            static_libs: ["libasync_safe", "libcutils"],
        },
    },
    whole_static_libs: ["libdemangle"],
}

cc_library_shared {
    name: "libbacktrace_test",
    defaults: ["libbacktrace_common"],
    host_supported: true,
    strip: {
        none: true,
    },
    cflags: ["-O0"],
    srcs: ["backtrace_testlib.cpp"],

    target: {
        linux: {
            shared_libs: [
                "libunwind",
            ],
        },
        android: {
            shared_libs: [
                "libunwind",
            ],
        },
    }
}

//-------------------------------------------------------------------------
// The libbacktrace_offline static library.
//-------------------------------------------------------------------------
cc_library_static {
    name: "libbacktrace_offline",
    defaults: ["libbacktrace_common"],
    host_supported: true,
    srcs: ["BacktraceOffline.cpp"],

    cflags: [
        "-D__STDC_CONSTANT_MACROS",
        "-D__STDC_LIMIT_MACROS",
        "-D__STDC_FORMAT_MACROS",
    ],

    header_libs: ["llvm-headers"],

    // Use shared libraries so their headers get included during build.
    shared_libs = [
        "libbase",
        "libunwind",
        "libziparchive",
    ],
}

//-------------------------------------------------------------------------
// The backtrace_test executable.
//-------------------------------------------------------------------------
cc_test {
    name: "backtrace_test",
    defaults: ["libbacktrace_common"],
    host_supported: true,
    srcs: [
        "backtrace_offline_test.cpp",
        "backtrace_test.cpp",
        "GetPss.cpp",
        "thread_utils.c",
    ],

    cflags: [
        "-fno-builtin",
        "-O0",
        "-g",
    ],

    shared_libs: [
        "libbacktrace_test",
        "libbacktrace",
        "libbase",
        "libcutils",
        "liblog",
        "libunwind",
    ],

    group_static_libs: true,

    // Statically link LLVMlibraries to remove dependency on llvm shared library.
    static_libs = [
        "libbacktrace_offline",
        "libLLVMObject",
        "libLLVMBitReader",
        "libLLVMMC",
        "libLLVMMCParser",
        "libLLVMCore",
        "libLLVMSupport",

        "libziparchive",
        "libz",
    ],

    header_libs: ["llvm-headers"],

    target: {
        android: {
            cflags: ["-DENABLE_PSS_TESTS"],
            shared_libs: [
                "libdl",
                "libutils",
            ],
        },
        linux: {
            host_ldlibs: [
                "-lpthread",
                "-lrt",
                "-ldl",
                "-lncurses",
            ],
            static_libs: ["libutils"],
        },
    },
}
