[meta-xilinx] [PATCH v2 1/5] newlib_2.5.0: Add recipe for the newlib libc

Nathan Rossi nathan at nathanrossi.com
Tue May 30 04:36:47 PDT 2017


Add a recipe for newlib version 2.5.0 which provides a libc for embedded
targets. Specifically this is required for building programs using the
Xilinx standalone drivers/applications.

Signed-off-by: Nathan Rossi <nathan at nathanrossi.com>
---
Changes in v2:
  * Move source hashes to .inc
---
 recipes-core/newlib/newlib.inc      | 59 +++++++++++++++++++++++++++++++++++++
 recipes-core/newlib/newlib_2.5.0.bb | 11 +++++++
 2 files changed, 70 insertions(+)
 create mode 100644 recipes-core/newlib/newlib.inc
 create mode 100644 recipes-core/newlib/newlib_2.5.0.bb

diff --git a/recipes-core/newlib/newlib.inc b/recipes-core/newlib/newlib.inc
new file mode 100644
index 0000000000..2fb2301dde
--- /dev/null
+++ b/recipes-core/newlib/newlib.inc
@@ -0,0 +1,59 @@
+SUMMARY = "Newlib is a C library intended for use on embedded systems"
+HOMEPAGE = "https://sourceware.org/newlib/"
+DESCRIPTION = "It is a conglomeration of several library parts, all under free software licenses that make them easily usable on embedded products."
+SECTION = "libs"
+
+LICENSE = "GPLv2 & LGPLv3 & GPLv3 & LGPLv2"
+LIC_FILES_CHKSUM = " \
+		file://COPYING;md5=59530bdf33659b29e73d4adb9f9f6552 \
+		file://COPYING3.LIB;md5=6a6a8e020838b23406c81b19c1d46df6 \
+		file://COPYING3;md5=d32239bcb673463ab874e80d47fae504 \
+		file://COPYING.LIBGLOSS;md5=73f5c98779aea7dba4a6c94a74ab0ae2 \
+		file://COPYING.LIB;md5=2d5025d4aa3495befef8f17206a5b0a1 \
+		file://COPYING.NEWLIB;md5=bfdd6396bf3b02bd23ffbb9f7ddfbec6 \
+		file://newlib/libc/posix/COPYRIGHT;md5=103468ff1982be840fdf4ee9f8b51bbf \
+		file://newlib/libc/sys/linux/linuxthreads/LICENSE;md5=73640207fbc79b198c7ffd4ad4d97aa0 \
+		"
+
+SRC_URI = "ftp://sourceware.org/pub/newlib/newlib-${PV}.tar.gz"
+SRC_URI[md5sum] = "767dc60aaf814d091997d91d588968b2"
+SRC_URI[sha256sum] = "5b76a9b97c9464209772ed25ce55181a7bb144a66e5669aaec945aa64da3189b"
+
+INHIBIT_DEFAULT_DEPS = "1"
+DEPENDS = "virtual/${TARGET_PREFIX}gcc"
+
+S = "${WORKDIR}/newlib-${PV}"
+B = "${WORKDIR}/build"
+
+# disable use of a link hash style
+TARGET_LINK_HASH_STYLE_microblaze = ""
+
+# disable stdlib
+TARGET_CC_ARCH_append = " -nostdlib"
+
+CONFIGUREOPTS = " \
+		--build=${BUILD_SYS} \
+		--host=${HOST_SYS} \
+		--target=${TARGET_SYS} \
+		--prefix=${prefix} \
+		--exec-prefix=${exec_prefix} \
+		--bindir=${bindir} \
+		--libdir=${libdir} \
+		--includedir=${includedir} \
+		--enable-languages=c \
+		--with-newlib \
+		--with-gnu-as \
+		--with-gnu-ld \
+		--disable-multilib \
+		"
+
+do_configure[cleandirs] = "${B}"
+
+do_install() {
+	oe_runmake install DESTDIR='${D}'
+
+	# output of headers/libs in 'tooldir' subdirectories, move it up to the prefix dir.
+	mv ${D}${prefix}/${TARGET_SYS}/* ${D}${prefix}/
+	rmdir ${D}${prefix}/${TARGET_SYS}
+}
+
diff --git a/recipes-core/newlib/newlib_2.5.0.bb b/recipes-core/newlib/newlib_2.5.0.bb
new file mode 100644
index 0000000000..dc30c6b2e6
--- /dev/null
+++ b/recipes-core/newlib/newlib_2.5.0.bb
@@ -0,0 +1,11 @@
+
+require newlib.inc
+
+do_configure_prepend_microblaze() {
+	# hack for microblaze, which needs xilinx.ld to literally do any linking (its hard coded in its LINK_SPEC)
+	export CC="${CC} -L${S}/libgloss/microblaze"
+}
+
+do_configure() {
+	${S}/configure ${CONFIGUREOPTS}
+}
-- 
2.11.0




More information about the meta-xilinx mailing list