Signed-off-by: Manjukumar Matha <[email protected]>
---
 conf/distro/include/tcmode-external-xilinx.inc     |  74 ++++----
 conf/distro/include/xilinx-versions.inc            |  44 +++--
 recipes-core/meta/binutils-cross-xilinx.bb         |  24 +++
 recipes-core/meta/external-xilinx-toolchain.bb     | 173 -------------------
 .../meta/external-xilinx-toolchain/SUPPORTED       |   0
 recipes-core/meta/gcc-cross-xilinx.bb              |  30 ++++
 recipes-core/meta/gcc-runtime-xilinx.bb            | 111 ++++++++++++
 recipes-core/meta/gcc-sanitizers-xilinx.bb         |  73 ++++++++
 recipes-core/meta/glibc-xilinx.bb                  | 189 +++++++++++++++++++++
 recipes-core/meta/glibc-xilinx/SUPPORTED           |   0
 recipes-core/meta/glibc-xilinx/nscd.conf           |  88 ++++++++++
 recipes-core/meta/glibc-xilinx/nscd.init           | 116 +++++++++++++
 recipes-core/meta/glibc-xilinx/nscd.service        |  19 +++
 recipes-core/meta/libgcc-xilinx.bb                 |  57 +++++++
 recipes-core/meta/linux-libc-headers-xilinx.bb     |  51 ++++++
 recipes-core/meta/xilinx-toolchain.inc             |   7 +
 16 files changed, 827 insertions(+), 229 deletions(-)
 create mode 100644 recipes-core/meta/binutils-cross-xilinx.bb
 delete mode 100644 recipes-core/meta/external-xilinx-toolchain.bb
 delete mode 100644 recipes-core/meta/external-xilinx-toolchain/SUPPORTED
 create mode 100644 recipes-core/meta/gcc-cross-xilinx.bb
 create mode 100644 recipes-core/meta/gcc-runtime-xilinx.bb
 create mode 100644 recipes-core/meta/gcc-sanitizers-xilinx.bb
 create mode 100644 recipes-core/meta/glibc-xilinx.bb
 create mode 100644 recipes-core/meta/glibc-xilinx/SUPPORTED
 create mode 100755 recipes-core/meta/glibc-xilinx/nscd.conf
 create mode 100755 recipes-core/meta/glibc-xilinx/nscd.init
 create mode 100644 recipes-core/meta/glibc-xilinx/nscd.service
 create mode 100644 recipes-core/meta/libgcc-xilinx.bb
 create mode 100644 recipes-core/meta/linux-libc-headers-xilinx.bb
 create mode 100644 recipes-core/meta/xilinx-toolchain.inc

diff --git a/conf/distro/include/tcmode-external-xilinx.inc 
b/conf/distro/include/tcmode-external-xilinx.inc
index b2824ac..ce19d96 100644
--- a/conf/distro/include/tcmode-external-xilinx.inc
+++ b/conf/distro/include/tcmode-external-xilinx.inc
@@ -5,31 +5,37 @@
 TOOLCHAIN_PATH_ADD = "${EXTERNAL_TOOLCHAIN}/bin:"
 PATH =. "${TOOLCHAIN_PATH_ADD}"
 
-CSL_TARGET_SYS_armv7a ?= "arm-xilinx-linux-gnueabi"
-CSL_TARGET_SYS_microblazeel ?= "microblazeel-xilinx-linux-gnu"
-CSL_TARGET_SYS = "${TARGET_SYS}"
-
-TARGET_PREFIX = "${CSL_TARGET_SYS}-"
-
-PREFERRED_PROVIDER_linux-libc-headers = "external-xilinx-toolchain"
-PREFERRED_PROVIDER_linux-libc-headers-dev = "external-xilinx-toolchain"
-PREFERRED_PROVIDER_virtual/${TARGET_PREFIX}gcc = "external-xilinx-toolchain"
-PREFERRED_PROVIDER_virtual/${TARGET_PREFIX}gcc-initial = 
"external-xilinx-toolchain"
-PREFERRED_PROVIDER_virtual/${TARGET_PREFIX}gcc-intermediate = 
"external-xilinx-toolchain"
-PREFERRED_PROVIDER_virtual/${TARGET_PREFIX}g++ = "external-xilinx-toolchain"
-PREFERRED_PROVIDER_virtual/${TARGET_PREFIX}binutils = 
"external-xilinx-toolchain"
-PREFERRED_PROVIDER_virtual/${TARGET_PREFIX}libc-for-gcc = 
"external-xilinx-toolchain"
-PREFERRED_PROVIDER_virtual/${TARGET_PREFIX}libc-initial = 
"external-xilinx-toolchain"
-PREFERRED_PROVIDER_virtual/${TARGET_PREFIX}compilerlibs = 
"external-xilinx-toolchain"
-PREFERRED_PROVIDER_libgcc = "external-xilinx-toolchain"
-PREFERRED_PROVIDER_glibc = "external-xilinx-toolchain"
-PREFERRED_PROVIDER_virtual/libc = "external-xilinx-toolchain"
-PREFERRED_PROVIDER_virtual/libintl = "external-xilinx-toolchain"
-PREFERRED_PROVIDER_virtual/libiconv = "external-xilinx-toolchain"
-PREFERRED_PROVIDER_glibc-thread-db = "external-xilinx-toolchain"
-PREFERRED_PROVIDER_virtual/linux-libc-headers = "external-xilinx-toolchain"
-PREFERRED_PROVIDER_virtual/linux-libc-headers-dev = "external-xilinx-toolchain"
-PREFERRED_PROVIDER_gdbserver ??= "external-xilinx-toolchain"
+XILINX_TARGET_SYS_aarch64 ?= "aarch64-linux-gnu"
+XILINX_TARGET_SYS_armv7a ?= "arm-linux-gnueabihf"
+XILINX_TARGET_SYS_microblazeel ?= "microblazeel-xilinx-linux-gnu"
+XILINX_TARGET_SYS = "${TARGET_SYS}"
+
+TARGET_PREFIX = "${XILINX_TARGET_SYS}-"
+
+PREFERRED_PROVIDER_linux-libc-headers = "linux-libc-headers-xilinx"
+PREFERRED_PROVIDER_linux-libc-headers-dev = "linux-libc-headers-xilinx"
+PREFERRED_PROVIDER_virtual/linux-libc-headers = "linux-libc-headers-xilinx"
+PREFERRED_PROVIDER_libgcc = "libgcc-xilinx"
+PREFERRED_PROVIDER_virtual/${TARGET_PREFIX}compilerlibs = "gcc-runtime-xilinx"
+PREFERRED_PROVIDER_virtual/${TARGET_PREFIX}binutils = 
"binutils-cross-xilinx-${TARGET_ARCH}"
+
+PREFERRED_PROVIDER_virtual/${TARGET_PREFIX}gcc = 
"gcc-cross-xilinx-${TARGET_ARCH}"
+PREFERRED_PROVIDER_virtual/${TARGET_PREFIX}gcc-initial = 
"gcc-cross-xilinx-${TARGET_ARCH}"
+PREFERRED_PROVIDER_virtual/${TARGET_PREFIX}gcc-intermediate = 
"gcc-cross-xilinx-${TARGET_ARCH}"
+PREFERRED_PROVIDER_virtual/${TARGET_PREFIX}g++ = 
"gcc-cross-xilinx-${TARGET_ARCH}"
+
+PREFERRED_PROVIDER_gcc-sanitizers ?= "gcc-sanitizers-xilinx"
+
+PREFERRED_PROVIDER_virtual/${TARGET_PREFIX}libc-for-gcc = "glibc-xilinx"
+PREFERRED_PROVIDER_virtual/${TARGET_PREFIX}libc-initial = "glibc-xilinx"
+PREFERRED_PROVIDER_glibc = "glibc-xilinx"
+PREFERRED_PROVIDER_virtual/libc = "glibc-xilinx"
+PREFERRED_PROVIDER_virtual/libintl = "glibc-xilinx"
+PREFERRED_PROVIDER_virtual/libiconv = "glibc-xilinx"
+PREFERRED_PROVIDER_glibc-thread-db = "glibc-xilinx"
+
+WARN_QA_remove = "ldflags textrel"
+ERROR_QA_remove = "ldflags textrel"
 
 # No need to re-compile the locale files
 GLIBC_INTERNAL_USE_BINARY_LOCALE = "precompiled"
