diff --git a/src/build/config/arm.gni b/src/build/config/arm.gni index cc82ed5ba9..e410206dd0 100644 --- a/src/build/config/arm.gni +++ b/src/build/config/arm.gni @@ -37,6 +37,8 @@ if (current_cpu == "arm" || v8_current_cpu == "arm") { # Thumb is a reduced instruction set available on some ARM processors that # has increased code density. arm_use_thumb = true + + arm_cpu = "" } # For lacros build, we use ARM v8 by default. @@ -128,6 +130,9 @@ if (current_cpu == "arm" || v8_current_cpu == "arm") { # arm64 supports only "hard". arm_float_abi = "hard" arm_use_neon = true + declare_args() { + arm_cpu = "" + } declare_args() { # Enables the new Armv8 branch protection features. Valid strings are: # - "pac": Enables Pointer Authentication Code (PAC, featured in Armv8.3) diff --git a/src/build/config/compiler/BUILD.gn b/src/build/config/compiler/BUILD.gn index 58f0c71cd0..b1f7c81a32 100644 --- a/src/build/config/compiler/BUILD.gn +++ b/src/build/config/compiler/BUILD.gn @@ -742,7 +742,11 @@ config("compiler") { # TODO(pcc): The contents of .ARM.attributes should be based on the # -march flag passed at compile time (see llvm.org/pr36291). if (current_cpu == "arm") { - ldflags += [ "-march=$arm_arch" ] + if (arm_cpu != "") { + ldflags += [ "-mcpu=$arm_cpu" ] + } else { + ldflags += [ "-march=$arm_arch" ] + } } } @@ -1003,9 +1007,14 @@ config("compiler_cpu_abi") { } if (!is_nacl) { cflags += [ - "-march=$arm_arch", "-mfloat-abi=$arm_float_abi", ] + if (arm_cpu != "") { + cflags += [ "-mcpu=$arm_cpu" ] + } else { + cflags += [ "-march=$arm_arch" ] + } + ldflags += [ "-mfloat-abi=$arm_float_abi" ] } if (arm_tune != "") { cflags += [ "-mtune=$arm_tune" ] @@ -1016,6 +1025,9 @@ config("compiler_cpu_abi") { cflags += [ "--target=aarch64-linux-gnu" ] ldflags += [ "--target=aarch64-linux-gnu" ] } + if (arm_cpu != "") { + cflags += [ "-mcpu=$arm_cpu" ] + } } else if (current_cpu == "mipsel" && !is_nacl) { ldflags += [ "-Wl,--hash-style=sysv" ] if (custom_toolchain == "") {