From: Konrad Eisele <konrad@gaisler.com>
To: crossgcc@sourceware.org
Cc: yann.morin.1998@anciens.enib.fr
Subject: simple multilib option
Date: Fri, 11 Nov 2011 15:45:00 -0000 [thread overview]
Message-ID: <4EBD4169.4030906@gaisler.com> (raw)
[-- Attachment #1: Type: text/plain, Size: 822 bytes --]
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
[-- Attachment #2: multilib.patch --]
[-- Type: text/x-patch, Size: 21718 bytes --]
From 4852e498b05e4c68f8a2170939a0572bdd45cd6b Mon Sep 17 00:00:00 2001
From: Konrad Eisele <konrad@gaisler.com>
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<c;i++){if(i!=0){r=r "/";}r=r "..";}; printf("%s",r); }'`
+ (cd ${CT_SYSROOT_DIR}/usr/lib/${dir}/; ln -sf ../../${pre}/lib/${dir}/$ln $fn)
+ done
+
+ # rewrite the library multiplexers
+ for l in libc libpthread libgcc_s; do
+ for d in lib/${dir} usr/lib/${dir}; do
+ if [ -f "${CT_SYSROOT_DIR}/${d}/${l}.so" -a ! -L ${CT_SYSROOT_DIR}/${d}/${l}.so ]; then
+ if [ ! -f "${CT_SYSROOT_DIR}/${d}/${l}.so_ori_i" ]; then
+ cp ${CT_SYSROOT_DIR}/${d}/${l}.so ${CT_SYSROOT_DIR}/${d}/${l}.so_ori_i
+ cat ${CT_SYSROOT_DIR}/${d}/${l}.so_ori_i | sed -e "s/\/lib\/$l/\/lib\/$bdir\/$l/g" > ${CT_SYSROOT_DIR}/${d}/${l}.so
+ fi
+ fi
+ done
+ done
+ CT_EndStep
+ fi
+ done;
+ fi
+}
+
+# call do_libc_backend <multilib> times with varying <extra_dir> and <extra_flags> 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 <non-multilib> 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 <multilib> 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 <sysdeps/ieee754/dbl-64/e_sqrt.c>
++
++#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 <math/s_fmaf.c>
++#else
++
+ #include <math.h>
+ #include <fenv.h>
+ #include <ieee754.h>
+@@ -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 <math_ldbl_opt.h>
++#ifdef _SOFT_FLOAT
++#include <math/s_fma.c>
++#else
+ #include <sysdeps/ieee754/dbl-64/s_fma.c>
++#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 <math/s_fmal.c>
++#else
++
+ #include <float.h>
+ #include <math.h>
+ #include <fenv.h>
+@@ -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
[-- Attachment #3: Type: text/plain, Size: 71 bytes --]
--
For unsubscribe information see http://sourceware.org/lists.html#faq
next reply other threads:[~2011-11-11 15:45 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-11-11 15:45 Konrad Eisele [this message]
2011-11-12 16:26 ` Yann E. MORIN
2011-11-14 10:38 ` Konrad Eisele
2011-11-14 10:55 ` [PATCH 1/1] Add multilib build support for libc target. Libc is build <multilib>-times in seperate sysroot directories. In a last step links are created to reflect the expected multilib structure Konrad Eisele
2011-11-14 23:25 ` simple multilib option Yann E. MORIN
2011-11-15 10:32 ` Konrad Eisele
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4EBD4169.4030906@gaisler.com \
--to=konrad@gaisler.com \
--cc=crossgcc@sourceware.org \
--cc=yann.morin.1998@anciens.enib.fr \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).