build: Work around MIPS floating point ABI passing in LTO

This commit is contained in:
klzgrad 2024-01-21 01:22:38 +08:00
parent cedf2f1542
commit 5a34060832

View File

@ -1314,6 +1314,14 @@ config("compiler_cpu_abi") {
} }
cflags += [ "-m${mips_float_abi}-float" ] cflags += [ "-m${mips_float_abi}-float" ]
# Fix float ABI information not being passed in LLVM bitcode for LTO
# and link failure with -mdouble-float being incorrectly used by default
# while the bitcode was compiled with -msoft-float.
# See https://discourse.llvm.org/t/myterious-soft-float-output-in-lto-cache/70753
if (!is_debug && use_thin_lto && is_a_target_toolchain && mips_float_abi == "soft") {
ldflags += [ "-Wl,-mllvm,-mattr=+soft-float" ]
}
} else if (current_cpu == "mips" && !is_nacl) { } else if (current_cpu == "mips" && !is_nacl) {
ldflags += [ "-Wl,--hash-style=sysv" ] ldflags += [ "-Wl,--hash-style=sysv" ]
if (custom_toolchain == "") { if (custom_toolchain == "") {
@ -1359,6 +1367,14 @@ config("compiler_cpu_abi") {
} }
cflags += [ "-m${mips_float_abi}-float" ] cflags += [ "-m${mips_float_abi}-float" ]
# Fix float ABI information not being passed in LLVM bitcode for LTO
# and link failure with -mdouble-float being incorrectly used by default
# while the bitcode was compiled with -msoft-float.
# See https://discourse.llvm.org/t/myterious-soft-float-output-in-lto-cache/70753
if (!is_debug && use_thin_lto && is_a_target_toolchain && mips_float_abi == "soft") {
ldflags += [ "-Wl,-mllvm,-mattr=+soft-float" ]
}
} else if (current_cpu == "mips64el") { } else if (current_cpu == "mips64el") {
cflags += [ "-D__SANE_USERSPACE_TYPES__" ] cflags += [ "-D__SANE_USERSPACE_TYPES__" ]
ldflags += [ "-Wl,--hash-style=sysv" ] ldflags += [ "-Wl,--hash-style=sysv" ]