| # Protocol Buffers - Google's data interchange format |
| # Copyright 2008 Google Inc. All rights reserved. |
| # |
| # Use of this source code is governed by a BSD-style |
| # license that can be found in the LICENSE file or at |
| # https://developers.google.com/open-source/licenses/bsd |
| """ |
| A helper rule that reads a native boolean flag. |
| """ |
| |
| load("@bazel_skylib//rules:common_settings.bzl", "BuildSettingInfo") |
| |
| def _impl(ctx): |
| return [BuildSettingInfo(value = ctx.attr.value)] |
| |
| _native_bool_flag_rule = rule( |
| implementation = _impl, |
| attrs = {"value": attr.bool()}, |
| ) |
| |
| def native_bool_flag(*, name, flag, match_value = "true", result = True, **kwargs): |
| _native_bool_flag_rule( |
| name = name, |
| value = select({ |
| name + "_setting": result, |
| "//conditions:default": not result, |
| }), |
| **kwargs |
| ) |
| |
| native.config_setting( |
| name = name + "_setting", |
| values = {flag: match_value}, |
| visibility = ["//visibility:private"], |
| ) |