gcc: Add csl 2007q3 from OE.dev

git-svn-id: https://svn.o-hand.com/repos/poky/trunk@4605 311d38ba-8fff-0310-9ca6-ca027cbcb966
This commit is contained in:
Richard Purdie
2008-06-06 14:34:02 +00:00
parent 76c8b40e44
commit d03981d6c1
13 changed files with 302 additions and 0 deletions

View File

@@ -0,0 +1,12 @@
require gcc-cross_${PV}.bb
require gcc-cross-initial.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,26 @@
PR = "r0"
require gcc-csl-arm-2007q3.inc
require gcc-cross4.inc
require gcc-configure-cross.inc
require gcc-package-cross.inc
SRC_URI_append_fail-fast = " file://zecke-no-host-includes.patch;patch=1 "
EXTRA_OECONF += "--disable-multilib --disable-libunwind-exceptions --with-mpfr=${STAGING_DIR_NATIVE}${layout_exec_prefix}"
#We don't want i686 linux ending up in the CFLAGS_FOR_TARGET like this: -isystem/OE/angstrom-tmp/staging/i686-linux/usr/include
CFLAGS = ""
CXXFLAGS = ""
LDFLAGS = ""
# staging-linkage and cross-linkage recipes don't work anymore, so do it by hand for this backwards CSL toolchain
do_compile_prepend() {
ln -sf ${STAGING_DIR_TARGET}${layout_libdir}/crt*.o ${CROSS_DIR}/${TARGET_SYS}/lib/
ln -sf ${STAGING_DIR_TARGET}${layout_libdir}/ld-* ${CROSS_DIR}/${TARGET_SYS}/lib/
ln -sf ${STAGING_DIR_TARGET}/lib/libc* ${CROSS_DIR}/${TARGET_SYS}/lib/
sed -i -e 's:gcc_no_link=yes:gcc_no_link=no:' ${S}/libstdc++-v3/configure
}
ARCH_FLAGS_FOR_TARGET += " -L${STAGING_DIR_TARGET}${layout_libdir} -isystem${STAGING_DIR_TARGET}${layout_includedir}"

View File

@@ -0,0 +1,51 @@
require gcc-common.inc
BINV = "4.2.1"
PV = "4.2.1+csl-arm-2007q3-53"
FILESPATH = "${FILE_DIRNAME}/gcc-csl-arm-2007q3:${FILE_DIRNAME}/gcc-csl-arm"
SRC_URI = "http://www.codesourcery.com/public/gnu_toolchain/arm-none-eabi/arm-2007q3-53-arm-none-eabi.src.tar.bz2 \
file://gcc-new-makeinfo.patch;patch=1 \
# file://100-uclibc-conf.patch;patch=1 \
# file://103-uclibc-conf-noupstream.patch;patch=1 \
# file://200-uclibc-locale.patch;patch=1 \
# file://203-uclibc-locale-no__x.patch;patch=1 \
# file://204-uclibc-locale-wchar_fix.patch;patch=1 \
# file://205-uclibc-locale-update.patch;patch=1 \
# file://300-libstdc++-pic.patch;patch=1 \
# file://302-c99-snprintf.patch;patch=1 \
# file://303-c99-complex-ugly-hack.patch;patch=1 \
# file://304-index_macro.patch;patch=1 \
# file://305-libmudflap-susv3-legacy.patch;patch=1 \
# file://306-libstdc++-namespace.patch;patch=1 \
# file://307-locale_facets.patch;patch=1 \
# file://402-libbackend_dep_gcov-iov.h.patch;patch=1 \
# file://602-sdk-libstdc++-includes.patch;patch=1 \
file://gcc41-configure.in.patch;patch=1 \
file://arm-nolibfloat.patch;patch=1 \
file://arm-softfloat.patch;patch=1 \
file://zecke-xgcc-cpp.patch;patch=1 \
# file://gfortran.patch;patch=1 \
# file://fortran-static-linking.patch;patch=1 \
# file://gcc-configure-no-fortran.patch;patch=1;pnum=1 \
# file://gcc-new-makeinfo.patch;patch=1 \
"
S = "${WORKDIR}/gcc-4.2"
do_unpack2() {
cd ${WORKDIR}
tar -xvjf ./arm-2007q3-53-arm-none-eabi/gcc-2007q3-53.tar.bz2
}
# Language Overrides
FORTRAN = ""
#FORTRAN_linux-gnueabi = ",fortran"
#JAVA = ",java"
EXTRA_OECONF_BASE = "--enable-libssp --disable-bootstrap --disable-libgomp --disable-libmudflap"
ARM_INSTRUCTION_SET = "arm"
addtask unpack2 after do_unpack before do_patch

