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

// Build the Car service.

package {
    default_applicable_licenses: ["Android-Apache-2.0"],
}

genrule {
    name: "statslog-Car-java-gen",
    tools: ["stats-log-api-gen"],
    cmd: "$(location stats-log-api-gen) --java $(out) --module car --javaPackage com.android.car"
        + " --javaClass CarStatsLog",
    out: ["com/android/car/CarStatsLog.java"],
}

car_service_sources = [
    "src/**/*.java",
    ":statslog-Car-java-gen",
]

common_lib_deps = [
    "android.car.cluster.navigation",
    "android.car.userlib",
    "android.car.watchdoglib",
    "android.frameworks.automotive.powerpolicy.internal-java",
    "android.hidl.base-V1.0-java",
    "android.hardware.automotive.audiocontrol-V1.0-java",
    "android.hardware.automotive.audiocontrol-V2.0-java",
    "android.hardware.automotive.audiocontrol-V1-java",
    "android.hardware.automotive.vehicle-V2.0-java",
    "android.hardware.health-V1.0-java",
    "android.hardware.health-V2.0-java",
    "android.hardware.automotive.occupant_awareness-V1-java",
    "vehicle-hal-support-lib",
    "car-systemtest",
    "com.android.car.procfsinspector-client",
    "blestream-protos",
    "SettingsLib",
    "androidx.preference_preference",
    // TODO(b/171603586): remove this after moving NewUserDisclaimerActivity
    // to CarSettings
    "car-admin-ui-lib",
    "Slogf",
    "cartelemetry-protos",
]

android_app {
    name: "CarService",

    srcs: car_service_sources,

    resource_dirs: ["res"],

    platform_apis: true,

    // Each update should be signed by OEMs
    certificate: "platform",
    privileged: true,

    optimize: {
        proguard_flags_files: ["proguard.flags"],
        enabled: false,
    },

    libs: ["android.car"],

    static_libs: common_lib_deps + [
        "com.android.car.internal.system",
    ],

    jni_libs: ["libcarservicejni"],

    required: ["allowed_privapp_com.android.car"],

    // Disable build in PDK, missing aidl import breaks build
    product_variables: {
        pdk: {
            enabled: false,
        },
    },
}

java_library {

    name: "car-service-common-util-static-lib",

    srcs: [
        "src/com/android/car/CarServiceBase.java",
        "src/com/android/car/CarServiceUtils.java",
        "src/com/android/car/CarLog.java",
        "src/com/android/car/Utils.java",
    ],

    product_variables: {
            pdk: {
                enabled: false,
            },
    },
}

//####################################################################################
// Build a static library to help mocking various car services in testing. This is meant to be used
// for internal unit tests around the car service.
//####################################################################################
android_library {
    name: "car-service-test-static-lib",

    srcs: car_service_sources,

    resource_dirs: ["res"],

    libs: [
        "android.car",
        "car-frameworks-service",
    ],

    static_libs: common_lib_deps,

    product_variables: {
        pdk: {
            enabled: false,
        },
    },
}

//####################################################################################
// Build a library to help generate a testing library for external apps.
// We do not want to use statically linked libraries, as this will bloat the output jar with classes
// that can conflict with the user's environment.
//####################################################################################
android_library {
    name: "car-service-test-lib",

    srcs: car_service_sources,

    resource_dirs: ["res"],

    libs: common_lib_deps + [
        "android.car",
        "car-frameworks-service",
    ],

    product_variables: {
        pdk: {
            enabled: false,
        },
    },
}
