gcc: Add toolchain build process changes from OE which adds gcc-cross-intermediate and removes glibc-intermediate based on a patch from Khem Raj as will be aplied to OE.dev making the build process much more rebust/stable/correct.

git-svn-id: https://svn.o-hand.com/repos/poky/trunk@4943 311d38ba-8fff-0310-9ca6-ca027cbcb966
This commit is contained in:
Richard Purdie 2008-07-24 20:30:37 +00:00
parent f9651fac68
commit 87796f6ce0
30 changed files with 158 additions and 68 deletions

View File

@ -6,9 +6,10 @@
TARGET_VENDOR = "-poky"
PREFERRED_PROVIDER_virtual/${TARGET_PREFIX}libc-for-gcc = "glibc-intermediate"
PREFERRED_PROVIDER_virtual/${TARGET_PREFIX}libc-for-gcc = "glibc"
PREFERRED_PROVIDER_virtual/${TARGET_PREFIX}binutils = "binutils-cross"
PREFERRED_PROVIDER_virtual/${TARGET_PREFIX}gcc-initial = "gcc-cross-initial"
PREFERRED_PROVIDER_virtual/${TARGET_PREFIX}gcc-intermediate = "gcc-cross-intermediate"
PREFERRED_PROVIDER_virtual/${TARGET_PREFIX}gcc = "gcc-cross"
PREFERRED_PROVIDER_virtual/${TARGET_PREFIX}g++ = "gcc-cross"
@ -24,10 +25,10 @@ BINUVERSION = "2.18"
PREFERRED_VERSION_gcc ?= "${GCCVERSION}"
PREFERRED_VERSION_gcc-cross ?= "${GCCVERSION}"
PREFERRED_VERSION_gcc-cross-initial ?= "${GCCVERSION}"
PREFERRED_VERSION_gcc-cross-intermediate ?= "${GCCVERSION}"
PREFERRED_VERSION_binutils ?= "${BINUVERSION}"
PREFERRED_VERSION_binutils-cross ?= "${BINUVERSION}"
PREFERRED_VERSION_linux-libc-headers ?= "2.6.24"
PREFERRED_VERSION_glibc ?= "2.6.1"
PREFERRED_VERSION_glibc-intermediate ?= "2.6.1"
PREFERRED_VERSION_glibc-initial ?= "2.6.1"
PREFERRED_VERSION_elfutils ?= "0.108"

View File

@ -3,6 +3,7 @@
#
PREFERRED_PROVIDER_virtual/libc = "uclibc"
PREFERRED_PROVIDER_virtual/${TARGET_PREFIX}libc-for-gcc = "uclibc"
PREFERRED_PROVIDER_virtual/libiconv ?= "libiconv"
PREFERRED_PROVIDER_virtual/libintl ?= "gettext"

View File

@ -17,6 +17,7 @@ SRC_URI = "${GNU_MIRROR}/gcc/gcc-${PV}/gcc-${PV}.tar.bz2 \
file://always-fixincperm.patch;patch=1 \
file://GCOV_PREFIX_STRIP-cross-profile_3.4.patch;patch=1 \
file://zecke-xgcc-cpp.patch;patch=1 \
file://gcc-libgcc2-inhibit-libc.patch;patch=1 \
file://gcc4-mtune-compat.patch;patch=1"
SRC_URI += "file://gcc34-configure.in.patch;patch=1"

View File

@ -0,0 +1,21 @@
---
gcc/config/i386/linux.h | 2 ++
1 file changed, 2 insertions(+)
Index: gcc-3.4.4/gcc/config/i386/linux.h
===================================================================
--- gcc-3.4.4.orig/gcc/config/i386/linux.h 2008-07-17 23:40:00.000000000 -0700
+++ gcc-3.4.4/gcc/config/i386/linux.h 2008-07-17 23:40:41.000000000 -0700
@@ -218,6 +218,7 @@ Boston, MA 02111-1307, USA. */
/* Do code reading to identify a signal frame, and set the frame
state data appropriately. See unwind-dw2.c for the structs. */
+#ifndef inhibit_libc
#ifdef IN_LIBGCC2
/* There's no sys/ucontext.h for some (all?) libc1, so no
signal-turned-exceptions for them. There's also no configure-run for
@@ -282,3 +283,4 @@ Boston, MA 02111-1307, USA. */
} while (0)
#endif /* not USE_GNULIBC_1 */
#endif /* IN_LIBGCC2 */
+#endif

View File

