]> code.ossystems Code Review - openembedded-core.git/commitdiff
gcc-runtime: Various bug fixes
authorRichard Purdie <rpurdie@linux.intel.com>
Tue, 8 Jun 2010 19:33:16 +0000 (20:33 +0100)
committerRichard Purdie <rpurdie@linux.intel.com>
Tue, 8 Jun 2010 19:33:16 +0000 (20:33 +0100)
* Use the -nostdinc++ to CXX fixing libstdc++
* Generate libgcc in gcc-cross, save the result and use in gcc-runtime
* Fix the layout of the crt*.o files so the SDK compiler can find them

Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
meta/packages/gcc/gcc-configure-runtime.inc
meta/packages/gcc/gcc-cross-canadian_4.3.3.bb
meta/packages/gcc/gcc-cross.inc
meta/packages/gcc/gcc-cross_4.3.3.bb
meta/packages/gcc/gcc-package-cross.inc
meta/packages/gcc/gcc-package-runtime.inc
meta/packages/gcc/gcc-runtime_4.3.3.bb

index 7b43aabf997d653d3b8c72cfd0f04e4770011bcf..180ca8d0ee74aee8fedaabec676feff6f569a73e 100644 (file)
@@ -6,20 +6,20 @@ EXTRA_OECONF_PATHS = " \
     --with-sysroot=${STAGING_DIR_TARGET} \
     --with-build-sysroot=${STAGING_DIR_TARGET}"
 
-RUNTIMETARGET = "libgcc libssp libstdc++-v3"
+RUNTIMETARGET = "libssp libstdc++-v3"
 #  ?
 # libiberty
 # libmudflap
 # libgfortran
 
 do_configure () {
-       cp ${STAGING_DIR_NATIVE}${prefix_native}/include/gcc-build-internal-${TARGET_SYS}/* ${S}/gcc
+       export CXX="${CXX} -nostdinc++"
        for d in ${RUNTIMETARGET}; do
                echo "Configuring $d"
                mkdir -p ${B}/$d/
                cd ${B}/$d/
                chmod a+x ${S}/$d/configure
-               ${S}/$d/configure ${CONFIGUREOPTS} ${EXTRA_OECONF_PATHS}
+               ${S}/$d/configure ${CONFIGUREOPTS} ${EXTRA_OECONF}
        done
 }
 
@@ -31,6 +31,10 @@ do_compile () {
 }
 
 do_install () {
+       # Install libgcc from our gcc-cross saved data
+       install -d ${D}${base_libdir} ${D}${libdir}
+       cp -fpPR ${STAGING_INCDIR_NATIVE}/gcc-build-internal-${TARGET_SYS}/* ${D}
+
        for d in ${RUNTIMETARGET}; do
                cd ${B}/$d/
                oe_runmake 'DESTDIR=${D}' install
index 64030ad32a036b41306562934bec08026ceb1be9..ae3aab27ba1664819a80a79c4c75ece397e8bc1c 100644 (file)
@@ -5,7 +5,7 @@ require gcc-cross-canadian.inc
 require gcc-configure-sdk.inc
 require gcc-package-sdk.inc
 
-PR = "r9"
+PR = "r12"
 
 DEPENDS += "gmp-nativesdk mpfr-nativesdk"
 RDEPENDS_${PN} += "mpfr-nativesdk"
index 8f13a36a8f74907e69e2c71a608a2b41dbe2054e..02b23ffce0609b0bfc3eed6df765289e957379f4 100644 (file)
@@ -11,6 +11,6 @@ require gcc-configure-cross.inc
 require gcc-package-cross.inc
 
 do_compile () {
-       oe_runmake all-host
+       oe_runmake all-host all-target-libgcc
 }
 
index dbb6352d4a304e5cac0408c9417b9a7dce53a6e0..76d32673c1375183244d8875ed2d7fc0cb495bd2 100644 (file)
@@ -1,4 +1,4 @@
-PR = "r10"
+PR = "r12"
 
 require gcc-${PV}.inc
 require gcc-cross4.inc
index 999925a6fa132bb9fa6a24558dae1c2219da725b..8a170d083b7f2739392eb04d771ca55929fe4da2 100644 (file)
@@ -16,18 +16,21 @@ do_install () {
                rm -rf ${D}${STAGING_DIR_NATIVE}${prefix_native}/$d
        done
 
-       # gcc-runtime requires some headers, we stash them here
+       # gcc-runtime installs libgcc into a special location in staging since it breaks doing a standalone build
        if [ "${PN}" == "gcc-cross" -o "${PN}" == "gcc-crosssdk" ]; then
-               install -d ${D}${includedir}/gcc-build-internal-${TARGET_SYS}
-               for f in *.h *.c libgcc.mvars; do
-                       cp ${B}/gcc/$f ${D}${includedir}/gcc-build-internal-${TARGET_SYS}/
-               done
-               # Special for PowerPC (and possibly others)
-               if [ -f ${B}/gcc/tramp.S ]; then
-                       cp ${B}/gcc/*.S ${D}${includedir}/gcc-build-internal-${TARGET_SYS}/
-               fi
-               if [ -f libgcc.mvars]; then
-                       cp ${B}/gcc/libgcc.mvars ${D}${includedir}/gcc-build-internal-${TARGET_SYS}/
-               fi
+               dest=${D}/${includedir}/gcc-build-internal-${TARGET_SYS}
+               oe_runmake "DESTDIR=$dest" libdir=${target_libdir} base_libdir=${target_base_libdir} prefix=${target_prefix} exec_prefix=${target_exec_prefix} install-target-libgcc
+
+               # Ideally here we'd override the libgcc Makefile's idea of slibdir but
+               # for now, we just move the files to the correct location
+
+               install -d $dest${target_base_libdir}
+               mv $dest${target_exec_prefix}/${TARGET_SYS}/lib*/* $dest${target_base_libdir}
+               rm -rf $dest${target_exec_prefix}/${TARGET_SYS}
+
+               # Also need to move gcc from /usr/lib/gcc/* to /usr/lib/ else the search paths won't find the crt*.o files
+
+               mv $dest${target_libdir}/gcc/* $dest${target_libdir}/
+               rmdir $dest${target_libdir}/gcc
        fi
 }
index 908d2d513c446d99acfe173fddf581974e564a77..40a9ed0d703fac4f3c20bf095b501180ccb31982 100644 (file)
@@ -17,8 +17,8 @@ PACKAGES = "\
 FILES_libgcc = "${base_libdir}/libgcc*.so.*"
 FILES_libgcc-dev = " \
   ${base_libdir}/libgcc*.so \
-  ${libdir}/gcc/${TARGET_SYS}/${BINV}/crt* \
-  ${libdir}/gcc/${TARGET_SYS}/${BINV}/libgcc*"
+  ${libdir}/${TARGET_SYS}/${BINV}/crt* \
+  ${libdir}/${TARGET_SYS}/${BINV}/libgcc*"
 
 FILES_libg2c = "${target_libdir}/libg2c.so.*"
 FILES_libg2c-dev = "\
index b625668be0a05f4470d91b06d3a2c8274299faee..f94e07ce2bccb295f9cc637b1b44645f831cafec 100644 (file)
@@ -1,4 +1,4 @@
-PR = "r10"
+PR = "r12"
 
 require gcc-${PV}.inc
 require gcc-configure-runtime.inc
@@ -8,3 +8,4 @@ SRC_URI_append = "file://fortran-cross-compile-hack.patch;patch=1"
 
 ARCH_FLAGS_FOR_TARGET += "-isystem${STAGING_INCDIR}"
 
+EXTRA_OECONF += "--disable-libunwind-exceptions"