1load("@rules_cc//cc:defs.bzl", "cc_library") 2load("@rules_rust//rust:defs.bzl", "rust_library") 3 4rust_library( 5 name = "cxx", 6 srcs = glob(["src/**/*.rs"]), 7 crate_features = [ 8 "alloc", 9 "std", 10 ], 11 proc_macro_deps = [ 12 "@cxx_deps//:cxxbridge-macro", 13 ], 14 visibility = ["//visibility:public"], 15 deps = [ 16 ":core-lib", 17 "@cxx_deps//:foldhash", 18 ], 19) 20 21config_setting( 22 name = "linux_x64", 23 constraint_values = [ 24 "@platforms//cpu:x86_64", 25 "@platforms//os:linux", 26 ], 27) 28 29cc_library( 30 name = "core-lib", 31 srcs = [ 32 "src/cxx.cc", 33 ] + select( 34 { 35 ":linux_x64": ["@clang_linux_amd64//:link_libs"], 36 "//conditions:default": [], 37 }, 38 ), 39 hdrs = ["include/cxx.h"], 40 visibility = ["//visibility:public"], 41 42 # Allow using the same include path as in Chromium: 43 # `#include "third_party/rust/cxx/v1/cxx.h"`. 44 strip_include_prefix = "include/", 45 include_prefix = "third_party/rust/cxx/v1/", 46) 47