1def rust_cxx_bridge( 2 name: str, 3 src: str, 4 deps: list[str] = []): 5 native.export_file( 6 name = "%s/header" % name, 7 src = ":%s/generated[generated.h]" % name, 8 out = src + ".h", 9 ) 10 11 native.export_file( 12 name = "%s/source" % name, 13 src = ":%s/generated[generated.cc]" % name, 14 out = src + ".cc", 15 ) 16 17 native.genrule( 18 name = "%s/generated" % name, 19 srcs = [src], 20 outs = { 21 "generated.cc": ["generated.cc"], 22 "generated.h": ["generated.h"], 23 }, 24 cmd = "$(exe //:codegen) ${SRCS} -o ${OUT}/generated.h -o ${OUT}/generated.cc", 25 type = "cxxbridge", 26 ) 27 28 native.cxx_library( 29 name = name, 30 srcs = [":%s/source" % name], 31 preferred_linkage = "static", 32 exported_deps = deps + [":%s/include" % name], 33 ) 34 35 native.cxx_library( 36 name = "%s/include" % name, 37 exported_headers = [":%s/header" % name], 38 ) 39