// Copyright 2020, 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 {
    // See: http://go/android-license-faq
    // A large-scale-change added 'default_applicable_licenses' to import
    // all of the 'license_kinds' from "system_security_license"
    // to get the below license kinds:
    //   SPDX-license-identifier-Apache-2.0
    default_applicable_licenses: ["system_security_license"],
}

rust_defaults {
    name: "libkeystore2_defaults",
    crate_name: "keystore2",
    srcs: ["src/lib.rs"],

    rustlibs: [
        "android.hardware.security.keymint-V1-rust",
        "android.hardware.security.secureclock-V1-rust",
        "android.hardware.security.sharedsecret-V1-rust",
        "android.os.permissions_aidl-rust",
        "android.security.apc-rust",
        "android.security.authorization-rust",
        "android.security.compat-rust",
        "android.security.maintenance-rust",
        "android.security.metrics-rust",
        "android.security.remoteprovisioning-rust",
        "android.system.keystore2-V1-rust",
        "libanyhow",
        "libbinder_rs",
        "libcutils_bindgen",
        "libkeystore2_aaid-rust",
        "libkeystore2_apc_compat-rust",
        "libkeystore2_crypto_rust",
        "libkeystore2_km_compat",
        "libkeystore2_selinux",
        "libkeystore2_system_property-rust",
        "libkeystore2_vintf_rust",
        "liblazy_static",
        "liblibc",
        "liblibsqlite3_sys",
        "liblog_event_list",
        "liblog_rust",
        "librand",
        "librusqlite",
        "libthiserror",
    ],
    shared_libs: [
        "libcutils",
    ],
    features: [
        "watchdog",
    ],
}

rust_library {
    name: "libkeystore2",
    defaults: ["libkeystore2_defaults"],
}

rust_library {
    name: "libkeystore2_test_utils",
    crate_name: "keystore2_test_utils",
    srcs: ["test_utils/lib.rs"],
    rustlibs: [
        "liblog_rust",
        "librand",
    ],
}

rust_test {
    name: "keystore2_test",
    crate_name: "keystore2",
    test_suites: ["general-tests"],
    auto_gen_config: true,
    compile_multilib: "first",
    defaults: ["libkeystore2_defaults"],
    rustlibs: [
        "libandroid_logger",
        "libkeystore2_test_utils",
        "libnix",
    ],
    // The test should always include watchdog.
    features: [
        "watchdog",
    ],
}

rust_binary {
    name: "keystore2",
    srcs: ["src/keystore2_main.rs"],
    rustlibs: [
        "libandroid_logger",
        "libbinder_rs",
        "libkeystore2",
        "liblog_rust",
        "liblegacykeystore-rust",
    ],
    init_rc: ["keystore2.rc"],

    // In S, keystore2 is the only process using dynamically linked Rust from
    // /system. As a result, the usual savings from sharing libraries don't
    // apply.
    // Remove `prefer_rlib: true` once we have several processes, once a space
    // calculation shows net RAM savings, or once we have automatic variant
    // selection available in the build system.
    prefer_rlib: true,

    // TODO(b/187412695)
    // This is a hack to work around the build system not installing
    // dynamic dependencies of rlibs to the device. This section should
    // be removed once that works correctly.
    shared_libs: [
        "android.hardware.confirmationui@1.0",
        "android.hardware.security.sharedsecret-V1-ndk_platform",
        "android.security.compat-ndk_platform",
        "libc",
        "libdl_android",
        "libdl",
        "libandroidicu",
        "libkeymint",
        "libkeystore2_aaid",
        "libkeystore2_apc_compat",
        "libkeystore2_crypto",
        "libkeystore2_vintf_cpp",
        "libkm_compat_service",
        "libkm_compat",
        "libm",
        "libstatspull",
        "libstatssocket",
    ],

    vintf_fragments: ["android.system.keystore2-service.xml"],

    required: ["keystore_cli_v2"],
}
