32 lines · plain
1"""2This file contains some build definitions for C++ extensions used in the Google Benchmark Python bindings.3"""4 5load("//third_party/bazel_rules/rules_cc/cc:cc_binary.bzl", "cc_binary")6 7_SHARED_LIB_SUFFIX = {8 "//conditions:default": ".so",9 "//:windows": ".dll",10}11 12def py_extension(name, srcs, hdrs = [], copts = [], features = [], deps = []):13 for shared_lib_suffix in _SHARED_LIB_SUFFIX.values():14 shared_lib_name = name + shared_lib_suffix15 cc_binary(16 name = shared_lib_name,17 linkshared = True,18 linkstatic = True,19 srcs = srcs + hdrs,20 copts = copts,21 features = features,22 deps = deps,23 )24 25 return native.py_library(26 name = name,27 data = select({28 platform: [name + shared_lib_suffix]29 for platform, shared_lib_suffix in _SHARED_LIB_SUFFIX.items()30 }),31 )32