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