// Copyright 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: "service.incremental-proto-defaults",

    cpp_std: "c++2a",
    proto: {
        type: "lite",
    },
}

cc_defaults {
    name: "service.incremental-defaults",
    defaults: ["service.incremental-proto-defaults"],
    local_include_dirs: ["include/"],
    cflags: [
        "-Wall",
        "-Werror",
        "-Wextra",
        "-Wno-unused-parameter",
    ],

    static_libs: [
        "libbase",
        "libext2_uuid",
        "libdataloader_aidl-cpp",
        "libincremental_aidl-cpp",
        "libincremental_manager_aidl-cpp",
        "libnativehelper",
        "libprotobuf-cpp-lite",
        "service.incremental.proto",
        "libutils",
        "libvold_binder",
    ],
    shared_libs: [
        "libandroidfw",
        "libbinder",
        "libincfs",
        "liblog",
        "libz",
        "libziparchive",
    ],
}

filegroup {
    name: "service.incremental_srcs",
    srcs: [
        "incremental_service.c",
        "IncrementalService.cpp",
        "BinderIncrementalService.cpp",
        "path.cpp",
        "ServiceWrappers.cpp",
    ],
}

cc_library {
    name: "service.incremental",
    defaults: [
        "service.incremental-defaults",
        "linux_bionic_supported",
    ],

    export_include_dirs: ["include/",],
    srcs: [
        ":service.incremental_srcs",
    ],
}

cc_library_headers {
    name: "service.incremental_headers",
    export_include_dirs: ["include/",],
}

cc_library_static {
    name: "service.incremental.proto",
    defaults: ["service.incremental-proto-defaults"],
    proto: {
        export_proto_headers: true,
    },

    srcs: [
        "Metadata.proto",
    ],
}

cc_test {
    name: "service.incremental_test",
    defaults: ["service.incremental-defaults"],
    test_suites: ["device-tests"],
    srcs: [
        ":service.incremental_srcs",
        "test/IncrementalServiceTest.cpp",
        "test/path_test.cpp",
    ],
    static_libs: [
        "libgmock",
    ]
}