View File

@@ -0,0 +1,22 @@
--- /tmp/configure 2008-05-18 12:57:11.378648834 +0200
+++ gcc-4.2/configure 2008-05-18 12:58:38.309478684 +0200
@@ -3776,7 +3776,7 @@
# For an installed makeinfo, we require it to be from texinfo 4.4 or
# higher, else we use the "missing" dummy.
if ${MAKEINFO} --version \
- | egrep 'texinfo[^0-9]*([1-3][0-9]|4\.[4-9]|[5-9])' >/dev/null 2>&1; then
+ | egrep 'texinfo[^0-9]*(4\.([6-9]|[1-9][0-9])|[5-9]|[1-9][0-9])' >/dev/null 2>&1; then
:
else
MAKEINFO="$MISSING makeinfo"
--- /tmp/configure.in 2008-05-18 12:57:32.665314708 +0200
+++ gcc-4.2/configure.in 2008-05-18 12:59:03.000000000 +0200
@@ -2271,7 +2271,7 @@
# For an installed makeinfo, we require it to be from texinfo 4.4 or
# higher, else we use the "missing" dummy.
if ${MAKEINFO} --version \
- | egrep 'texinfo[^0-9]*([1-3][0-9]|4\.[4-9]|[5-9])' >/dev/null 2>&1; then
+ | egrep 'texinfo[^0-9]*(4\.([6-9]|[1-9][0-9])|[5-9]|[1-9][0-9])' >/dev/null 2>&1; then
:
else
MAKEINFO="$MISSING makeinfo"

View File

