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

package {
    default_applicable_licenses: ["external_scudo_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.
// http://go/android-license-faq
license {
    name: "external_scudo_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",
    ],
}

cc_library_headers {
    name: "scudo_headers",
    recovery_available: true,
    vendor_ramdisk_available: true,

    export_include_dirs: [
        "standalone/include",
    ],

    apex_available: [
        "com.android.runtime",
    ],

    visibility: [
        "//system/core/debuggerd",
    ],
}

cc_defaults {
    name: "libscudo_defaults",
    native_coverage: false,
    ramdisk_available: true,
    vendor_ramdisk_available: true,
    recovery_available: true,
    host_supported: true,
    native_bridge_supported: true,

    rtti: false,
    stl: "none",

    cflags: [
        "-O3",
        "-fno-rtti",
        // This option speeds up alloc/free code paths by about 5% to 7%.
        "-fno-stack-protector",
        "-fno-emulated-tls",

        "-Wall",
        "-Wextra",
        "-Wunused",
        "-Wno-unused-result",

        "-Werror=pointer-to-int-cast",
        "-Werror=int-to-pointer-cast",
        "-Werror=type-limits",
        "-Werror",

        // Always force alignment to 16 bytes even on 32 bit.
        // Android assumes that allocations of multiples of 16 bytes
        // will be aligned to at least 16 bytes.
        "-DSCUDO_MIN_ALIGNMENT_LOG=4",

        // Allow scudo to use android_unsafe_frame_pointer_chase(), which is
        // normally a private function.
        "-DHAVE_ANDROID_UNSAFE_FRAME_POINTER_CHASE",
    ],
    cppflags: [
        "-nostdinc++",
        "-fno-exceptions",
    ],

    include_dirs: [
        "external/scudo/standalone/include",
    ],

    srcs: [
        "standalone/checksum.cpp",
        "standalone/common.cpp",
        "standalone/flags.cpp",
        "standalone/flags_parser.cpp",
        "standalone/linux.cpp",
        "standalone/release.cpp",
        "standalone/report.cpp",
        "standalone/string_utils.cpp",
        "standalone/wrappers_c_bionic.cpp"
    ],
    arch: {
        arm: {
            cflags: ["-mcrc"],
            srcs: ["standalone/crc32_hw.cpp"],
        },
        arm64: {
            cflags: ["-mcrc"],
            srcs: ["standalone/crc32_hw.cpp"],
        },
        x86_64: {
            cflags: ["-msse4.2"],
            srcs: ["standalone/crc32_hw.cpp"],
        },
        x86: {
            cflags: ["-msse4.2"],
            srcs: ["standalone/crc32_hw.cpp"],
        },
    },

    target: {
        bionic: {
            system_shared_libs: [],
            header_libs: [
                "libc_headers",
                "bionic_libc_platform_headers",
            ],
        },
        native_bridge: {
            cflags: ["-DSCUDO_DISABLE_TBI"],
        },
    },
}

cc_library_static {
    name: "libscudo",
    defaults: ["libscudo_defaults"],
    cflags: [
      "-D_BIONIC=1",
      "-DSCUDO_HAS_PLATFORM_TLS_SLOT",
    ],
    visibility: [
      "//bionic:__subpackages__",
      "//frameworks/libs/native_bridge_support/libc:__subpackages__",
      "//system/core/debuggerd:__subpackages__",
    ],
}

cc_library_static {
    name: "libscudo_for_testing",
    defaults: ["libscudo_defaults"],
}

cc_test {
    name: "scudo_unit_tests",
    // Temporarily disabled on host due to a 15-20s per-test timeout,
    // which is currently exceeded by ScudoCombinedTest.BasicCombined.
    host_supported: false,
    srcs: [
        "standalone/tests/atomic_test.cpp",
        "standalone/tests/bytemap_test.cpp",
        "standalone/tests/checksum_test.cpp",
        "standalone/tests/chunk_test.cpp",
        "standalone/tests/combined_test.cpp",
        "standalone/tests/flags_test.cpp",
        "standalone/tests/list_test.cpp",
        "standalone/tests/map_test.cpp",
        "standalone/tests/mutex_test.cpp",
        "standalone/tests/primary_test.cpp",
        "standalone/tests/quarantine_test.cpp",
        "standalone/tests/release_test.cpp",
        "standalone/tests/report_test.cpp",
        "standalone/tests/scudo_unit_test_main.cpp",
        "standalone/tests/secondary_test.cpp",
        "standalone/tests/size_class_map_test.cpp",
        "standalone/tests/stats_test.cpp",
        "standalone/tests/strings_test.cpp",
        "standalone/tests/tsd_test.cpp",
        "standalone/tests/vector_test.cpp",
    ],
    static_libs: ["libscudo_for_testing"],
    include_dirs: [
        "external/scudo/standalone",
        "external/scudo/standalone/include",
    ],
    cflags: [
        "-Wno-unused-parameter",
        "-fno-emulated-tls",
    ],
    target: {
        bionic: {
            header_libs: ["bionic_libc_platform_headers"],
        },
    },
    test_suites: ["general-tests"],
    bootstrap: true,
}

cc_fuzz {
    name: "scudo_get_error_info_fuzzer",
    host_supported: true,
    compile_multilib: "64",
    static_libs: ["libscudo"],
    include_dirs: [
        "external/scudo/standalone",
        "external/scudo/standalone/include",
    ],
    cflags: [
        "-Wno-unneeded-internal-declaration",
    ],
    srcs: ["standalone/fuzz/get_error_info_fuzzer.cpp"],
    fuzz_config: {
        componentid: 87896
    },
}
