# Copyright 2024 Google LLC
#
# 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
#
#     https://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.

load("@crate_index//:defs.bzl", "aliases")
load("@rules_rust//rust:defs.bzl", "rust_library")

cc_library(
    name = "ldt_np_adv_ffi",
    hdrs = ["nearby/presence/ldt_np_adv_ffi/c/include/np_ldt.h"],
    includes = ["nearby/presence/ldt_np_adv_ffi/c/include"],
    visibility = ["//visibility:public"],
    deps = [":ldt_np_adv_ffi_rust"],
)

cc_library(
    name = "np_cpp_ffi",
    srcs = ["nearby/presence/np_cpp_ffi/nearby_protocol.cc"],
    hdrs = ["nearby/presence/np_cpp_ffi/include/nearby_protocol.h"],
    copts = [
        "-Inearby/presence/np_cpp_ffi/include",
        "-Inearby/presence/np_c_ffi/include/cpp",
    ],
    visibility = ["//visibility:public"],
    deps = [
        ":np_c_ffi",
        "@absl//absl/status",
        "@absl//absl/status:statusor",
        "@absl//absl/strings",
        "@absl//absl/strings:str_format",
    ],
)

cc_library(
    name = "np_c_ffi_types",
    hdrs = ["nearby/presence/np_c_ffi/include/cpp/np_cpp_ffi_types.h"],
    visibility = ["//visibility:public"],
)

cc_binary(
    name = "np_cpp_sample",
    srcs = ["nearby/presence/np_cpp_ffi/sample/main.cc"],
    copts = [
        "-Inearby/presence/np_c_ffi/include/cpp",
        "-Inearby/presence/np_cpp_ffi/include",
    ],
    deps = [
        ":np_c_ffi_types",
        ":np_cpp_ffi",
        "@absl//absl/strings",
    ],
)

cc_library(
    name = "np_c_ffi",
    hdrs = [
        "nearby/presence/np_c_ffi/include/cpp/np_cpp_ffi_functions.h",
        "nearby/presence/np_c_ffi/include/cpp/np_cpp_ffi_types.h",
    ],
    deps = [":np_c_ffi_rust"],
)

rust_library(
    name = "np_c_ffi_rust",
    srcs = glob(include = ["nearby/presence/np_c_ffi/src/**/*.rs"]),
    crate_features = ["std"],
    deps = [
        ":lock_adapter",
        ":np_ffi_core",
    ],
)

rust_library(
    name = "np_ffi_core",
    srcs = glob(include = ["nearby/presence/np_ffi_core/src/**/*.rs"]),
    crate_features = ["crypto_provider/raw_private_key_permit"],
    proc_macro_deps = ["@crate_index//:strum_macros"],
    deps = [
        ":array_view",
        ":crypto_provider",
        ":crypto_provider_default",
        ":handle_map",
        ":ldt_np_adv",
        ":lock_adapter",
        ":np_adv",
        ":np_adv_dynamic",
        ":np_hkdf",
        "@crate_index//:lazy_static",
        "@crate_index//:strum",
    ],
)

rust_library(
    name = "np_adv_dynamic",
    srcs = glob(include = ["nearby/presence/np_adv_dynamic/src/**/*.rs"]),
    deps = [
        ":array_view",
        ":crypto_provider",
        ":np_adv",
        ":sink",
        "@crate_index//:thiserror",
    ],
)

rust_library(
    name = "handle_map",
    srcs = glob(include = ["common/handle_map/src/**/*.rs"]),
    deps = [":lock_adapter"],
)

rust_library(
    name = "lock_adapter",
    srcs = glob(include = ["common/lock_adapter/src/**/*.rs"]),
    crate_features = ["std"],
)

rust_library(
    name = "np_adv",
    srcs = glob(include = ["nearby/presence/np_adv/src/**/*.rs"]),
    crate_features = ["alloc"],
    proc_macro_deps = ["@crate_index//:strum_macros"],
    deps = [
        ":array_view",
        ":crypto_provider",
        ":ldt",
        ":ldt_np_adv",
        ":np_ed25519",
        ":np_hkdf",
        ":sink",
        ":xts_aes",
        "@crate_index//:lazy_static",
        "@crate_index//:nom",
        "@crate_index//:strum",
        "@crate_index//:tinyvec",
    ],
)

