[OE-core] [PATCH V3] gcc-runtime: fix C++ header mapping for n32/x32 tune

Martin Jansa martin.jansa at gmail.com
Fri Jun 21 08:32:30 UTC 2019


On Tue, Jun 18, 2019 at 03:46:56PM +0800, changqing.li at windriver.com wrote:
> From: Changqing Li <changqing.li at windriver.com>
> 
> The SDK was unable to find the C++ header pieces correctly since it's
> using a generic compiler, not one specifically targeting the multilib
> vendor prefix and default tune.  This adds the right mapping to ensure
> SDKs work as expected. And fix problem in below configurations:
> 
> multilib configuration 1:
> MACHINE="qemumips64"
> MULTILIBS ?= "multilib:lib32 multilib:libn32"
> DEFAULTTUNE_virtclass-multilib-lib32 ?= "mips"
> DEFAULTTUNE_virtclass-multilib-libn32 ?= "mips64-n32"
> MULTILIB_GLOBAL_VARIANTS_append = " libn32"
> require conf/multilib.conf
> 
> ignoring nonexistent directory "<path>/sysroots/mips64-poky-linux/usr/include/c++/8.2.0/mips64-poky-linux/32
> 
> multilib configuration 2:
> MACHINE="qemumips64"
> MULTILIBS = 'multilib:lib64 multilib:lib32'
> DEFAULTTUNE = 'mips64-n32'
> DEFAULTTUNE_virtclass-multilib-lib64 = 'mips64'
> DEFAULTTUNE_virtclass-multilib-lib32 = 'mips32r2'
> require conf/multilib.conf
> 
> For this configuration:
> for target gcc-runtime, need to create symlink like mips64-poly-linux --> mips64-poky-linux-gnu32
> for target lib64-gcc-runtime, need to create symlink like mips64-poly-linux/32 --> mips64-pokymllib64-linux
> in order to avoid conflict during populate_sdk, create symlink for subfoler bits/ext for target gcc-runtime,
> this is ugly, but seems no better way to cover all kinds of configuration.
> 
> single lib configuration:
> MACHINE="qemumips64"
> DEFAULTTUNE = "mips64-n32"

This seems to be causing:

ln: failed to create symbolic link 'work/aarch64-oemllib32-linux-gnueabi/lib32-gcc-runtime/9.1.0-r0/image/usr/include/c++/9.1.0/arm-oe-linux-gnueabi/bits': No such file or directory
WARNING: exit code 1 from a shell command.
ERROR: Function failed: do_install (log file is located at work/aarch64-oemllib32-linux-gnueabi/lib32-gcc-runtime/9.1.0-r0/temp/log.do_install.31049)

There is only empty directory without the -gnueabi suffix:
work/aarch64-oemllib32-linux-gnueabi/lib32-gcc-runtime/9.1.0-r0/image/usr/include/c++/9.1.0/arm-oe-linux/

and

work/aarch64-oemllib32-linux-gnueabi/lib32-gcc-runtime/9.1.0-r0/image/usr/include/c++/9.1.0/arm-oemllib32-linux-gnueabi/
bits  ext

