// Copyright (C) 2018 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.

java_library_static {
    name: "android.support.car",
    srcs: [
        "src/**/*.java",
        "src/**/I*.aidl",
    ],
    aidl: {
        include_dirs: [
            "system/bt/binder",
        ],
    },
    libs: [
        "android.car",
    ],
    static_libs: [
        "androidx.annotation_annotation",
    ],
    platform_apis: true,
    product_variables: {
        pdk: {
            enabled: false,
        },
    },
    installable: true,
}

doc_defaults {
    name: "android.support.car-docs-default",
    srcs: [
        "src/**/*.java",
    ],
    libs: [
        "android.car",
        "android.support.car",
        "androidx.annotation_annotation",
    ],
    custom_template: "droiddoc-templates-sdk",
    product_variables: {
        pdk: {
            enabled: false,
        },
    },
}

droiddoc {
    name: "android.support.car-stubs-docs",
    defaults: ["android.support.car-docs-default"],
    api_tag_name: "ANDROID_SUPPORT_CAR",
    api_filename: "api.txt",
    removed_api_filename: "removed.txt",
    args: "-hide 113 -hide 110 -nodocs -stubpackages android.support.car* ",
    installable: false,
    check_api: {
        current: {
            api_file: "api/current.txt",
            removed_api_file: "api/removed.txt",
            args: " -error 2 -error 3 -error 4 -error 5 -error 6 -error 7 -error 8 -error 9 -error 10 -error 11 " +
                  " -error 12 -error 13 -error 14 -error 15 -error 16 -error 17 -error 18 -error 19 -error 20 " +
                  " -error 21 -error 23 -error 24 -error 25 -hide 113 ",
        },
    },
}

droiddoc {
    name: "android.support.car-proguard-docs",
    defaults: ["android.support.car-docs-default"],
    api_tag_name: "ANDROID_SUPPORT_CAR_PROGUARD",
    proguard_filename: "keep_list.proguard",
    create_stubs: false,
}

// TODO(deanh) support lib should be able to be using public APIs only
droiddoc {
    name: "android.support.car-docs",
    srcs: [
        "src/**/*.java",
    ],
    libs: [
        "android.car",
        "androidx.annotation_annotation",
    ],
    custom_template: "droiddoc-templates-sdk",
    create_stubs: false,
    product_variables: {
        pdk: {
            enabled: false,
        },
    },
}
