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], )