@@ -39,13 +45,17 @@ TOOLCHAIN_OPTIONS = " --sysroot=${STAGING_DIR_HOST}"
 # Fix up default hash, enforce it in for CC_ARCH for packages that ignore 
LDFLAGS.
 TARGET_CC_ARCH_append = " ${TARGET_LINK_HASH_STYLE}"
 
-# Default sysroot is inside the Xilinx ARM v7-A toolchain in the 
'<CSL_TARGET_SYS>/libc' (no debug-root)
-EXTERNAL_TOOLCHAIN_SYSROOT_armv7a ??= 
"${EXTERNAL_TOOLCHAIN}/${CSL_TARGET_SYS}/libc"
+# Default sysroot is inside the Xilinx ARM v7-A toolchain in the 
'<XILINX_TARGET_SYS>/libc' (no debug-root)
+EXTERNAL_TOOLCHAIN_SYSROOT_armv7a ??= 
"${EXTERNAL_TOOLCHAIN}/${XILINX_TARGET_SYS}/libc"
 EXTERNAL_TOOLCHAIN_DBGROOT_armv7a ??= ""
 
-# Default sysroot is inside the Xilinx MicroBlaze toolchain in the 
'<CSL_TARGET_SYS>/sys-root'
-EXTERNAL_TOOLCHAIN_SYSROOT_microblazeel ??= 
"${EXTERNAL_TOOLCHAIN}/${CSL_TARGET_SYS}/sys-root"
-EXTERNAL_TOOLCHAIN_DBGROOT_microblazeel ??= 
"${EXTERNAL_TOOLCHAIN}/${CSL_TARGET_SYS}/debug-root"
+# Default sysroot is inside the Xilinx ARM v8-A toolchain in the 
'<XILINX_TARGET_SYS>/libc' (no debug-root)
+EXTERNAL_TOOLCHAIN_SYSROOT_aarch64 ??= 
"${EXTERNAL_TOOLCHAIN}/${XILINX_TARGET_SYS}/libc"
+EXTERNAL_TOOLCHAIN_DBGROOT_aarch64 ??= 
"${EXTERNAL_TOOLCHAIN}/${XILINX_TARGET_SYS}/debug-root"
+
+# Default sysroot is inside the Xilinx MicroBlaze toolchain in the 
'<XILINX_TARGET_SYS>/sys-root'
+EXTERNAL_TOOLCHAIN_SYSROOT_microblazeel ??= 
"${EXTERNAL_TOOLCHAIN}/${XILINX_TARGET_SYS}/sys-root"
+EXTERNAL_TOOLCHAIN_DBGROOT_microblazeel ??= 
"${EXTERNAL_TOOLCHAIN}/${XILINX_TARGET_SYS}/debug-root"
 
 addhandler toolchain_setup
 toolchain_setup[eventmask] = "bb.event.BuildStarted"
