// Copyright 2023, 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 {
    default_team: "trendy_team_fwk_nfc",
}

genrule {
    name: "casimir_nci_packets_rust_gen",
    defaults: ["pdl_rust_legacy_generator_defaults"],
    srcs: ["src/nci_packets.pdl"],
    out: ["nci_packets.rs"],
}

genrule {
    name: "casimir_rf_packets_rust_gen",
    defaults: ["pdl_rust_legacy_generator_defaults"],
    srcs: ["src/rf_packets.pdl"],
    out: ["rf_packets.rs"],
}

rust_binary_host {
    name: "casimir",
    crate_name: "casimir",
    edition: "2021",
    srcs: [
        "src/main.rs",
        ":casimir_nci_packets_rust_gen",
        ":casimir_rf_packets_rust_gen",
    ],
    rustlibs: [
        "libanyhow",
        "libargh",
        "libbytes",
        "libenv_logger",
        "libfutures",
        "liblog_rust",
        "libpdl_runtime",
        "librustutils",
        "libtokio",
    ],
}

genrule {
    name: "casimir_rf_packets_cxx_gen",
    tools: [
        ":pdl_cxx_generator",
        ":pdlc",
    ],
    cmd: "set -o pipefail;" +
        " $(location :pdlc) $(in) |" +
        " $(location :pdl_cxx_generator)" +
        " --namespace casimir::rf" +
        " --output $(out)",
    srcs: [
        "src/rf_packets.pdl",
    ],
    out: [
        "rf_packets.h",
    ],
}

cc_library_headers {
    name: "casimir_rf_packets_cxx",
    generated_headers: ["casimir_rf_packets_cxx_gen"],
    header_libs: ["pdl_cxx_packet_runtime"],
    export_generated_headers: ["casimir_rf_packets_cxx_gen"],
    export_header_lib_headers: ["pdl_cxx_packet_runtime"],
    host_supported: true,
}
