//
// 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",
    ],

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

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

libbacktrace_sources = [
    "Backtrace.cpp",
    "BacktraceCurrent.cpp",
    "BacktracePtrace.cpp",
    "thread_utils.c",
    "ThreadEntry.cpp",
    "UnwindStack.cpp",
    "UnwindStackMap.cpp",
]

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

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

    cflags: [
        "-Wexit-time-destructors",
    ],

    srcs: [
        "BacktraceMap.cpp",
    ],

    export_include_dirs: ["include"],

    target: {
        darwin: {
            enabled: true,
            shared_libs: [
                "libbase",
            ],
        },
        linux: {
            srcs: libbacktrace_sources,

            shared_libs: [
                "libbase",
                "liblog",
                "libunwindstack",
                "libdexfile",
            ],

            static_libs: ["libcutils"],

            // libdexfile will eventually properly export headers, for now
            // include these directly.
            include_dirs: [
                "art/runtime",
            ],

            header_libs: ["jni_headers"],
        },
        android: {
            static_libs: ["libasync_safe"],
        },
        vendor: {
            cflags: ["-DNO_LIBDEXFILE_SUPPORT"],
            exclude_shared_libs: ["libdexfile"],
        },
    },
    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"],

    shared_libs: [
        "libunwindstack",
    ],
}

//-------------------------------------------------------------------------
// 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",
        "libdexfile",
        "libbase",
        "libcutils",
        "liblog",
        "libunwindstack",
    ],

    group_static_libs: true,

    target: {
        android: {
            cflags: ["-DENABLE_PSS_TESTS"],
            shared_libs: [
                "libutils",
            ],
        },
        linux_glibc: {
            static_libs: ["libutils"],
        },
    },

    // libdexfile will eventually properly export headers, for now
    // include these directly.
    include_dirs: [
        "art/runtime",
    ],

    test_suites: ["device-tests"],
    data: [
        "testdata/arm/*",
        "testdata/arm64/*",
        "testdata/x86/*",
        "testdata/x86_64/*",
    ],
    required: [
        "libbacktrace_test",
    ],
}

cc_benchmark {
    name: "backtrace_benchmarks",
    defaults: ["libbacktrace_common"],

    srcs: [
        "backtrace_benchmarks.cpp",
        "backtrace_read_benchmarks.cpp",
    ],

    shared_libs: [
        "libbacktrace",
        "libbase",
        "libunwindstack",
    ],
}
