// Copyright (C) 2020 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_libbpf_license"],
}

// See: http://go/android-license-faq
license {
    name: "external_libbpf_license",
    visibility: [":__subpackages__"],
    license_kinds: [
        "SPDX-license-identifier-BSD-2-Clause",
        "SPDX-license-identifier-GPL-2.0",
        "SPDX-license-identifier-LGPL-2.1-only",
    ],
    license_text: [
        "LICENSE.BSD-2-Clause",
        "LICENSE.LGPL-2.1",
    ],
}

genrule {
    name: "libbpf_headers",
    srcs: [
        "src/*.h",
    ],
    cmd: "mkdir -p $(genDir)/bpf && cp $(in) $(genDir)/bpf/",
    out: [
        "bpf/bpf_core_read.h",
        "bpf/bpf_endian.h",
        "bpf/bpf.h",
        "bpf/bpf_helper_defs.h",
        "bpf/bpf_helpers.h",
        "bpf/bpf_tracing.h",
        "bpf/btf.h",
        "bpf/hashmap.h",
        "bpf/libbpf_common.h",
        "bpf/libbpf.h",
        "bpf/libbpf_legacy.h",
        "bpf/libbpf_version.h",
        "bpf/nlattr.h",
        "bpf/skel_internal.h",
        "bpf/xsk.h",
    ],
}

cc_library_static {
    name: "libbpf",
    host_supported: true,
    srcs: [
        "src/*.c",
    ],
    local_include_dirs: [
        "android",
        "include",
    ],
    export_include_dirs: [
        "include/uapi",
    ],
    generated_headers: ["libbpf_headers"],
    export_generated_headers: ["libbpf_headers"],
    cflags: [
        "-DCOMPAT_NEED_REALLOCARRAY",
        "-include android/android.h",
        "-Wno-constant-conversion",
        "-Wno-missing-field-initializers",
        "-Wno-pointer-arith",
        "-Wno-unused-parameter",
    ],
    static_libs: [
        "libelf",
        "libz",
    ],
    visibility: [
        "//external/bpftool",
        "//external/bcc/libbpf-tools",
        "//external/dwarves",
        "//external/stg",
    ],
    target: {
        host: {
            compile_multilib: "64",
        }
    }
}

cc_library {
    name: "libbpf_minimal",
    vendor_available: true,
    native_bridge_supported: true,
    srcs: [
        "android/bpf_stub.c",
        "src/bpf.c",
        "src/libbpf_errno.c",
        "src/netlink.c",
        "src/nlattr.c",
        "src/ringbuf.c",
    ],
    local_include_dirs: [
        "android",
        "include"
    ],
    export_include_dirs: [
        "include/uapi"
    ],
    generated_headers: ["libbpf_headers"],
    export_generated_headers: ["libbpf_headers"],
    cflags: [
        "-include android/android.h",
        "-Wno-pointer-arith",
        "-Wno-unused-parameter",
    ],
}

cc_binary {
    name: "btfloader",
    srcs: ["android/btfloader.cpp"],
    static_libs: [
        "libbpf",
        "libelf",
        "libz"
    ],
    cflags: [
        "-Wno-deprecated-declarations",
    ]
}
