diff --git a/llvm/utils/gn/build/toolchain/BUILD.gn b/llvm/utils/gn/build/toolchain/BUILD.gn --- a/llvm/utils/gn/build/toolchain/BUILD.gn +++ b/llvm/utils/gn/build/toolchain/BUILD.gn @@ -231,6 +231,20 @@ current_cpu = "arm" } } + + stage2_unix_toolchain("stage2_android_x64") { + toolchain_args = { + current_os = "android" + current_cpu = "x64" + } + } + + stage2_unix_toolchain("stage2_android_x86") { + toolchain_args = { + current_os = "android" + current_cpu = "x86" + } + } } if (host_os == "mac") { diff --git a/llvm/utils/gn/build/toolchain/target_flags.gni b/llvm/utils/gn/build/toolchain/target_flags.gni --- a/llvm/utils/gn/build/toolchain/target_flags.gni +++ b/llvm/utils/gn/build/toolchain/target_flags.gni @@ -44,5 +44,5 @@ } if (current_cpu == "x86") { - target_flags = [ "-m32" ] + target_flags += [ "-m32" ] } diff --git a/llvm/utils/gn/secondary/libunwind/src/BUILD.gn b/llvm/utils/gn/secondary/libunwind/src/BUILD.gn --- a/llvm/utils/gn/secondary/libunwind/src/BUILD.gn +++ b/llvm/utils/gn/secondary/libunwind/src/BUILD.gn @@ -55,6 +55,10 @@ unwind_output_dir = "$crt_current_out_dir/aarch64" } else if (current_cpu == "arm") { unwind_output_dir = "$crt_current_out_dir/arm" + } else if (current_cpu == "x64") { + unwind_output_dir = "$crt_current_out_dir/x86_64" + } else if (current_cpu == "x86") { + unwind_output_dir = "$crt_current_out_dir/i386" } } else { unwind_output_dir = runtimes_dir diff --git a/llvm/utils/gn/secondary/llvm/lib/Target/targets.gni b/llvm/utils/gn/secondary/llvm/lib/Target/targets.gni --- a/llvm/utils/gn/secondary/llvm/lib/Target/targets.gni +++ b/llvm/utils/gn/secondary/llvm/lib/Target/targets.gni @@ -114,4 +114,10 @@ supported_android_toolchains += [ "//llvm/utils/gn/build/toolchain:stage2_android_arm" ] } + if (llvm_build_X86) { + supported_android_toolchains += [ + "//llvm/utils/gn/build/toolchain:stage2_android_x64", + "//llvm/utils/gn/build/toolchain:stage2_android_x86", + ] + } } diff --git a/llvm/utils/gn/secondary/llvm/triples.gni b/llvm/utils/gn/secondary/llvm/triples.gni --- a/llvm/utils/gn/secondary/llvm/triples.gni +++ b/llvm/utils/gn/secondary/llvm/triples.gni @@ -3,6 +3,8 @@ llvm_current_triple = "i386-unknown-linux-gnu" } else if (current_os == "win") { llvm_current_triple = "i386-pc-windows-msvc" + } else if (current_os == "android") { + llvm_current_triple = "i386-linux-android29" } } else if (current_cpu == "x64") { if (current_os == "freebsd") { @@ -13,6 +15,8 @@ llvm_current_triple = "x86_64-apple-darwin" } else if (current_os == "win") { llvm_current_triple = "x86_64-pc-windows-msvc" + } else if (current_os == "android") { + llvm_current_triple = "x86_64-linux-android29" } } else if (current_cpu == "arm") { if (current_os == "android") {