aboutsummaryrefslogtreecommitdiffstats
path: root/recipes-core
diff options
context:
space:
mode:
Diffstat (limited to 'recipes-core')
-rw-r--r--recipes-core/meta/external-xilinx-toolchain.bb155
-rw-r--r--recipes-core/meta/external-xilinx-toolchain/SUPPORTED0
2 files changed, 155 insertions, 0 deletions
diff --git a/recipes-core/meta/external-xilinx-toolchain.bb b/recipes-core/meta/external-xilinx-toolchain.bb
new file mode 100644
index 00000000..392d94cf
--- /dev/null
+++ b/recipes-core/meta/external-xilinx-toolchain.bb
@@ -0,0 +1,155 @@
+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"
+
+CSL_VER_MAIN ??= ""
+
+python () {
+ if not d.getVar("CSL_VER_MAIN"):
+ raise bb.parse.SkipPackage("External toolchain not configured (CSL_VER_MAIN not set).")
+}
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
--- /dev/null
+++ b/recipes-core/meta/external-xilinx-toolchain/SUPPORTED