/*
 * Copyright (C) 2017 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: ["Android-Apache-2.0"],
}

cc_defaults {
    name: "storaged_defaults",

    shared_libs: [
        "android.hardware.health@1.0",
        "android.hardware.health@2.0",
        "libbase",
        "libbinder",
        "libcutils",
        "libhidlbase",
        "liblog",
        "libprotobuf-cpp-lite",
        "libutils",
        "libz",
    ],

    cflags: [
        "-Wall",
        "-Werror",
        "-Wextra",
        "-Wno-unused-parameter"
    ],
}

cc_library_static {
    name: "libstoraged",

    defaults: ["storaged_defaults"],

    aidl: {
        export_aidl_headers: true,
        local_include_dirs: ["binder"],
        include_dirs: ["frameworks/native/aidl/binder"],
    },

    srcs: [
        "storaged.cpp",
        "storaged_diskstats.cpp",
        "storaged_info.cpp",
        "storaged_service.cpp",
        "storaged_utils.cpp",
        "storaged_uid_monitor.cpp",
        "uid_info.cpp",
        "storaged.proto",
        ":storaged_aidl",
        ":storaged_aidl_private",
    ],

    static_libs: ["libhealthhalutils"],
    header_libs: ["libbatteryservice_headers"],

    logtags: ["EventLogTags.logtags"],

    proto: {
        type: "lite",
        export_proto_headers: true,
    },

    export_include_dirs: ["include"],
}

cc_binary {
    name: "storaged",

    defaults: ["storaged_defaults"],

    init_rc: ["storaged.rc"],

    srcs: ["main.cpp"],

    static_libs: [
        "libhealthhalutils",
        "libstoraged",
    ],
}

/*
 * Run with:
 *  adb shell /data/nativetest/storaged-unit-tests/storaged-unit-tests
 */
cc_test {
    name: "storaged-unit-tests",

    defaults: ["storaged_defaults"],

    srcs: ["tests/storaged_test.cpp"],

    static_libs: [
        "libhealthhalutils",
        "libstoraged",
    ],
}

// AIDL interface between storaged and framework.jar
filegroup {
    name: "storaged_aidl",
    srcs: [
        "binder/android/os/IStoraged.aidl",
    ],
    path: "binder",
}

filegroup {
    name: "storaged_aidl_private",
    srcs: [
        "binder/android/os/storaged/IStoragedPrivate.aidl",
    ],
    path: "binder",
}
