On 6/21/19 4:32 PM, Martin Jansa wrote:
On Tue, Jun 18, 2019 at 03:46:56PM +0800, [email protected] wrote:
From: Changqing Li <[email protected]>

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

Could you send your configuration like this? Thanks.

MACHINE="qemumips64"
MULTILIBS = 'multilib:lib64 multilib:lib32'
DEFAULTTUNE = 'mips64-n32'
DEFAULTTUNE_virtclass-multilib-lib64 = 'mips64'
DEFAULTTUNE_virtclass-multilib-lib32 = 'mips32r2'
require conf/multilib.conf

Signed-off-by: Changqing Li <[email protected]>
---
  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
[email protected]
http://lists.openembedded.org/mailman/listinfo/openembedded-core

--
BRs

Sandy(Li Changqing)

--
_______________________________________________
Openembedded-core mailing list
[email protected]
http://lists.openembedded.org/mailman/listinfo/openembedded-core

Reply via email to