// 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.

rust_defaults {
    name: "libinput_rust_defaults",
    crate_name: "input",
    srcs: ["lib.rs"],
    host_supported: true,
    rustlibs: [
        "libbitflags",
        "libcxx",
        "libinput_bindgen",
        "liblogger",
        "liblog_rust",
        "inputconstants-rust",
    ],
    whole_static_libs: [
        "libinput_from_rust_to_cpp",
    ],
    shared_libs: [
        "libbase",
    ],
}

rust_library {
    name: "libinput_rust",
    defaults: ["libinput_rust_defaults"],
}

rust_ffi_static {
    name: "libinput_rust_ffi",
    defaults: ["libinput_rust_defaults"],
}

rust_test {
    name: "libinput_rust_test",
    defaults: ["libinput_rust_defaults"],
    test_options: {
        unit_test: true,
    },
    test_suites: ["device_tests"],
    sanitize: {
        hwaddress: true,
    },
}

genrule {
    name: "libinput_cxx_bridge_code",
    tools: ["cxxbridge"],
    cmd: "$(location cxxbridge) $(in) >> $(out)",
    srcs: ["lib.rs"],
    out: ["input_cxx_bridge_generated.cpp"],
}

genrule {
    name: "libinput_cxx_bridge_header",
    tools: ["cxxbridge"],
    cmd: "$(location cxxbridge) $(in) --header >> $(out)",
    srcs: ["lib.rs"],
    out: ["input_cxx_bridge.rs.h"],
}
