aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTreehugger Robot <treehugger-gerrit@google.com>2022-03-22 15:52:51 +0000
committerGerrit Code Review <noreply-gerritcodereview@google.com>2022-03-22 15:52:51 +0000
commit162ec2bd34762ecf93e97619f168cd0483225a4a (patch)
tree3d0d551ec2723ef0ad55445b20aabf549230ac6e
parent99da0e73ec1ff33d7df65a2068f5af8233b1371a (diff)
parentcfd189343221bf1c5eaf69ba8d3a17e9f517459c (diff)
downloadlinux-x86-162ec2bd34762ecf93e97619f168cd0483225a4a.tar.gz
Merge "Support arch/cpu variants in mixed builds."
-rw-r--r--BUILD.bazel6
-rw-r--r--cc_toolchain_config.bzl30
-rw-r--r--cc_toolchain_constants.bzl27
3 files changed, 32 insertions, 31 deletions
diff --git a/BUILD.bazel b/BUILD.bazel
index 201ff395b..6c7e57851 100644
--- a/BUILD.bazel
+++ b/BUILD.bazel
@@ -15,19 +15,19 @@ load(
":cc_toolchain_config.bzl",
"android_cc_toolchain",
"clang_version",
- "enabled_features",
"expand_feature_flags",
- "variant_constraints",
- "variant_name",
)
load(
":cc_toolchain_constants.bzl",
"arch_to_variants",
"arches",
"arm_extra_ldflags",
+ "enabled_features",
"device_compatibility_flags_non_darwin",
"device_compatibility_flags_non_windows",
"generated_constants",
+ "variant_constraints",
+ "variant_name",
)
load("//build/bazel/platforms/arch/variants:constants.bzl", _arch_constants = "constants")
diff --git a/cc_toolchain_config.bzl b/cc_toolchain_config.bzl
index 906b3feba..46fcae0e1 100644
--- a/cc_toolchain_config.bzl
+++ b/cc_toolchain_config.bzl
@@ -10,6 +10,7 @@ load(
_bionic_crt = "bionic_crt",
_flags = "flags",
_generated_constants = "generated_constants",
+ _enabled_features = "enabled_features",
)
load(":cc_toolchain_features.bzl", "get_features")
@@ -259,39 +260,12 @@ _cc_toolchain_config = rule(
provides = [CcToolchainConfigInfo],
)
-# enabled_features returns a list of enabled features for the given arch variant, defaults to empty list
-def enabled_features(arch_variant, arch_variant_to_features = {}):
- if arch_variant == None:
- arch_variant = ""
- return arch_variant_to_features.get(arch_variant, [])
-
-# variant_name creates a name based on a variant struct with arch_variant and cpu_variant
-def variant_name(variant):
- ret = ""
- if variant.arch_variant:
- ret += "_" + variant.arch_variant
- if variant.cpu_variant:
- ret += variant.cpu_variant
- return ret
-
-# variant_constraints gets constraints based on variant struct and arch_variant_features
-def variant_constraints(variant, arch_variant_features = {}):
- ret = []
- if variant.arch_variant:
- ret.append("//build/bazel/platforms/arch/variants:" + variant.arch_variant)
- if variant.cpu_variant:
- ret.append("//build/bazel/platforms/arch/variants:" + variant.cpu_variant)
- features = enabled_features(variant.arch_variant, arch_variant_features)
- for feature in features:
- ret.append("//build/bazel/platforms/arch/variants:" + feature)
- return ret
-
# macro to expand feature flags for a toolchain
# we do not pass these directly to the toolchain so the order can
# be specified per toolchain
def expand_feature_flags(arch_variant, arch_variant_to_features = {}, flag_map = {}):
flags = []
- features = enabled_features(arch_variant, arch_variant_to_features)
+ features = _enabled_features(arch_variant, arch_variant_to_features)
for feature in features:
flags.extend(flag_map.get(feature, []))
return flags
diff --git a/cc_toolchain_constants.bzl b/cc_toolchain_constants.bzl
index 5bb1c51d1..35b173c7b 100644
--- a/cc_toolchain_constants.bzl
+++ b/cc_toolchain_constants.bzl
@@ -153,3 +153,30 @@ def arm_extra_ldflags(variant):
elif variant.arch_variant == "armv7-a":
return _generated_constants.ArmFixCortexA8LdFlags
return []
+
+# enabled_features returns a list of enabled features for the given arch variant, defaults to empty list
+def enabled_features(arch_variant, arch_variant_to_features = {}):
+ if arch_variant == None:
+ arch_variant = ""
+ return arch_variant_to_features.get(arch_variant, [])
+
+# variant_name creates a name based on a variant struct with arch_variant and cpu_variant
+def variant_name(variant):
+ ret = ""
+ if variant.arch_variant:
+ ret += "_" + variant.arch_variant
+ if variant.cpu_variant:
+ ret += "_" + variant.cpu_variant
+ return ret
+
+# variant_constraints gets constraints based on variant struct and arch_variant_features
+def variant_constraints(variant, arch_variant_features = {}):
+ ret = []
+ if variant.arch_variant:
+ ret.append("//build/bazel/platforms/arch/variants:" + variant.arch_variant)
+ if variant.cpu_variant:
+ ret.append("//build/bazel/platforms/arch/variants:" + variant.cpu_variant)
+ features = enabled_features(variant.arch_variant, arch_variant_features)
+ for feature in features:
+ ret.append("//build/bazel/platforms/arch/variants:" + feature)
+ return ret