From d3b8687ea6604e8d2a6b53fc50f2a319df5625d5 Mon Sep 17 00:00:00 2001 From: Richard Purdie Date: Tue, 29 Jun 2010 00:35:02 +0100 Subject: gcc: Add patch to allow disabling of libstdc++ linkage and hence fix gcc-runtime which was having broken configure tests due to the linker failures and assuming maths primitives were not in libm Signed-off-by: Richard Purdie --- meta/packages/gcc/gcc-4.3.3.inc | 1 + meta/packages/gcc/gcc-4.3.3/optional_libstdc.patch | 23 ++++++++++++++++++++++ meta/packages/gcc/gcc-configure-runtime.inc | 2 +- meta/packages/gcc/gcc-cross_4.3.3.bb | 2 +- meta/packages/gcc/gcc-runtime_4.3.3.bb | 2 +- 5 files changed, 27 insertions(+), 3 deletions(-) create mode 100644 meta/packages/gcc/gcc-4.3.3/optional_libstdc.patch diff --git a/meta/packages/gcc/gcc-4.3.3.inc b/meta/packages/gcc/gcc-4.3.3.inc index dcd905ccfe..5cfa0f68d8 100644 --- a/meta/packages/gcc/gcc-4.3.3.inc +++ b/meta/packages/gcc/gcc-4.3.3.inc @@ -53,6 +53,7 @@ SRC_URI = "${GNU_MIRROR}/gcc/gcc-${PV}/gcc-${PV}.tar.bz2 \ file://zecke-xgcc-cpp.patch;patch=1 \ file://gcc-flags-for-build.patch;patch=1 \ file://pr35942.patch;patch=1 \ + file://optional_libstdc.patch;patch=1 \ " SRC_URI_append_sh3 = " file://sh3-installfix-fixheaders.patch;patch=1 " diff --git a/meta/packages/gcc/gcc-4.3.3/optional_libstdc.patch b/meta/packages/gcc/gcc-4.3.3/optional_libstdc.patch new file mode 100644 index 0000000000..0f74353a1f --- /dev/null +++ b/meta/packages/gcc/gcc-4.3.3/optional_libstdc.patch @@ -0,0 +1,23 @@ +gcc-runtime builds libstdc++ separately from gcc-cross-*. Its configure tests using g++ +will not run correctly since my default the linker will try and link against libstdc++ +which shouldn't exist yet. We need an option to disable the automatically added -lstdc++ +option whilst leaving -lc, -lgcc and other automatic library dependencies. This patch +adds such an option which only disables the -lstdc++ linkage. + +A "standard" gcc build uses xgcc and hence avoids this. We should ask upstream how to +do this officially, the likely answer is don't build libstdc++ separately. + +RP 29/6/10 + +Index: gcc-4.3.3/gcc/cp/g++spec.c +=================================================================== +--- gcc-4.3.3.orig/gcc/cp/g++spec.c 2010-06-29 00:06:03.901695025 +0100 ++++ gcc-4.3.3/gcc/cp/g++spec.c 2010-06-29 00:06:58.800325439 +0100 +@@ -131,6 +131,7 @@ + if (argv[i][0] == '-') + { + if (strcmp (argv[i], "-nostdlib") == 0 ++ || strcmp (argv[i], "-nostdlib++") == 0 + || strcmp (argv[i], "-nodefaultlibs") == 0) + { + library = -1; diff --git a/meta/packages/gcc/gcc-configure-runtime.inc b/meta/packages/gcc/gcc-configure-runtime.inc index 180ca8d0ee..9719e48ab5 100644 --- a/meta/packages/gcc/gcc-configure-runtime.inc +++ b/meta/packages/gcc/gcc-configure-runtime.inc @@ -13,7 +13,7 @@ RUNTIMETARGET = "libssp libstdc++-v3" # libgfortran do_configure () { - export CXX="${CXX} -nostdinc++" + export CXX="${CXX} -nostdinc++ -nostdlib++" for d in ${RUNTIMETARGET}; do echo "Configuring $d" mkdir -p ${B}/$d/ diff --git a/meta/packages/gcc/gcc-cross_4.3.3.bb b/meta/packages/gcc/gcc-cross_4.3.3.bb index 76d32673c1..98573f0c5a 100644 --- a/meta/packages/gcc/gcc-cross_4.3.3.bb +++ b/meta/packages/gcc/gcc-cross_4.3.3.bb @@ -1,4 +1,4 @@ -PR = "r12" +PR = "r14" require gcc-${PV}.inc require gcc-cross4.inc diff --git a/meta/packages/gcc/gcc-runtime_4.3.3.bb b/meta/packages/gcc/gcc-runtime_4.3.3.bb index f94e07ce2b..6768674c1e 100644 --- a/meta/packages/gcc/gcc-runtime_4.3.3.bb +++ b/meta/packages/gcc/gcc-runtime_4.3.3.bb @@ -1,4 +1,4 @@ -PR = "r12" +PR = "r14" require gcc-${PV}.inc require gcc-configure-runtime.inc -- cgit v1.2.3-54-g00ecf