@@ -0,0 +1,24 @@
# Dimitry Andric <dimitry@andric.com>, 2004-05-01
#
# * Removed the extra -lfloat option from LIBGCC_SPEC, since it isn't needed
# anymore. (The required functions are now in libgcc.)
#
# Fixes errors like
# arm-softfloat-linux-gnu/3.4.0/../../../../arm-softfloat-linux-gnu/bin/ld: cannot find -lfloat
# collect2: ld returned 1 exit status
# make[2]: *** [arm-softfloat-linux-gnu/gcc-3.4.0-glibc-2.3.2/build-glibc/iconvdata/ISO8859-1.so] Error 1
# when building glibc-2.3.3 with gcc-3.4.0 for arm-softfloat
Index: gcc-4.0.2/gcc/config/arm/linux-elf.h
===================================================================
--- gcc-4.0.2.orig/gcc/config/arm/linux-elf.h 2005-03-04 16:14:01.000000000 +0000
+++ gcc-4.0.2/gcc/config/arm/linux-elf.h 2005-11-11 18:02:54.000000000 +0000
@@ -56,7 +56,7 @@
%{shared:-lc} \
%{!shared:%{profile:-lc_p}%{!profile:-lc}}"
-#define LIBGCC_SPEC "%{msoft-float:-lfloat} %{mfloat-abi=soft*:-lfloat} -lgcc"
+#define LIBGCC_SPEC "-lgcc"
/* Provide a STARTFILE_SPEC appropriate for GNU/Linux. Here we add
the GNU/Linux magical crtbegin.o file (see crtstuff.c) which

View File

@@ -0,0 +1,16 @@
Index: gcc-4.0.2/gcc/config/arm/t-linux
===================================================================
--- gcc-4.0.2.orig/gcc/config/arm/t-linux 2004-05-15 12:41:35.000000000 +0000
+++ gcc-4.0.2/gcc/config/arm/t-linux 2005-11-11 16:07:53.000000000 +0000
@@ -4,7 +4,10 @@
LIBGCC2_DEBUG_CFLAGS = -g0
LIB1ASMSRC = arm/lib1funcs.asm
-LIB1ASMFUNCS = _udivsi3 _divsi3 _umodsi3 _modsi3 _dvmd_lnx
+LIB1ASMFUNCS = _udivsi3 _divsi3 _umodsi3 _modsi3 _dvmd_lnx \
+ _negdf2 _addsubdf3 _muldivdf3 _cmpdf2 _unorddf2 _fixdfsi _fixunsdfsi \
+ _truncdfsf2 _negsf2 _addsubsf3 _muldivsf3 _cmpsf2 _unordsf2 \
+ _fixsfsi _fixunssfsi _floatdidf _floatdisf _floatundisf _floatundidf
# MULTILIB_OPTIONS = mhard-float/msoft-float
# MULTILIB_DIRNAMES = hard-float soft-float

View File

@@ -0,0 +1,13 @@
diff --git a/gcc/configure b/gcc/configure
index 44620ab..6e1830c 100755
--- a/gcc/configure
+++ b/gcc/configure
@@ -12272,7 +12272,7 @@ else
esac
saved_CFLAGS="${CFLAGS}"
CC="${CC_FOR_BUILD}" CFLAGS="${CFLAGS_FOR_BUILD}" \
- ${realsrcdir}/configure \
+ CONFIG_SITE= ${realsrcdir}/configure --cache-file=./other.cache \
--enable-languages=${enable_languages-all} \
--target=$target_alias --host=$build_alias --build=$build_alias
CFLAGS="${saved_CFLAGS}"

View File

@@ -0,0 +1,48 @@
f951 (fortran) links to MPFR and GMP of our staging area but when executing
the command the libs can not be found. Use rpath like all the other apps in
our staging bin/ directory.
Patch the configure to avoid the regeneration...
Index: gcc-4.2.2/configure
===================================================================
--- gcc-4.2.2.orig/configure 2008-01-15 23:23:41.000000000 +0100
+++ gcc-4.2.2/configure 2008-01-15 23:25:20.000000000 +0100
@@ -2278,14 +2278,14 @@
if test "x$with_mpfr" != x; then
- gmplibs="-L$with_mpfr/lib $gmplibs"
+ gmplibs="-static -L$with_mpfr/lib $gmplibs"
gmpinc="-I$with_mpfr/include"
fi
if test "x$with_mpfr_include" != x; then
gmpinc="-I$with_mpfr_include"
fi
if test "x$with_mpfr_lib" != x; then
- gmplibs="-L$with_mpfr_lib $gmplibs"
+ gmplibs="-static -L$with_mpfr_lib $gmplibs"
fi
# Specify a location for gmp
Index: gcc-4.2.2/configure.in
===================================================================
--- gcc-4.2.2.orig/configure.in 2008-01-15 23:23:41.000000000 +0100
+++ gcc-4.2.2/configure.in 2008-01-15 23:24:36.000000000 +0100
@@ -1066,14 +1066,14 @@
AC_ARG_WITH(mpfr_lib, [ --with-mpfr-lib=PATH Specify the directory for the installed MPFR library])
if test "x$with_mpfr" != x; then
- gmplibs="-L$with_mpfr/lib $gmplibs"
+ gmplibs="-static -L$with_mpfr/lib $gmplibs"
gmpinc="-I$with_mpfr/include"
fi
if test "x$with_mpfr_include" != x; then
gmpinc="-I$with_mpfr_include"
fi
if test "x$with_mpfr_lib" != x; then
- gmplibs="-L$with_mpfr_lib $gmplibs"
+ gmplibs="-static -L$with_mpfr_lib $gmplibs"
fi
# Specify a location for gmp

View File

@@ -0,0 +1,22 @@
--- gcc-3.4.4/configure.in.orig 2005-08-09 19:57:51.504323183 -0700
+++ gcc-3.4.4/configure.in 2005-08-09 20:00:12.073168623 -0700
@@ -1907,7 +1907,7 @@
*) gxx_include_dir=${with_gxx_include_dir} ;;
esac
-FLAGS_FOR_TARGET=
+FLAGS_FOR_TARGET="$ARCH_FLAGS_FOR_TARGET"
case " $target_configdirs " in
*" newlib "*)
case " $target_configargs " in
--- gcc-3.4.4/configure.orig 2005-08-09 21:02:29.668360660 -0700
+++ gcc-3.4.4/configure 2005-08-09 21:02:50.157649970 -0700
@@ -2669,7 +2669,7 @@
*) gxx_include_dir=${with_gxx_include_dir} ;;
esac
-FLAGS_FOR_TARGET=
+FLAGS_FOR_TARGET="$ARCH_FLAGS_FOR_TARGET"
case " $target_configdirs " in
*" newlib "*)
case " $target_configargs " in

View File

@@ -0,0 +1,16 @@
Index: gcc-4.1.2/gcc/fold-const.c
===================================================================
--- gcc-4.1.2.orig/gcc/fold-const.c 2007-11-21 18:53:42.000000000 +0100
+++ gcc-4.1.2/gcc/fold-const.c 2007-11-21 18:56:26.000000000 +0100
@@ -5339,7 +5339,10 @@
}
break;
}
- /* FALLTHROUGH */
+ /* If the constant is negative, we cannot simplify this. */
+ if (tree_int_cst_sgn (c) == -1)
+ break;
+ /* FALLTHROUGH */
case NEGATE_EXPR:
if ((t1 = extract_muldiv (op0, c, code, wide_type)) != 0)
return fold_build1 (tcode, ctype, fold_convert (ctype, t1));

