From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 22050 invoked by alias); 11 Nov 2011 15:45:47 -0000 Received: (qmail 22032 invoked by uid 22791); 11 Nov 2011 15:45:44 -0000 X-SWARE-Spam-Status: No, hits=-0.7 required=5.0 tests=AWL,BAYES_40 X-Spam-Check-By: sourceware.org Received: from mail175c2.megamailservers.com (HELO mail175c2.megamailservers.com) (69.49.111.75) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Fri, 11 Nov 2011 15:45:25 +0000 X-Authenticated-User: konrad.gaisler.com Received: from [192.168.0.37] (gaisler.se [92.33.28.242]) (authenticated bits=0) by mail175c2.megamailservers.com (8.13.6/8.13.1) with ESMTP id pABFjJrs012205; Fri, 11 Nov 2011 10:45:21 -0500 Message-ID: <4EBD4169.4030906@gaisler.com> Date: Fri, 11 Nov 2011 15:45:00 -0000 From: Konrad Eisele User-Agent: Mozilla/5.0 (X11; Linux i686; rv:7.0.1) Gecko/20110928 Firefox/7.0.1 SeaMonkey/2.4.1 MIME-Version: 1.0 To: crossgcc@sourceware.org CC: yann.morin.1998@anciens.enib.fr Subject: simple multilib option Content-Type: multipart/mixed; boundary="------------070104090601090306000600" X-CSC: 0 X-CHA: v=1.1 cv=Dt2dKqGHsKqylFsReVPyCOhFPYlE1w6lK6qBgE09yz8= c=1 sm=1 a=CIB-vgOadyEA:10 a=U62ajLuCel8A:10 a=jXKJviUpWSOlMmIvGrHOfw==:17 a=3susCqsote4GAbYFqikA:9 a=wPNLvfGTeEIA:10 a=ebG-ZW-8AAAA:8 a=mDV3o1hIAAAA:8 a=P1SnRKkiOCje08z5NIEA:9 a=m_OFwljrw9k1U8DhFCIA:7 a=cCYF7-FHeg4A:10 a=jXKJviUpWSOlMmIvGrHOfw==:117 Mailing-List: contact crossgcc-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: crossgcc-owner@sourceware.org X-SW-Source: 2011-11/txt/msg00029.txt.bz2 --------------070104090601090306000600 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Content-length: 822 Appended is a patch that adds simple glibc multilib capability. scripts/build/libc/glibc-eglibc.sh-common main part: do_libc_backend_multilib(): calls "do_libc_backend" multilib-times with 2 options extra_dir="/${dir}" extra_flags="${flags}" at the end do_libc_backend_rearrange is called to rearange the sysroot directories. config/cc/gcc.in.2 Add CC_MULTILIB option patches/gcc/4.6.0/200-sparc-leon.patch Multilibbed sparc-leon compile. The multilibbed gcc is compiled with Vendor set to "leon3" patches/glibc/2.14/400-sparc-leon.patch Some fixes to get glibc-2.14 compiled with soft-float patches/glibc/2.14/401-s_fma_f.patch Some fixes to get glibc-2.14 compiled with soft-float scripts/build/binutils/binutils.sh add multilib scripts/build/cc/gcc.sh add multilib -- Konrad --------------070104090601090306000600 Content-Type: text/x-patch; name="multilib.patch" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="multilib.patch" Content-length: 21719 >From 4852e498b05e4c68f8a2170939a0572bdd45cd6b Mon Sep 17 00:00:00 2001 From: Konrad Eisele Date: Thu, 10 Nov 2011 15:01:45 +0100 Subject: [PATCH] add multilib option --- diff --git a/build/lib/ct-ng-/scripts/build/libc/glibc-eglibc.sh-common b/build/lib/ct-ng-/scripts/build/libc/glibc-eglibc.sh-common index 2af3a9a..3218656 100644 --- a/scripts/build/libc/glibc-eglibc.sh-common +++ b/scripts/build/libc/glibc-eglibc.sh-common @@ -57,18 +57,99 @@ do_libc_extract() { do_libc_start_files() { # Start files and Headers should be configured the same way as the # final libc, but built and installed differently. - do_libc_backend libc_mode=startfiles + do_libc_backend_multilib libc_mode=startfiles } # This function builds and install the full C library do_libc() { - do_libc_backend libc_mode=final + do_libc_backend_multilib libc_mode=final } +# installation is done into ${CT_SYSROOT_DIR}/${dir}. The multilib prefix has to be included +# to reflect the runtime setting. +do_libc_backend_rearrange() { + + local libc_mode=final + + while [ $# -ne 0 ]; do + eval "${1// /\\ }" + shift + done + + if [ "${libc_mode}" = "final" ]; then + cross_cc=$(CT_Which "${CT_TARGET}-gcc") + for i in `${cross_cc} --print-multi-lib 2>/dev/null`; do + dir=`echo $i | sed -e 's/;.*$//'`; + bdir=`echo ${dir} | sed -e 's/\//\\\\\//g'` + if [ "${dir}" = "." ]; then + true; + else + flags=`echo $i | sed -e 's/^[^;]*;//' -e 's/@/ -/g'`; + CT_DoStep INFO "Fixing up multilib location ${CT_SYSROOT_DIR}/${dir}/lib to ${CT_SYSROOT_DIR}/lib/${dir}" + mkdir -p ${CT_SYSROOT_DIR}/lib/${dir} + mkdir -p ${CT_SYSROOT_DIR}/usr/lib/${dir} + + # recreate the symbolic links for multilib + find ${CT_SYSROOT_DIR}/usr/lib/${dir}/ -type l -maxdepth 1 > ${CT_SYSROOT_DIR}/usr/lib/${dir}/links + for f in `cat ${CT_SYSROOT_DIR}/usr/lib/${dir}/links`; do + fn=`basename $f` + ln=`readlink $f` + ln=`basename $ln` + pre=`echo ${dir} | awk '{r="";c=split($0,b,"/");for(i=0;i ${CT_SYSROOT_DIR}/${d}/${l}.so + fi + fi + done + done + CT_EndStep + fi + done; + fi +} + +# call do_libc_backend times with varying and options +do_libc_backend_multilib() { + local flags=""; local i; local dir; + cross_cc=$(CT_Which "${CT_TARGET}-gcc") + if [ "${CT_CC_MULTILIB}" = "y" ]; then + CT_DoStep INFO "C Library with multilib" + CT_DoStep INFO "C Library with multilib. Flags: \"\" Dir: \"\"" + # first create to create ${CT_HEADERS_DIR} dir + do_libc_backend "$@" + CT_EndStep + for i in `${cross_cc} --print-multi-lib 2>/dev/null`; do + dir=`echo $i | sed -e 's/;.*$//'`; + if [ "${dir}" = "." ]; then + true; + else + flags=`echo $i | sed -e 's/^[^;]*;//' -e 's/@/ -/g'`; + CT_DoStep INFO "C Library with multilib. Flags: \"${flags}\" Dir: \"${dir}\"" + do_libc_backend "$@" extra_dir="/${dir}" extra_flags="${flags}" + CT_EndStep + fi + done; + do_libc_backend_rearrange + CT_EndStep + else + do_libc_backend "$@" + fi +} + do_libc_backend() { local src_dir="${CT_SRC_DIR}/${CT_LIBC}-${CT_LIBC_VERSION}" local libc_mode=final local extra_cc_args + local extra_dir=""; local extra_dir_p; + local extra_flags="" local -a extra_config local -a extra_make_args local glibc_cflags @@ -77,15 +158,16 @@ do_libc_backend() { eval "${1// /\\ }" shift done - + extra_dir_p=`echo ${extra_dir} | sed -e 's/\///g'` + if [ "${libc_mode}" = "startfiles" ]; then CT_DoStep INFO "Installing C library headers & start files" - mkdir -p "${CT_BUILD_DIR}/build-libc-start-files" - cd "${CT_BUILD_DIR}/build-libc-start-files" + mkdir -p "${CT_BUILD_DIR}/build-libc-start-files${extra_dir_p}" + cd "${CT_BUILD_DIR}/build-libc-start-files${extra_dir_p}" else # libc_mode = final CT_DoStep INFO "Installing C library" - mkdir -p "${CT_BUILD_DIR}/build-libc" - cd "${CT_BUILD_DIR}/build-libc" + mkdir -p "${CT_BUILD_DIR}/build-libc${extra_dir_p}" + cd "${CT_BUILD_DIR}/build-libc${extra_dir_p}" fi CT_DoLog EXTRA "Configuring C library" @@ -133,7 +215,13 @@ do_libc_backend() { esac case "${CT_ARCH_FLOAT_HW},${CT_ARCH_FLOAT_SW}" in - y,) extra_config+=("--with-fp");; + y,) # if it is a build then check if -msoft-float is given + if [ "x`expr "${extra_flags}" : '.*-msoft-float.*'`" != "x0" ]; then + extra_config+=("--with-fp=no"); + else + extra_config+=("--with-fp"); + fi + ;; ,y) extra_config+=("--without-fp");; esac @@ -173,7 +261,7 @@ do_libc_backend() { CT_DoLog DEBUG "Extra config args passed: '${extra_config[*]}'" CT_DoLog DEBUG "Extra CC args passed : '${extra_cc_args}'" - glibc_cflags="${CT_TARGET_CFLAGS} ${CT_LIBC_GLIBC_EXTRA_CFLAGS} ${OPTIMIZE}" + glibc_cflags="${CT_TARGET_CFLAGS} ${CT_LIBC_GLIBC_EXTRA_CFLAGS} ${OPTIMIZE} ${extra_flags}" case "${CT_LIBC_ENABLE_FORTIFIED_BUILD}" in y) ;; *) glibc_cflags+=" -U_FORTIFY_SOURCE";; @@ -236,7 +324,7 @@ do_libc_backend() { # use the 'install-headers' makefile target to install the # headers CT_DoExecLog ALL make ${JOBSFLAGS} \ - install_root=${CT_SYSROOT_DIR} \ + install_root=${CT_SYSROOT_DIR}${extra_dir} \ install-bootstrap-headers=yes \ "${extra_make_args[@]}" \ install-headers @@ -273,12 +361,12 @@ do_libc_backend() { # there are a few object files needed to link shared libraries, # which we build and install by hand - CT_DoExecLog ALL mkdir -p "${CT_SYSROOT_DIR}/usr/lib" + CT_DoExecLog ALL mkdir -p "${CT_SYSROOT_DIR}${extra_dir}/usr/lib" CT_DoExecLog ALL make ${JOBSFLAGS} \ "${extra_make_args[@]}" \ csu/subdir_lib CT_DoExecLog ALL cp csu/crt1.o csu/crti.o csu/crtn.o \ - "${CT_SYSROOT_DIR}/usr/lib" + "${CT_SYSROOT_DIR}${extra_dir}/usr/lib" # Finally, 'libgcc_s.so' requires a 'libc.so' to link against. # However, since we will never actually execute its code, @@ -288,9 +376,13 @@ do_libc_backend() { -nostartfiles \ -shared \ -x c /dev/null \ - -o "${CT_SYSROOT_DIR}/usr/lib/libc.so" + -o "${CT_SYSROOT_DIR}${extra_dir}/usr/lib/libc.so" fi # threads == nptl else # libc_mode = final + CT_DoLog EXTRA "Prepare C library" + CT_DoExecLog ALL make ${JOBSFLAGS} \ + "${extra_make_args[@]}" \ + clean CT_DoLog EXTRA "Building C library" CT_DoExecLog ALL make ${JOBSFLAGS} \ "${extra_make_args[@]}" \ @@ -299,7 +391,7 @@ do_libc_backend() { CT_DoLog EXTRA "Installing C library" CT_DoExecLog ALL make ${JOBSFLAGS} \ "${extra_make_args[@]}" \ - install_root="${CT_SYSROOT_DIR}" \ + install_root="${CT_SYSROOT_DIR}${extra_dir}" \ install if [ "${CT_LIBC_LOCALES}" = "y" ]; then diff --git a/config/cc/gcc.in.2 b/config/cc/gcc.in.2 index 35a1070..8fe3a2e 100644 --- a/config/cc/gcc.in.2 +++ b/config/cc/gcc.in.2 @@ -1,4 +1,10 @@ # gcc configuration options +config CC_MULTILIB + bool + prompt "enable multilib" + default n + help + Enable multilib build of libc config CC_ENABLE_CXX_FLAGS string @@ -11,6 +17,7 @@ config CC_ENABLE_CXX_FLAGS Note: just pass in the option _value_, that is only the part that goes after the '=' sign. + config CC_CORE_EXTRA_CONFIG_ARRAY string prompt "Core gcc extra config" diff --git a/patches/gcc/4.6.0/200-sparc-leon.patch b/patches/gcc/4.6.0/200-sparc-leon.patch index 5a92838..1d97105 100644 --- a/patches/gcc/4.6.0/200-sparc-leon.patch +++ b/patches/gcc/4.6.0/200-sparc-leon.patch @@ -105,10 +105,10 @@ index 1c2ba93..5aadff6 100644 { TARGET_CPU_ultrasparc3, "ultrasparc3" }, { TARGET_CPU_niagara, "niagara" }, { TARGET_CPU_niagara2, "niagara2" }, -+ { TARGET_CPU_sparchfleon, "sparchfleon" }, -+ { TARGET_CPU_sparchfleonv8, "sparchfleonv8" }, -+ { TARGET_CPU_sparcsfleon, "sparcsfleon" }, -+ { TARGET_CPU_sparcsfleonv8, "sparcsfleonv8" }, ++ { TARGET_CPU_sparchfleon, "hfleon" }, ++ { TARGET_CPU_sparchfleonv8, "hfleonv8" }, ++ { TARGET_CPU_sparcsfleon, "sfleon" }, ++ { TARGET_CPU_sparcsfleonv8, "sfleonv8" }, { 0, 0 } }; const struct cpu_default *def; @@ -119,10 +119,10 @@ index 1c2ba93..5aadff6 100644 - { "leon", PROCESSOR_LEON, MASK_ISA, MASK_V8|MASK_FPU }, + { "leon", PROCESSOR_LEON, MASK_ISA, MASK_FPU }, { "sparclite", PROCESSOR_SPARCLITE, MASK_ISA, MASK_SPARCLITE }, -+ { "sparchfleon", PROCESSOR_LEON, MASK_ISA, MASK_FPU }, -+ { "sparchfleonv8", PROCESSOR_LEON, MASK_ISA & ~(MASK_V8), MASK_V8|MASK_FPU }, -+ { "sparcsfleon", PROCESSOR_LEON, MASK_ISA | MASK_FPU, 0 }, -+ { "sparcsfleonv8", PROCESSOR_LEON, (MASK_ISA | MASK_FPU) & ~(MASK_V8), MASK_V8 }, ++ { "hfleon", PROCESSOR_LEON, MASK_ISA, MASK_FPU }, ++ { "hfleonv8", PROCESSOR_LEON, MASK_ISA & ~(MASK_V8), MASK_V8|MASK_FPU }, ++ { "sfleon", PROCESSOR_LEON, MASK_ISA | MASK_FPU, 0 }, ++ { "sfleonv8", PROCESSOR_LEON, (MASK_ISA | MASK_FPU) & ~(MASK_V8), MASK_V8 }, /* The Fujitsu MB86930 is the original sparclite chip, with no FPU. */ { "f930", PROCESSOR_F930, MASK_ISA|MASK_FPU, MASK_SPARCLITE }, /* The Fujitsu MB86934 is the recent sparclite chip, with an FPU. */ @@ -197,10 +197,10 @@ index 297844f..5e28646 100644 %{mcpu=ultrasparc3:-D__sparc_v9__} \ %{mcpu=niagara:-D__sparc_v9__} \ %{mcpu=niagara2:-D__sparc_v9__} \ -+%{mcpu=sparchfleon:-D__leon__} \ -+%{mcpu=sparchfleonv8:-D__leon__ -D__sparc_v8__} \ -+%{mcpu=sparcsfleon:-D__leon__ -D_SOFT_FLOAT} \ -+%{mcpu=sparcsfleonv8:-D__leon__ -D_SOFT_FLOAT -D__sparc_v8__} \ ++%{mcpu=hfleon:-D__leon__} \ ++%{mcpu=hfleonv8:-D__leon__ -D__sparc_v8__} \ ++%{mcpu=sfleon:-D__leon__ -D_SOFT_FLOAT} \ ++%{mcpu=sfleonv8:-D__leon__ -D_SOFT_FLOAT -D__sparc_v8__} \ %{!mcpu*:%(cpp_cpu_default)} \ " #define CPP_ARCH32_SPEC "" @@ -209,10 +209,10 @@ index 297844f..5e28646 100644 %{mcpu=f930:-Asparclite} %{mcpu=f934:-Asparclite} \ %{mv8plus:-Av8plus} \ +%{mcpu=leon:-Aleon} \ -+%{mcpu=sparchfleon:-Aleon} \ -+%{mcpu=sparchfleonv8:-Aleon} \ -+%{mcpu=sparcsfleon:-Aleon} \ -+%{mcpu=sparcsfleonv8:-Aleon} \ ++%{mcpu=hfleon:-Aleon} \ ++%{mcpu=hfleonv8:-Aleon} \ ++%{mcpu=sfleon:-Aleon} \ ++%{mcpu=sfleonv8:-Aleon} \ %{mcpu=v9:-Av9} \ %{mcpu=ultrasparc:%{!mv8plus:-Av9a}} \ %{mcpu=ultrasparc3:%{!mv8plus:-Av9b}} \ diff --git a/patches/glibc/2.14/400-sparc-leon.patch b/patches/glibc/2.14/400-sparc-leon.patch new file mode 100644 index 0000000..dcf8219 --- /dev/null +++ b/patches/glibc/2.14/400-sparc-leon.patch @@ -0,0 +1,85 @@ +diff -Naur glibc-2.14.ori/math/math.h glibc-2.14.p2/math/math.h +--- glibc-2.14.ori/math/math.h 2011-05-31 06:12:33.000000000 +0200 ++++ glibc-2.14.p2/math/math.h 2011-11-10 17:03:08.000000000 +0100 +@@ -396,7 +396,7 @@ + # define __NO_MATH_INLINES 1 + #endif + +-#if defined __USE_ISOC99 && __GNUC_PREREQ(2,97) ++#if (!(defined(__sparc__) && defined(_SOFT_FLOAT))) && defined __USE_ISOC99 && __GNUC_PREREQ(2,97) + /* ISO C99 defines some macros to compare number while taking care for + unordered numbers. Many FPUs provide special instructions to support + these operations. Generic support in GCC for these as builtins went +diff -Naur glibc-2.14.ori/sysdeps/sparc/fpu/bits/mathinline.h glibc-2.14.p2/sysdeps/sparc/fpu/bits/mathinline.h +--- glibc-2.14.ori/sysdeps/sparc/fpu/bits/mathinline.h 2011-05-31 06:12:33.000000000 +0200 ++++ glibc-2.14.p2/sysdeps/sparc/fpu/bits/mathinline.h 2011-11-10 17:03:35.000000000 +0100 +@@ -232,6 +232,9 @@ + + /* This code is used internally in the GNU libc. */ + # ifdef __LIBC_INTERNAL_MATH_INLINES ++ ++#ifndef _SOFT_FLOAT ++ + __MATH_INLINE double + __ieee754_sqrt (double __x) + { +@@ -248,6 +251,8 @@ + return __r; + } + ++#endif ++ + # if __WORDSIZE == 64 + __MATH_INLINE long double + __ieee754_sqrtl (long double __x) +diff -Naur glibc-2.14.ori/sysdeps/sparc/fpu/fraiseexcpt.c glibc-2.14.p2/sysdeps/sparc/fpu/fraiseexcpt.c +--- glibc-2.14.ori/sysdeps/sparc/fpu/fraiseexcpt.c 2011-05-31 06:12:33.000000000 +0200 ++++ glibc-2.14.p2/sysdeps/sparc/fpu/fraiseexcpt.c 2011-11-10 17:03:58.000000000 +0100 +@@ -32,6 +32,10 @@ + }; + double d; + ++#ifdef _SOFT_FLOAT ++#define __asm(...) ++#endif ++ + /* Raise exceptions represented by EXPECTS. But we must raise only + one signal at a time. It is important the if the overflow/underflow + exception and the inexact exception are given at the same time, +diff -Naur glibc-2.14.ori/sysdeps/sparc/sparc32/Makefile glibc-2.14.p2/sysdeps/sparc/sparc32/Makefile +--- glibc-2.14.ori/sysdeps/sparc/sparc32/Makefile 2011-05-31 06:12:33.000000000 +0200 ++++ glibc-2.14.p2/sysdeps/sparc/sparc32/Makefile 2011-11-10 17:04:56.000000000 +0100 +@@ -24,6 +24,11 @@ + CFLAGS-initfini.s += -mcpu=v7 + endif + ++ifeq ($(with-fp),no) +++cflags += -msoft-float -D_SOFT_FLOAT ++sysdep-LDFLAGS += -msoft-float ++endif ++ + # We distribute these files, even though they are generated, + # so as to avoid the need for a functioning m4 to build the library. + divrem := sdiv udiv rem urem +diff -Naur glibc-2.14.ori/sysdeps/sparc/sparc32/e_sqrt.c glibc-2.14.p2/sysdeps/sparc/sparc32/e_sqrt.c +--- glibc-2.14.ori/sysdeps/sparc/sparc32/e_sqrt.c 2011-05-31 06:12:33.000000000 +0200 ++++ glibc-2.14.p2/sysdeps/sparc/sparc32/e_sqrt.c 2011-11-10 17:04:24.000000000 +0100 +@@ -23,6 +23,8 @@ + #error This file uses GNU C extensions; you must compile with GCC. + #endif + ++#ifndef _SOFT_FLOAT ++ + /* Return the square root of X. */ + double + __ieee754_sqrt (x) +@@ -32,3 +34,9 @@ + asm ("fsqrtd %1, %0" : "=f" (result) : "f" (x)); + return result; + } ++#else ++ ++#include ++ ++#endif ++ diff --git a/patches/glibc/2.14/401-s_fma_f.patch b/patches/glibc/2.14/401-s_fma_f.patch new file mode 100644 index 0000000..071dd9c --- /dev/null +++ b/patches/glibc/2.14/401-s_fma_f.patch @@ -0,0 +1,52 @@ +diff -Naur glibc-2.14.base/sysdeps/ieee754/dbl-64/s_fmaf.c glibc-2.14/sysdeps/ieee754/dbl-64/s_fmaf.c +--- glibc-2.14.base/sysdeps/ieee754/dbl-64/s_fmaf.c 2011-11-11 09:48:40.000000000 +0100 ++++ glibc-2.14/sysdeps/ieee754/dbl-64/s_fmaf.c 2011-11-11 10:03:51.000000000 +0100 +@@ -18,6 +18,10 @@ + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ + ++#ifdef _SOFT_FLOAT ++#include ++#else ++ + #include + #include + #include +@@ -48,3 +52,4 @@ + #ifndef __fmaf + weak_alias (__fmaf, fmaf) + #endif ++#endif +diff -Naur glibc-2.14.base/sysdeps/ieee754/ldbl-opt/s_fma.c glibc-2.14/sysdeps/ieee754/ldbl-opt/s_fma.c +--- glibc-2.14.base/sysdeps/ieee754/ldbl-opt/s_fma.c 2011-11-11 09:48:40.000000000 +0100 ++++ glibc-2.14/sysdeps/ieee754/ldbl-opt/s_fma.c 2011-11-11 10:00:13.000000000 +0100 +@@ -1,5 +1,9 @@ + #include ++#ifdef _SOFT_FLOAT ++#include ++#else + #include ++#endif + #if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1) + compat_symbol (libm, __fma, fmal, GLIBC_2_1); + #endif +diff -Naur glibc-2.14.ori/sysdeps/ieee754/ldbl-128/s_fmal.c glibc-2.14/sysdeps/ieee754/ldbl-128/s_fmal.c +--- glibc-2.14.ori/sysdeps/ieee754/ldbl-128/s_fmal.c 2011-11-11 11:03:30.000000000 +0100 ++++ glibc-2.14/sysdeps/ieee754/ldbl-128/s_fmal.c 2011-11-11 11:07:32.000000000 +0100 +@@ -18,6 +18,10 @@ + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ + ++#ifdef _SOFT_FLOAT ++#include ++#else ++ + #include + #include + #include +@@ -221,3 +225,5 @@ + } + } + weak_alias (__fmal, fmal) ++ ++#endif diff --git a/scripts/build/binutils/binutils.sh b/scripts/build/binutils/binutils.sh index e082590..7969b13 100644 --- a/scripts/build/binutils/binutils.sh +++ b/scripts/build/binutils/binutils.sh @@ -60,6 +60,12 @@ do_binutils() { [ -n "${CT_TOOLCHAIN_BUGURL}" ] && extra_config+=("--with-bugurl=${CT_TOOLCHAIN_BUGURL}") fi + if [ "${CT_CC_MULTILIB}" = "n" ]; then + extra_config+=("--disable-multilib") + else + extra_config+=("--enable-multilib") + fi + CT_DoLog DEBUG "Extra config passed: '${extra_config[*]}'" CT_DoExecLog CFG \ @@ -71,7 +77,6 @@ do_binutils() { --target=${CT_TARGET} \ --prefix=${CT_PREFIX_DIR} \ --disable-nls \ - --disable-multilib \ --disable-werror \ "${extra_config[@]}" \ ${CT_ARCH_WITH_FLOAT} \ @@ -151,7 +156,13 @@ do_binutils_target() { extra_config+=("--with-pkgversion=${CT_PKGVERSION}") [ -n "${CT_TOOLCHAIN_BUGURL}" ] && extra_config+=("--with-bugurl=${CT_TOOLCHAIN_BUGURL}") fi - + + if [ "${CT_CC_MULTILIB}" = "n" ]; then + extra_config+=("--disable-multilib") + else + extra_config+=("--enable-multilib") + fi + CT_DoExecLog CFG \ "${CT_SRC_DIR}/binutils-${CT_BINUTILS_VERSION}/configure" \ --build=${CT_BUILD} \ @@ -162,7 +173,6 @@ do_binutils_target() { --enable-shared \ --enable-static \ --disable-nls \ - --disable-multilib \ "${extra_config[@]}" \ ${CT_ARCH_WITH_FLOAT} \ "${CT_BINUTILS_EXTRA_CONFIG[@]}" diff --git a/scripts/build/cc/gcc.sh b/scripts/build/cc/gcc.sh index 05df729..e496803 100644 --- a/scripts/build/cc/gcc.sh +++ b/scripts/build/cc/gcc.sh @@ -288,6 +288,12 @@ do_cc_core() { extra_config+=(--disable-libgomp) extra_config+=(--disable-libmudflap) + if [ "${CT_CC_MULTILIB}" = "n" ]; then + extra_config+=("--disable-multilib") + else + extra_config+=("--enable-multilib") + fi + CT_DoLog DEBUG "Extra config passed: '${extra_config[*]}'" # Use --with-local-prefix so older gccs don't look in /usr/local (http://gcc.gnu.org/PR10532) @@ -301,7 +307,6 @@ do_cc_core() { --target=${CT_TARGET} \ --prefix="${core_prefix_dir}" \ --with-local-prefix="${CT_SYSROOT_DIR}" \ - --disable-multilib \ --disable-libmudflap \ ${CC_CORE_SYSROOT_ARG} \ "${extra_config[@]}" \ @@ -424,7 +429,13 @@ do_cc() { lang_opt=$(echo "${lang_opt},${CT_CC_LANG_OTHERS}" |sed -r -e 's/,+/,/g; s/,*$//;') extra_config+=("--enable-languages=${lang_opt}") - extra_config+=("--disable-multilib") + + if [ "${CT_CC_MULTILIB}" = "n" ]; then + extra_config+=("--disable-multilib") + else + extra_config+=("--enable-multilib") + fi + for tmp in ARCH ABI CPU TUNE FPU FLOAT; do eval tmp="\${CT_ARCH_WITH_${tmp}}" if [ -n "${tmp}" ]; then -- 1.6.5.4 --------------070104090601090306000600 Content-Type: text/plain; charset=us-ascii Content-length: 71 -- For unsubscribe information see http://sourceware.org/lists.html#faq --------------070104090601090306000600--