133d722a9Sopenharmony_ciload("@rules_cc//cc:defs.bzl", "cc_library")
233d722a9Sopenharmony_ciload("@rules_rust//rust:defs.bzl", "rust_binary", "rust_library", "rust_proc_macro")
333d722a9Sopenharmony_ci
433d722a9Sopenharmony_cirust_library(
533d722a9Sopenharmony_ci    name = "cxx",
633d722a9Sopenharmony_ci    srcs = glob(["src/**/*.rs"]),
733d722a9Sopenharmony_ci    crate_features = [
833d722a9Sopenharmony_ci        "alloc",
933d722a9Sopenharmony_ci        "std",
1033d722a9Sopenharmony_ci    ],
1133d722a9Sopenharmony_ci    edition = "2018",
1233d722a9Sopenharmony_ci    proc_macro_deps = [
1333d722a9Sopenharmony_ci        ":cxxbridge-macro",
1433d722a9Sopenharmony_ci    ],
1533d722a9Sopenharmony_ci    visibility = ["//visibility:public"],
1633d722a9Sopenharmony_ci    deps = [":core-lib"],
1733d722a9Sopenharmony_ci)
1833d722a9Sopenharmony_ci
1933d722a9Sopenharmony_cialias(
2033d722a9Sopenharmony_ci    name = "codegen",
2133d722a9Sopenharmony_ci    actual = ":cxxbridge",
2233d722a9Sopenharmony_ci    visibility = ["//visibility:public"],
2333d722a9Sopenharmony_ci)
2433d722a9Sopenharmony_ci
2533d722a9Sopenharmony_cirust_binary(
2633d722a9Sopenharmony_ci    name = "cxxbridge",
2733d722a9Sopenharmony_ci    srcs = glob(["gen/cmd/src/**/*.rs"]),
2833d722a9Sopenharmony_ci    data = ["gen/cmd/src/gen/include/cxx.h"],
2933d722a9Sopenharmony_ci    edition = "2018",
3033d722a9Sopenharmony_ci    deps = [
3133d722a9Sopenharmony_ci        "//third-party:clap",
3233d722a9Sopenharmony_ci        "//third-party:codespan-reporting",
3333d722a9Sopenharmony_ci        "//third-party:proc-macro2",
3433d722a9Sopenharmony_ci        "//third-party:quote",
3533d722a9Sopenharmony_ci        "//third-party:syn",
3633d722a9Sopenharmony_ci    ],
3733d722a9Sopenharmony_ci)
3833d722a9Sopenharmony_ci
3933d722a9Sopenharmony_cicc_library(
4033d722a9Sopenharmony_ci    name = "core",
4133d722a9Sopenharmony_ci    hdrs = ["include/cxx.h"],
4233d722a9Sopenharmony_ci    include_prefix = "rust",
4333d722a9Sopenharmony_ci    strip_include_prefix = "include",
4433d722a9Sopenharmony_ci    visibility = ["//visibility:public"],
4533d722a9Sopenharmony_ci)
4633d722a9Sopenharmony_ci
4733d722a9Sopenharmony_cicc_library(
4833d722a9Sopenharmony_ci    name = "core-lib",
4933d722a9Sopenharmony_ci    srcs = ["src/cxx.cc"],
5033d722a9Sopenharmony_ci    hdrs = ["include/cxx.h"],
5133d722a9Sopenharmony_ci)
5233d722a9Sopenharmony_ci
5333d722a9Sopenharmony_cirust_proc_macro(
5433d722a9Sopenharmony_ci    name = "cxxbridge-macro",
5533d722a9Sopenharmony_ci    srcs = glob(["macro/src/**/*.rs"]),
5633d722a9Sopenharmony_ci    edition = "2018",
5733d722a9Sopenharmony_ci    deps = [
5833d722a9Sopenharmony_ci        "//third-party:proc-macro2",
5933d722a9Sopenharmony_ci        "//third-party:quote",
6033d722a9Sopenharmony_ci        "//third-party:syn",
6133d722a9Sopenharmony_ci    ],
6233d722a9Sopenharmony_ci)
6333d722a9Sopenharmony_ci
6433d722a9Sopenharmony_cirust_library(
6533d722a9Sopenharmony_ci    name = "cxx-build",
6633d722a9Sopenharmony_ci    srcs = glob(["gen/build/src/**/*.rs"]),
6733d722a9Sopenharmony_ci    data = ["gen/build/src/gen/include/cxx.h"],
6833d722a9Sopenharmony_ci    edition = "2018",
6933d722a9Sopenharmony_ci    deps = [
7033d722a9Sopenharmony_ci        "//third-party:cc",
7133d722a9Sopenharmony_ci        "//third-party:codespan-reporting",
7233d722a9Sopenharmony_ci        "//third-party:once_cell",
7333d722a9Sopenharmony_ci        "//third-party:proc-macro2",
7433d722a9Sopenharmony_ci        "//third-party:quote",
7533d722a9Sopenharmony_ci        "//third-party:scratch",
7633d722a9Sopenharmony_ci        "//third-party:syn",
7733d722a9Sopenharmony_ci    ],
7833d722a9Sopenharmony_ci)
7933d722a9Sopenharmony_ci
8033d722a9Sopenharmony_cirust_library(
8133d722a9Sopenharmony_ci    name = "cxx-gen",
8233d722a9Sopenharmony_ci    srcs = glob(["gen/lib/src/**/*.rs"]),
8333d722a9Sopenharmony_ci    data = ["gen/lib/src/gen/include/cxx.h"],
8433d722a9Sopenharmony_ci    edition = "2018",
8533d722a9Sopenharmony_ci    visibility = ["//visibility:public"],
8633d722a9Sopenharmony_ci    deps = [
8733d722a9Sopenharmony_ci        "//third-party:cc",
8833d722a9Sopenharmony_ci        "//third-party:codespan-reporting",
8933d722a9Sopenharmony_ci        "//third-party:proc-macro2",
9033d722a9Sopenharmony_ci        "//third-party:quote",
9133d722a9Sopenharmony_ci        "//third-party:syn",
9233d722a9Sopenharmony_ci    ],
9333d722a9Sopenharmony_ci)
94