From d03981d6c1e03400febfaa83ceddce84b10ac2e1 Mon Sep 17 00:00:00 2001 From: Richard Purdie Date: Fri, 6 Jun 2008 14:34:02 +0000 Subject: gcc: Add csl 2007q3 from OE.dev git-svn-id: https://svn.o-hand.com/repos/poky/trunk@4605 311d38ba-8fff-0310-9ca6-ca027cbcb966 --- .../gcc/gcc-cross-initial_csl-arm-2007q3.bb | 12 +++++ meta/packages/gcc/gcc-cross_csl-arm-2007q3.bb | 26 +++++++++++ meta/packages/gcc/gcc-csl-arm-2007q3.inc | 51 ++++++++++++++++++++++ .../gcc/gcc-csl-arm-2007q3/gcc-new-makeinfo.patch | 22 ++++++++++ meta/packages/gcc/gcc-csl-arm/arm-nolibfloat.patch | 24 ++++++++++ meta/packages/gcc/gcc-csl-arm/arm-softfloat.patch | 16 +++++++ meta/packages/gcc/gcc-csl-arm/cache-amnesia.patch | 13 ++++++ .../gcc/gcc-csl-arm/fortran-static-linking.patch | 48 ++++++++++++++++++++ .../gcc/gcc-csl-arm/gcc41-configure.in.patch | 22 ++++++++++ meta/packages/gcc/gcc-csl-arm/pr34130.patch | 16 +++++++ .../gcc/gcc-csl-arm/zecke-no-host-includes.patch | 31 +++++++++++++ meta/packages/gcc/gcc-csl-arm/zecke-xgcc-cpp.patch | 16 +++++++ meta/packages/gcc/gcc_csl-arm-2007q3.bb | 5 +++ 13 files changed, 302 insertions(+) create mode 100644 meta/packages/gcc/gcc-cross-initial_csl-arm-2007q3.bb create mode 100644 meta/packages/gcc/gcc-cross_csl-arm-2007q3.bb create mode 100644 meta/packages/gcc/gcc-csl-arm-2007q3.inc create mode 100644 meta/packages/gcc/gcc-csl-arm-2007q3/gcc-new-makeinfo.patch create mode 100644 meta/packages/gcc/gcc-csl-arm/arm-nolibfloat.patch create mode 100644 meta/packages/gcc/gcc-csl-arm/arm-softfloat.patch create mode 100644 meta/packages/gcc/gcc-csl-arm/cache-amnesia.patch create mode 100644 meta/packages/gcc/gcc-csl-arm/fortran-static-linking.patch create mode 100644 meta/packages/gcc/gcc-csl-arm/gcc41-configure.in.patch create mode 100644 meta/packages/gcc/gcc-csl-arm/pr34130.patch create mode 100644 meta/packages/gcc/gcc-csl-arm/zecke-no-host-includes.patch create mode 100644 meta/packages/gcc/gcc-csl-arm/zecke-xgcc-cpp.patch create mode 100644 meta/packages/gcc/gcc_csl-arm-2007q3.bb (limited to 'meta/packages') diff --git a/meta/packages/gcc/gcc-cross-initial_csl-arm-2007q3.bb b/meta/packages/gcc/gcc-cross-initial_csl-arm-2007q3.bb new file mode 100644 index 0000000000..99656dbe83 --- /dev/null +++ b/meta/packages/gcc/gcc-cross-initial_csl-arm-2007q3.bb @@ -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/ +} + diff --git a/meta/packages/gcc/gcc-cross_csl-arm-2007q3.bb b/meta/packages/gcc/gcc-cross_csl-arm-2007q3.bb new file mode 100644 index 0000000000..4fde67b006 --- /dev/null +++ b/meta/packages/gcc/gcc-cross_csl-arm-2007q3.bb @@ -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}" diff --git a/meta/packages/gcc/gcc-csl-arm-2007q3.inc b/meta/packages/gcc/gcc-csl-arm-2007q3.inc new file mode 100644 index 0000000000..601b4f0110 --- /dev/null +++ b/meta/packages/gcc/gcc-csl-arm-2007q3.inc @@ -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 diff --git a/meta/packages/gcc/gcc-csl-arm-2007q3/gcc-new-makeinfo.patch b/meta/packages/gcc/gcc-csl-arm-2007q3/gcc-new-makeinfo.patch new file mode 100644 index 0000000000..b59bd76c85 --- /dev/null +++ b/meta/packages/gcc/gcc-csl-arm-2007q3/gcc-new-makeinfo.patch @@ -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" diff --git a/meta/packages/gcc/gcc-csl-arm/arm-nolibfloat.patch b/meta/packages/gcc/gcc-csl-arm/arm-nolibfloat.patch new file mode 100644 index 0000000000..c4897c0330 --- /dev/null +++ b/meta/packages/gcc/gcc-csl-arm/arm-nolibfloat.patch @@ -0,0 +1,24 @@ +# Dimitry Andric , 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 diff --git a/meta/packages/gcc/gcc-csl-arm/arm-softfloat.patch b/meta/packages/gcc/gcc-csl-arm/arm-softfloat.patch new file mode 100644 index 0000000000..5e1edd9208 --- /dev/null +++ b/meta/packages/gcc/gcc-csl-arm/arm-softfloat.patch @@ -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 diff --git a/meta/packages/gcc/gcc-csl-arm/cache-amnesia.patch b/meta/packages/gcc/gcc-csl-arm/cache-amnesia.patch new file mode 100644 index 0000000000..ef7cd111c5 --- /dev/null +++ b/meta/packages/gcc/gcc-csl-arm/cache-amnesia.patch @@ -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}" diff --git a/meta/packages/gcc/gcc-csl-arm/fortran-static-linking.patch b/meta/packages/gcc/gcc-csl-arm/fortran-static-linking.patch new file mode 100644 index 0000000000..3dd6321dc3 --- /dev/null +++ b/meta/packages/gcc/gcc-csl-arm/fortran-static-linking.patch @@ -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 diff --git a/meta/packages/gcc/gcc-csl-arm/gcc41-configure.in.patch b/meta/packages/gcc/gcc-csl-arm/gcc41-configure.in.patch new file mode 100644 index 0000000000..3d33bcb978 --- /dev/null +++ b/meta/packages/gcc/gcc-csl-arm/gcc41-configure.in.patch @@ -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 diff --git a/meta/packages/gcc/gcc-csl-arm/pr34130.patch b/meta/packages/gcc/gcc-csl-arm/pr34130.patch new file mode 100644 index 0000000000..415335f4b4 --- /dev/null +++ b/meta/packages/gcc/gcc-csl-arm/pr34130.patch @@ -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)); diff --git a/meta/packages/gcc/gcc-csl-arm/zecke-no-host-includes.patch b/meta/packages/gcc/gcc-csl-arm/zecke-no-host-includes.patch new file mode 100644 index 0000000000..6afb10d6ef --- /dev/null +++ b/meta/packages/gcc/gcc-csl-arm/zecke-no-host-includes.patch @@ -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); + } + diff --git a/meta/packages/gcc/gcc-csl-arm/zecke-xgcc-cpp.patch b/meta/packages/gcc/gcc-csl-arm/zecke-xgcc-cpp.patch new file mode 100644 index 0000000000..921cab6e18 --- /dev/null +++ b/meta/packages/gcc/gcc-csl-arm/zecke-xgcc-cpp.patch @@ -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; \ diff --git a/meta/packages/gcc/gcc_csl-arm-2007q3.bb b/meta/packages/gcc/gcc_csl-arm-2007q3.bb new file mode 100644 index 0000000000..d610713177 --- /dev/null +++ b/meta/packages/gcc/gcc_csl-arm-2007q3.bb @@ -0,0 +1,5 @@ +PR = "r0" + +require gcc-${PV}.inc +require gcc-configure-target.inc +require gcc-package-target.inc -- cgit v1.2.3