On Tue, Jun 18, 2019 at 12:47 AM <[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'
machine is already 64bit so default lib config will be 64bit, what is multilib:lib64 for here ? > 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 <[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 -- _______________________________________________ Openembedded-core mailing list [email protected] http://lists.openembedded.org/mailman/listinfo/openembedded-core
