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