@@ -58,7 +68,7 @@ python toolchain_setup () {
 
     tarprefix = d.expand('${TARGET_PREFIX}')
     files = []
-    if tarprefix == "arm-xilinx-linux-gnueabi-":
+    if (tarprefix == "arm-linux-gnueabihf-") or (tarprefix == 
"arm-xilinx-linux-gnueabi-"):
         files.append((tarprefix + "ld", tarprefix + "ld.bfd"))
 
     if len(files) > 0:
@@ -76,6 +86,8 @@ python toolchain_setup () {
                 bb.fatal("Unable to populate toolchain binary symlink for %s: 
%s" % (f[0], f[1]))
 }
 
+XILINX_VER_MAIN ?= "2000.0"
+
 require conf/distro/include/xilinx-versions.inc
 
 # Setup suitable toolchain flags
diff --git a/conf/distro/include/xilinx-versions.inc 
b/conf/distro/include/xilinx-versions.inc
index 4e44f07..ae7290e 100644
--- a/conf/distro/include/xilinx-versions.inc
+++ b/conf/distro/include/xilinx-versions.inc
@@ -1,4 +1,4 @@
-def csl_run(d, cmd, *args):
+def xlnx_run(d, cmd, *args):
        import bb.process
        import subprocess
 
@@ -13,9 +13,9 @@ def csl_run(d, cmd, *args):
 
        return bb.process.run(args, cwd=topdir, stderr=subprocess.PIPE)
 
-def csl_get_version(d):
+def xlnx_get_version(d):
        try:
-               stdout, stderr = csl_run(d, 'gcc', '-v')
+               stdout, stderr = xlnx_run(d, 'gcc', '-v')
        except bb.process.CmdError as exc:
                bb.error('Failed to obtain CodeSourcery toolchain version: %s' 
% exc)
                bb.error('Make sure that MACHINE is set correctly in your 
local.conf and the toolchain supports %s.' % d.getVar("TARGET_ARCH", True))
@@ -27,21 +27,16 @@ def csl_get_version(d):
                                return lines[i]
                return 'UNKNOWN'
 
-def csl_get_main_version(d):
-       version = csl_get_version(d)
-       if version != 'UNKNOWN':
-               return version.split()[-1].rstrip(')')
-       else:
-               return version
-
-def csl_get_gcc_version(d):
-       version = csl_get_version(d)
+def xlnx_get_gcc_version(d):
+       version = xlnx_get_version(d)
        if version != 'UNKNOWN':
                return version.split()[2]
        else:
                return version
 
-def xilinx_get_libc_version(d):
+def xlnx_get_libc_version(d):
+       import fnmatch
+
        syspath = d.expand('${EXTERNAL_TOOLCHAIN_SYSROOT}')
        if not syspath:
                return 'UNKNOWN'
@@ -51,12 +46,12 @@ def xilinx_get_libc_version(d):
                libpath = syspath + '/sgxx-glibc/lib/'
 
        if os.path.exists(libpath):
-               for file in os.listdir(libpath):
-                       if file.find('libc-') == 0:
-                               return file[5:-3]
+               for root,dirs,files in os.walk(libpath):
+                       for filename in fnmatch.filter(files,'libc-*.so'):
+                               return filename[5:-3]
        return 'UNKNOWN'
 
-def xilinx_get_kernel_version(d):
+def xlnx_get_kernel_version(d):
        syspath = d.expand('${EXTERNAL_TOOLCHAIN_SYSROOT}')
        if not syspath:
                return 'UNKNOWN'
@@ -82,9 +77,9 @@ def xilinx_get_kernel_version(d):
                        return str(maj)+'.'+str(min)+'.'+str(ver)
        return 'UNKNOWN'
 
-def csl_get_gdb_version(d):
+def xlnx_get_gdb_version(d):
        try:
-               stdout, stderr = csl_run(d, 'gdb', '-v')
+               stdout, stderr = xlnx_run(d, 'gdb', '-v')
        except bb.process.CmdError:
                return 'UNKNOWN'
        else:
@@ -96,15 +91,14 @@ python xilinx_version_handler () {
     ld = d.createCopy()
     ld.finalize()
 
-    d.setVar('CSL_VER_MAIN', csl_get_main_version(ld))
-    d.setVar('CSL_VER_GCC', csl_get_gcc_version(ld))
-    d.setVar('CSL_VER_LIBC', xilinx_get_libc_version(ld))
-    d.setVar('CSL_VER_KERNEL', xilinx_get_kernel_version(ld))
-    d.setVar('CSL_VER_GDB', csl_get_gdb_version(ld))
+    d.setVar('XILINX_VER_GCC', xlnx_get_gcc_version(ld))
+    d.setVar('XILINX_VER_LIBC', xlnx_get_libc_version(ld))
+    d.setVar('XILINX_VER_KERNEL', xlnx_get_kernel_version(ld))
+    d.setVar('XILINX_VER_GDB', xlnx_get_gdb_version(ld))
 }
 addhandler xilinx_version_handler
 xilinx_version_handler[eventmask] = "bb.event.ConfigParsed"
 
 # Ensure that any variable which includes the --sysroot (CC, CXX, etc) also
 # depends on the toolchain version
-TOOLCHAIN_OPTIONS[vardeps] += "CSL_VER_MAIN CSL_VER_GCC"
+TOOLCHAIN_OPTIONS[vardeps] += "XILINX_VER_MAIN XILINX_VER_GCC"
diff --git a/recipes-core/meta/binutils-cross-xilinx.bb 
b/recipes-core/meta/binutils-cross-xilinx.bb
new file mode 100644
index 0000000..4fc4609
--- /dev/null
+++ b/recipes-core/meta/binutils-cross-xilinx.bb
@@ -0,0 +1,24 @@
+SUMMARY = "External Xilinx toolchain"
+include xilinx-toolchain.inc
+
+PN .= "-${TARGET_ARCH}"
+BPN = "binutils"
+
+PV = "${XILINX_VER_MAIN}"
+PKGV = "${XILINX_VER_GCC}"
+
+PR =  "r1"
+
+LICENSE = "GPL-3.0"
+LIC_FILES_CHKSUM = 
"file://${COMMON_LICENSE_DIR}/GPL-3.0;md5=c79ff39f19dfec6d293b95dea7b07891"
+
+PROVIDES = "virtual/${TARGET_PREFIX}binutils"
+
+FILES_${PN}-dbg=""
+FILES_${PN}-dev=""
+
+ALLOW_EMPTY_${PN}-dev = "0"
+ALLOW_EMPTY_${PN}-dbg = "0"
+
+INHIBIT_AUTOTOOLS_DEPS = "1"
+INHIBIT_DEFAULT_DEPS = "1"
diff --git a/recipes-core/meta/external-xilinx-toolchain.bb 
b/recipes-core/meta/external-xilinx-toolchain.bb
deleted file mode 100644
index 2274eea..0000000
--- a/recipes-core/meta/external-xilinx-toolchain.bb
+++ /dev/null
@@ -1,173 +0,0 @@
-require recipes-core/glibc/glibc-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}/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 \
-       glibc \
-       "
-
-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 some of the libs in /lib to /usr/lib
-       for i in libstdc++ libssp libatomic; do
-               if [ -e ${D}${base_libdir}/$i.so ]; then
-                       mv ${D}${base_libdir}/$i.* ${D}${libdir}/
-               fi
-       done
-
-       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 \
-               libssp libssp-dev libssp-staticdev \
-               libatomic libatomic-dev libatomic-staticdev \
-               libstdc++ libstdc++-dev libstdc++-staticdev \
-               linux-libc-headers linux-libc-headers-dev \
-               gdbserver gdbserver-dbg \
-               "
-
-RDEPENDS_ldd += "bash"
-RDEPENDS_tzcode += "bash"
-
-# 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_libssp += "ldflags"
-INSANE_SKIP_libatomic += "ldflags"
-INSANE_SKIP_gdbserver += "ldflags"
-
-PKG_${PN} = "glibc"
-PKG_${PN}-dev = "glibc-dev"
-PKG_${PN}-staticdev = "glibc-staticdev"
-PKG_${PN}-doc = "glibc-doc"
-PKG_${PN}-dbg = "glibc-dbg"
-PKG_${PN}-pic = "glibc-pic"
-PKG_${PN}-utils = "glibc-utils"
-PKG_${PN}-gconv = "glibc-gconv"
-PKG_${PN}-extra-nss = "glibc-extra-nss"
-PKG_${PN}-thread-db = "glibc-thread-db"
-PKG_${PN}-pcprofile = "glibc-pcprofile"
-
-PKGV = "${CSL_VER_LIBC}"
-PKGV_libssp = "${CSL_VER_GCC}"
-PKGV_libssp-dev = "${CSL_VER_GCC}"
-PKGV_libssp-staticdev = "${CSL_VER_GCC}"
-PKGV_libatomic = "${CSL_VER_GCC}"
-PKGV_libatomic-dev = "${CSL_VER_GCC}"
-PKGV_libatomic-staticdev = "${CSL_VER_GCC}"
-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_libssp = "${libdir}/libssp.so.*"
-FILES_libssp-dev = "${libdir}/libssp.so ${libdir}/libssp_nonshared.a 
${libdir}/libssp_nonshared.la"
-FILES_libssp-staticdev = "${libdir}/libssp.a ${libdir}/libssp.la"
-FILES_libatomic = "${libdir}/libatomic.so.*"
-FILES_libatomic-dev = "${libdir}/libatomic.so"
-FILES_libatomic-staticdev = "${libdir}/libatomic.a ${libdir}/libatomic.la"
-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", True):
-        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
deleted file mode 100644
index e69de29..0000000
diff --git a/recipes-core/meta/gcc-cross-xilinx.bb 
b/recipes-core/meta/gcc-cross-xilinx.bb
new file mode 100644
index 0000000..b3c465f
--- /dev/null
+++ b/recipes-core/meta/gcc-cross-xilinx.bb
@@ -0,0 +1,30 @@
+SUMMARY = "External Xilinx toolchain"
+include xilinx-toolchain.inc
+
+PN .= "-${TARGET_ARCH}"
+
+PV = "${XILINX_VER_MAIN}"
+PKGV = "${XILINX_VER_GCC}"
+
+PR = "r1"
+
+LICENSE = "GPL-3.0-with-GCC-exception & GPL-3.0"
+LIC_FILES_CHKSUM = "\
+       
file://${COMMON_LICENSE_DIR}/GPL-3.0-with-GCC-exception;md5=aef5f35c9272f508be848cd99e0151df
 \
+       
file://${COMMON_LICENSE_DIR}/GPL-3.0;md5=c79ff39f19dfec6d293b95dea7b07891 \
+       "
+
+DEPENDS = "virtual/${TARGET_PREFIX}binutils"
+
+PROVIDES = "\
+       virtual/${TARGET_PREFIX}gcc-initial \
+       virtual/${TARGET_PREFIX}gcc-intermediate \
+       virtual/${TARGET_PREFIX}gcc \
+       virtual/${TARGET_PREFIX}g++ \
+       "
+
+ALLOW_EMPTY_${PN}-dev = "0"
+ALLOW_EMPTY_${PN}-dbg = "0"
+
+INHIBIT_AUTOTOOLS_DEPS = "1"
+INHIBIT_DEFAULT_DEPS = "1"
diff --git a/recipes-core/meta/gcc-runtime-xilinx.bb 
b/recipes-core/meta/gcc-runtime-xilinx.bb
new file mode 100644
index 0000000..900a15a
--- /dev/null
+++ b/recipes-core/meta/gcc-runtime-xilinx.bb
@@ -0,0 +1,111 @@
+SUMMARY = "External Xilinx toolchain"
+include xilinx-toolchain.inc
+
+PV = "${XILINX_VER_MAIN}"
+PKGV = "${XILINX_VER_GCC}"
+
+PR = "r1"
+
+LICENSE = "GPL-3.0-with-GCC-exception & GPL-3.0"
+LICENSE_gcc-runtime-dbg = "GPL-3.0-with-GCC-exception & GPL-3.0"
+LICENSE_libstdc++ = "GPL-3.0-with-GCC-exception"
+LICENSE_libstdc++-precompile-dev = "GPL-3.0-with-GCC-exception"
+LICENSE_libstdc++-dev = "GPL-3.0-with-GCC-exception"
+LICENSE_libstdc++-staticdev = "GPL-3.0-with-GCC-exception"
+LICENSE_libssp = "GPL-3.0-with-GCC-exception"
+LICENSE_libssp-dev = "GPL-3.0-with-GCC-exception"
+LICENSE_libssp-staticdev = "GPL-3.0-with-GCC-exception"
+LICENSE_libatomic = "GPL-3.0-with-GCC-exception"
+LICENSE_libatomic-dev = "GPL-3.0-with-GCC-exception"
+LICENSE_libatomic-staticdev = "GPL-3.0-with-GCC-exception"
+LIC_FILES_CHKSUM = "\
+       
file://${COMMON_LICENSE_DIR}/GPL-3.0-with-GCC-exception;md5=aef5f35c9272f508be848cd99e0151df
 \
+       
file://${COMMON_LICENSE_DIR}/GPL-3.0;md5=c79ff39f19dfec6d293b95dea7b07891 \
+       "
+
+DEPENDS = "virtual/${TARGET_PREFIX}gcc virtual/${TARGET_PREFIX}g++ libgcc"
+PROVIDES = "virtual/${TARGET_PREFIX}compilerlibs"
+
+INHIBIT_DEFAULT_DEPS = "1"
+
+PACKAGES = "\
+       gcc-runtime-dbg \
+       libstdc++ \
+       libstdc++-dev \
+       libstdc++-staticdev \
+       libssp \
+       libssp-dev \
+       libssp-staticdev \
+       libatomic \
+       libatomic-dev \
+       libatomic-staticdev \
+"
+
+# The base package doesn't exist, so we clear the recommends.
+RRECOMMENDS_gcc-runtime-dbg = ""
+
+FILES_gcc-runtime-dbg = "${libdir}/.debug/"
+
+FILES_libstdc++ = "${libdir}/libstdc++.so.*"
+FILES_libstdc++-dev = "\
+       ${includedir}/c++/ \
+       ${libdir}/libstdc++.so \
+       ${libdir}/libstdc++.la \
+       ${libdir}/libsupc++.la \
+"
+FILES_libstdc++-staticdev = "\
+       ${libdir}/libstdc++.a \
+       ${libdir}/libsupc++.a \
+"
+
+FILES_libssp = "${libdir}/libssp.so.*"
+FILES_libssp-dev = "\
+       ${libdir}/libssp*.so \
+       ${libdir}/libssp*_nonshared.a \
+       ${libdir}/libssp*.la \
+       ${libdir}/gcc/${XILINX_TARGET_SYS}/${XILINX_VER_GCC}/include/ssp \
+"
+FILES_libssp-staticdev = "${libdir}/libssp*.a"
+
+FILES_libatomic = "${libdir}/libatomic.so.*"
+FILES_libatomic-dev = "\
+       ${libdir}/libatomic.so \
+       ${libdir}/libatomic.la \
+"
+FILES_libatomic-staticdev = "${libdir}/libatomic.a"
+
+INSANE_SKIP_${PN}-dev = "ldflags"
+INSANE_SKIP_libstdc++ = "ldflags"
+INSANE_SKIP_libstdc++-dev = "ldflags"
+INSANE_SKIP_libssp = "ldflags"
+INSANE_SKIP_libatomic = "ldflags"
+INSANE_SKIP_libatomic-dev = "ldflags"
+
+do_install() {
+       root="${EXTERNAL_TOOLCHAIN}"
+       sysroot="${EXTERNAL_TOOLCHAIN_SYSROOT}"
+
+       install -d ${D}/${libdir} \
+               ${D}/${includedir} \
+               
${D}/${libdir}/gcc/${XILINX_TARGET_SYS}/${XILINX_VER_GCC}/include/ssp
+
+       find $root \( -path "*/${XILINX_TARGET_SYS}/*/libstdc++.*" \
+               -o -path "*/${XILINX_TARGET_SYS}/*/libatomic.*" \
+               -o -path "*/${XILINX_TARGET_SYS}/*/libssp*" \
+               -o -path "*/${XILINX_TARGET_SYS}/*/libsupc++.a" \) \
+               -exec cp -a {} ${D}/usr/lib \;
+
+       cp -a ${sysroot}/../include/. ${D}/${includedir}
+
+       find $root -path "*/${XILINX_TARGET_SYS}/*/include/ssp/*" \
+       -exec cp -a {} 
${D}/usr/lib/gcc/${XILINX_TARGET_SYS}/${XILINX_VER_GCC}/include/ssp \;
+
+       # Move some of the libs in /lib to /usr/lib
+       for i in libstdc++ libssp libatomic; do
+               if [ -e ${D}${base_libdir}/$i.so ]; then
+                       mv ${D}${base_libdir}/$i.* ${D}${libdir}/
+               fi
+       done
+}
+
+do_package[depends] = "virtual/${MLPREFIX}libc:do_packagedata"
diff --git a/recipes-core/meta/gcc-sanitizers-xilinx.bb 
b/recipes-core/meta/gcc-sanitizers-xilinx.bb
new file mode 100644
index 0000000..021a43b
--- /dev/null
+++ b/recipes-core/meta/gcc-sanitizers-xilinx.bb
@@ -0,0 +1,73 @@
+SUMMARY = "External Xilinx toolchain"
+include xilinx-toolchain.inc
+
+PV = "${XILINX_VER_MAIN}"
+PKGV = "${XILINX_VER_GCC}"
+
+PR = "r1"
+
+LICENSE = "NCSA | MIT"
+LIC_FILES_CHKSUM = "\
+       
file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420 \
+       file://${COMMON_LICENSE_DIR}/NCSA;md5=1b5fdec70ee13ad8a91667f16c1959d7 \
+       "
+
+INHIBIT_DEFAULT_DEPS = "1"
+
+DEPENDS = "gcc-runtime"
+
+PROVIDES = "virtual/${TARGET_PREFIX}gcc-sanitizers gcc-sanitizers"
+
+PACKAGES = "\
+       libasan \
+       libasan-dev \
+       libasan-dbg \
+       libasan-staticdev \
+       libubsan \
+       libubsan-dev \
+       libubsan-dbg \
+       libubsan-staticdev \
+"
+
+RDEPENDS_libasan = "libstdc++"
+RDEPENDS_libubsan = "libstdc++"
+RDEPENDS_libasan-dev = "${PN}"
+RDEPENDS_libubsan-dev = "${PN}"
+RRECOMMENDS_${PN} = "libasan libubsan"
+
+FILES_${PN} = ""
+FILES_${PN}-dev = ""
+FILES_${PN}-staticdev = ""
+
+FILES_libasan = "${libdir}/libasan.so.*"
+FILES_libasan-dbg = "${libdir}/.debug/libasan.so.*"
+FILES_libasan-dev = "\
+       ${libdir}/libasan_preinit.o \
+       ${libdir}/libasan.so \
+       ${libdir}/libasan.la \
+"
+FILES_libasan-staticdev = "${libdir}/libasan.a"
+
+FILES_libubsan = "${libdir}/libubsan.so.*"
+FILES_libubsan-dbg = "${libdir}/.debug/libubsan.so.*"
+FILES_libubsan-dev = "\
+       ${libdir}/libubsan.so \
+       ${libdir}/libubsan.la \
+"
+FILES_libubsan-staticdev = "${libdir}/libubsan.a"
+
+INSANE_SKIP_libasan = "build-deps ldflags"
+INSANE_SKIP_libasan-dev = "build-deps ldflags"
+INSANE_SKIP_libubsan = "build-deps ldflags"
+INSANE_SKIP_libubsan-dev = "build-deps ldflags"
+
+do_install() {
+       root="${EXTERNAL_TOOLCHAIN}"
+
+       install -d ${D}/${libdir}
+
+       find $root \( -path "*/${XILINX_TARGET_SYS}/*/libasan.*" \
+       -o -path "*/${XILINX_TARGET_SYS}/*/libasan_preinit.o" \
+       -o -path "*/${XILINX_TARGET_SYS}/*/libusan*" \) \
+       -exec cp -a {} ${D}/${libdir} \;
+}
diff --git a/recipes-core/meta/glibc-xilinx.bb 
b/recipes-core/meta/glibc-xilinx.bb
new file mode 100644
index 0000000..2dd1516
--- /dev/null
+++ b/recipes-core/meta/glibc-xilinx.bb
@@ -0,0 +1,189 @@
+require recipes-core/glibc/glibc-package.inc
+SUMMARY = "External Xilinx toolchain"
+include xilinx-toolchain.inc
+
+PV = "${XILINX_VER_MAIN}"
+PKGV = "${XILINX_VER_LIBC}"
+
+PR = "r1"
+
+LICENSE = "GPLv2 & LGPL-2.1"
+LIC_FILES_CHKSUM = " \
+       
file://${COREBASE}/meta/COPYING.GPLv2;md5=751419260aa954499f7abaabaa882bbe \
+       
file://${COMMON_LICENSE_DIR}/LGPL-2.1;md5=1a6d268fd218675ffea8be556788b780 \
+       "
+
+INHIBIT_DEFAULT_DEPS = "1"
+DEPENDS = "virtual/${TARGET_PREFIX}binutils linux-libc-headers"
+
+PROVIDES += "\
+       glibc \
+       virtual/${TARGET_PREFIX}libc-for-gcc \
+       virtual/${TARGET_PREFIX}libc-initial \
+       virtual/libc \
+       virtual/libintl \
+       virtual/libiconv \
+       glibc-thread-db \
+       "
+S = "${WORKDIR}"
+
+SRC_URI = " \
+       file://SUPPORTED \
+       file://nscd.init \
+       file://nscd.conf \
+       file://nscd.service \
+       "
+
+RDEPENDS_ldd += "bash"
+RDEPENDS_tzcode += "bash"
+
+# This test should be fixed to ignore .a files in .debug dirs
+INSANE_SKIP_${PN}-dbg = "staticdev"
+INSANE_SKIP_${PN} += "build-deps"
+# We don't care about GNU_HASH in prebuilt binaries
+INSANE_SKIP_${PN}-utils += "build-deps ldflags"
+INSANE_SKIP_${PN}-dev += "ldflags"
+
+PKG_${PN} = "glibc"
+RPROVIDES_${PN} += "${TCLIBC} glibc"
+PKG_${PN}-dbg = "glibc-dbg"
+RPROVIDES_${PN}-dbg += "${TCLIBC}-dbg glibc-dbg"
+PKG_${PN}-dev = "glibc-dev"
+RPROVIDES_${PN}-dev += "${TCLIBC}-dev glibc-dev"
+PKG_${PN}-doc = "glibc-doc"
+RPROVIDES_${PN}-doc += "${TCLIBC}-doc glibc-doc"
+PKG_${PN}-extra-nss = "glibc-extra-nss"
+RPROVIDES_${PN}-extra-nss += "${TCLIBC}-extra-nss glibc-extra-nss"
+PKG_${PN}-gconv = "glibc-gconv"
+RPROVIDES_${PN}-gconv += "${TCLIBC}-gconv glibc-gconv"
+PKG_${PN}-mtrace = "glibc-mtrace"
+RPROVIDES_${PN}-mtrace += "${TCLIBC}-mtrace glibc-mtrace"
+PKG_${PN}-pcprofile = "glibc-pcprofile"
+RPROVIDES_${PN}-pcprofile += "${TCLIBC}-pcprofile glibc-pcprofile"
+PKG_${PN}-pic = "glibc-pic"
+RPROVIDES_${PN}-pic += "${TCLIBC}-pic glibc-pic"
+PKG_${PN}-staticdev = "glibc-staticdev"
+RPROVIDES_${PN}-staticdev += "${TCLIBC}-staticdev glibc-staticdev"
+PKG_${PN}-thread-db = "glibc-thread-db"
+RPROVIDES_${PN}-thread-db += "${TCLIBC}-thread-db glibc-thread-db"
+PKG_${PN}-utils = "glibc-utils"
+RPROVIDES_${PN}-utils += "${TCLIBC}-utils glibc-utils"
+
+FILES_${PN} += " /lib/${XILINX_TARGET_SYS} /usr/lib/${XILINX_TARGET_SYS}"
+
+do_install() {
+       # Use optimized files if available
+       sysroot="${EXTERNAL_TOOLCHAIN_SYSROOT}"
+       root="${EXTERNAL_TOOLCHAIN}"
+
+       install -d ${D}/lib
+       set -f
+       for ele in ${libc_baselibs} ${FILES_libsegfault} \
+               ${FILES_libcidn} ${FILES_libmemusage} \
+               ${FILES_glibc-extra-nss} ${FILES_glibc-thread-db} \
+               ${FILES_${PN}-pcprofile} ; do
+               ele=$(echo $ele |  sed -e "s%^/lib.*/%%")
+               find $root -name "$ele" -exec cp -a {} ${D}/lib \;
+       done
+       set +f
+
+       find $root -path "*/${XILINX_TARGET_SYS}/*/ld*.so*" -exec cp -a {} 
${D}/lib \;
+
+       cp -a $sysroot/sbin/. ${D}${base_sbindir}
+
+       install -d ${D}/usr
+       for usr_element in bin libexec sbin share ${base_libdir}; do
+               if [ ! -z "$sysroot" -a -e $sysroot/usr/$usr_element ]; then
+                       cp -a $sysroot/usr/$usr_element ${D}/usr/
+               fi
+       done
+
+       if [ "${XILINX_TARGET_SYS}" == "aarch64-linux-gnu" ] ||  \
+          [ "${XILINX_TARGET_SYS}" == "arm-linux-gnueabihf" ]; then
+
+               if [ -d ${D}/usr/lib/arm-linux-gnueabi ]; then
+                       rm -rf ${D}/usr/lib/arm-linux-gnueabi
+               fi
+                if [ -h ${D}/lib/ld-linux.so.3 ]; then
+                        rm ${D}/lib/ld-linux.so.3
+                fi
+
+               linker_name="${@base_contains("TUNE_FEATURES", "aarch64", 
"ld-linux-aarch64.so.1", "ld-linux-armhf.so.3",d)}"
+               file=$(basename $(readlink -m ${D}/lib/${linker_name}))
+               rm ${D}/lib/$linker_name
+               ln -s ./$file ${D}/lib/$linker_name
+
+               mv ${D}/usr/lib/${XILINX_TARGET_SYS}/* ${D}/usr/lib
+               rm -r ${D}/usr/lib/${XILINX_TARGET_SYS}
+               for link in $(find ${D}/usr/lib -type l); do
+                       file=$(basename $(readlink -m ${link}))
+                       rm $link
+                       ln -s ../../lib/$file $link
+               done
+               ln -s . ${D}/usr/lib/${XILINX_TARGET_SYS}
+               ln -s . ${D}/lib/${XILINX_TARGET_SYS}
+               rm ${D}/usr/lib/*.map
+               rm -r ${D}/usr/lib/libc_pic
+       fi
+
+       find ${D}/usr/ \( -path "*/usr/lib/libstdc++*" \
+               -o -path "*/usr/lib/libasan*" \
+               -o -path "*/usr/lib/libubsan*" \
+               -o -path "*/usr/lib/libatomic*" \) \
+               -exec rm {} \;
+
+       cp -a $sysroot/usr/include/. ${D}${includedir}
+
+       for d in xen asm asm-generic linux mtd rdma scsi sound video bits drm; 
do
+               rm -rf "${D}${includedir}/$d"
+       done
+       mkdir -p ${D}${includedir}/bits
+       cp -a $sysroot/usr/include/bits/syscall.h 
${D}${includedir}/bits/syscall.h
+
+       # 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
+
+       if [ "${XILINX_TARGET_SYS}" == "arm-xilinx-linux-gnueabi" ]; then
+               if [ -e ${D}${libdir}/locale ]; then
+                       rm -rf ${D}${libdir}/locale
+               fi
+       fi
+
+       # Clean up the image (remove files and directories that are not 
packaged)
+       for i in ${D}/usr/share/zoneinfo ${D}/usr/lib/bin ${D}/usr/libexec ; do
+               if [ -e $i ]; then
+                       rm -rf $i
+               fi
+       done
+
+       if [ -f ${D}${libdir}/libc.so ];then
+               sed -i -e "s# ${base_libdir}# ../..${base_libdir}#g" \
+                       -e "s#/${XILINX_TARGET_SYS}##g" \
+                       -e "s# ${libdir}# .#g" ${D}${libdir}/libc.so
+       fi
+       if [ -f ${D}${libdir}/libpthread.so ];then
+               sed -i -e "s# ${base_libdir}# ../..${base_libdir}#g" \
+                       -e "s#/${XILINX_TARGET_SYS}##g" \
+                       -e "s# ${libdir}# .#g" ${D}${libdir}/libpthread.so
+       fi
+
+       find  ${D}/usr/lib  -name "*crt*.o" -exec chmod -x {} \;
+       find  ${D}/usr/lib  -name "*.a" -exec chmod -x {} \;
+
+       install -d ${S}/nscd
+       install -m 0755 ${WORKDIR}/nscd.conf ${S}/nscd/nscd.conf
+       install -m 0755 ${WORKDIR}/nscd.init ${S}/nscd/nscd.init
+       install -m 0755 ${WORKDIR}/nscd.service ${S}/nscd/nscd.service
+}
+
+do_package[depends] += "${MLPREFIX}libgcc:do_packagedata"
+do_package_write_ipk[depends] += "${MLPREFIX}libgcc:do_packagedata"
+do_package_write_deb[depends] += "${MLPREFIX}libgcc:do_packagedata"
+do_package_write_rpm[depends] += "${MLPREFIX}libgcc:do_packagedata"
diff --git a/recipes-core/meta/glibc-xilinx/SUPPORTED 
b/recipes-core/meta/glibc-xilinx/SUPPORTED
new file mode 100644
index 0000000..e69de29
diff --git a/recipes-core/meta/glibc-xilinx/nscd.conf 
b/recipes-core/meta/glibc-xilinx/nscd.conf
new file mode 100755
index 0000000..39b8759
--- /dev/null
+++ b/recipes-core/meta/glibc-xilinx/nscd.conf
@@ -0,0 +1,88 @@
+#
+# /etc/nscd.conf
+#
+# An example Name Service Cache config file.  This file is needed by nscd.
+#
+# Legal entries are:
+#
+#      logfile                 <file>
+#      debug-level             <level>
+#      threads                 <initial #threads to use>
+#      max-threads             <maximum #threads to use>
+#      server-user             <user to run server as instead of root>
+#              server-user is ignored if nscd is started with -S parameters
+#       stat-user               <user who is allowed to request statistics>
+#      reload-count            unlimited|<number>
+#      paranoia                <yes|no>
+#      restart-interval        <time in seconds>
+#
+#       enable-cache           <service> <yes|no>
+#      positive-time-to-live   <service> <time in seconds>
+#      negative-time-to-live   <service> <time in seconds>
+#       suggested-size         <service> <prime number>
+#      check-files             <service> <yes|no>
+#      persistent              <service> <yes|no>
+#      shared                  <service> <yes|no>
+#      max-db-size             <service> <number bytes>
+#      auto-propagate          <service> <yes|no>
+#
+# Currently supported cache names (services): passwd, group, hosts, services
+#
+
+
+#      logfile                 /var/log/nscd.log
+#      threads                 4
+#      max-threads             32
+#      server-user             nobody
+#      stat-user               somebody
+       debug-level             0
+#      reload-count            5
+       paranoia                no
+#      restart-interval        3600
+
+       enable-cache            passwd          yes
+       positive-time-to-live   passwd          600
+       negative-time-to-live   passwd          20
+       suggested-size          passwd          211
+       check-files             passwd          yes
+       persistent              passwd          yes
+       shared                  passwd          yes
+       max-db-size             passwd          33554432
+       auto-propagate          passwd          yes
+
+       enable-cache            group           yes
+       positive-time-to-live   group           3600
+       negative-time-to-live   group           60
+       suggested-size          group           211
+       check-files             group           yes
+       persistent              group           yes
+       shared                  group           yes
+       max-db-size             group           33554432
+       auto-propagate          group           yes
+
+       enable-cache            hosts           yes
+       positive-time-to-live   hosts           3600
+       negative-time-to-live   hosts           20
+       suggested-size          hosts           211
+       check-files             hosts           yes
+       persistent              hosts           yes
+       shared                  hosts           yes
+       max-db-size             hosts           33554432
+
+       enable-cache            services        yes
+       positive-time-to-live   services        28800
+       negative-time-to-live   services        20
+       suggested-size          services        211
+       check-files             services        yes
+       persistent              services        yes
+       shared                  services        yes
+       max-db-size             services        33554432
+
+       enable-cache            netgroup        yes
+       positive-time-to-live   netgroup        28800
+       negative-time-to-live   netgroup        20
+       suggested-size          netgroup        211
+       check-files             netgroup        yes
+       persistent              netgroup        yes
+       shared                  netgroup        yes
+       max-db-size             netgroup        33554432
diff --git a/recipes-core/meta/glibc-xilinx/nscd.init 
b/recipes-core/meta/glibc-xilinx/nscd.init
new file mode 100755
index 0000000..65ef7e0
--- /dev/null
+++ b/recipes-core/meta/glibc-xilinx/nscd.init
@@ -0,0 +1,116 @@
+#!/bin/sh
+#
+# nscd:                Starts the Name Switch Cache Daemon
+#
+# chkconfig: - 30 74
+# description:  This is a start-stop-daemon --start --exec which handles 
passwd and group lookups \
+#              for running programs and cache the results for the next \
+#              query.  You should start this start-stop-daemon --start --exec 
if you use \
+#              slow naming services like NIS, NIS+, LDAP, or hesiod.
+# processname: /usr/sbin/nscd
+# config: /etc/nscd.conf
+#
+### BEGIN INIT INFO
+# Provides: nscd
+# Required-Start: $syslog
+# Default-Stop: 0 1 6
+# Short-Description: Starts the Name Switch Cache Daemon
+# Description:  This is a start-stop-daemon --start --exec which handles 
passwd and group lookups \
+#              for running programs and cache the results for the next \
+#              query.  You should start this start-stop-daemon --start --exec 
if you use \
+#              slow naming services like NIS, NIS+, LDAP, or hesiod.
+### END INIT INFO
+
+# Sanity checks.
+[ -f /etc/nscd.conf ] || exit 0
+[ -x /usr/sbin/nscd ] || exit 0
+
+# Source function library.
+. /etc/init.d/functions
+
+# nscd does not run on any kernel lower than 2.2.0 because of threading
+# problems, so we require that in first place.
+case $(uname -r) in
+    2.[2-9].*)
+       # this is okay
+       ;;
+    [3-9]*)
+       # these are of course also okay
+       ;;
+    *)
+       #this is not
+       exit 1
+       ;;
+esac
+
+RETVAL=0
+prog=nscd
+
+start () {
+    [ -d /var/run/nscd ] || mkdir /var/run/nscd
+    [ -d /var/db/nscd ] || mkdir /var/db/nscd
+    echo -n "Starting $prog: "
+    start-stop-daemon --start --exec /usr/sbin/nscd
+    RETVAL=$?
+    echo
+    [ $RETVAL -eq 0 ] && touch /var/lock/subsys/nscd
+    return $RETVAL
+}
+
+stop () {
+    echo -n "Stopping $prog: "
+    /usr/sbin/nscd -K
+    RETVAL=$?
+    if [ $RETVAL -eq 0 ]; then
+               rm -f /var/lock/subsys/nscd
+       # nscd won't be able to remove these if it is running as
+       # a non-privileged user
+       rm -f /var/run/nscd/nscd.pid
+       rm -f /var/run/nscd/socket
+       success "$prog shutdown"
+    else
+       failure "$prog shutdown"
+    fi
+    echo
+    return $RETVAL
+}
+
+restart() {
+    stop
+    start
+}
+
+# See how we were called.
+case "$1" in
+    start)
+       start
+       RETVAL=$?
+       ;;
+    stop)
+       stop
+       RETVAL=$?
+       ;;
+    status)
+       status nscd
+       RETVAL=$?
+       ;;
+    restart)
+       restart
+       RETVAL=$?
+       ;;
+    try-restart | condrestart)
+       [ -e /var/lock/subsys/nscd ] && restart
+       RETVAL=$?
+       ;;
+    force-reload | reload)
+       echo -n "Reloading $prog: "
+       killproc /usr/sbin/nscd -HUP
+       RETVAL=$?
+       echo
+       ;;
+    *)
+       echo "Usage: $0 {start|stop|status|restart|reload|condrestart}"
+       RETVAL=1
+       ;;
+esac
+exit $RETVAL
diff --git a/recipes-core/meta/glibc-xilinx/nscd.service 
b/recipes-core/meta/glibc-xilinx/nscd.service
new file mode 100644
index 0000000..ab38e8f
--- /dev/null
+++ b/recipes-core/meta/glibc-xilinx/nscd.service
@@ -0,0 +1,19 @@
+# systemd service file for nscd
+
+[Unit]
+Description=Name Service Cache Daemon
+
+[Service]
+Type=forking
+ExecStart=/usr/sbin/nscd
+ExecStop=/usr/sbin/nscd --shutdown
+ExecReload=/usr/sbin/nscd -i passwd
+ExecReload=/usr/sbin/nscd -i group
+ExecReload=/usr/sbin/nscd -i hosts
+ExecReload=/usr/sbin/nscd -i services
+ExecReload=/usr/sbin/nscd -i netgroup
+Restart=always
+PIDFile=/run/nscd/nscd.pid
+
+[Install]
+WantedBy=multi-user.target
diff --git a/recipes-core/meta/libgcc-xilinx.bb 
b/recipes-core/meta/libgcc-xilinx.bb
new file mode 100644
index 0000000..1f1d65a
--- /dev/null
+++ b/recipes-core/meta/libgcc-xilinx.bb
@@ -0,0 +1,57 @@
+SUMMARY = "External Xilinx toolchain"
+include xilinx-toolchain.inc
+
+PV = "${XILINX_VER_MAIN}"
+PKGV = "${XILINX_VER_GCC}"
+
+PR = "r1"
+
+LICENSE = "GPL-3.0-with-GCC-exception"
+LIC_FILES_CHKSUM = 
"file://${COMMON_LICENSE_DIR}/GPL-3.0-with-GCC-exception;md5=aef5f35c9272f508be848cd99e0151df"
+LICENSE_libgcov-dev = "GPL-3.0"
+LIC_FILES_CHKSUM_libgcov-dev = 
"file://${COMMON_LICENSE_DIR}/GPL-3.0;md5=c79ff39f19dfec6d293b95dea7b07891"
+
+DEPENDS = "virtual/${TARGET_PREFIX}gcc virtual/${TARGET_PREFIX}g++ 
virtual/${TARGET_PREFIX}binutils"
+PROVIDES = "libgcc"
+
+INHIBIT_DEFAULT_DEPS = "1"
+
+PACKAGES = "libgcc libgcc-dev libgcc-dbg libgcov-dev"
+
+RDEPENDS_libgcc += "${TCLIBC} glibc-xilinx"
+INSANE_SKIP_libgcc += "build-deps ldflags"
+INSANE_SKIP_libgcc-dev += "builds-deps staticdev"
+INSANE_SKIP_${MLPREFIX}libgcov-dev += "build-deps staticdev"
+
+FILES_libgcc = "${base_libdir}/libgcc*.so.*"
+
+FILES_libgcc-dev = "${base_libdir}/libgcc*.so \
+                  ${libdir}/${TARGET_SYS}/${BINV}* \
+                   ${libdir}/${XILINX_TARGET_SYS}/${XILINX_VER_GCC}/*crt* \
+                  ${libdir}/${XILINX_TARGET_SYS}/${XILINX_VER_GCC}/libgcc.a \
+                  ${libdir}/${XILINX_TARGET_SYS}/${XILINX_VER_GCC}/libgcc_eh.a 
\
+                   "
+FILES_libgcc-dbg = "${base_libdir}/.debug/ 
${libdir}/${XILINX_TARGET_SYS}/${XILINX_VER_GCC}/.debug/"
+
+FILES_libgcov-dev = 
"${libdir}/${XILINX_TARGET_SYS}/${XILINX_VER_GCC}/libgcov.a"
+
+do_install() {
+       root="${EXTERNAL_TOOLCHAIN}"
+
+       install -d ${D}/${base_libdir} \
+                ${D}/${libdir}/${XILINX_TARGET_SYS}/${XILINX_VER_GCC}
+
+       find $root -path "*/${XILINX_TARGET_SYS}/*/*libgcc*.so*" -exec cp -a {} 
${D}/${base_libdir} \;
+
+       cp -a ${root}/lib/gcc/${XILINX_TARGET_SYS}/${XILINX_VER_GCC}/*crt*  \
+          ${D}/${libdir}/${XILINX_TARGET_SYS}/${XILINX_VER_GCC}
+
+       cp -a ${root}/lib/gcc/${XILINX_TARGET_SYS}/${XILINX_VER_GCC}/libgcc*  \
+          ${D}/${libdir}/${XILINX_TARGET_SYS}/${XILINX_VER_GCC}
+
+       cp -a ${root}/lib/gcc/${XILINX_TARGET_SYS}/${XILINX_VER_GCC}/libgcov.a  
\
+          ${D}/${libdir}/${XILINX_TARGET_SYS}/${XILINX_VER_GCC}
+
+       find  ${D}/${libdir}/${XILINX_TARGET_SYS}/${XILINX_VER_GCC}  -name 
"*crt*.o" -exec chmod -x {} \;
+       find  ${D}/${libdir}/${XILINX_TARGET_SYS}/${XILINX_VER_GCC}  -name 
"libg*.a" -exec chmod -x {} \;
+}
diff --git a/recipes-core/meta/linux-libc-headers-xilinx.bb 
b/recipes-core/meta/linux-libc-headers-xilinx.bb
new file mode 100644
index 0000000..ced2a06
--- /dev/null
+++ b/recipes-core/meta/linux-libc-headers-xilinx.bb
@@ -0,0 +1,51 @@
+SUMMARY = "External Xilinx toolchain"
+include xilinx-toolchain.inc
+
+PV = "${XILINX_VER_MAIN}"
+PKGV = "${XILINX_VER_KERNEL}"
+
+PR = "r1"
+
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = 
"file://${COREBASE}/meta/COPYING.GPLv2;md5=751419260aa954499f7abaabaa882bbe"
+
+PROVIDES = "\
+       linux-libc-headers \
+       virtual/linux-libc-headers \
+       "
+
+PACKAGES = "\
+       linux-libc-headers-dev \
+       linux-libc-headers-dbg \
+"
+
+FILES_linux-libc-headers-dev = " \
+       ${includedir}/asm* \
+       ${includedir}/asm-generic \
+       ${includedir}/linux \
+       ${includedir}/mtd \
+       ${includedir}/rdma \
+       ${includedir}/scsi \
+       ${includedir}/sound \
+       ${includedir}/video \
+       ${includedir}/bits \
+       ${includedir}/drm \
+"
+
+EXTERNALPN = "linux-libc-headers"
+RRECOMMENDS_${EXTERNALPN}-dbg = "${EXTERNALPN}-dev (= ${EXTENDPKGV})"
+ALLOW_EMPTY_${EXTERNALPN}-dbg = "1"
+
+INHIBIT_DEFAULT_DEPS = "1"
+BBCLASSEXTEND = ""
+
+do_install() {
+       sysroot="${EXTERNAL_TOOLCHAIN_SYSROOT}"
+       install -d ${D}${includedir}
+       for d in asm asm-generic linux mtd rdma scsi sound video bits drm; do
+               cp -a $sysroot/usr/include/$d ${D}${includedir}/$d
+       done
+       rm ${D}${includedir}/bits/syscall.h
+       find ${D}${includedir} -name ..install.cmd | xargs rm -f
+}
+
diff --git a/recipes-core/meta/xilinx-toolchain.inc 
b/recipes-core/meta/xilinx-toolchain.inc
new file mode 100644
index 0000000..f234fae
--- /dev/null
+++ b/recipes-core/meta/xilinx-toolchain.inc
@@ -0,0 +1,7 @@
+XILINX_VER_MAIN ??= ""
+
+python () {
+       if not d.getVar("XILINX_VER_MAIN", True):
+               raise bb.parse.SkipPackage("External toolchain not configured 
(XILINX_VER_MAIN not set).")
+}
+
-- 
2.1.4

-- 
_______________________________________________
meta-xilinx mailing list
[email protected]
https://lists.yoctoproject.org/listinfo/meta-xilinx

Reply via email to