load("@rules_cc//cc:find_cc_toolchain.bzl", "find_cpp_toolchain", "use_cc_toolchain") def _pico_btstack_make_gatt_header_impl(ctx): cc_toolchain = find_cpp_toolchain(ctx) feature_configuration = cc_common.configure_features( ctx = ctx, cc_toolchain = cc_toolchain, requested_features = ctx.features, unsupported_features = ctx.disabled_features, ) out = ctx.actions.declare_file( "{}_gatt_generated/{}.h".format(ctx.label.name, ctx.file.src.basename.removesuffix(".gatt")), ) ctx.actions.run( executable = ctx.executable._make_gat_header_tool, arguments = [ ctx.file.src.path, out.path, "-I", ctx.file._btstack_hdr.dirname, ] + [ ], inputs = [ ctx.file.src, ctx.file._btstack_hdr, ], outputs = [out], ) cc_ctx = cc_common.create_compilation_context( headers = depset(direct = [out]), includes = depset(direct = [out.dirname]), ) return [ DefaultInfo(files = depset(direct = [out])), CcInfo(compilation_context = cc_ctx) ] pico_btstack_make_gatt_header = rule( implementation = _pico_btstack_make_gatt_header_impl, attrs = { "src": attr.label(mandatory = True, allow_single_file = True), "_btstack_hdr": attr.label( default = "@btstack//:src/bluetooth_gatt.h", allow_single_file = True, ), "_make_gat_header_tool": attr.label( default = "@btstack//:compile_gatt", cfg = "exec", executable = True, ), }, fragments = ["cpp"], toolchains = use_cc_toolchain(), )