From 68464246815ed791919795e4610ed56c5c86f77c Mon Sep 17 00:00:00 2001 From: Nathan Rossi Date: Mon, 12 Aug 2013 10:30:19 +1000 Subject: external-xilinx-toolchain: Created recipe * Allows use of external Xilinx MicroBlaze and Zynq pre-built toolchains * Does not require additional layer dependencies * Updated documentation regarding external toolchain Signed-off-by: Nathan Rossi --- recipes-core/meta/external-xilinx-toolchain.bb | 148 +++++++++++++++++++++ .../meta/external-xilinx-toolchain/SUPPORTED | 0 2 files changed, 148 insertions(+) create mode 100644 recipes-core/meta/external-xilinx-toolchain.bb create mode 100644 recipes-core/meta/external-xilinx-toolchain/SUPPORTED (limited to 'recipes-core') diff --git a/recipes-core/meta/external-xilinx-toolchain.bb b/recipes-core/meta/external-xilinx-toolchain.bb new file mode 100644 index 00000000..cc49a476 --- /dev/null +++ b/recipes-core/meta/external-xilinx-toolchain.bb @@ -0,0 +1,148 @@ +require recipes-core/eglibc/eglibc-package.inc + +INHIBIT_DEFAULT_DEPS = "1" + +# License applies to this recipe code, not the toolchain itself +SUMMARY = "External Xilinx toolchain" +LICENSE = "MIT" +LIC_FILES_CHKSUM = " \ + file://${COREBASE}/LICENSE;md5=3f40d7994397109285ec7b81fdeb3b58 \ + file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420 \ + " + +DEPENDS += "${@base_conditional('PREFERRED_PROVIDER_linux-libc-headers', PN, '', 'linux-libc-headers', d)}" +PROVIDES += "\ + linux-libc-headers \ + virtual/${TARGET_PREFIX}gcc \ + virtual/${TARGET_PREFIX}g++ \ + virtual/${TARGET_PREFIX}gcc-initial \ + virtual/${TARGET_PREFIX}gcc-intermediate \ + virtual/${TARGET_PREFIX}binutils \ + virtual/${TARGET_PREFIX}libc-for-gcc \ + virtual/${TARGET_PREFIX}libc-initial \ + virtual/${TARGET_PREFIX}compilerlibs \ + virtual/libc \ + virtual/libintl \ + virtual/libiconv \ + virtual/linux-libc-headers \ + glibc-thread-db \ + libgcc \ + eglibc \ + " + +PV = "${CSL_VER_MAIN}" +PR = "r1" + +SRC_URI = "file://SUPPORTED" + +do_install() { + # Use optimized files if available + sysroot="${EXTERNAL_TOOLCHAIN_SYSROOT}" + dbgroot="${EXTERNAL_TOOLCHAIN_DBGROOT}" + + cp -a $sysroot${base_libdir}/. ${D}${base_libdir} + cp -a $sysroot/sbin/. ${D}${base_sbindir} + + install -d ${D}/usr + for usr_element in bin libexec sbin share ${base_libdir}; do + # Copy files from both the sysroot and the debugroot if they exist + if [ ! -z "$sysroot" -a -e $sysroot/usr/$usr_element ]; then + cp -a $sysroot/usr/$usr_element ${D}/usr/ + fi + if [ ! -z "$dbgroot" -a -e $dbgroot/usr/$usr_element ]; then + cp -a $dbgroot/usr/$usr_element ${D}/usr/ + fi + done + + # Copy Include files + cp -a $sysroot/usr/include/. ${D}${includedir} + + # strip out any multi-lib files (they are not supported) + for element in bs m ldscripts; do + if [ -e ${D}${libdir}/$element ]; then + rm -rf ${D}${libdir}/$element + fi + if [ -e ${D}${base_libdir}/$element ]; then + rm -rf ${D}${base_libdir}/$element + fi + done + + # Clean up the image (remove files and directories that are not packaged) + ## ${D}${sysconfdir} + for i in ${D}/usr/share/zoneinfo ${D}/usr/lib/bin ${D}/usr/libexec ; do + if [ -e $i ]; then + rm -rf $i + fi + done + + # Move libstdc++ to /usr/lib + if [ -e ${D}${base_libdir}/libstdc++.so ]; then + mv ${D}${base_libdir}/libstdc++.* ${D}${libdir}/ + fi + + sed -i -e 's/__packed/__attribute__ ((packed))/' ${D}${includedir}/mtd/ubi-user.h + sed -i -e "s# ${base_libdir}# ../..${base_libdir}#g" -e "s# ${libdir}# .#g" ${D}${libdir}/libc.so + sed -i -e "s# ${base_libdir}# ../..${base_libdir}#g" -e "s# ${libdir}# .#g" ${D}${libdir}/libpthread.so +} + +PACKAGES =+ " \ + libgcc libgcc-dev \ + libstdc++ libstdc++-dev libstdc++-staticdev \ + linux-libc-headers linux-libc-headers-dev \ + gdbserver gdbserver-dbg \ + " + +# This test should be fixed to ignore .a files in .debug dirs +INSANE_SKIP_${PN}-dbg = "staticdev" + +# We don't care about GNU_HASH in prebuilt binaries +INSANE_SKIP_${PN}-utils += "ldflags" +INSANE_SKIP_${PN}-dev += "ldflags" +INSANE_SKIP_libstdc++ += "ldflags" +INSANE_SKIP_libgcc += "ldflags" +INSANE_SKIP_gdbserver += "ldflags" + +PKG_${PN} = "eglibc" +PKG_${PN}-dev = "eglibc-dev" +PKG_${PN}-staticdev = "eglibc-staticdev" +PKG_${PN}-doc = "eglibc-doc" +PKG_${PN}-dbg = "eglibc-dbg" +PKG_${PN}-pic = "eglibc-pic" +PKG_${PN}-utils = "eglibc-utils" +PKG_${PN}-gconv = "eglibc-gconv" +PKG_${PN}-extra-nss = "eglibc-extra-nss" +PKG_${PN}-thread-db = "eglibc-thread-db" +PKG_${PN}-pcprofile = "eglibc-pcprofile" + +PKGV = "${CSL_VER_LIBC}" +PKGV_libgcc = "${CSL_VER_GCC}" +PKGV_libgcc-dev = "${CSL_VER_GCC}" +PKGV_libstdc++ = "${CSL_VER_GCC}" +PKGV_libstdc++-dev = "${CSL_VER_GCC}" +PKGV_libstdc++-staticdev = "${CSL_VER_GCC}" +PKGV_linux-libc-headers = "${CSL_VER_KERNEL}" +PKGV_linux-libc-headers-dev = "${CSL_VER_KERNEL}" +PKGV_gdbserver = "${CSL_VER_GDB}" +PKGV_gdbserver-dbg = "${CSL_VER_GDB}" + +FILES_libgcc = "${base_libdir}/libgcc_s.so.1" +FILES_libgcc-dev = "${base_libdir}/libgcc_s.so" +FILES_libstdc++ = "${libdir}/libstdc++.so.*" +FILES_libstdc++-dev = " \ + ${includedir}/c++/${PV} \ + ${libdir}/libstdc++.so \ + ${libdir}/libstdc++.la \ + ${libdir}/libsupc++.la \ + " +FILES_libstdc++-staticdev = "${libdir}/libstdc++.a ${libdir}/libsupc++.a" +FILES_linux-libc-headers = " \ + ${includedir}/asm* \ + ${includedir}/linux \ + ${includedir}/mtd \ + ${includedir}/rdma \ + ${includedir}/scsi \ + ${includedir}/sound \ + ${includedir}/video \ + " +FILES_gdbserver = "${bindir}/gdbserver" +FILES_gdbserver-dbg = "${bindir}/.debug/gdbserver" diff --git a/recipes-core/meta/external-xilinx-toolchain/SUPPORTED b/recipes-core/meta/external-xilinx-toolchain/SUPPORTED new file mode 100644 index 00000000..e69de29b -- cgit v1.2.3-54-g00ecf