diff --git a/llvm/utils/gn/build/BUILD.gn b/llvm/utils/gn/build/BUILD.gn index 0b0f62721d374..9b5254e4c9f0b 100644 --- a/llvm/utils/gn/build/BUILD.gn +++ b/llvm/utils/gn/build/BUILD.gn @@ -61,7 +61,7 @@ config("compiler_defaults") { } asmflags = target_flags - cflags = target_flags + cflags = target_flags + target_cflags cflags_cc = [] ldflags = target_flags + target_ldflags @@ -343,7 +343,11 @@ config("compiler_defaults") { ldflags += [ "/winsysroot:" + rebase_path(sysroot, root_build_dir) ] # FIXME: Remove once PR54409 is fixed. - ldflags += [ "/machine:x64" ] + if (current_cpu == "x64") { + ldflags += [ "/machine:x64" ] + } else if (current_cpu == "x86") { + ldflags += [ "/machine:x86" ] + } } } else if (current_os != "ios" && current_os != "mac" && current_os != "android") { diff --git a/llvm/utils/gn/build/toolchain/BUILD.gn b/llvm/utils/gn/build/toolchain/BUILD.gn index e4852549bba6c..ce2e6df1b69f5 100644 --- a/llvm/utils/gn/build/toolchain/BUILD.gn +++ b/llvm/utils/gn/build/toolchain/BUILD.gn @@ -209,6 +209,13 @@ stage2_unix_toolchain("stage2_unix") { } } +stage2_unix_toolchain("stage2_unix_x86") { + toolchain_args = { + current_os = host_os + current_cpu = "x86" + } +} + if (android_ndk_path != "") { # Android compiler-rt libraries don't really work with per-target runtime # directories yet so force it off. diff --git a/llvm/utils/gn/build/toolchain/target_flags.gni b/llvm/utils/gn/build/toolchain/target_flags.gni index 50d31a3da85fc..cdfab75ed8bcd 100644 --- a/llvm/utils/gn/build/toolchain/target_flags.gni +++ b/llvm/utils/gn/build/toolchain/target_flags.gni @@ -8,6 +8,7 @@ import("//llvm/utils/gn/build/toolchain/compiler.gni") # COMPILER_RT_TEST_COMPILER_CFLAGS). target_flags = [] +target_cflags = [] target_ldflags = [] if (current_os == "android") { @@ -55,6 +56,10 @@ if (current_os == "android") { target_flags += [ "--target=$llvm_current_triple" ] } -if (current_cpu == "x86" && current_os != "win") { - target_flags += [ "-m32" ] +if (current_cpu == "x86") { + if (current_os == "win") { + target_cflags += [ "-m32" ] + } else { + target_flags += [ "-m32" ] + } } diff --git a/llvm/utils/gn/secondary/compiler-rt/BUILD.gn b/llvm/utils/gn/secondary/compiler-rt/BUILD.gn index b31016108419e..c8d3917ccde31 100644 --- a/llvm/utils/gn/secondary/compiler-rt/BUILD.gn +++ b/llvm/utils/gn/secondary/compiler-rt/BUILD.gn @@ -12,6 +12,7 @@ if (current_os == "win" || win_sysroot != "") { } if (current_os != "win") { supported_toolchains += [ "//llvm/utils/gn/build/toolchain:stage2_unix" ] + supported_toolchains += [ "//llvm/utils/gn/build/toolchain:stage2_unix_x86" ] } supported_toolchains += supported_android_toolchains if (llvm_build_AArch64) { diff --git a/llvm/utils/gn/secondary/compiler-rt/lib/BUILD.gn b/llvm/utils/gn/secondary/compiler-rt/lib/BUILD.gn index 02c20483b7a8b..57b86f53254f5 100644 --- a/llvm/utils/gn/secondary/compiler-rt/lib/BUILD.gn +++ b/llvm/utils/gn/secondary/compiler-rt/lib/BUILD.gn @@ -4,7 +4,7 @@ group("lib") { "//compiler-rt/lib/builtins", "//compiler-rt/lib/cfi:ignorelist($host_toolchain)", ] - if (current_os == "linux") { + if (current_os == "linux" && current_cpu == "x64") { deps += [ "//compiler-rt/lib/msan" ] } if (current_os == "linux" || current_os == "android") { diff --git a/llvm/utils/gn/secondary/compiler-rt/test/test.gni b/llvm/utils/gn/secondary/compiler-rt/test/test.gni index 2d1aa0721248e..01de4ee09256c 100644 --- a/llvm/utils/gn/secondary/compiler-rt/test/test.gni +++ b/llvm/utils/gn/secondary/compiler-rt/test/test.gni @@ -10,7 +10,7 @@ declare_args() { target_flags_string = "" -foreach(flag, target_flags + target_ldflags) { +foreach(flag, target_flags + target_cflags + target_ldflags) { if (target_flags_string != "") { target_flags_string += " " }