summaryrefslogtreecommitdiffstats
path: root/recipes/gcc
diff options
context:
space:
mode:
Diffstat (limited to 'recipes/gcc')
-rw-r--r--recipes/gcc/gcc-4.5.0.inc36
-rw-r--r--recipes/gcc/gcc-4.5.0/100-uclibc-conf.patch37
-rw-r--r--recipes/gcc/gcc-4.5.0/cache-amnesia.patch31
-rw-r--r--recipes/gcc/gcc-4.5.0/fortran-cross-compile-hack.patch30
-rw-r--r--recipes/gcc/gcc-4.5.0/gcc-4.3.1-ARCH_FLAGS_FOR_TARGET.patch31
-rw-r--r--recipes/gcc/gcc-4.5.0/gcc-flags-for-build.patch178
-rw-r--r--recipes/gcc/gcc-4.5.0/gcc-uclibc-locale-ctype_touplow_t.patch52
-rw-r--r--recipes/gcc/gcc-4.5.0/zecke-no-host-includes.patch31
-rw-r--r--recipes/gcc/gcc-4.5.0/zecke-xgcc-cpp.patch28
-rw-r--r--recipes/gcc/gcc-cross-initial_4.5.0.bb9
-rw-r--r--recipes/gcc/gcc-cross-intermediate_4.5.0.bb8
-rw-r--r--recipes/gcc/gcc-cross-sdk_4.5.0.bb14
-rw-r--r--recipes/gcc/gcc-cross_4.5.0.bb13
-rw-r--r--recipes/gcc/gcc_4.5.0.bb13
14 files changed, 511 insertions, 0 deletions
diff --git a/recipes/gcc/gcc-4.5.0.inc b/recipes/gcc/gcc-4.5.0.inc
new file mode 100644
index 0000000000..357592fbe6
--- /dev/null
+++ b/recipes/gcc/gcc-4.5.0.inc
@@ -0,0 +1,36 @@
+DEFAULT_PREFERENCE = "-999"
+ARM_INSTRUCTION_SET = "arm"
+
+require gcc-common.inc
+LICENSE = "GPLv3"
+
+DEPENDS = "mpfr gmp libmpc"
+
+FILESPATHPKG .= ":gcc-$PV"
+
+INC_PR = "r0"
+
+SRC_URI = "${GNU_MIRROR}/gcc/gcc-${PV}/gcc-${PV}.tar.bz2;name=gcc450tarbz2 \
+ file://gcc-4.3.1-ARCH_FLAGS_FOR_TARGET.patch;patch=1 \
+ file://100-uclibc-conf.patch;patch=1 \
+ file://gcc-uclibc-locale-ctype_touplow_t.patch;patch=1 \
+ file://cache-amnesia.patch;patch=1 \
+ file://gcc-flags-for-build.patch;patch=1 \
+ "
+
+# Language Overrides
+FORTRAN = ""
+JAVA = ""
+
+EXTRA_OECONF_BASE = " --enable-libssp \
+ --disable-bootstrap --disable-libgomp \
+ --disable-libmudflap"
+
+SRC_URI[gcc450tarbz2.md5sum] = "ff27b7c4a5d5060c8a8543a44abca31f"
+SRC_URI[gcc450tarbz2.sha256sum] = "8293e9efa68a8ec0fdd0dae9c9bd128a8e742566acd9c8fbcfe79d98ed3756c8"
+
+EXTRA_OECONF_append_linux-uclibc = " --disable-decimal-float "
+EXTRA_OECONF_append_linux-uclibceabi = " --disable-decimal-float "
+EXTRA_OECONF_append_linux-uclibcspe = " --disable-decimal-float "
+EXTRA_OECONF_append_linux-uclibc = " ${@base_contains('TARGET_ARCH', 'powerpc', '--without-long-double-128', '',d)}"
+
diff --git a/recipes/gcc/gcc-4.5.0/100-uclibc-conf.patch b/recipes/gcc/gcc-4.5.0/100-uclibc-conf.patch
new file mode 100644
index 0000000000..0b799607e8
--- /dev/null
+++ b/recipes/gcc/gcc-4.5.0/100-uclibc-conf.patch
@@ -0,0 +1,37 @@
+Index: gcc-4.3.1/contrib/regression/objs-gcc.sh
+===================================================================
+--- gcc-4.3.1.orig/contrib/regression/objs-gcc.sh 2007-12-24 15:18:57.000000000 -0800
++++ gcc-4.3.1/contrib/regression/objs-gcc.sh 2008-08-16 01:15:12.000000000 -0700
+@@ -105,6 +105,10 @@
+ then
+ make all-gdb all-dejagnu all-ld || exit 1
+ make install-gdb install-dejagnu install-ld || exit 1
++elif [ $H_REAL_TARGET = $H_REAL_HOST -a $H_REAL_TARGET = i686-pc-linux-uclibc ]
++ then
++ make all-gdb all-dejagnu all-ld || exit 1
++ make install-gdb install-dejagnu install-ld || exit 1
+ elif [ $H_REAL_TARGET = $H_REAL_HOST ] ; then
+ make bootstrap || exit 1
+ make install || exit 1
+Index: gcc-4.3.1/libjava/classpath/ltconfig
+===================================================================
+--- gcc-4.3.1.orig/libjava/classpath/ltconfig 2007-06-03 16:18:43.000000000 -0700
++++ gcc-4.3.1/libjava/classpath/ltconfig 2008-08-16 01:15:12.000000000 -0700
+@@ -603,7 +603,7 @@
+
+ # Transform linux* to *-*-linux-gnu*, to support old configure scripts.
+ case $host_os in
+-linux-gnu*) ;;
++linux-gnu*|linux-uclibc*) ;;
+ linux*) host=`echo $host | sed 's/^\(.*-.*-linux\)\(.*\)$/\1-gnu\2/'`
+ esac
+
+@@ -1251,7 +1251,7 @@
+ ;;
+
+ # This must be Linux ELF.
+-linux-gnu*)
++linux*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
diff --git a/recipes/gcc/gcc-4.5.0/cache-amnesia.patch b/recipes/gcc/gcc-4.5.0/cache-amnesia.patch
new file mode 100644
index 0000000000..b889f9b6ca
--- /dev/null
+++ b/recipes/gcc/gcc-4.5.0/cache-amnesia.patch
@@ -0,0 +1,31 @@
+---
+ gcc/configure | 2 +-
+ gcc/configure.ac | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+Index: gcc-4.5+svnr155514/gcc/configure
+===================================================================
+--- gcc-4.5+svnr155514.orig/gcc/configure 2009-12-29 22:00:40.000000000 -0800
++++ gcc-4.5+svnr155514/gcc/configure 2009-12-29 23:52:43.381592113 -0800
+@@ -10467,7 +10467,7 @@ else
+ saved_CFLAGS="${CFLAGS}"
+ CC="${CC_FOR_BUILD}" CFLAGS="${CFLAGS_FOR_BUILD}" \
+ LDFLAGS="${LDFLAGS_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}"
+Index: gcc-4.5+svnr155514/gcc/configure.ac
+===================================================================
+--- gcc-4.5+svnr155514.orig/gcc/configure.ac 2009-12-29 22:00:40.000000000 -0800
++++ gcc-4.5+svnr155514/gcc/configure.ac 2009-12-29 23:51:54.589091778 -0800
+@@ -1458,7 +1458,7 @@ else
+ saved_CFLAGS="${CFLAGS}"
+ CC="${CC_FOR_BUILD}" CFLAGS="${CFLAGS_FOR_BUILD}" \
+ LDFLAGS="${LDFLAGS_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}"
diff --git a/recipes/gcc/gcc-4.5.0/fortran-cross-compile-hack.patch b/recipes/gcc/gcc-4.5.0/fortran-cross-compile-hack.patch
new file mode 100644
index 0000000000..348c77006f
--- /dev/null
+++ b/recipes/gcc/gcc-4.5.0/fortran-cross-compile-hack.patch
@@ -0,0 +1,30 @@
+* Fortran would have searched for arm-angstrom-gnueabi-gfortran but would have used
+ used gfortan. For gcc_4.2.2.bb we want to use the gfortran compiler from our cross
+ directory.
+
+Index: gcc-4.5+svnr155514/libgfortran/configure
+===================================================================
+--- gcc-4.5+svnr155514.orig/libgfortran/configure 2009-12-29 22:02:01.000000000 -0800
++++ gcc-4.5+svnr155514/libgfortran/configure 2009-12-30 08:12:40.889091657 -0800
+@@ -11655,7 +11655,7 @@ CC="$lt_save_CC"
+
+ # We need gfortran to compile parts of the library
+ #AC_PROG_FC(gfortran)
+-FC="$GFORTRAN"
++#FC="$GFORTRAN"
+ ac_ext=${ac_fc_srcext-f}
+ ac_compile='$FC -c $FCFLAGS $ac_fcflags_srcext conftest.$ac_ext >&5'
+ ac_link='$FC -o conftest$ac_exeext $FCFLAGS $LDFLAGS $ac_fcflags_srcext conftest.$ac_ext $LIBS >&5'
+Index: gcc-4.5+svnr155514/libgfortran/configure.ac
+===================================================================
+--- gcc-4.5+svnr155514.orig/libgfortran/configure.ac 2009-12-29 22:02:01.000000000 -0800
++++ gcc-4.5+svnr155514/libgfortran/configure.ac 2009-12-30 08:12:13.453094218 -0800
+@@ -187,7 +187,7 @@ AC_SUBST(enable_static)
+
+ # We need gfortran to compile parts of the library
+ #AC_PROG_FC(gfortran)
+-FC="$GFORTRAN"
++#FC="$GFORTRAN"
+ AC_PROG_FC(gfortran)
+
+ # extra LD Flags which are required for targets
diff --git a/recipes/gcc/gcc-4.5.0/gcc-4.3.1-ARCH_FLAGS_FOR_TARGET.patch b/recipes/gcc/gcc-4.5.0/gcc-4.3.1-ARCH_FLAGS_FOR_TARGET.patch
new file mode 100644
index 0000000000..f33e6c1ea6
--- /dev/null
+++ b/recipes/gcc/gcc-4.5.0/gcc-4.3.1-ARCH_FLAGS_FOR_TARGET.patch
@@ -0,0 +1,31 @@
+---
+ configure | 2 +-
+ configure.ac | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+Index: gcc-4.3.1/configure.ac
+===================================================================
+--- gcc-4.3.1.orig/configure.ac 2008-07-21 12:29:18.000000000 -0700
++++ gcc-4.3.1/configure.ac 2008-07-21 12:29:35.000000000 -0700
+@@ -2352,7 +2352,7 @@ fi
+ # for target_alias and gcc doesn't manage it consistently.
+ target_configargs="--cache-file=./config.cache ${target_configargs}"
+
+-FLAGS_FOR_TARGET=
++FLAGS_FOR_TARGET="$ARCH_FLAGS_FOR_TARGET"
+ case " $target_configdirs " in
+ *" newlib "*)
+ case " $target_configargs " in
+Index: gcc-4.3.1/configure
+===================================================================
+--- gcc-4.3.1.orig/configure 2008-07-21 12:29:48.000000000 -0700
++++ gcc-4.3.1/configure 2008-07-21 12:29:59.000000000 -0700
+@@ -5841,7 +5841,7 @@ fi
+ # for target_alias and gcc doesn't manage it consistently.
+ target_configargs="--cache-file=./config.cache ${target_configargs}"
+
+-FLAGS_FOR_TARGET=
++FLAGS_FOR_TARGET="$ARCH_FLAGS_FOR_TARGET"
+ case " $target_configdirs " in
+ *" newlib "*)
+ case " $target_configargs " in
diff --git a/recipes/gcc/gcc-4.5.0/gcc-flags-for-build.patch b/recipes/gcc/gcc-4.5.0/gcc-flags-for-build.patch
new file mode 100644
index 0000000000..98b3ecf2e1
--- /dev/null
+++ b/recipes/gcc/gcc-4.5.0/gcc-flags-for-build.patch
@@ -0,0 +1,178 @@
+Index: gcc-4.5+svnr155680/Makefile.def
+===================================================================
+--- gcc-4.5+svnr155680.orig/Makefile.def 2010-01-13 01:02:22.627540169 -0800
++++ gcc-4.5+svnr155680/Makefile.def 2010-01-13 01:05:24.260056951 -0800
+@@ -240,6 +240,7 @@ flags_to_pass = { flag= AWK ; };
+ flags_to_pass = { flag= BISON ; };
+ flags_to_pass = { flag= CC_FOR_BUILD ; };
+ flags_to_pass = { flag= CFLAGS_FOR_BUILD ; };
++flags_to_pass = { flag= CPPFLAGS_FOR_BUILD ; };
+ flags_to_pass = { flag= CXX_FOR_BUILD ; };
+ flags_to_pass = { flag= EXPECT ; };
+ flags_to_pass = { flag= FLEX ; };
+Index: gcc-4.5+svnr155680/gcc/Makefile.in
+===================================================================
+--- gcc-4.5+svnr155680.orig/gcc/Makefile.in 2010-01-13 01:02:22.675542832 -0800
++++ gcc-4.5+svnr155680/gcc/Makefile.in 2010-01-13 01:05:24.264047000 -0800
+@@ -755,7 +755,7 @@ BUILD_LINKERFLAGS = $(BUILD_CFLAGS)
+
+ # Native linker and preprocessor flags. For x-fragment overrides.
+ BUILD_LDFLAGS=@BUILD_LDFLAGS@
+-BUILD_CPPFLAGS=$(ALL_CPPFLAGS)
++BUILD_CPPFLAGS=$(INCLUDES) @BUILD_CPPFLAGS@ $(X_CPPFLAGS)
+
+ # Actual name to use when installing a native compiler.
+ GCC_INSTALL_NAME := $(shell echo gcc|sed '$(program_transform_name)')
+Index: gcc-4.5+svnr155680/gcc/configure.ac
+===================================================================
+--- gcc-4.5+svnr155680.orig/gcc/configure.ac 2010-01-13 01:02:22.687541624 -0800
++++ gcc-4.5+svnr155680/gcc/configure.ac 2010-01-13 01:06:55.711583352 -0800
+@@ -1774,16 +1774,18 @@ AC_SUBST(inhibit_libc)
+ # Also, we cannot run fixincludes.
+
+ # These are the normal (build=host) settings:
+-CC_FOR_BUILD='$(CC)' AC_SUBST(CC_FOR_BUILD)
+-BUILD_CFLAGS='$(ALL_CFLAGS)' AC_SUBST(BUILD_CFLAGS)
+-BUILD_LDFLAGS='$(LDFLAGS)' AC_SUBST(BUILD_LDFLAGS)
+-STMP_FIXINC=stmp-fixinc AC_SUBST(STMP_FIXINC)
++CC_FOR_BUILD='$(CC)' AC_SUBST(CC_FOR_BUILD)
++BUILD_CFLAGS='$(ALL_CFLAGS)' AC_SUBST(BUILD_CFLAGS)
++BUILD_LDFLAGS='$(LDFLAGS)' AC_SUBST(BUILD_LDFLAGS)
++BUILD_CPPFLAGS='$(ALL_CPPFLAGS)' AC_SUBST(BUILD_CPPFLAGS)
++STMP_FIXINC=stmp-fixinc AC_SUBST(STMP_FIXINC)
+
+ # And these apply if build != host, or we are generating coverage data
+ if test x$build != x$host || test "x$coverage_flags" != x
+ then
+ BUILD_CFLAGS='$(INTERNAL_CFLAGS) $(T_CFLAGS) $(CFLAGS_FOR_BUILD)'
+ BUILD_LDFLAGS='$(LDFLAGS_FOR_BUILD)'
++ BUILD_CPPFLAGS='$(CPPFLAGS_FOR_BUILD)'
+ fi
+
+ # Expand extra_headers to include complete path.
+Index: gcc-4.5+svnr155680/Makefile.in
+===================================================================
+--- gcc-4.5+svnr155680.orig/Makefile.in 2010-01-13 01:02:22.639539865 -0800
++++ gcc-4.5+svnr155680/Makefile.in 2010-01-13 01:05:24.288038715 -0800
+@@ -328,6 +328,7 @@ AR_FOR_BUILD = @AR_FOR_BUILD@
+ AS_FOR_BUILD = @AS_FOR_BUILD@
+ CC_FOR_BUILD = @CC_FOR_BUILD@
+ CFLAGS_FOR_BUILD = @CFLAGS_FOR_BUILD@
++CPPFLAGS_FOR_BUILD = @CPPFLAGS_FOR_BUILD@
+ CXXFLAGS_FOR_BUILD = @CXXFLAGS_FOR_BUILD@
+ CXX_FOR_BUILD = @CXX_FOR_BUILD@
+ DLLTOOL_FOR_BUILD = @DLLTOOL_FOR_BUILD@
+@@ -657,6 +658,7 @@ BASE_FLAGS_TO_PASS = \
+ "BISON=$(BISON)" \
+ "CC_FOR_BUILD=$(CC_FOR_BUILD)" \
+ "CFLAGS_FOR_BUILD=$(CFLAGS_FOR_BUILD)" \
++ "CPPFLAGS_FOR_BUILD=$(CPPFLAGS_FOR_BUILD)" \
+ "CXX_FOR_BUILD=$(CXX_FOR_BUILD)" \
+ "EXPECT=$(EXPECT)" \
+ "FLEX=$(FLEX)" \
+Index: gcc-4.5+svnr155680/gcc/configure
+===================================================================
+--- gcc-4.5+svnr155680.orig/gcc/configure 2010-01-13 01:02:22.663539713 -0800
++++ gcc-4.5+svnr155680/gcc/configure 2010-01-13 01:07:24.315537016 -0800
+@@ -705,6 +705,7 @@ SED
+ LIBTOOL
+ collect2
+ STMP_FIXINC
++BUILD_CPPFLAGS
+ BUILD_LDFLAGS
+ BUILD_CFLAGS
+ CC_FOR_BUILD
+@@ -10911,6 +10912,7 @@ fi
+ CC_FOR_BUILD='$(CC)'
+ BUILD_CFLAGS='$(ALL_CFLAGS)'
+ BUILD_LDFLAGS='$(LDFLAGS)'
++BUILD_CPPFLAGS='$(ALL_CPPFLAGS)'
+ STMP_FIXINC=stmp-fixinc
+
+ # And these apply if build != host, or we are generating coverage data
+@@ -10918,6 +10920,7 @@ if test x$build != x$host || test "x$cov
+ then
+ BUILD_CFLAGS='$(INTERNAL_CFLAGS) $(T_CFLAGS) $(CFLAGS_FOR_BUILD)'
+ BUILD_LDFLAGS='$(LDFLAGS_FOR_BUILD)'
++ BUILD_CPPFLAGS='$(CPPFLAGS_FOR_BUILD)'
+ fi
+
+ # Expand extra_headers to include complete path.
+@@ -17037,7 +17040,7 @@ else
+ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+ lt_status=$lt_dlunknown
+ cat > conftest.$ac_ext <<_LT_EOF
+-#line 17040 "configure"
++#line 17043 "configure"
+ #include "confdefs.h"
+
+ #if HAVE_DLFCN_H
+@@ -17143,7 +17146,7 @@ else
+ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+ lt_status=$lt_dlunknown
+ cat > conftest.$ac_ext <<_LT_EOF
+-#line 17146 "configure"
++#line 17149 "configure"
+ #include "confdefs.h"
+
+ #if HAVE_DLFCN_H
+Index: gcc-4.5+svnr155680/Makefile.tpl
+===================================================================
+--- gcc-4.5+svnr155680.orig/Makefile.tpl 2010-01-13 01:02:22.603540396 -0800
++++ gcc-4.5+svnr155680/Makefile.tpl 2010-01-13 01:05:24.332038114 -0800
+@@ -331,6 +331,7 @@ AR_FOR_BUILD = @AR_FOR_BUILD@
+ AS_FOR_BUILD = @AS_FOR_BUILD@
+ CC_FOR_BUILD = @CC_FOR_BUILD@
+ CFLAGS_FOR_BUILD = @CFLAGS_FOR_BUILD@
++CPPFLAGS_FOR_BUILD = @CPPFLAGS_FOR_BUILD@
+ CXXFLAGS_FOR_BUILD = @CXXFLAGS_FOR_BUILD@
+ CXX_FOR_BUILD = @CXX_FOR_BUILD@
+ DLLTOOL_FOR_BUILD = @DLLTOOL_FOR_BUILD@
+Index: gcc-4.5+svnr155680/configure
+===================================================================
+--- gcc-4.5+svnr155680.orig/configure 2010-01-13 01:02:22.615539634 -0800
++++ gcc-4.5+svnr155680/configure 2010-01-13 01:07:18.940037187 -0800
+@@ -651,6 +651,7 @@ GCJ_FOR_BUILD
+ DLLTOOL_FOR_BUILD
+ CXX_FOR_BUILD
+ CXXFLAGS_FOR_BUILD
++CPPFLAGS_FOR_BUILD
+ CFLAGS_FOR_BUILD
+ CC_FOR_BUILD
+ AS_FOR_BUILD
+@@ -7862,6 +7863,7 @@ esac
+ # our build compiler if desired.
+ if test x"${build}" = x"${host}" ; then
+ CFLAGS_FOR_BUILD=${CFLAGS_FOR_BUILD-${CFLAGS}}
++ CPPFLAGS_FOR_BUILD=${CPPFLAGS_FOR_BUILD-${CPPFLAGS}}
+ CXXFLAGS_FOR_BUILD=${CXXFLAGS_FOR_BUILD-${CXXFLAGS}}
+ LDFLAGS_FOR_BUILD=${LDFLAGS_FOR_BUILD-${LDFLAGS}}
+ fi
+@@ -7940,6 +7942,7 @@ done
+
+
+
++
+ # Generate default definitions for YACC, M4, LEX and other programs that run
+ # on the build machine. These are used if the Makefile can't locate these
+ # programs in objdir.
+Index: gcc-4.5+svnr155680/configure.ac
+===================================================================
+--- gcc-4.5+svnr155680.orig/configure.ac 2010-01-13 01:02:22.651540130 -0800
++++ gcc-4.5+svnr155680/configure.ac 2010-01-13 01:05:24.340037763 -0800
+@@ -3022,6 +3022,7 @@ esac
+ # our build compiler if desired.
+ if test x"${build}" = x"${host}" ; then
+ CFLAGS_FOR_BUILD=${CFLAGS_FOR_BUILD-${CFLAGS}}
++ CPPFLAGS_FOR_BUILD=${CPPFLAGS_FOR_BUILD-${CPPFLAGS}}
+ CXXFLAGS_FOR_BUILD=${CXXFLAGS_FOR_BUILD-${CXXFLAGS}}
+ LDFLAGS_FOR_BUILD=${LDFLAGS_FOR_BUILD-${LDFLAGS}}
+ fi
+@@ -3087,6 +3088,7 @@ AC_SUBST(AR_FOR_BUILD)
+ AC_SUBST(AS_FOR_BUILD)
+ AC_SUBST(CC_FOR_BUILD)
+ AC_SUBST(CFLAGS_FOR_BUILD)
++AC_SUBST(CPPFLAGS_FOR_BUILD)
+ AC_SUBST(CXXFLAGS_FOR_BUILD)
+ AC_SUBST(CXX_FOR_BUILD)
+ AC_SUBST(DLLTOOL_FOR_BUILD)
diff --git a/recipes/gcc/gcc-4.5.0/gcc-uclibc-locale-ctype_touplow_t.patch b/recipes/gcc/gcc-4.5.0/gcc-uclibc-locale-ctype_touplow_t.patch
new file mode 100644
index 0000000000..ffb37d2976
--- /dev/null
+++ b/recipes/gcc/gcc-4.5.0/gcc-uclibc-locale-ctype_touplow_t.patch
@@ -0,0 +1,52 @@
+Index: gcc-4.4.1/libstdc++-v3/config/locale/generic/c_locale.h
+===================================================================
+--- gcc-4.4.1.orig/libstdc++-v3/config/locale/generic/c_locale.h 2009-08-06 23:38:32.398265633 -0700
++++ gcc-4.4.1/libstdc++-v3/config/locale/generic/c_locale.h 2009-08-06 23:41:09.778242281 -0700
+@@ -41,12 +41,17 @@
+
+ #include <clocale>
+ #include <cstddef>
++#include <features.h>
++#include <ctype.h>
+
+ #define _GLIBCXX_NUM_CATEGORIES 0
+
+ _GLIBCXX_BEGIN_NAMESPACE(std)
+-
+- typedef int* __c_locale;
++#ifdef __UCLIBC__
++ typedef __ctype_touplow_t* __c_locale;
++#else
++ typedef int* __c_locale;
++#endif
+
+ // Convert numeric value of type double and long double to string and
+ // return length of string. If vsnprintf is available use it, otherwise
+Index: gcc-4.4.1/libstdc++-v3/config/os/gnu-linux/ctype_base.h
+===================================================================
+--- gcc-4.4.1.orig/libstdc++-v3/config/os/gnu-linux/ctype_base.h 2009-08-06 23:42:27.402242608 -0700
++++ gcc-4.4.1/libstdc++-v3/config/os/gnu-linux/ctype_base.h 2009-08-06 23:43:44.842241959 -0700
+@@ -33,14 +33,21 @@
+ */
+
+ // Information as gleaned from /usr/include/ctype.h
+-
++
++#include <features.h>
++#include <ctype.h>
++
+ _GLIBCXX_BEGIN_NAMESPACE(std)
+
+ /// @brief Base class for ctype.
+ struct ctype_base
+ {
+ // Non-standard typedefs.
+- typedef const int* __to_type;
++#ifdef __UCLIBC__
++ typedef const __ctype_touplow_t* __to_type;
++#else
++ typedef const int* __to_type;
++#endif
+
+ // NB: Offsets into ctype<char>::_M_table force a particular size
+ // on the mask type. Because of this, we don't use an enum.
diff --git a/recipes/gcc/gcc-4.5.0/zecke-no-host-includes.patch b/recipes/gcc/gcc-4.5.0/zecke-no-host-includes.patch
new file mode 100644
index 0000000000..4ccf35f627
--- /dev/null
+++ b/recipes/gcc/gcc-4.5.0/zecke-no-host-includes.patch
@@ -0,0 +1,31 @@
+Index: gcc-4.4+svnr145550/gcc/incpath.c
+===================================================================
+--- gcc-4.4+svnr145550.orig/gcc/incpath.c 2009-04-04 13:48:31.000000000 -0700
++++ gcc-4.4+svnr145550/gcc/incpath.c 2009-04-04 14:49:29.000000000 -0700
+@@ -417,6 +417,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);
+ }
+
diff --git a/recipes/gcc/gcc-4.5.0/zecke-xgcc-cpp.patch b/recipes/gcc/gcc-4.5.0/zecke-xgcc-cpp.patch
new file mode 100644
index 0000000000..a7722cbfc4
--- /dev/null
+++ b/recipes/gcc/gcc-4.5.0/zecke-xgcc-cpp.patch
@@ -0,0 +1,28 @@
+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.3.1/Makefile.in
+===================================================================
+--- gcc-4.3.1.orig/Makefile.in 2008-08-19 01:09:56.000000000 -0700
++++ gcc-4.3.1/Makefile.in 2008-08-19 01:13:27.000000000 -0700
+@@ -204,6 +204,7 @@
+ AR="$(AR_FOR_TARGET)"; export AR; \
+ AS="$(COMPILER_AS_FOR_TARGET)"; export AS; \
+ CC="$(CC_FOR_TARGET)"; export CC; \
++ CPP="$(CC_FOR_TARGET) -E"; export CPP; \
+ CFLAGS="$(CFLAGS_FOR_TARGET) $(SYSROOT_CFLAGS_FOR_TARGET) $(DEBUG_PREFIX_CFLAGS_FOR_TARGET)"; export CFLAGS; \
+ CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \
+ CPPFLAGS="$(CPPFLAGS_FOR_TARGET)"; export CPPFLAGS; \
+Index: gcc-4.3.1/Makefile.tpl
+===================================================================
+--- gcc-4.3.1.orig/Makefile.tpl 2008-08-21 00:07:58.000000000 -0700
++++ gcc-4.3.1/Makefile.tpl 2008-08-21 00:09:52.000000000 -0700
+@@ -223,6 +223,7 @@
+ AR="$(AR_FOR_TARGET)"; export AR; \
+ AS="$(COMPILER_AS_FOR_TARGET)"; export AS; \
+ CC="$(CC_FOR_TARGET)"; export CC; \
++ CPP="$(CC_FOR_TARGET) -E"; export CPP; \
+ CFLAGS="$(CFLAGS_FOR_TARGET) $(SYSROOT_CFLAGS_FOR_TARGET) $(DEBUG_PREFIX_CFLAGS_FOR_TARGET)"; export CFLAGS; \
+ CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \
+ CPPFLAGS="$(CPPFLAGS_FOR_TARGET)"; export CPPFLAGS; \
diff --git a/recipes/gcc/gcc-cross-initial_4.5.0.bb b/recipes/gcc/gcc-cross-initial_4.5.0.bb
new file mode 100644
index 0000000000..8356dd1fac
--- /dev/null
+++ b/recipes/gcc/gcc-cross-initial_4.5.0.bb
@@ -0,0 +1,9 @@
+require gcc-cross_${PV}.bb
+require gcc-cross-initial.inc
+
+DEPENDS += "gmp-native mpfr-native libmpc-native"
+
+EXTRA_OECONF += " --disable-libmudflap \
+ --disable-libgomp \
+ --enable-decimal-float=no \
+ --disable-libssp"
diff --git a/recipes/gcc/gcc-cross-intermediate_4.5.0.bb b/recipes/gcc/gcc-cross-intermediate_4.5.0.bb
new file mode 100644
index 0000000000..b816c8b81c
--- /dev/null
+++ b/recipes/gcc/gcc-cross-intermediate_4.5.0.bb
@@ -0,0 +1,8 @@
+require gcc-cross_${PV}.bb
+require gcc-cross-intermediate.inc
+
+DEPENDS += "libmpc-native gmp-native mpfr-native"
+
+EXTRA_OECONF += " --disable-libmudflap \
+ --disable-libgomp \
+ --disable-libssp"
diff --git a/recipes/gcc/gcc-cross-sdk_4.5.0.bb b/recipes/gcc/gcc-cross-sdk_4.5.0.bb
new file mode 100644
index 0000000000..48d8a0d1ed
--- /dev/null
+++ b/recipes/gcc/gcc-cross-sdk_4.5.0.bb
@@ -0,0 +1,14 @@
+PR = "r1"
+
+inherit sdk
+
+require gcc-${PV}.inc
+require gcc-cross-sdk.inc
+require gcc-configure-sdk.inc
+require gcc-package-sdk.inc
+
+DEPENDS += "libmpc-native gmp-native mpfr-native"
+
+EXTRA_OECONF += "--disable-libunwind-exceptions --disable-libssp \
+ --disable-libgomp --disable-libmudflap \
+ --with-mpfr=${STAGING_DIR_NATIVE}${prefix_native}"
diff --git a/recipes/gcc/gcc-cross_4.5.0.bb b/recipes/gcc/gcc-cross_4.5.0.bb
new file mode 100644
index 0000000000..2d3c1368dc
--- /dev/null
+++ b/recipes/gcc/gcc-cross_4.5.0.bb
@@ -0,0 +1,13 @@
+PR = "r0"
+require gcc-${PV}.inc
+require gcc-cross4.inc
+require gcc-configure-cross.inc
+require gcc-package-cross.inc
+
+DEPENDS += "libmpc-native"
+
+SRC_URI_append_fail-fast = " file://zecke-no-host-includes.patch;patch=1 "
+
+EXTRA_OECONF += " --disable-libunwind-exceptions --with-mpfr=${STAGING_DIR_NATIVE}${prefix_native} --with-system-zlib"
+
+ARCH_FLAGS_FOR_TARGET += "-isystem${STAGING_DIR_TARGET}${target_includedir}"
diff --git a/recipes/gcc/gcc_4.5.0.bb b/recipes/gcc/gcc_4.5.0.bb
new file mode 100644
index 0000000000..55725b0044
--- /dev/null
+++ b/recipes/gcc/gcc_4.5.0.bb
@@ -0,0 +1,13 @@
+PR = "r0"
+require gcc-${PV}.inc
+require gcc-configure-target.inc
+require gcc-package-target.inc
+
+# Gcc 4.3.3 installs crt* in a '4.3.1' dir....
+FILES_${PN} += "\
+ ${gcclibdir}/${TARGET_SYS}/*/*.o \
+"
+
+SRC_URI_append = "file://fortran-cross-compile-hack.patch;patch=1"
+
+ARCH_FLAGS_FOR_TARGET += "-isystem${STAGING_INCDIR}"