rust_library(
    name = "np_ed25519",
    srcs = glob(
        include = ["nearby/presence/np_ed25519/src/**/*.rs"],
    ),
    deps = [
        ":array_view",
        ":crypto_provider",
        ":ldt",
        ":sink",
        ":xts_aes",
        "@crate_index//:tinyvec",
    ],
)

cc_binary(
    name = "main",
    srcs = ["nearby/presence/ldt_np_adv_ffi/c/sample/main.c"],
    deps = [":ldt_np_adv_ffi"],
)

rust_library(
    name = "ldt_np_adv_ffi_rust",
    srcs = glob(["nearby/presence/ldt_np_adv_ffi/src/**/*.rs"]),
    crate_features = ["std"],
    deps = [
        ":crypto_provider",
        ":crypto_provider_default",
        ":ldt",
        ":ldt_np_adv",
        ":np_hkdf",
        "@crate_index//:cfg-if",
        "@crate_index//:lazy_static",
    ],
)

rust_library(
    name = "ldt_np_adv",
    srcs = glob(["nearby/presence/ldt_np_adv/src/**/*.rs"]),
    deps = [
        ":array_view",
        ":crypto_provider",
        ":ldt",
        ":np_hkdf",
        ":xts_aes",
    ],
)

rust_library(
    name = "np_hkdf",
    srcs = glob(["nearby/presence/np_hkdf/src/**/*.rs"]),
    deps = [
        ":crypto_provider",
        ":ldt",
        ":xts_aes",
    ],
)

rust_library(
    name = "crypto_provider",
    srcs = glob(["nearby/crypto/crypto_provider/src/**/*.rs"]),
    crate_features = [
        "raw_private_key_permit",
        "std",
        "alloc",
    ],
    deps = ["@crate_index//:tinyvec"],
)

rust_library(
    name = "crypto_provider_default",
    srcs = glob(["nearby/crypto/crypto_provider_default/src/**/*.rs"]),
    crate_features = [
        "rustcrypto",
        "std",
    ],
    deps = [
        ":crypto_provider",
        ":crypto_provider_rustcrypto",
        "@crate_index//:cfg-if",
    ],
)

rust_library(
    name = "crypto_provider_rustcrypto",
    srcs = glob(["nearby/crypto/crypto_provider_rustcrypto/src/**/*.rs"]),
    crate_features = [
        "std",
        "alloc",
    ],
    deps = [
        ":crypto_provider",
        "@crate_index//:aead",
        "@crate_index//:aes",
        "@crate_index//:aes-gcm",
        "@crate_index//:aes-gcm-siv",
        "@crate_index//:cbc",
        "@crate_index//:cfg-if",
        "@crate_index//:ctr",
        "@crate_index//:ed25519-dalek",
        "@crate_index//:hkdf",
        "@crate_index//:hmac",
        "@crate_index//:p256",
        "@crate_index//:rand",
        "@crate_index//:rand_chacha",
        "@crate_index//:rand_core",
        "@crate_index//:sec1",
        "@crate_index//:sha2",
        "@crate_index//:subtle",
        "@crate_index//:x25519-dalek",
    ],
)

rust_library(
    name = "ldt_tbc",
    srcs = glob(["nearby/presence/ldt_tbc/src/**/*.rs"]),
    deps = [":crypto_provider"],
)

rust_library(
    name = "ldt",
    srcs = glob(["nearby/presence/ldt/src/**/*.rs"]),
    deps = [
        ":crypto_provider",
        ":ldt_tbc",
    ],
)

rust_library(
    name = "xts_aes",
    srcs = glob(["nearby/presence/xts_aes/src/**/*.rs"]),
    deps = [
        ":array_ref",
        ":crypto_provider",
        ":ldt_tbc",
    ],
)

rust_library(
    name = "array_view",
    srcs = glob(["nearby/presence/array_view/src/**/*.rs"]),
)

rust_library(
    name = "array_ref",
    srcs = glob(["nearby/presence/array_ref/src/**/*.rs"]),
)

rust_library(
    name = "sink",
    srcs = glob(["nearby/presence/sink/src/**/*.rs"]),
    deps = ["@crate_index//:tinyvec"],
)
