Due to the supported SDKMACHINE includes:

  aarch64, i586, i686, loongarch64, ppc64, ppc64le, riscv64, x86_64

Only i586 and x86_64, i686 and x86_64 have multilib relationship,
so create multilib symlinks for i686,i586,x86_64 nativesdk. It will
have no regression when nativesdk-gcc disable multilib support in
which the symlinks is broken

[ YOCTO #15722 ]

Signed-off-by: Hongxu Jia <[email protected]>
---
 meta/recipes-devtools/gcc/libgcc-common.inc | 40 +++++++++++++++++++++
 1 file changed, 40 insertions(+)

diff --git a/meta/recipes-devtools/gcc/libgcc-common.inc 
b/meta/recipes-devtools/gcc/libgcc-common.inc
index e3db17d700..ac284a0031 100644
--- a/meta/recipes-devtools/gcc/libgcc-common.inc
+++ b/meta/recipes-devtools/gcc/libgcc-common.inc
@@ -140,6 +140,46 @@ fakeroot python do_multilib_install() {
         os.symlink(src, dest)
 }
 
+# this makes multilib gcc files findable for nativesdk gcc
+# to link multilib nativesdk gcc library
+# e.g.
+# For x86_64 nativesdk-libgcc
+#    sysroots/x86_64-pokysdk-linux/usr/lib/i686-pokysdk-linux/14.2.0
+# by creating this symlink to it
+#    sysroots/x86_64-pokysdk-linux/usr/lib64/x86_64-pokysdk-linux/14.2.0/32
+#
+# For i686 nativesdk-libgcc
+#    sysroots/i686-pokysdk-linux/usr/lib64/x86_64-pokysdk-linux/14.2.0
+# by creating this symlink to it
+#    sysroots/i686-pokysdk-linux/usr/lib/i686-pokysdk-linux/14.2.0/64
+
+fakeroot python do_multilib_install:class-nativesdk() {
+    sdk_arch = d.getVar('SDK_ARCH')
+    if sdk_arch not in ['x86_64', 'i686']:
+        return
+
+    binv = d.getVar('BINV')
+    if d.getVar('SDK_ARCH') == 'x86_64':
+        tune_arch = 'i686'
+        tune_bitness = '32'
+        tune_baselib = 'lib'
+    elif d.getVar('SDK_ARCH') in ['i686', 'i586']:
+        tune_arch = 'x86_64'
+        tune_bitness = '64'
+        tune_baselib = 'lib64'
+
+    src = '../../../' + tune_baselib + '/' + \
+        tune_arch + d.getVar('SDK_VENDOR') + \
+        '-' + d.getVar('SDK_OS') + '/' + binv + '/'
+
+    dest = d.getVar('D') + d.getVar('libdir') + '/' + \
+        d.getVar('SDK_SYS') + '/' + binv + '/' + tune_bitness
+
+    if os.path.lexists(dest):
+        os.unlink(dest)
+    os.symlink(src, dest)
+}
+
 def get_original_os(d):
     vendoros = d.expand('${TARGET_ARCH}${ORIG_TARGET_VENDOR}-${TARGET_OS}')
     for suffix in [d.getVar('ABIEXTENSION'), d.getVar('LIBCEXTENSION')]:
-- 
2.34.1

-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#210077): 
https://lists.openembedded.org/g/openembedded-core/message/210077
Mute This Topic: https://lists.openembedded.org/mt/110730423/21656
Group Owner: [email protected]
Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub 
[[email protected]]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to