> Signed-off-by: Changqing Li <changqing.li at windriver.com>
> ---
>  meta/recipes-devtools/gcc/gcc-runtime.inc | 29 +++++++++++++++++------------
>  1 file changed, 17 insertions(+), 12 deletions(-)
> 
> diff --git a/meta/recipes-devtools/gcc/gcc-runtime.inc b/meta/recipes-devtools/gcc/gcc-runtime.inc
> index 3d03d8e..ba767e1 100644
> --- a/meta/recipes-devtools/gcc/gcc-runtime.inc
> +++ b/meta/recipes-devtools/gcc/gcc-runtime.inc
> @@ -86,10 +86,6 @@ do_install () {
>  	if [ -d ${D}${infodir} ]; then
>  		rmdir --ignore-fail-on-non-empty -p ${D}${infodir}
>  	fi
> -	if [ "${TARGET_VENDOR_MULTILIB_ORIGINAL}" != "" -a "${TARGET_VENDOR}" != "${TARGET_VENDOR_MULTILIB_ORIGINAL}" ]; then
> -		ln -s ${TARGET_SYS} ${D}${includedir}/c++/${BINV}/${TARGET_ARCH}${TARGET_VENDOR_MULTILIB_ORIGINAL}-${TARGET_OS}
> -	fi
> -
>  }
>  
>  do_install_append_class-target () {
> @@ -98,20 +94,29 @@ do_install_append_class-target () {
>  	fi
>  
>  	if [ "${TARGET_OS}" = "linux-gnun32" ]; then
> -		if [ "${MULTILIBS}" != "" ]; then
> -			mkdir ${D}${includedir}/c++/${BINV}/${TARGET_ARCH}-pokymllib64-linux
> -			ln -s ../${TARGET_SYS} ${D}${includedir}/c++/${BINV}/${TARGET_ARCH}-pokymllib64-linux/32
> +		if [ "${TARGET_VENDOR_MULTILIB_ORIGINAL}" != "" -a "${TARGET_VENDOR}" != "${TARGET_VENDOR_MULTILIB_ORIGINAL}" ]; then
> +			mkdir ${D}${includedir}/c++/${BINV}/${TARGET_ARCH}${TARGET_VENDOR_MULTILIB_ORIGINAL}-linux
> +			ln -s ../${TARGET_SYS} ${D}${includedir}/c++/${BINV}/${TARGET_ARCH}${TARGET_VENDOR_MULTILIB_ORIGINAL}-linux/32
> +		elif [ "${MULTILIB_VARIANTS}" != "" ]; then
> +			mkdir ${D}${includedir}/c++/${BINV}/${TARGET_ARCH}${TARGET_VENDOR}-linux
> +			ln -s ../${TARGET_SYS} ${D}${includedir}/c++/${BINV}/${TARGET_ARCH}${TARGET_VENDOR}-linux/32
>  		else
>  			ln -s ${TARGET_SYS} ${D}${includedir}/c++/${BINV}/${TARGET_ARCH}${TARGET_VENDOR}-linux
>  		fi
> -	fi
> -	if [ "${TARGET_OS}" = "linux-gnux32" ]; then
> -		if [ "${MULTILIBS}" != "" ]; then
> -			mkdir ${D}${includedir}/c++/${BINV}/${TARGET_ARCH}-poky-linux
> -			ln -s ../${TARGET_SYS} ${D}${includedir}/c++/${BINV}/${TARGET_ARCH}-poky-linux/x32
> +	elif [ "${TARGET_OS}" = "linux-gnux32" ]; then
> +		if [ "${TARGET_VENDOR_MULTILIB_ORIGINAL}" != "" -a "${TARGET_VENDOR}" != "${TARGET_VENDOR_MULTILIB_ORIGINAL}" ]; then
> +			mkdir ${D}${includedir}/c++/${BINV}/${TARGET_ARCH}${TARGET_VENDOR_MULTILIB_ORIGINAL}-linux
> +			ln -s ../${TARGET_SYS} ${D}${includedir}/c++/${BINV}/${TARGET_ARCH}${TARGET_VENDOR_MULTILIB_ORIGINAL}-linux/x32
> +		elif [ "${MULTILIB_VARIANTS}" != "" ]; then
> +			mkdir ${D}${includedir}/c++/${BINV}/${TARGET_ARCH}${TARGET_VENDOR}-linux
> +			ln -s ../${TARGET_SYS} ${D}${includedir}/c++/${BINV}/${TARGET_ARCH}${TARGET_VENDOR}-linux/32
>  		else
>  			ln -s ${TARGET_SYS} ${D}${includedir}/c++/${BINV}/${TARGET_ARCH}${TARGET_VENDOR}-linux
>  		fi
> +	elif [ "${TARGET_VENDOR_MULTILIB_ORIGINAL}" != "" -a "${TARGET_VENDOR}" != "${TARGET_VENDOR_MULTILIB_ORIGINAL}" ]; then
> +		mkdir ${D}${includedir}/c++/${BINV}/${TARGET_ARCH}${TARGET_VENDOR_MULTILIB_ORIGINAL}-linux
> +		ln -s ../${TARGET_SYS}/bits ${D}${includedir}/c++/${BINV}/${TARGET_ARCH}${TARGET_VENDOR_MULTILIB_ORIGINAL}-${TARGET_OS}/bits
> +		ln -s ../${TARGET_SYS}/ext ${D}${includedir}/c++/${BINV}/${TARGET_ARCH}${TARGET_VENDOR_MULTILIB_ORIGINAL}-${TARGET_OS}/ext
>  	fi
>  
>  	if [ "${TCLIBC}" != "glibc" ]; then
> -- 
> 2.7.4
> 
> -- 
> _______________________________________________
> Openembedded-core mailing list
> Openembedded-core at lists.openembedded.org
> http://lists.openembedded.org/mailman/listinfo/openembedded-core

-- 
Martin 'JaMa' Jansa     jabber: Martin.Jansa at gmail.com
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 195 bytes
Desc: Digital signature
URL: <http://lists.openembedded.org/pipermail/openembedded-core/attachments/20190621/289db610/attachment.sig>


More information about the Openembedded-core mailing list