//
// Copyright (C) 2019 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: "gwp_asan_defaults",
    host_supported: true,
    vendor_available: true,
    recovery_available: true,
    native_bridge_supported: true,
    ramdisk_available: true,

    // GWP-ASan currently has no support for darwin.
    target: {
        darwin: {
            enabled: false,
        },
    },
}

cc_defaults {
    name: "gwp_asan_no_libs_defaults",
    defaults: ["gwp_asan_defaults"],

    // GWP-ASan is used by bionic libc, and should have no libc/libc++
    // dependencies.
    system_shared_libs: [],
    stl: "none",
}

cc_library_headers {
    name: "gwp_asan_headers",
    defaults: [
        "gwp_asan_defaults",
        "gwp_asan_no_libs_defaults",
    ],
    export_include_dirs: [
        ".",
    ],
    apex_available: [
        // GWP-ASan headers are frequently referenced by apexes that include
        // references to libc_headers or libc_scudo. These modules manage apex
        // visibility in Soong, and are globally visible.
        "//apex_available:anyapex",
    ],
}

// Only static linkage is provided for performance reasons.
cc_library_static {
    name: "gwp_asan",
    defaults: ["gwp_asan_no_libs_defaults"],
    header_libs: [
        "gwp_asan_headers",
        "libc_headers", // Required for pthread.h in mutex.h.
    ],
    srcs: [
        "gwp_asan/common.cpp",
        "gwp_asan/guarded_pool_allocator.cpp",
        "gwp_asan/platform_specific/common_posix.cpp",
        "gwp_asan/platform_specific/guarded_pool_allocator_posix.cpp",
        "gwp_asan/platform_specific/mutex_posix.cpp",
        "gwp_asan/platform_specific/utilities_posix.cpp",
        "gwp_asan/random.cpp",
        "gwp_asan/stack_trace_compressor.cpp",
    ],
    // GWP-ASan requires platform (non-emulated) TLS. We use thread local
    // variables in the core, inlined interface to GWP-ASan.
    cflags: [
        "-fno-emulated-tls",
    ],
    apex_available: [
        // Required to not occlude the default platform variation from being
        // skipped by the apex mutator. If this happens - the license file for
        // the static GWP-ASan library won't be generated, and you'll get errors
        // at build time.
        "//apex_available:platform",

        "com.android.runtime", // GWP-ASan is used in libc.
        "com.android.media.swcodec", // libc_scudo (from media) uses GWP-ASan.
    ],
}

// GWP-ASan crash handler API. Provides all the tools you need to symbolize a
// GWP-ASan crash.
cc_library {
    name: "gwp_asan_crash_handler",
    defaults: ["gwp_asan_defaults"],
    header_libs: [
        "gwp_asan_headers",
        "libc_headers", // Required for assert.h
    ],
    srcs: [
        "gwp_asan/common.cpp",
        "gwp_asan/crash_handler.cpp",
        "gwp_asan/platform_specific/common_posix.cpp",
        "gwp_asan/platform_specific/utilities_posix.cpp",
        "gwp_asan/stack_trace_compressor.cpp",
    ],
}

cc_fuzz {
    name: "stack_trace_compressor_fuzzer",
    host_supported: true,
    srcs: ["tools/stack_trace_compressor_fuzzer.cpp"],
    static_libs: ["gwp_asan"],
}

// These unit tests are also continuously run upstream in LLVM's buildbots.
cc_test {
    name: "gwp_asan_unittest",
    defaults: ["linux_bionic_supported"],
    static_libs: [
        "gwp_asan",
        "gwp_asan_crash_handler",
        "libasync_safe",
    ],
    srcs: [
        "android/test_printf.cpp",
        "gwp_asan/tests/alignment.cpp",
        "gwp_asan/tests/basic.cpp",
        "gwp_asan/tests/compression.cpp",
        "gwp_asan/tests/crash_handler_api.cpp",
        "gwp_asan/tests/harness.cpp",
        "gwp_asan/tests/late_init.cpp",
        "gwp_asan/tests/mutex_test.cpp",
        "gwp_asan/tests/slot_reuse.cpp",
        "gwp_asan/tests/thread_contention.cpp",
    ],
    include_dirs: ["bionic/libc/async_safe/include"],
    test_suites: ["general-tests"],
    cflags: ["-fno-emulated-tls"],
}
