Set ARCH to x86 on mixed 32/64-bit Linux systems.
authorNick Lewycky <nicholas@mxc.ca>
Thu, 12 Mar 2009 03:34:19 +0000 (03:34 +0000)
committerNick Lewycky <nicholas@mxc.ca>
Thu, 12 Mar 2009 03:34:19 +0000 (03:34 +0000)
Remove the explicit if OS = Darwin test around the setting of -m32/-m64.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66765 91177308-0d34-0410-b5e6-96231b3b80d8

Makefile.rules
autoconf/configure.ac
autoconf/m4/linux_mixed_64_32.m4 [new file with mode: 0644]

index 66d90f12094ca883416b8dd5311c49547174105f..59d844010bb17aabea83da7ad6906d2d46ed7254 100644 (file)
@@ -522,13 +522,11 @@ ifdef UNIVERSAL
   # Building universal cannot compute dependencies automatically.
   DISABLE_AUTO_DEPENDENCIES=1
 else
-  ifeq ($(OS),Darwin)
-    ifeq ($(ARCH),x86_64)
-      CompileCommonOpts += -m64
-    else
-      ifeq ($(ARCH),x86)
-        CompileCommonOpts += -m32
-      endif
+  ifeq ($(ARCH),x86_64)
+    CompileCommonOpts += -m64
+  else
+    ifeq ($(ARCH),x86)
+      CompileCommonOpts += -m32
     endif
   endif
 endif
index d6c89e3600926f2b3559f3191213645d3d1a44ad..1ef8536412d8631c44890aa7c42fdf006ee0c3a6 100644 (file)
@@ -233,6 +233,13 @@ if test "$llvm_cv_target_arch" = "Unknown" ; then
   AC_MSG_WARN([Configuring LLVM for an unknown target archicture])
 fi
 
+if test "$llvm_cv_os_type" = "Linux" -a "$llvm_cv_target_arch" = "x86_64" ; then
+  AC_IS_LINUX_MIXED
+  if test "$llvm_cv_linux_mixed" = "yes"; then
+    llvm_cv_target_arch="x86"
+  fi
+fi
+
 dnl Define a substitution, ARCH, for the target architecture
 AC_SUBST(ARCH,$llvm_cv_target_arch)
 
diff --git a/autoconf/m4/linux_mixed_64_32.m4 b/autoconf/m4/linux_mixed_64_32.m4
new file mode 100644 (file)
index 0000000..7c781ac
--- /dev/null
@@ -0,0 +1,17 @@
+#
+# Some Linux machines run a 64-bit kernel with a 32-bit userspace. 'uname -m'
+# shows these at x86_64, so in that case, ask the system 'gcc' what it thinks.
+#
+AC_DEFUN([AC_IS_LINUX_MIXED],
+[AC_CACHE_CHECK(for 32-bit userspace on 64-bit system,llvm_cv_linux_mixed,
+[ AC_LANG_PUSH([C])
+  AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
+      [[#ifndef __x86_64__
+       error: Not x86-64 even if uname says so!
+      #endif
+      ]])],
+      [llvm_cv_linux_mixed=no],
+      [llvm_cv_linux_mixed=yes])
+  AC_LANG_POP([C])
+])
+])