From e966d976fc35c8237a557cef53d1fbf952ff99cd Mon Sep 17 00:00:00 2001 From: Nathan Froyd Date: Fri, 12 May 2017 14:21:27 -0400 Subject: [PATCH] explicitly specify bitness for x86 cross-compilation situations Despite compiling for architecture X, the user may have specified a clang that defaults to architecture Y. We need to ensure that we invoke clang with the correct architecture selection. We do not use --target to do this, however, because that runs into problems with LLVM's default search paths. For the x86 case, we can simply use -m$BITNESS to select the correct architecture. --- components/style/build_gecko.rs | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/components/style/build_gecko.rs b/components/style/build_gecko.rs index 3b80bd33819..b7f4baaf51f 100644 --- a/components/style/build_gecko.rs +++ b/components/style/build_gecko.rs @@ -153,6 +153,15 @@ mod bindings { } if cfg!(target_os = "linux") { builder = builder.clang_arg("-DOS_LINUX=1"); + // We may be cross-compiling with a clang that defaults to + // a different architecture, so we should explicitly specify + // the bitness being used here. Specifying --target instead + // leads to difficulties with LLVM search paths. + if cfg!(target_arch = "x86") { + builder = builder.clang_arg("-m32") + } else if cfg!(target_arch = "x86_64") { + builder = builder.clang_arg("-m64") + } } else if cfg!(target_os = "solaris") { builder = builder.clang_arg("-DOS_SOLARIS=1"); } else if cfg!(target_os = "dragonfly") {