chromium/third_party/rust/chromium_crates_io/vendor/cxx-1.0.126/tools/buck/rust_cxx_bridge.bzl

def rust_cxx_bridge(
        name: str,
        src: str,
        deps: list[str] = []):
    native.export_file(
        name = "%s/header" % name,
        src = ":%s/generated[generated.h]" % name,
        out = src + ".h",
    )

    native.export_file(
        name = "%s/source" % name,
        src = ":%s/generated[generated.cc]" % name,
        out = src + ".cc",
    )

    native.genrule(
        name = "%s/generated" % name,
        srcs = [src],
        outs = {
            "generated.cc": ["generated.cc"],
            "generated.h": ["generated.h"],
        },
        cmd = "$(exe //:codegen) ${SRCS} -o ${OUT}/generated.h -o ${OUT}/generated.cc",
        type = "cxxbridge",
    )

    native.cxx_library(
        name = name,
        srcs = [":%s/source" % name],
        preferred_linkage = "static",
        exported_deps = deps + [":%s/include" % name],
    )

    native.cxx_library(
        name = "%s/include" % name,
        exported_headers = [":%s/header" % name],
    )