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

// ==========================================================
// Native library to register a pull atom callback with statsd
// ==========================================================
package {
    default_applicable_licenses: ["Android-Apache-2.0"],
}

cc_defaults {
    name: "libstatspull_defaults",
    srcs: [
        "stats_pull_atom_callback.cpp",
    ],
    cflags: [
        "-Wall",
        "-Werror",
    ],
    export_include_dirs: ["include"],
    shared_libs: [
        "libbinder_ndk",
        "liblog",
    ],
    static_libs: [
        "libutils",
        "statsd-aidl-ndk_platform",
    ],
    target: {
        android: {
            shared_libs: ["libstatssocket"],
        },
        host: {
            static_libs: ["libstatssocket"],
        },
    },
}
cc_library {
    name: "libstatspull",
    defaults: [
        "libstatspull_defaults",
        "libbinder_ndk_host_user",
    ],
    host_supported: true,
    target: {
        android: {
            static: {
                enabled: false,
            },
        },
        host: {
            shared: {
                enabled: false,
            },
        },
    },
    // enumerate stable entry points for APEX use
    stubs: {
        symbol_file: "libstatspull.map.txt",
        versions: [
            "30",
        ],
    },
    apex_available: [
        "com.android.os.statsd",
        "test_com.android.os.statsd",
    ],
    min_sdk_version: "30",

    stl: "libc++_static",

    // TODO(b/151102177): Enable it when the build error is fixed.
    header_abi_checker: {
        enabled: false,
    },
}

cc_library_headers {
    name: "libstatspull_headers",
    export_include_dirs: ["include"],
}

// ONLY USE IN TESTS.
cc_library_static {
    name: "libstatspull_private",
    defaults: [
        "libstatspull_defaults",
    ],
    cflags: [
        "-DLIB_STATS_PULL_TESTS_FLAG",
    ],
    visibility: [
        "//packages/modules/StatsD/apex/tests/libstatspull",
    ],
}

// Note: These unit tests only test PullAtomMetadata.
// For full E2E tests of libstatspull, use LibStatsPullTests
cc_test {
    name: "libstatspull_test",
    srcs: [
        "tests/pull_atom_metadata_test.cpp",
    ],
    shared_libs: [
        "libstatspull",
        "libstatssocket",
    ],
    test_suites: ["general-tests", "mts-statsd"],
    test_config: "libstatspull_test.xml",

    //TODO(b/153588990): Remove when the build system properly separates 
    //32bit and 64bit architectures.
    compile_multilib: "both",
    multilib: {
        lib64: {
            suffix: "64",
        },
        lib32: {
            suffix: "32",
        },
    },
    cflags: [
        "-Wall",
        "-Werror",
        "-Wno-missing-field-initializers",
        "-Wno-unused-variable",
        "-Wno-unused-function",
        "-Wno-unused-parameter",
    ],
    require_root: true,
}
