[meta-xilinx] [YOCTO RFC] external-xilinx-toolchain: Split to recipes
Manjukumar Matha
manjukumar.harthikote-matha at xilinx.com
Tue Apr 12 16:41:49 PDT 2016
Signed-off-by: Manjukumar Matha <manjukumar.harthikote-matha at xilinx.com>
---
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
More information about the meta-xilinx
mailing list