Patchwork [toolchain-layer,1/3] gcc-4.5: Match with OE-Core on building procedure for libgcc and gcc-runtime

login
register
mail settings
Submitter Khem Raj
Date April 30, 2012, 8:51 p.m.
Message ID <1335819064-29468-1-git-send-email-raj.khem@gmail.com>
Download mbox | patch
Permalink /patch/26683/
State Accepted
Commit a61c18324df231029419ab59196b23a6fb2b4743
Headers show

Comments

Khem Raj - April 30, 2012, 8:51 p.m.
Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
 toolchain-layer/recipes-devtools/gcc/libgcc_4.5.bb |   47 +++++++++++++++-----
 1 files changed, 36 insertions(+), 11 deletions(-)
Denys Dmytriyenko - May 2, 2012, 7:14 a.m.
Darn it! I wasted too much time today trying to debug this recent breakage in 
gcc-runtime-4.5, before seeing these patches. It was failing like this:

checking dynamic linker characteristics... configure: error: Link tests are not allowed after GCC_NO_EXECUTABLES.

Now it works again!

> Signed-off-by: Khem Raj <raj.khem@gmail.com>

Tested-by: Denys Dmytriyenko <denys@ti.com>


> ---
>  toolchain-layer/recipes-devtools/gcc/libgcc_4.5.bb |   47 +++++++++++++++-----
>  1 files changed, 36 insertions(+), 11 deletions(-)
> 
> diff --git a/toolchain-layer/recipes-devtools/gcc/libgcc_4.5.bb b/toolchain-layer/recipes-devtools/gcc/libgcc_4.5.bb
> index 1579c8b..ecef5e7 100644
> --- a/toolchain-layer/recipes-devtools/gcc/libgcc_4.5.bb
> +++ b/toolchain-layer/recipes-devtools/gcc/libgcc_4.5.bb
> @@ -1,33 +1,46 @@
>  require recipes-devtools/gcc/gcc-${PV}.inc
>  
> -
>  INHIBIT_DEFAULT_DEPS = "1"
> +
>  DEPENDS = "virtual/${TARGET_PREFIX}gcc virtual/${TARGET_PREFIX}g++"
>  
>  PACKAGES = "\
>    ${PN} \
>    ${PN}-dev \
> +  ${PN}-dbg \
> +  libgcov-dev \
>    "
>  
>  FILES_${PN} = "${base_libdir}/libgcc*.so.*"
>  FILES_${PN}-dev = " \
>    ${base_libdir}/libgcc*.so \
>    ${libdir}/${TARGET_SYS}/${BINV}/crt* \
> -  ${libdir}/${TARGET_SYS}/${BINV}/libgcov.a \
>    ${libdir}/${TARGET_SYS}/${BINV}/libgcc*"
> +FILES_libgcov-dev = " \
> +  ${libdir}/${TARGET_SYS}/${BINV}/libgcov.a"
>  
> -do_fetch[noexec] = "1"
> -do_unpack[noexec] = "1"
> -do_patch[noexec] = "1"
> -do_configure[noexec] = "1"
> -do_compile[noexec] = "1"
> +FILES_${PN}-dbg += "${base_libdir}/.debug/"
>  
> -do_install () {
> +do_configure () {
>  	target=`echo ${MULTIMACH_TARGET_SYS} | sed -e s#-nativesdk##`
> -
> -	# Install libgcc from our gcc-cross saved data
>  	install -d ${D}${base_libdir} ${D}${libdir}
> -	cp -fpPR ${STAGING_INCDIR_NATIVE}/gcc-build-internal-$target/* ${D}
> +	cp -fpPR ${STAGING_INCDIR_NATIVE}/gcc-build-internal-$target/* ${B}
> +	mkdir -p ${B}/${PN}
> +	cd ${B}/${PN}
> +	chmod a+x ${S}/${PN}/configure
> +	${S}/${PN}/configure ${CONFIGUREOPTS} ${EXTRA_OECONF}
> +}
> +
> +do_compile () {
> +	target=`echo ${TARGET_SYS} | sed -e s#-nativesdk##`
> +	cd ${B}/${PN}
> +	oe_runmake MULTIBUILDTOP=${B}/$target/${PN}/
> +}
> +
> +do_install () {
> +	target=`echo ${TARGET_SYS} | sed -e s#-nativesdk##`
> +	cd ${B}/${PN}
> +	oe_runmake 'DESTDIR=${D}' MULTIBUILDTOP=${B}/$target/${PN}/ install
>  
>  	# Move libgcc_s into /lib
>  	mkdir -p ${D}${base_libdir}
> @@ -36,7 +49,19 @@ do_install () {
>  	else
>  		mv ${D}${libdir}/libgcc* ${D}${base_libdir} || true
>  	fi
> +
> +	# install the runtime in /usr/lib/ not in /usr/lib/gcc on target
> +	# so that cross-gcc can find it in the sysroot
> +
> +	mv ${D}${libdir}/gcc/* ${D}${libdir}
> +	rm -rf ${D}${libdir}/gcc/
>  }
>  
> +do_package_write_ipk[depends] += "virtual/${MLPREFIX}libc:do_package"
> +do_package_write_deb[depends] += "virtual/${MLPREFIX}libc:do_package"
> +do_package_write_rpm[depends] += "virtual/${MLPREFIX}libc:do_package"
> +
>  BBCLASSEXTEND = "nativesdk"
>  
> +INSANE_SKIP_libgcc-dev = "staticdev"
> +INSANE_SKIP_libgcov-dev = "staticdev"
> -- 
> 1.7.5.4
> 
> 
> _______________________________________________
> Openembedded-devel mailing list
> Openembedded-devel@lists.openembedded.org
> http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-devel

Patch

diff --git a/toolchain-layer/recipes-devtools/gcc/libgcc_4.5.bb b/toolchain-layer/recipes-devtools/gcc/libgcc_4.5.bb
index 1579c8b..ecef5e7 100644
--- a/toolchain-layer/recipes-devtools/gcc/libgcc_4.5.bb
+++ b/toolchain-layer/recipes-devtools/gcc/libgcc_4.5.bb
@@ -1,33 +1,46 @@ 
 require recipes-devtools/gcc/gcc-${PV}.inc
 
-
 INHIBIT_DEFAULT_DEPS = "1"
+
 DEPENDS = "virtual/${TARGET_PREFIX}gcc virtual/${TARGET_PREFIX}g++"
 
 PACKAGES = "\
   ${PN} \
   ${PN}-dev \
+  ${PN}-dbg \
+  libgcov-dev \
   "
 
 FILES_${PN} = "${base_libdir}/libgcc*.so.*"
 FILES_${PN}-dev = " \
   ${base_libdir}/libgcc*.so \
   ${libdir}/${TARGET_SYS}/${BINV}/crt* \
-  ${libdir}/${TARGET_SYS}/${BINV}/libgcov.a \
   ${libdir}/${TARGET_SYS}/${BINV}/libgcc*"
+FILES_libgcov-dev = " \
+  ${libdir}/${TARGET_SYS}/${BINV}/libgcov.a"
 
-do_fetch[noexec] = "1"
-do_unpack[noexec] = "1"
-do_patch[noexec] = "1"
-do_configure[noexec] = "1"
-do_compile[noexec] = "1"
+FILES_${PN}-dbg += "${base_libdir}/.debug/"
 
-do_install () {
+do_configure () {
 	target=`echo ${MULTIMACH_TARGET_SYS} | sed -e s#-nativesdk##`
-
-	# Install libgcc from our gcc-cross saved data
 	install -d ${D}${base_libdir} ${D}${libdir}
-	cp -fpPR ${STAGING_INCDIR_NATIVE}/gcc-build-internal-$target/* ${D}
+	cp -fpPR ${STAGING_INCDIR_NATIVE}/gcc-build-internal-$target/* ${B}
+	mkdir -p ${B}/${PN}
+	cd ${B}/${PN}
+	chmod a+x ${S}/${PN}/configure
+	${S}/${PN}/configure ${CONFIGUREOPTS} ${EXTRA_OECONF}
+}
+
+do_compile () {
+	target=`echo ${TARGET_SYS} | sed -e s#-nativesdk##`
+	cd ${B}/${PN}
+	oe_runmake MULTIBUILDTOP=${B}/$target/${PN}/
+}
+
+do_install () {
+	target=`echo ${TARGET_SYS} | sed -e s#-nativesdk##`
+	cd ${B}/${PN}
+	oe_runmake 'DESTDIR=${D}' MULTIBUILDTOP=${B}/$target/${PN}/ install
 
 	# Move libgcc_s into /lib
 	mkdir -p ${D}${base_libdir}
@@ -36,7 +49,19 @@  do_install () {
 	else
 		mv ${D}${libdir}/libgcc* ${D}${base_libdir} || true
 	fi
+
+	# install the runtime in /usr/lib/ not in /usr/lib/gcc on target
+	# so that cross-gcc can find it in the sysroot
+
+	mv ${D}${libdir}/gcc/* ${D}${libdir}
+	rm -rf ${D}${libdir}/gcc/
 }
 
+do_package_write_ipk[depends] += "virtual/${MLPREFIX}libc:do_package"
+do_package_write_deb[depends] += "virtual/${MLPREFIX}libc:do_package"
+do_package_write_rpm[depends] += "virtual/${MLPREFIX}libc:do_package"
+
 BBCLASSEXTEND = "nativesdk"
 
+INSANE_SKIP_libgcc-dev = "staticdev"
+INSANE_SKIP_libgcov-dev = "staticdev"