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

Changqing Li changqing.li at windriver.com
Mon Jun 24 01:01:59 UTC 2019


On 6/21/19 6:21 PM, Martin Jansa wrote:
> Hi,
>
> see the fix here:
> http://lists.openembedded.org/pipermail/openembedded-core/2019-June/283928.html
>
> I think it doesn't need additional explanation.
>
> Any aarch64/arm multilib configuration should trigger this (or 
> anything where TARGET_OS isn't just "linux").
Thanks.
>
> Regards,
>
> On Fri, Jun 21, 2019 at 11:08 AM Changqing Li 
> <changqing.li at windriver.com <mailto:changqing.li at windriver.com>> wrote:
>
>
>     On 6/21/19 4:32 PM, Martin Jansa wrote:
>     > On Tue, Jun 18, 2019 at 03:46:56PM +0800,
>     changqing.li at windriver.com <mailto:changqing.li at windriver.com> wrote:
>     >> From: Changqing Li <changqing.li at windriver.com
>     <mailto: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
>
>     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 <changqing.li at windriver.com
>     <mailto: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
>     <mailto:Openembedded-core at lists.openembedded.org>
>     >> http://lists.openembedded.org/mailman/listinfo/openembedded-core
>
>     -- 
>     BRs
>
>     Sandy(Li Changqing)
>
-- 
BRs

Sandy(Li Changqing)

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openembedded.org/pipermail/openembedded-core/attachments/20190624/9bc17e9d/attachment.html>


More information about the Openembedded-core mailing list