From 8c98245fd779d9aa1ae9b33524bc504f91d5dcae Mon Sep 17 00:00:00 2001 From: Pedro Alves Date: Wed, 6 Jan 2010 22:33:32 -0500 Subject: [PATCH] Make 64 bit compilation on 32 bit compiler possible This patch is to be able to build ust with `i686-unknown-pc-gnu-gcc -m64', that is, 32-bit compiler, 64-bit multilib. --- configure.ac | 34 ++++++++++++++++++++++++++++++---- 1 file changed, 30 insertions(+), 4 deletions(-) diff --git a/configure.ac b/configure.ac index b0320b0..73e95bb 100644 --- a/configure.ac +++ b/configure.ac @@ -64,12 +64,38 @@ AC_CHECK_LIB([urcu-bp], [synchronize_rcu], [], [AC_MSG_ERROR([Cannot find liburc AC_CHECK_HEADERS([kcompat.h], [], [AC_MSG_ERROR([Cannot find kcompat headers (kcompat.h). Use [CFLAGS]=-Idir to specify their location.])]) +# Check for various supplementary host information (beyond the +# triplet) which might affect the library format choices. E.g., we +# can be building with `i686-unknown-linux-gnu-gcc -m64' + +case "${host}" in +changequote(,)dnl + i[34567]86-*-linux*) +changequote([,])dnl + AC_CACHE_CHECK([if building for x86-64], [ust_cv_i386_is_x86_64], + [save_CPPFLAGS="$CPPFLAGS" + CPPFLAGS="$CPPFLAGS $CFLAGS" + AC_EGREP_CPP([got it], [ +#if __x86_64__ +got it +#endif + ], [ust_cv_i386_is_x86_64=yes], + [ust_cv_i386_is_x86_64=no]) + CPPFLAGS="$save_CPPFLAGS"]) + ;; +esac + AC_MSG_CHECKING([library format for the host system]) case $host_cpu in - i386) LIBFORMAT="elf32-i386" ;; - i486) LIBFORMAT="elf32-i386" ;; - i586) LIBFORMAT="elf32-i386" ;; - i686) LIBFORMAT="elf32-i386" ;; +changequote(,)dnl + i[3456]86) +changequote([,])dnl + if test "$ust_cv_i386_is_x86_64" = yes ; then + LIBFORMAT="elf64-x86-64" + else + LIBFORMAT="elf32-i386" + fi + ;; x86_64) LIBFORMAT="elf64-x86-64" ;; ppc) LIBFORMAT="elf32-powerpc" ;; ppc64) LIBFORMAT="elf64-powerpc" ;; -- 2.34.1