@ -7,10 +7,6 @@ EXTRA_OECONF_PATHS = "--with-local-prefix=${STAGING_DIR_TARGET}${layout_prefix}
--with-sysroot=${STAGING_DIR_TARGET} \
--with-build-sysroot=${STAGING_DIR_TARGET}"
do_configure_prepend () {
rm -f ${CROSS_DIR}/lib/gcc/${TARGET_SYS}/${BINV}/libgcc_eh.a
}
do_compile_prepend () {
export CC="${BUILD_CC}"
export AR_FOR_TARGET="${TARGET_SYS}-ar"

View File

@ -1,6 +1,4 @@
DEPENDS = "virtual/${TARGET_PREFIX}binutils"
# @todo Please add comment on why this is (still?) needed?
DEPENDS += "${@['virtual/${TARGET_PREFIX}libc-initial',''][bb.data.getVar('TARGET_ARCH', d, 1) in ['arm', 'armeb', 'mips', 'mipsel', 'powerpc']]}"
PROVIDES = "virtual/${TARGET_PREFIX}gcc-initial"
PACKAGES = ""
@ -8,6 +6,7 @@ PACKAGES = ""
# sysroot is needed in case we use libc-initial
EXTRA_OECONF = "--with-local-prefix=${STAGING_DIR_TARGET}${layout_prefix} \
--with-newlib \
--without-headers \
--disable-shared \
--disable-threads \
--disable-multilib \
@ -19,11 +18,6 @@ EXTRA_OECONF = "--with-local-prefix=${STAGING_DIR_TARGET}${layout_prefix} \
--with-build-sysroot=${STAGING_DIR_TARGET} \
${@get_gcc_fpu_setting(bb, d)}"
do_stage_prepend () {
mkdir -p ${CROSS_DIR}/lib/gcc/${TARGET_SYS}/${BINV}
ln -sf libgcc.a ${CROSS_DIR}/lib/gcc/${TARGET_SYS}/${BINV}/libgcc_eh.a
}
do_install () {
:
}

View File

@ -0,0 +1,21 @@
DEPENDS = "virtual/${TARGET_PREFIX}binutils"
DEPENDS += "virtual/${TARGET_PREFIX}libc-initial"
PROVIDES = "virtual/${TARGET_PREFIX}gcc-intermediate"
PACKAGES = ""
# This is intended to be a -very- basic config
# sysroot is needed in case we use libc-initial
EXTRA_OECONF = "--with-local-prefix=${STAGING_DIR_TARGET}${layout_prefix} \
--enable-shared \
--disable-multilib \
--disable-threads \
--enable-languages=c \
--enable-target-optspace \
--program-prefix=${TARGET_PREFIX} \
--with-sysroot=${STAGING_DIR_TARGET} \
--with-build-sysroot=${STAGING_DIR_TARGET} \
${@get_gcc_fpu_setting(bb, d)}"
do_install () {
:
}

View File

@ -0,0 +1,2 @@
require gcc-cross_${PV}.bb
require gcc-cross-intermediate.inc

View File

@ -0,0 +1,5 @@
require gcc-cross_${PV}.bb
require gcc-cross-intermediate.inc
EXTRA_OECONF += "--disable-libmudflap \
--disable-libssp"

View File

@ -0,0 +1,5 @@
require gcc-cross_${PV}.bb
require gcc-cross-intermediate.inc
EXTRA_OECONF += "--disable-libmudflap --disable-libgomp \
--disable-libssp"

View File

@ -0,0 +1,14 @@
require gcc-cross_${PV}.bb
require gcc-cross-intermediate.inc
DEPENDS += "gmp-native mpfr-native"
EXTRA_OECONF += " --disable-libmudflap \
--disable-libgomp \
--disable-libssp"
# Hack till we fix *libc properly
do_stage_append() {
ln -sf ${CROSS_DIR}/lib/gcc/${TARGET_SYS}/${BINV}/include-fixed/* ${CROSS_DIR}/lib/gcc/${TARGET_SYS}/${BINV}/include/
}

View File

@ -0,0 +1,2 @@
require gcc-cross_csl-arm-2005q3.bb
require gcc-cross-intermediate.inc

View File

@ -0,0 +1,7 @@
require gcc-cross_${PV}.bb
require gcc-cross-intermediate.inc
S = "${WORKDIR}/gcc-2006q1"
EXTRA_OECONF += "--disable-libmudflap \
--disable-libssp"

View File

@ -0,0 +1,12 @@
require gcc-cross_${PV}.bb
require gcc-cross-intermediate.inc
S = "${WORKDIR}/gcc-4.2"
EXTRA_OECONF += "--disable-libssp --disable-bootstrap --disable-libgomp --disable-libmudflap "
# Hack till we fix *libc properly
do_stage_append() {
ln -sf ${CROSS_DIR}/lib/gcc/${TARGET_SYS}/${BINV}/include-fixed/* ${CROSS_DIR}/lib/gcc/${TARGET_SYS}/${BINV}/include/
}

View File

@ -0,0 +1,12 @@
require gcc-cross_${PV}.bb
require gcc-cross-intermediate.inc
S = "${WORKDIR}/gcc-4.2"
EXTRA_OECONF += "--disable-libssp --disable-bootstrap --disable-libgomp --disable-libmudflap "
# Hack till we fix *libc properly
do_stage_append() {
ln -sf ${CROSS_DIR}/lib/gcc/${TARGET_SYS}/${BINV}/include-fixed/* ${CROSS_DIR}/lib/gcc/${TARGET_SYS}/${BINV}/include/
}

View File

@ -1,4 +1,4 @@
PR = "r9"
PR = "r10"
require gcc-${PV}.inc
require gcc-cross.inc

View File

@ -1,4 +1,4 @@
PR = "r16"
PR = "r17"
require gcc-${PV}.inc
require gcc-cross4.inc

View File

@ -1,4 +1,4 @@
PR = "r6"
PR = "r7"
require gcc-${PV}.inc
require gcc-cross4.inc

View File

@ -1,4 +1,4 @@
PR = "r5"
PR = "r6"
require gcc-${PV}.inc
require gcc-cross4.inc

View File

@ -0,0 +1,30 @@
Source: http://sourceware.org/ml/libc-alpha/2008-01/msg00017.html
I am checking this x86 assembler patch:
http://sourceware.org/ml/binutils/2008-01/msg00148.html
to check operand size. fnstsw stores 16bit into %ax. The upper
16bit of %eax is unchanged. The new assembler will disallow
"fnstsw %eax". Here is a patch for glibc.
H.J.
---
sysdeps/i386/fpu/ftestexcept.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
Index: glibc-2.6.1/sysdeps/i386/fpu/ftestexcept.c
===================================================================
--- glibc-2.6.1.orig/sysdeps/i386/fpu/ftestexcept.c 2008-07-19 11:00:45.000000000 -0700
+++ glibc-2.6.1/sysdeps/i386/fpu/ftestexcept.c 2008-07-19 11:01:25.000000000 -0700
@@ -26,7 +26,7 @@
int
fetestexcept (int excepts)
{
- int temp;
+ short temp;
int xtemp = 0;
/* Get current exceptions. */

View File

@ -1,5 +1,5 @@
SECTION = "libs"
DEPENDS = "linux-libc-headers"
DEPENDS = "virtual/${TARGET_PREFIX}gcc-initial linux-libc-headers"
PROVIDES = "virtual/${TARGET_PREFIX}libc-initial"
FILESPATH = "${@base_set_filespath([ '${FILE_DIRNAME}/glibc-2.4', '${FILE_DIRNAME}/glibc', '${FILE_DIRNAME}/files', '${FILE_DIRNAME}' ], d)}"
@ -9,7 +9,8 @@ PACKAGES_DYNAMIC = ""
do_configure () {
sed -ie 's,{ (exit 1); exit 1; }; },{ (exit 0); }; },g' ${S}/configure
chmod +x ${S}/configure
CC="${BUILD_CC}" CPP="${BUILD_CPP}" LD="${BUILD_LD}" ${S}/configure --host=${TARGET_SYS} --build=${BUILD_SYS} \
find ${S} -name "configure" | xargs touch
${S}/configure --host=${TARGET_SYS} --build=${BUILD_SYS} \
--without-cvs --disable-sanity-checks \
--with-headers=${STAGING_DIR_TARGET}${layout_includedir} \
--enable-hacker-mode
@ -30,8 +31,11 @@ do_compile () {
}
do_stage () {
oe_runmake cross-compiling=yes install_root=${STAGING_DIR_HOST} includedir='${layout_includedir}' prefix='${layout_prefix}' install-headers
oe_runmake cross-compiling=yes install_root=${STAGING_DIR_HOST} \
includedir='${layout_includedir}' prefix='${layout_prefix}' \
install-bootstrap-headers=yes install-headers
oe_runmake csu/subdir_lib
# Two headers -- stubs.h and features.h -- aren't installed by install-headers,
# so do them by hand. We can tolerate an empty stubs.h for the moment.
# See e.g. http://gcc.gnu.org/ml/gcc/2002-01/msg00900.html
@ -42,6 +46,10 @@ do_stage () {
if [ -e ${B}/bits/stdio_lim.h ]; then
cp ${B}/bits/stdio_lim.h ${STAGING_INCDIR}/bits/
fi
mkdir -p ${STAGING_DIR_TARGET}${layout_libdir}
install -m 644 csu/crt[1in].o ${STAGING_DIR_TARGET}${layout_libdir}
${CC} -nostdlib -nostartfiles -shared -x c /dev/null \
-o ${STAGING_DIR_TARGET}${layout_libdir}/libc.so
}
do_install () {

View File

@ -1,12 +0,0 @@
SECTION = "libs"
PACKAGES = ""
PACKAGES_DYNAMIC = ""
PROVIDES = "virtual/${TARGET_PREFIX}libc-for-gcc"
DEPENDS = "virtual/${TARGET_PREFIX}gcc-initial linux-libc-headers"
do_install () {
:
}
GLIBC_ADDONS = "nptl,ports"
GLIBC_EXTRA_OECONF = ""

View File

@ -1,5 +0,0 @@
require glibc_${PV}.bb
require glibc-intermediate.inc
DEFAULT_PREFERENCE = "-1"

View File

@ -1,7 +0,0 @@
require glibc_${PV}.bb
require glibc-intermediate.inc
# gcc uses -Werror which break on a "you have no thumb interwork" _warning_
do_configure_prepend() {
sed -i s:-Werror:: ${S}/configure
}

View File

@ -1,8 +0,0 @@
require glibc_${PV}.bb
require glibc-intermediate.inc
# gcc uses -Werror which break on a "you have no thumb interwork" _warning_
do_configure_prepend() {
sed -i s:-Werror:: ${S}/configure
}

View File

@ -1,8 +0,0 @@
require glibc_${PV}.bb
require glibc-intermediate.inc
DEFAULT_PREFERENCE = "-1"
GLIBC_ADDONS = "nptl,libidn"

View File

@ -3,7 +3,7 @@ do_stage() {
oe_runmake 'install_root=${STAGING_DIR_HOST}' \
'includedir=${layout_includedir}' 'libdir=${layout_libdir}' 'slibdir=${layout_base_libdir}' \
'${STAGING_DIR_HOST}${layout_base_libdir}/libc.so.6' \
install-headers install-lib
install
install -d ${STAGING_INCDIR}/gnu \
${STAGING_INCDIR}/bits \
@ -15,9 +15,4 @@ do_stage() {
h=`echo $r|sed -e's,\.x$,.h,'`
install -m 0644 ${S}/sunrpc/rpcsvc/$h ${STAGING_INCDIR}/rpcsvc/
done
for i in libc.a libc_pic.a libc_nonshared.a; do
install -m 0644 ${B}/$i ${STAGING_DIR_HOST}/${layout_base_libdir}/ || die "failed to install $i"
done
echo 'GROUP ( libpthread.so.0 libpthread_nonshared.a )' > ${STAGING_DIR_HOST}/${layout_base_libdir}/libpthread.so
echo 'GROUP ( libc.so.6 libc_nonshared.a )' > ${STAGING_DIR_HOST}/${layout_base_libdir}/libc.so
}

View File

@ -4,11 +4,12 @@ SECTION = "libs"
PRIORITY = "required"
LICENSE = "LGPL"
# nptl needs unwind support in gcc, which can't be built without glibc.
DEPENDS = "${@['virtual/${TARGET_PREFIX}gcc-initial', 'virtual/${TARGET_PREFIX}gcc']['nptl' in '${GLIBC_ADDONS}']} linux-libc-headers"
DEPENDS = "virtual/${TARGET_PREFIX}gcc-intermediate linux-libc-headers"
RDEPENDS_${PN}-dev = "linux-libc-headers-dev"
#this leads to circular deps, so lets not add it yet
#RDEPENDS_ldd += " bash"
PROVIDES = "virtual/libc ${@['virtual/${TARGET_PREFIX}libc-for-gcc', '']['nptl' in '${GLIBC_ADDONS}']}"
#RDEPENDS += "${@['','libgcc']['nptl' in '${GLIBC_ADDONS}']}"
PROVIDES = "virtual/libc virtual/${TARGET_PREFIX}libc-for-gcc"
PROVIDES += "virtual/libintl virtual/libiconv"
inherit autotools

View File

@ -48,6 +48,7 @@ SRC_URI = "ftp://ftp.gnu.org/pub/gnu/glibc/glibc-${PV}.tar.bz2 \
# file://fixup-aeabi-syscalls.patch;patch=1 \
file://zecke-sane-readelf.patch;patch=1 \
file://eabi_kernel_version_hack.patch;patch=1 \
file://glibc-2.6.1-use-short-for-fnstsw.patch;patch=1 \
file://generic-bits_select.h \
file://generic-bits_types.h \
file://generic-bits_typesizes.h \

View File

@ -56,6 +56,7 @@ SRC_URI = "\
file://etc/ld.so.conf \
file://generate-supported.mk \
file://glibc-2.6.1-RTLD_SINGLE_THREAD_P-1.patch;patch=1 \
file://glibc-2.6.1-use-short-for-fnstsw.patch;patch=1 \
file://glibc-include-fixed.patch;patch=1;pnum=0 \
"