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