From 8bc080358f15ab814822e29795b17dbaceb769e7 Mon Sep 17 00:00:00 2001 From: Nick Lewycky Date: Thu, 12 Mar 2009 03:34:19 +0000 Subject: [PATCH] Set ARCH to x86 on mixed 32/64-bit Linux systems. 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 | 12 +++++------- autoconf/configure.ac | 7 +++++++ autoconf/m4/linux_mixed_64_32.m4 | 17 +++++++++++++++++ 3 files changed, 29 insertions(+), 7 deletions(-) create mode 100644 autoconf/m4/linux_mixed_64_32.m4 diff --git a/Makefile.rules b/Makefile.rules index 66d90f12094..59d844010bb 100644 --- a/Makefile.rules +++ b/Makefile.rules @@ -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 diff --git a/autoconf/configure.ac b/autoconf/configure.ac index d6c89e36009..1ef8536412d 100644 --- a/autoconf/configure.ac +++ b/autoconf/configure.ac @@ -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 index 00000000000..7c781ac2801 --- /dev/null +++ b/autoconf/m4/linux_mixed_64_32.m4 @@ -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]) +]) +]) -- 2.11.0