You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
35 lines
887 B
35 lines
887 B
load("//tools/buck:genrule.bzl", "genrule")
|
|
|
|
def rust_cxx_bridge(name, src, deps = []):
|
|
genrule(
|
|
name = "%s/header" % name,
|
|
out = src + ".h",
|
|
cmd = "cp $(location :%s/generated)/generated.h ${OUT}" % name,
|
|
)
|
|
|
|
genrule(
|
|
name = "%s/source" % name,
|
|
out = src + ".cc",
|
|
cmd = "cp $(location :%s/generated)/generated.cc ${OUT}" % name,
|
|
)
|
|
|
|
genrule(
|
|
name = "%s/generated" % name,
|
|
srcs = [src],
|
|
out = ".",
|
|
cmd = "$(exe //:codegen) ${SRCS} -o ${OUT}/generated.h -o ${OUT}/generated.cc",
|
|
type = "cxxbridge",
|
|
)
|
|
|
|
cxx_library(
|
|
name = name,
|
|
srcs = [":%s/source" % name],
|
|
preferred_linkage = "static",
|
|
deps = deps + [":%s/include" % name],
|
|
)
|
|
|
|
cxx_library(
|
|
name = "%s/include" % name,
|
|
exported_headers = [":%s/header" % name],
|
|
)
|