Ensure arch/arch-variant's CFlags are not added to link actions
x86ArchFeatureCflags are CFlags specific to x86 arch. x86x86ArchVariantCflags are CFlags for x86 arch's variants. In Soong, these flags are added to compile actions. However in Bazel, these are incorrectly added to link actions as well.
Currently, these CFlags are set to _cc_toolchain_config's target_flags. When creating creating toolchain's features, the target_flags are passed to both compiler_flags and linker_target_flags. http://cs/aosp-master/prebuilts/clang/host/linux-x86/cc_toolchain_features.bzl;l=1920;rcl=5af476f7f8a42386198be0f0ba0ab76e4ed767a2
This CL ensures the CFlags are only added to compile actions, not link actions.
Change-Id: I079e31da0d1d4dd09ef325a759947bd347435208
Bug: 272005342
Test: aosp/2495164
diff --git a/BUILD.bazel b/BUILD.bazel
index 05ded06..00c980b 100644
--- a/BUILD.bazel
+++ b/BUILD.bazel
@@ -76,18 +76,18 @@
name = "cc_toolchain_x86_64" + variant_name(variant),
clang_version = ":clang",
clang_version_directory = generated_config_constants.ClangVersion,
+ compiler_flags = generated_config_constants.X86_64ToolchainCflags +
+ generated_config_constants.X86_64ArchVariantCflags[variant.arch_variant] +
+ expand_feature_flags(
+ variant.arch_variant,
+ _arch_constants.AndroidArchToVariantToFeatures[arches.X86_64],
+ generated_config_constants.X86_64ArchFeatureCflags,
+ ) + generated_config_constants.X86_64Cflags,
crt = _bionic_crt,
libclang_rt_builtin = libclang_rt_prebuilt_map["//build/bazel/platforms/os_arch:android_x86_64"],
libclang_rt_ubsan_minimal = libclang_ubsan_minimal_rt_prebuilt_map["//build/bazel/platforms/os_arch:android_x86_64"],
linker_flags = generated_config_constants.X86_64ToolchainLdflags + generated_config_constants.X86_64Lldflags,
target_arch = arches.X86_64,
- target_flags = generated_config_constants.X86_64ToolchainCflags +
- generated_config_constants.X86_64ArchVariantCflags[variant.arch_variant] +
- expand_feature_flags(
- variant.arch_variant,
- _arch_constants.AndroidArchToVariantToFeatures[arches.X86_64],
- generated_config_constants.X86_64ArchFeatureCflags,
- ) + generated_config_constants.X86_64Cflags,
target_os = "android",
toolchain_identifier = "x86_64-toolchain",
)
@@ -100,18 +100,18 @@
name = "cc_toolchain_x86" + variant_name(variant),
clang_version = ":clang",
clang_version_directory = generated_config_constants.ClangVersion,
+ compiler_flags = generated_config_constants.X86ToolchainCflags +
+ generated_config_constants.X86ArchVariantCflags[variant.arch_variant] +
+ expand_feature_flags(
+ variant.arch_variant,
+ _arch_constants.AndroidArchToVariantToFeatures[arches.X86],
+ generated_config_constants.X86ArchFeatureCflags,
+ ) + generated_config_constants.X86Cflags,
crt = _bionic_crt,
libclang_rt_builtin = libclang_rt_prebuilt_map["//build/bazel/platforms/os_arch:android_x86"],
libclang_rt_ubsan_minimal = libclang_ubsan_minimal_rt_prebuilt_map["//build/bazel/platforms/os_arch:android_x86"],
linker_flags = generated_config_constants.X86ToolchainLdflags + generated_config_constants.X86Lldflags,
target_arch = arches.X86,
- target_flags = generated_config_constants.X86ToolchainCflags +
- generated_config_constants.X86ArchVariantCflags[variant.arch_variant] +
- expand_feature_flags(
- variant.arch_variant,
- _arch_constants.AndroidArchToVariantToFeatures[arches.X86],
- generated_config_constants.X86ArchFeatureCflags,
- ) + generated_config_constants.X86Cflags,
target_os = "android",
toolchain_identifier = "x86-toolchain",
)
@@ -124,6 +124,12 @@
name = "cc_toolchain_arm64" + variant_name(variant),
clang_version = ":clang",
clang_version_directory = generated_config_constants.ClangVersion,
+ compiler_flags = generated_config_constants.Arm64Cflags +
+ generated_config_constants.Arm64ArchVariantCflags[variant.arch_variant] +
+ generated_config_constants.Arm64CpuVariantCflags.get(
+ variant.cpu_variant,
+ [],
+ ),
crt = _bionic_crt,
libclang_rt_builtin = libclang_rt_prebuilt_map["//build/bazel/platforms/os_arch:android_arm64"],
libclang_rt_ubsan_minimal = libclang_ubsan_minimal_rt_prebuilt_map["//build/bazel/platforms/os_arch:android_arm64"],
@@ -132,12 +138,6 @@
[],
) + generated_config_constants.Arm64Lldflags,
target_arch = arches.Arm64,
- target_flags = generated_config_constants.Arm64Cflags +
- generated_config_constants.Arm64ArchVariantCflags[variant.arch_variant] +
- generated_config_constants.Arm64CpuVariantCflags.get(
- variant.cpu_variant,
- [],
- ),
target_os = "android",
toolchain_identifier = "arm64-toolchain",
)
@@ -150,19 +150,19 @@
name = "cc_toolchain_arm" + variant_name(variant),
clang_version = ":clang",
clang_version_directory = generated_config_constants.ClangVersion,
+ compiler_flags = generated_config_constants.ArmCflags +
+ generated_config_constants.ArmToolchainCflags +
+ generated_config_constants.ArmArchVariantCflags[variant.arch_variant] +
+ generated_config_constants.ArmCpuVariantCflags.get(
+ variant.cpu_variant,
+ [],
+ ),
crt = _bionic_crt,
libclang_rt_builtin = libclang_rt_prebuilt_map["//build/bazel/platforms/os_arch:android_arm"],
libclang_rt_ubsan_minimal = libclang_ubsan_minimal_rt_prebuilt_map["//build/bazel/platforms/os_arch:android_arm"],
# do not pass "ld"-only flags as Bazel is only using lld. Ensure that all flags are lld-compatible.
linker_flags = generated_config_constants.ArmLldflags,
target_arch = arches.Arm,
- target_flags = generated_config_constants.ArmCflags +
- generated_config_constants.ArmToolchainCflags +
- generated_config_constants.ArmArchVariantCflags[variant.arch_variant] +
- generated_config_constants.ArmCpuVariantCflags.get(
- variant.cpu_variant,
- [],
- ),
target_os = "android",
toolchain_identifier = "arm-toolchain",
)