• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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