aboutsummaryrefslogtreecommitdiff
path: root/tools/buck/rust_cxx_bridge.bzl
blob: 18bb245856dbd9f91b757e7ba81a1d13cfbb2bea (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
def rust_cxx_bridge(
        name: str.type,
        src: str.type,
        deps: [str.type] = []):
    native.genrule(
        name = "%s/header" % name,
        out = src + ".h",
        cmd = "cp $(location :%s/generated)/generated.h ${OUT}" % name,
    )

    native.genrule(
        name = "%s/source" % name,
        out = src + ".cc",
        cmd = "cp $(location :%s/generated)/generated.cc ${OUT}" % name,
    )

    native.genrule(
        name = "%s/generated" % name,
        srcs = [src],
        out = ".",
        cmd = "$(exe //:codegen) ${SRCS} -o ${OUT}/generated.h -o ${OUT}/generated.cc",
        type = "cxxbridge",
    )

    native.cxx_library(
        name = name,
        srcs = [":%s/source" % name],
        preferred_linkage = "static",
        exported_deps = deps + [":%s/include" % name],
    )

    native.cxx_library(
        name = "%s/include" % name,
        exported_headers = [":%s/header" % name],
    )