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

Changqing Li changqing.li at windriver.com
Wed Jun 19 02:05:20 UTC 2019


On 6/18/19 11:59 PM, Khem Raj wrote:
> On Tue, Jun 18, 2019 at 12:47 AM <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'
> machine is already 64bit so default lib config will be 64bit, what is
> multilib:lib64 for here ?

This config is get from autobuilder.

machine is set to qemumips64, but DEFAULTTUNE is set to mips64-n32,

so this should be why use multilib:lib64.

>
>> 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"
>>
>> 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

-- 
BRs

Sandy(Li Changqing)



More information about the Openembedded-core mailing list