diff options
author | Treehugger Robot <treehugger-gerrit@google.com> | 2022-03-22 15:52:51 +0000 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2022-03-22 15:52:51 +0000 |
commit | 162ec2bd34762ecf93e97619f168cd0483225a4a (patch) | |
tree | 3d0d551ec2723ef0ad55445b20aabf549230ac6e | |
parent | 99da0e73ec1ff33d7df65a2068f5af8233b1371a (diff) | |
parent | cfd189343221bf1c5eaf69ba8d3a17e9f517459c (diff) | |
download | linux-x86-162ec2bd34762ecf93e97619f168cd0483225a4a.tar.gz |
Merge "Support arch/cpu variants in mixed builds."
-rw-r--r-- | BUILD.bazel | 6 | ||||
-rw-r--r-- | cc_toolchain_config.bzl | 30 | ||||
-rw-r--r-- | cc_toolchain_constants.bzl | 27 |
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 |