aboutsummaryrefslogtreecommitdiff
path: root/pw_toolchain_bazel/cc_toolchain/private/utils.bzl
diff options
context:
space:
mode:
Diffstat (limited to 'pw_toolchain_bazel/cc_toolchain/private/utils.bzl')
-rw-r--r--pw_toolchain_bazel/cc_toolchain/private/utils.bzl24
1 files changed, 17 insertions, 7 deletions
diff --git a/pw_toolchain_bazel/cc_toolchain/private/utils.bzl b/pw_toolchain_bazel/cc_toolchain/private/utils.bzl
index 321cafad4..7030f2498 100644
--- a/pw_toolchain_bazel/cc_toolchain/private/utils.bzl
+++ b/pw_toolchain_bazel/cc_toolchain/private/utils.bzl
@@ -15,6 +15,10 @@
load("@bazel_tools//tools/build_defs/cc:action_names.bzl", "ACTION_NAMES")
load(
+ "@bazel_tools//tools/cpp:cc_toolchain_config_lib.bzl",
+ "FlagSetInfo",
+)
+load(
"//cc_toolchain/private:providers.bzl",
"ToolchainFeatureInfo",
)
@@ -52,12 +56,18 @@ ACTION_MAP = {
"linkopts": ALL_LINK_ACTIONS,
}
+def _check_dep_provides(ctx_label, dep, provider, what_provides):
+ if provider not in dep:
+ fail(
+ "{} listed as a dependency of {}, but it's not a {}".format(
+ dep.label,
+ ctx_label,
+ what_provides,
+ ),
+ )
+
def check_deps(ctx):
for dep in ctx.attr.feature_deps:
- if ToolchainFeatureInfo not in dep:
- fail(
- "{} listed as a dependency of {}, but it's not a pw_cc_toolchain_feature".format(
- dep.label,
- ctx.label,
- ),
- )
+ _check_dep_provides(ctx.label, dep, ToolchainFeatureInfo, "pw_cc_toolchain_feature")
+ for dep in ctx.attr.action_config_flag_sets:
+ _check_dep_provides(ctx.label, dep, FlagSetInfo, "pw_cc_flag_set")