external-csl-toolchain: support mips/ppc/arm
- Rather than adjusting TARGET_VENDOR, which results in our TARGET_SYS matching the external toolchain, override TARGET_PREFIX to match external, and leave TARGET_SYS alone - Grab the optimized files out of the toolchain if available - Create a symlink in sysroot to ensure the sysroot layout matches toolchain expectations (optimized files in a subdir) (From OE-Core rev: a37298eb3421a44e88ec5a66b2fc5305ab18f453) Signed-off-by: Christopher Larson <chris_larson@mentor.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
parent
b942a8ee6a
commit
c0d7e9b062
|
@ -2,12 +2,20 @@
|
|||
# Configuration to use external CSL toolchain
|
||||
#
|
||||
|
||||
TARGET_VENDOR = "-none"
|
||||
|
||||
EXTERNAL_TOOLCHAIN ?= "/usr/local/csl/${TARGET_ARCH}"
|
||||
|
||||
PATH =. "${EXTERNAL_TOOLCHAIN}/bin:"
|
||||
|
||||
CSL_TARGET_SYS_powerpc = "powerpc-linux-gnu"
|
||||
CSL_TARGET_SYS_powerpc64 = "powerpc-linux-gnu"
|
||||
CSL_TARGET_SYS_arm = "arm-none-linux-gnueabi"
|
||||
CSL_TARGET_SYS_mips = "mips-linux-gnu"
|
||||
CSL_TARGET_SYS_mipsel = "mips-linux-gnu"
|
||||
CSL_TARGET_SYS_mips64 = "mips-linux-gnu"
|
||||
CSL_TARGET_SYS = "${TARGET_SYS}"
|
||||
|
||||
TARGET_PREFIX = "${CSL_TARGET_SYS}-"
|
||||
|
||||
PREFERRED_PROVIDER_linux-libc-headers = "external-csl-toolchain"
|
||||
PREFERRED_PROVIDER_linux-libc-headers-dev = "external-csl-toolchain"
|
||||
PREFERRED_PROVIDER_virtual/${TARGET_PREFIX}gcc = "external-csl-toolchain"
|
||||
|
@ -28,3 +36,18 @@ TARGET_CPPFLAGS_prepend = " -isystem${EXTERNAL_TOOLCHAIN}/${TARGET_SYS}/include
|
|||
TARGET_LDFLAGS_prepend = " -L${EXTERNAL_TOOLCHAIN}/${TARGET_SYS}/lib -Wl,-rpath-link,${EXTERNAL_TOOLCHAIN}/${TARGET_SYS}/lib "
|
||||
|
||||
TOOLCHAIN_OPTIONS = " --sysroot=${STAGING_DIR_HOST}"
|
||||
|
||||
# Translate to CodeSourcery's names for their optimized files in the toolchain
|
||||
def csl_target_core(d):
|
||||
coredata = {
|
||||
'armv7a-vfp-neon': 'armv7-a-neon',
|
||||
'mips': 'mips32',
|
||||
'mipsel': 'el',
|
||||
'ppce500': 'te500v1',
|
||||
'ppce500mc': 'te500mc',
|
||||
'ppce500v2': 'te500v2',
|
||||
'ppce600': 'te600'
|
||||
}
|
||||
return coredata.get(d.getVar('TUNE_PKGARCH', True), '')
|
||||
|
||||
CSL_TARGET_CORE = "${@csl_target_core(d)}"
|
||||
|
|
|
@ -25,25 +25,43 @@ PROVIDES = "\
|
|||
virtual/linux-libc-headers "
|
||||
RPROVIDES = "glibc-utils libsegfault glibc-thread-db"
|
||||
PACKAGES_DYNAMIC = "glibc-gconv-*"
|
||||
PR = "r2"
|
||||
PR = "r3"
|
||||
|
||||
#SRC_URI = "http://www.codesourcery.com/public/gnu_toolchain/${TARGET_SYS}/arm-${PV}-${TARGET_PREFIX}i686-pc-linux-gnu.tar.bz2"
|
||||
#SRC_URI = "http://www.codesourcery.com/public/gnu_toolchain/${CSL_TARGET_SYS}/arm-${PV}-${TARGET_PREFIX}i686-pc-linux-gnu.tar.bz2"
|
||||
|
||||
SRC_URI = "file://SUPPORTED"
|
||||
|
||||
do_install() {
|
||||
install -d ${D}${sysconfdir} ${D}${bindir} ${D}${sbindir} ${D}${base_bindir} ${D}${libdir}
|
||||
install -d ${D}${base_libdir} ${D}${base_sbindir} ${D}${datadir}
|
||||
install -d ${D}${base_libdir} ${D}${base_sbindir} ${D}${datadir} ${D}/usr
|
||||
|
||||
cp -a ${EXTERNAL_TOOLCHAIN}/${TARGET_SYS}/libc/lib/* ${D}${base_libdir}
|
||||
cp -a ${EXTERNAL_TOOLCHAIN}/${TARGET_SYS}/libc/etc/* ${D}${sysconfdir}
|
||||
cp -a ${EXTERNAL_TOOLCHAIN}/${TARGET_SYS}/libc/sbin/* ${D}${base_sbindir}
|
||||
cp -a ${EXTERNAL_TOOLCHAIN}/${TARGET_SYS}/libc/usr/* ${D}/usr
|
||||
if [ -d ${EXTERNAL_TOOLCHAIN}/${CSL_TARGET_SYS}/libc/${CSL_TARGET_CORE} ]; then
|
||||
cp -a ${EXTERNAL_TOOLCHAIN}/${CSL_TARGET_SYS}/libc/${CSL_TARGET_CORE}/lib/. ${D}${base_libdir}
|
||||
cp -a ${EXTERNAL_TOOLCHAIN}/${CSL_TARGET_SYS}/libc/${CSL_TARGET_CORE}/etc/. ${D}${sysconfdir}
|
||||
cp -a ${EXTERNAL_TOOLCHAIN}/${CSL_TARGET_SYS}/libc/${CSL_TARGET_CORE}/sbin/. ${D}${base_sbindir}
|
||||
if [ ! -e ${EXTERNAL_TOOLCHAIN}/${CSL_TARGET_SYS}/libc/${CSL_TARGET_CORE}/usr/include ]; then
|
||||
cp -a ${EXTERNAL_TOOLCHAIN}/${CSL_TARGET_SYS}/libc/usr/include ${D}/usr/
|
||||
fi
|
||||
cp -a ${EXTERNAL_TOOLCHAIN}/${CSL_TARGET_SYS}/libc/${CSL_TARGET_CORE}/usr/. ${D}/usr/
|
||||
else
|
||||
cp -a ${EXTERNAL_TOOLCHAIN}/${CSL_TARGET_SYS}/libc/lib/. ${D}${base_libdir}
|
||||
cp -a ${EXTERNAL_TOOLCHAIN}/${CSL_TARGET_SYS}/libc/etc/. ${D}${sysconfdir}
|
||||
cp -a ${EXTERNAL_TOOLCHAIN}/${CSL_TARGET_SYS}/libc/sbin/. ${D}${base_sbindir}
|
||||
cp -a ${EXTERNAL_TOOLCHAIN}/${CSL_TARGET_SYS}/libc/usr/. ${D}/usr/
|
||||
fi
|
||||
|
||||
sed -i -e "s# /lib# ../../lib#g" -e "s# /usr/lib# .#g" ${D}${libdir}/libc.so
|
||||
sed -i -e "s# /lib# ../../lib#g" -e "s# /usr/lib# .#g" ${D}${libdir}/libpthread.so
|
||||
}
|
||||
|
||||
SYSROOT_PREPROCESS_FUNCS += "external_toolchain_sysroot_adjust"
|
||||
external_toolchain_sysroot_adjust() {
|
||||
if [ -n "${CSL_TARGET_CORE}" ]; then
|
||||
rm -f ${SYSROOT_DESTDIR}/${CSL_TARGET_CORE}
|
||||
ln -s . ${SYSROOT_DESTDIR}/${CSL_TARGET_CORE}
|
||||
fi
|
||||
}
|
||||
|
||||
GLIBC_INTERNAL_USE_BINARY_LOCALE ?= "compile"
|
||||
|
||||
PACKAGES += "libgcc libgcc-dev libstdc++ libstdc++-dev linux-libc-headers linux-libc-headers-dev"
|
||||
|
|
Loading…
Reference in New Issue