arm: build: Support ARM build without FPU

This commit is contained in:
klzgrad
2020-07-29 21:43:37 +08:00
parent 7059deda3f
commit 88badad819
3 changed files with 26 additions and 3 deletions

View File

@@ -29,6 +29,8 @@ if (current_cpu == "arm" || v8_current_cpu == "arm") {
arm_use_thumb = true
arm_cpu = ""
arm_fpu = ""
arm_use_neon = ""
}
if (current_os == "android" || target_os == "android") {
@@ -44,6 +46,10 @@ if (current_cpu == "arm" || v8_current_cpu == "arm") {
assert(arm_float_abi == "" || arm_float_abi == "hard" ||
arm_float_abi == "soft" || arm_float_abi == "softfp")
if (arm_use_neon == "") {
arm_use_neon = false
}
if (arm_version == 6) {
assert(false, "arm_version must be >= 7")
} else if (arm_version == 7) {
@@ -59,6 +65,14 @@ if (current_cpu == "arm" || v8_current_cpu == "arm") {
arm_float_abi = "hard"
}
}
if (arm_fpu == "") {
if (arm_use_neon) {
arm_fpu = "neon"
} else {
arm_fpu = "vfpv3-d16"
}
}
} else if (arm_version == 8) {
if (arm_arch == "") {
arm_arch = "armv8-a"
@@ -66,11 +80,20 @@ if (current_cpu == "arm" || v8_current_cpu == "arm") {
if (arm_float_abi == "") {
arm_float_abi = "hard"
}
if (arm_fpu == "") {
if (arm_use_neon) {
arm_fpu = "neon"
} else {
arm_fpu = "vfpv3-d16"
}
}
}
} else if (current_cpu == "arm64" || v8_current_cpu == "arm64" ||
current_cpu == "arm64e" || v8_current_cpu == "arm64e") {
# arm64 supports only "hard".
arm_float_abi = "hard"
arm_use_neon = true
declare_args() {
arm_cpu = ""
}

View File

@@ -1605,8 +1605,8 @@ config("rustc_revision") {
}
config("compiler_arm_fpu") {
if (current_cpu == "arm" && !is_ios) {
cflags = [ "-mfpu=neon" ]
if (current_cpu == "arm" && !is_ios && arm_fpu != "") {
cflags = [ "-mfpu=$arm_fpu" ]
if (!arm_use_thumb) {
cflags += [ "-marm" ]
}

View File

@@ -70,7 +70,7 @@ source_set("zlib_common_headers") {
# TODO(ritownsend@google.com): Optimizations temporarily disabled for
# Windows on Arm MSVC builds, see http://crbug.com/v8/10012.
use_arm_neon_optimizations =
(current_cpu == "arm" || current_cpu == "arm64") && !(is_win && !is_clang)
(current_cpu == "arm" || current_cpu == "arm64") && !(is_win && !is_clang) && arm_use_neon
use_x86_x64_optimizations =
(current_cpu == "x86" || current_cpu == "x64") && !is_ios