// 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 = [
    ":iscriptexecutor_aidl",
    "src/**/*.java",
    ":statslog-Car-java-gen",
]

common_lib_deps = [
    "android.automotive.telemetry.internal-java",  // ICarTelemetryInternal
    "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",
    ],

    aidl: {
        include_dirs: [
	    "frameworks/native/aidl/binder", // For PersistableBundle.aidl
	],
    },

    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",
    ],

    static_libs: [
        "com.android.car.internal.common",
    ],

    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,

    aidl: {
        include_dirs: [
	    "frameworks/native/aidl/binder", // For PersistableBundle.aidl
	],
    },

    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",
    ],

    aidl: {
        include_dirs: [
	    "frameworks/native/aidl/binder", // For PersistableBundle.aidl
	],
    },

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

filegroup {
    name: "iscriptexecutor_aidl",
    srcs: [
        "src/com/android/car/telemetry/scriptexecutorinterface/IScriptExecutor.aidl",
        "src/com/android/car/telemetry/scriptexecutorinterface/IScriptExecutorListener.aidl",
    ],
    path: "src",
}
