133d722a9Sopenharmony_ciload("//tools/buck:rust_cxx_bridge.bzl", "rust_cxx_bridge")
233d722a9Sopenharmony_ci
333d722a9Sopenharmony_cirust_test(
433d722a9Sopenharmony_ci    name = "test",
533d722a9Sopenharmony_ci    srcs = ["test.rs"],
633d722a9Sopenharmony_ci    edition = "2018",
733d722a9Sopenharmony_ci    deps = [
833d722a9Sopenharmony_ci        ":ffi",
933d722a9Sopenharmony_ci        "//:cxx",
1033d722a9Sopenharmony_ci    ],
1133d722a9Sopenharmony_ci)
1233d722a9Sopenharmony_ci
1333d722a9Sopenharmony_cirust_library(
1433d722a9Sopenharmony_ci    name = "ffi",
1533d722a9Sopenharmony_ci    srcs = [
1633d722a9Sopenharmony_ci        "ffi/cast.rs",
1733d722a9Sopenharmony_ci        "ffi/lib.rs",
1833d722a9Sopenharmony_ci        "ffi/module.rs",
1933d722a9Sopenharmony_ci    ],
2033d722a9Sopenharmony_ci    crate = "cxx_test_suite",
2133d722a9Sopenharmony_ci    edition = "2018",
2233d722a9Sopenharmony_ci    deps = [
2333d722a9Sopenharmony_ci        ":impl",
2433d722a9Sopenharmony_ci        "//:cxx",
2533d722a9Sopenharmony_ci    ],
2633d722a9Sopenharmony_ci)
2733d722a9Sopenharmony_ci
2833d722a9Sopenharmony_cicxx_library(
2933d722a9Sopenharmony_ci    name = "impl",
3033d722a9Sopenharmony_ci    srcs = [
3133d722a9Sopenharmony_ci        "ffi/tests.cc",
3233d722a9Sopenharmony_ci        ":bridge/source",
3333d722a9Sopenharmony_ci        ":module/source",
3433d722a9Sopenharmony_ci    ],
3533d722a9Sopenharmony_ci    exported_deps = ["//:core"],
3633d722a9Sopenharmony_ci    exported_headers = [
3733d722a9Sopenharmony_ci        ":bridge/header",
3833d722a9Sopenharmony_ci        ":module/header",
3933d722a9Sopenharmony_ci        "ffi/tests.h",
4033d722a9Sopenharmony_ci    ],
4133d722a9Sopenharmony_ci    preferred_linkage = "static",
4233d722a9Sopenharmony_ci)
4333d722a9Sopenharmony_ci
4433d722a9Sopenharmony_cirust_cxx_bridge(
4533d722a9Sopenharmony_ci    name = "bridge",
4633d722a9Sopenharmony_ci    src = "ffi/lib.rs",
4733d722a9Sopenharmony_ci    deps = [
4833d722a9Sopenharmony_ci        ":impl",
4933d722a9Sopenharmony_ci    ],
5033d722a9Sopenharmony_ci)
5133d722a9Sopenharmony_ci
5233d722a9Sopenharmony_cirust_cxx_bridge(
5333d722a9Sopenharmony_ci    name = "module",
5433d722a9Sopenharmony_ci    src = "ffi/module.rs",
5533d722a9Sopenharmony_ci    deps = [
5633d722a9Sopenharmony_ci        ":impl",
5733d722a9Sopenharmony_ci    ],
5833d722a9Sopenharmony_ci)
59