View File

@@ -0,0 +1,31 @@
Index: gcc-4.0.2/gcc/c-incpath.c
===================================================================
--- gcc-4.0.2.orig/gcc/c-incpath.c 2005-01-23 16:05:27.000000000 +0100
+++ gcc-4.0.2/gcc/c-incpath.c 2006-05-15 21:23:02.000000000 +0200
@@ -350,6 +350,26 @@
p->construct = 0;
p->user_supplied_p = user_supplied_p;
+#ifdef CROSS_COMPILE
+ /* A common error when cross compiling is including
+ host headers. This code below will try to fail fast
+ for cross compiling. Currently we consider /usr/include,
+ /opt/include and /sw/include as harmful. */
+ {
+ /* printf("Adding Path: %s\n", p->name ); */
+ if( strstr(p->name, "/usr/include" ) == p->name ) {
+ fprintf(stderr, _("CROSS COMPILE Badness: /usr/include in INCLUDEPATH: %s\n"), p->name);
+ abort();
+ } else if( strstr(p->name, "/sw/include") == p->name ) {
+ fprintf(stderr, _("CROSS COMPILE Badness: /sw/include in INCLUDEPATH: %s\n"), p->name);
+ abort();
+ } else if( strstr(p->name, "/opt/include") == p->name ) {
+ fprintf(stderr, _("CROSS COMPILE Badness: /opt/include in INCLUDEPATH: %s\n"), p->name);
+ abort();
+ }
+ }
+#endif
+
add_cpp_dir_path (p, chain);
}

View File

@@ -0,0 +1,16 @@
upstream: n/a
comment: Use the preprocessor we have just compiled instead the one of
the system. There might be incompabilities between us and them.
Index: gcc-4.1.1/Makefile.in
===================================================================
--- gcc-4.1.1.orig/Makefile.in 2006-08-06 13:32:44.000000000 +0200
+++ gcc-4.1.1/Makefile.in 2006-08-06 13:32:46.000000000 +0200
@@ -194,6 +194,7 @@
AS="$(COMPILER_AS_FOR_TARGET)"; export AS; \
CC="$(CC_FOR_TARGET)"; export CC; \
CFLAGS="$(CFLAGS_FOR_TARGET)"; export CFLAGS; \
+ CPP="$(CC_FOR_TARGET) -E"; export CCP; \
CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \
CPPFLAGS="$(CPPFLAGS_FOR_TARGET)"; export CPPFLAGS; \
CXXFLAGS="$(CXXFLAGS_FOR_TARGET)"; export CXXFLAGS; \

View File

@@ -0,0 +1,5 @@
PR = "r0"
require gcc-${PV}.inc
require gcc-configure-target.inc
require gcc-package-target.inc