aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRoman I Khimov <khimov@altell.ru>2009-04-15 15:54:48 +0400
committerRoman I Khimov <khimov@altell.ru>2009-08-18 23:24:02 +0400
commit468e56e2f104f295484c2921fad84bcf90cc3e64 (patch)
tree36a7982c0976929155b92b2309ed648e2377dcc6
parent4ab31c319f2adbb4e491bac9107891ed77b897e2 (diff)
downloadopenembedded-468e56e2f104f295484c2921fad84bcf90cc3e64.tar.gz
gcc-cross: add multilib overrides
-rw-r--r--recipes/gcc/gcc-cross.inc2
-rw-r--r--recipes/gcc/gcc-package-cross.inc35
2 files changed, 37 insertions, 0 deletions
diff --git a/recipes/gcc/gcc-cross.inc b/recipes/gcc/gcc-cross.inc
index 3fa6f61f0d..3c8438b190 100644
--- a/recipes/gcc/gcc-cross.inc
+++ b/recipes/gcc/gcc-cross.inc
@@ -9,4 +9,6 @@ target_base_libdir := "${base_libdir}"
inherit cross
DEPENDS = "virtual/${TARGET_PREFIX}binutils virtual/${TARGET_PREFIX}libc-for-gcc"
+DEPENDS_multilib = "virtual/${TARGET_PREFIX}binutils virtual/${TARGET_PREFIX}libc-for-gcc virtual/${TARGET_SYS_MULTILIB}-libc-for-gcc"
PROVIDES = "virtual/${TARGET_PREFIX}gcc virtual/${TARGET_PREFIX}g++"
+PROVIDES_multilib = "virtual/${TARGET_PREFIX}gcc virtual/${TARGET_PREFIX}g++ virtual/${TARGET_SYS_MULTILIB}gcc virtual/${TARGET_SYS_MULTILIB}g++"
diff --git a/recipes/gcc/gcc-package-cross.inc b/recipes/gcc/gcc-package-cross.inc
index fa1f47f51a..46ce2f2b80 100644
--- a/recipes/gcc/gcc-package-cross.inc
+++ b/recipes/gcc/gcc-package-cross.inc
@@ -15,6 +15,13 @@ FILES_libgcc = "${target_base_libdir}/libgcc_s.so.1"
FILES_libstdc++ = "${target_libdir}/libstdc++.so.*"
+PACKAGES_append_multilib = " libgcc-${ARCH_MULTILIB} libssp-${ARCH_MULTILIB} libstdc++-${ARCH_MULTILIB} libg2c-${ARCH_MULTILIB} libgfortran-${ARCH_MULTILIB}"
+FILES_libgcc-${ARCH_MULTILIB} = "${layout_base_prefix}/${LIB_MULTILIB}/libgcc_s.so.1"
+FILES_libssp-${ARCH_MULTILIB} = "${layout_exec_prefix}/${LIB_MULTILIB}/libssp.so.*"
+FILES_libstdc++-${ARCH_MULTILIB} = "${layout_exec_prefix}/${LIB_MULTILIB}/libstdc++.so.*"
+FILES_libg2c-${ARCH_MULTILIB} = "${layout_exec_prefix}/${LIB_MULTILIB}/libg2c.so.*"
+FILES_libgfortran-${ARCH_MULTILIB} = "${layout_exec_prefix}/${LIB_MULTILIB}/libgfortran.so.*"
+
do_install () {
oe_runmake 'DESTDIR=${D}' install
@@ -73,3 +80,31 @@ do_install () {
cd $currdir
fi
}
+
+do_install_append_multilib () {
+ mkdir -p ${D}${base_multilibdir}
+ if [ -f ${D}${base_multilibdir}/libgcc_s.so.? ]; then
+ # Already in the right location
+ :
+ elif [ -f ${D}${prefix}/${LIB_MULTILIB}/libgcc_s.so.? ]; then
+ mv -f ${D}${prefix}/${LIB_MULTILIB}/libgcc_s.so* ${D}${base_multilibdir} || true
+ else
+ mv -f ${D}${prefix}/*/${LIB_MULTILIB}/libgcc_s.so* ${D}${base_multilibdir} || true
+ fi
+
+ mkdir -p ${D}${multilibdir}
+
+ mv -f ${D}${prefix}/*/${LIB_MULTILIB}/libstdc++.so* ${D}${multilibdir} || true
+ mv -f ${D}${prefix}/*/${LIB_MULTILIB}/libg2c.so* ${D}${multilibdir} || true
+ mv -f ${D}${prefix}/*/${LIB_MULTILIB}/libgfortran*.so* ${D}${multilibdir} || true
+ mv -f ${D}${prefix}/*/${LIB_MULTILIB}/libssp*.so* ${D}${multilibdir} || true
+
+ # Manually run the target stripper since we won't get it run by
+ # the packaging.
+ if [ "x${OLD_INHIBIT_PACKAGE_STRIP}" != "x1" ]; then
+ ${TARGET_PREFIX}strip ${D}${multilibdir}/libstdc++.so.*
+ ${TARGET_PREFIX}strip ${D}${multilibdir}/libg2c.so.* || true
+ ${TARGET_PREFIX}strip ${D}${base_multilibdir}/libgcc_s.so.* || true
+ ${TARGET_PREFIX}strip ${D}${multilibdir}/libgfortran*.so* || true
+ fi
+}