mirror of
https://git.yoctoproject.org/meta-zephyr
synced 2026-01-29 21:58:41 +01:00
meta-zephyr: newlib support
This patch adds newlib libraries for cortex-m3, x86, IAMCU and ARC toolchains. [YOCTO#10662] Signed-off-by: Juro Bystricky <juro.bystricky@intel.com>
This commit is contained in:
@@ -11,3 +11,4 @@ TCLIBCAPPEND = ""
|
||||
TEST_TARGET = "QemuTargetZephyr"
|
||||
TEST_SUITES = "zephyr"
|
||||
|
||||
TOOLCHAIN_TARGET_TASK += " newlib"
|
||||
|
||||
23
recipes-core/newlib/newlib/assert-fiprintf.patch
Normal file
23
recipes-core/newlib/newlib/assert-fiprintf.patch
Normal file
@@ -0,0 +1,23 @@
|
||||
|
||||
Fix unresolved external "fiprintf".
|
||||
When newlib is configured with:
|
||||
|
||||
--enable-newlib-nano-formatted-io
|
||||
|
||||
"fiprintf" should be an alias of "fprintf". However the alias does
|
||||
not seem to work properly, as we encounter unresolved external
|
||||
error if we uses "assert" in code. So we patch the code directly.
|
||||
|
||||
Signed-off-by: Juro Bystricky <juro.bystricky@intel.com>
|
||||
|
||||
--- a/newlib/libc/stdlib/assert.c 2016-11-08 08:04:45.669248139 -0800
|
||||
+++ b/newlib/libc/stdlib/assert.c 2016-11-08 08:05:47.357554034 -0800
|
||||
@@ -56,7 +56,7 @@
|
||||
const char *func _AND
|
||||
const char *failedexpr)
|
||||
{
|
||||
- fiprintf(stderr,
|
||||
+ fprintf(stderr,
|
||||
"assertion \"%s\" failed: file \"%s\", line %d%s%s\n",
|
||||
failedexpr, file, line,
|
||||
func ? ", function: " : "", func ? func : "");
|
||||
20
recipes-core/newlib/newlib/gettimeofday-header-fix.patch
Normal file
20
recipes-core/newlib/newlib/gettimeofday-header-fix.patch
Normal file
@@ -0,0 +1,20 @@
|
||||
|
||||
newlib-2.4.0 regression.
|
||||
Export the prototype of gettimeofday
|
||||
|
||||
Signed-off-by: Juro Bystricky <juro.bystricky@intel.com>
|
||||
|
||||
--- a/newlib/libc/include/sys/time.h 2016-03-29 14:33:42.000000000 -0700
|
||||
+++ b/newlib/libc/include/sys/time.h 2016-10-12 09:48:03.873642589 -0700
|
||||
@@ -429,9 +429,10 @@
|
||||
int _EXFUN(getitimer, (int __which, struct itimerval *__value));
|
||||
int _EXFUN(setitimer, (int __which, const struct itimerval *__restrict __value,
|
||||
struct itimerval *__restrict __ovalue));
|
||||
+#endif
|
||||
+
|
||||
int _EXFUN(gettimeofday, (struct timeval *__restrict __p,
|
||||
void *__restrict __tz));
|
||||
-#endif
|
||||
|
||||
#if __GNU_VISIBLE
|
||||
int _EXFUN(futimesat, (int, const char *, const struct timeval [2]));
|
||||
399
recipes-core/newlib/newlib/iamcu-commit-5d3ad3b.patch
Normal file
399
recipes-core/newlib/newlib/iamcu-commit-5d3ad3b.patch
Normal file
@@ -0,0 +1,399 @@
|
||||
From 5d3ad3b123b7c121d7a6eac27fb13016171e27bc Mon Sep 17 00:00:00 2001
|
||||
From: Igor Venevtsev <igor.venevtsev@gmail.com>
|
||||
Date: Thu, 31 Mar 2016 12:12:00 +0300
|
||||
Subject: Add Intel MCU target
|
||||
|
||||
Intel MCU System V ABI are incompartible with i386 System V ABI:
|
||||
o Minimum instruction set is Intel Pentium ISA minus x87 instructions
|
||||
o No x87 or vector registers
|
||||
o First three args are passed in %eax, %edx and %ecx
|
||||
o Full specification available here:
|
||||
https://github.com/hjl-tools/x86-psABI/wiki/iamcu-psABI-0.7.pdf
|
||||
|
||||
newlib/
|
||||
* configure.host: Add new ix86-*-elfiamcu target
|
||||
|
||||
newlib/libc/include/
|
||||
* setjmp.h: Change _JBLEN for Intel MCU target
|
||||
|
||||
newlib/libc/machine/i386/
|
||||
* memchr.S: (memchr) Target-specific size-optimized version
|
||||
* memcmp.S: (memcmp) Likewise
|
||||
* memcpy.S: (memcpy) Likewise
|
||||
* memmove.S: (memmove) Likewise
|
||||
* memset.S: (memset) Likewise
|
||||
* setjmp.S: (setjmp) Likewise
|
||||
* strchr.S: (strchr) Likewise
|
||||
* strlen.S: (strlen) Likewise
|
||||
|
||||
newlib/libc/stdlib/
|
||||
* srtold.c: (__flt_rounds) Disable for Intel MCU
|
||||
|
||||
diff --git a/newlib/configure.host b/newlib/configure.host
|
||||
index 8b0846e..bb163ec 100644
|
||||
--- a/newlib/configure.host
|
||||
+++ b/newlib/configure.host
|
||||
@@ -696,6 +696,15 @@ case "${host}" in
|
||||
i[34567]86-*-netware*)
|
||||
newlib_cflags="${newlib_cflags} -DMISSING_SYSCALL_NAMES -DNO_EXEC -DABORT_PROVIDED -DCLOCK_PROVIDED -DMALLOC_PROVIDED -DHAVE_FCNTL"
|
||||
;;
|
||||
+ i[3-7]86-*-elfiamcu)
|
||||
+ newlib_cflags="${newlib_cflags} -Os -DPREFER_SIZE_OVER_SPEED -ffunction-sections -fomit-frame-pointer -DREENTRANT_SYSCALL_PROVIDED"
|
||||
+ if [ "${newlib_multithread}" = "no" ] ; then
|
||||
+ newlib_cflags="${newlib_cflags} -DMISSING_SYSCALL_NAMES"
|
||||
+ else
|
||||
+ syscall_dir=syscalls
|
||||
+ newlib_cflags="${newlib_cflags} -D__DYNAMIC_REENT__"
|
||||
+ fi
|
||||
+ ;;
|
||||
iq2000*)
|
||||
syscall_dir=syscalls
|
||||
default_newlib_io_long_long="yes"
|
||||
diff --git a/newlib/libc/include/machine/setjmp.h b/newlib/libc/include/machine/setjmp.h
|
||||
index c08e682..2b4dd8b 100644
|
||||
--- a/newlib/libc/include/machine/setjmp.h
|
||||
+++ b/newlib/libc/include/machine/setjmp.h
|
||||
@@ -92,6 +92,9 @@ _BEGIN_STD_C
|
||||
# define _JBLEN (13 * 4)
|
||||
# elif defined(__unix__) || defined(__rtems__)
|
||||
# define _JBLEN 9
|
||||
+# elif defined(__iamcu__)
|
||||
+/* Intel MCU jmp_buf only covers callee-saved registers. */
|
||||
+# define _JBLEN 6
|
||||
# else
|
||||
# include "setjmp-dj.h"
|
||||
# endif
|
||||
diff --git a/newlib/libc/machine/i386/memchr.S b/newlib/libc/machine/i386/memchr.S
|
||||
index 7639685..d9b0bf2 100644
|
||||
--- a/newlib/libc/machine/i386/memchr.S
|
||||
+++ b/newlib/libc/machine/i386/memchr.S
|
||||
@@ -14,13 +14,33 @@
|
||||
SOTYPE_FUNCTION(memchr)
|
||||
|
||||
SYM (memchr):
|
||||
+#ifdef __iamcu__
|
||||
+ pushl edi
|
||||
+ movl eax,edi
|
||||
+ movl edx,eax
|
||||
+ xorl edx,edx
|
||||
+ testl ecx,ecx
|
||||
+ jz L20
|
||||
+
|
||||
+ repnz
|
||||
+ scasb
|
||||
+
|
||||
+ setnz dl
|
||||
+ decl edi
|
||||
+
|
||||
+ decl edx
|
||||
+ andl edi,edx
|
||||
+L20:
|
||||
+ movl edx,eax
|
||||
+
|
||||
+ popl edi
|
||||
+#else
|
||||
pushl ebp
|
||||
movl esp,ebp
|
||||
pushl edi
|
||||
movzbl 12(ebp),eax
|
||||
movl 16(ebp),ecx
|
||||
movl 8(ebp),edi
|
||||
-
|
||||
xorl edx,edx
|
||||
testl ecx,ecx
|
||||
jz L20
|
||||
@@ -111,4 +131,5 @@ L20:
|
||||
leal -4(ebp),esp
|
||||
popl edi
|
||||
leave
|
||||
+#endif
|
||||
ret
|
||||
diff --git a/newlib/libc/machine/i386/memcmp.S b/newlib/libc/machine/i386/memcmp.S
|
||||
index 26b8ef1..4a01b82 100644
|
||||
--- a/newlib/libc/machine/i386/memcmp.S
|
||||
+++ b/newlib/libc/machine/i386/memcmp.S
|
||||
@@ -15,6 +15,33 @@
|
||||
|
||||
SYM (memcmp):
|
||||
|
||||
+#ifdef __iamcu__
|
||||
+ pushl edi
|
||||
+ pushl esi
|
||||
+ movl eax,edi
|
||||
+ movl edx,esi
|
||||
+ cld
|
||||
+
|
||||
+/* check if length is zero in which case just return 0 */
|
||||
+
|
||||
+ xorl eax,eax
|
||||
+ testl ecx,ecx
|
||||
+ jz L4
|
||||
+
|
||||
+/* compare any unaligned bytes or remainder bytes */
|
||||
+ repz
|
||||
+ cmpsb
|
||||
+
|
||||
+/* set output to be < 0 if less than, 0 if equal, or > 0 if greater than */
|
||||
+ xorl edx,edx
|
||||
+ movb -1(esi),dl
|
||||
+ movb -1(edi),al
|
||||
+ subl edx,eax
|
||||
+
|
||||
+L4:
|
||||
+ popl esi
|
||||
+ popl edi
|
||||
+#else
|
||||
pushl ebp
|
||||
movl esp,ebp
|
||||
subl $16,esp
|
||||
@@ -73,4 +100,5 @@ L4:
|
||||
popl edi
|
||||
popl ebx
|
||||
leave
|
||||
+#endif
|
||||
ret
|
||||
diff --git a/newlib/libc/machine/i386/memcpy.S b/newlib/libc/machine/i386/memcpy.S
|
||||
index b53e2a1..a14aa2a 100644
|
||||
--- a/newlib/libc/machine/i386/memcpy.S
|
||||
+++ b/newlib/libc/machine/i386/memcpy.S
|
||||
@@ -15,6 +15,17 @@
|
||||
|
||||
SYM (memcpy):
|
||||
|
||||
+#ifdef __iamcu__
|
||||
+ pushl esi
|
||||
+ pushl edi
|
||||
+ movl eax,edi
|
||||
+ movl edx,esi
|
||||
+
|
||||
+ rep movsb
|
||||
+
|
||||
+ popl edi
|
||||
+ popl esi
|
||||
+#else
|
||||
pushl ebp
|
||||
movl esp,ebp
|
||||
pushl esi
|
||||
@@ -71,4 +82,5 @@ SYM (memcpy):
|
||||
popl edi
|
||||
popl esi
|
||||
leave
|
||||
+#endif
|
||||
ret
|
||||
diff --git a/newlib/libc/machine/i386/memmove.S b/newlib/libc/machine/i386/memmove.S
|
||||
index 1ea2f6d..1026582 100644
|
||||
--- a/newlib/libc/machine/i386/memmove.S
|
||||
+++ b/newlib/libc/machine/i386/memmove.S
|
||||
@@ -15,6 +15,32 @@
|
||||
|
||||
SYM (memmove):
|
||||
|
||||
+#ifdef __iamcu__
|
||||
+ pushl esi
|
||||
+ pushl edi
|
||||
+ movl eax,edi
|
||||
+ movl edx,esi
|
||||
+ cmp esi,edi
|
||||
+ ja .Lcopy_backward
|
||||
+ je .Lbwd_write_0bytes
|
||||
+
|
||||
+ rep movsb
|
||||
+
|
||||
+ popl edi
|
||||
+ popl esi
|
||||
+ ret
|
||||
+
|
||||
+.Lcopy_backward:
|
||||
+ lea -1(edi,ecx),edi
|
||||
+ lea -1(esi,ecx),esi
|
||||
+ std
|
||||
+ rep movsb
|
||||
+ cld
|
||||
+
|
||||
+.Lbwd_write_0bytes:
|
||||
+ popl edi
|
||||
+ popl esi
|
||||
+#else
|
||||
pushl ebp
|
||||
movl esp,ebp
|
||||
pushl esi
|
||||
@@ -143,4 +169,5 @@ SYM (memmove):
|
||||
popl edi
|
||||
popl esi
|
||||
leave
|
||||
+#endif
|
||||
ret
|
||||
diff --git a/newlib/libc/machine/i386/memset.S b/newlib/libc/machine/i386/memset.S
|
||||
index 6eb2cd6..83b2556 100644
|
||||
--- a/newlib/libc/machine/i386/memset.S
|
||||
+++ b/newlib/libc/machine/i386/memset.S
|
||||
@@ -15,6 +15,15 @@
|
||||
|
||||
SYM (memset):
|
||||
|
||||
+#ifdef __iamcu__
|
||||
+ pushl edi
|
||||
+ movl eax,edi
|
||||
+ movzbl dl,eax
|
||||
+ mov edi,edx
|
||||
+ rep stosb
|
||||
+ mov edx,eax
|
||||
+ popl edi
|
||||
+#else
|
||||
pushl ebp
|
||||
movl esp,ebp
|
||||
pushl edi
|
||||
@@ -96,4 +105,5 @@ SYM (memset):
|
||||
leal -4(ebp),esp
|
||||
popl edi
|
||||
leave
|
||||
+#endif
|
||||
ret
|
||||
diff --git a/newlib/libc/machine/i386/setjmp.S b/newlib/libc/machine/i386/setjmp.S
|
||||
index fd746e4..45c689f 100644
|
||||
--- a/newlib/libc/machine/i386/setjmp.S
|
||||
+++ b/newlib/libc/machine/i386/setjmp.S
|
||||
@@ -20,6 +20,10 @@
|
||||
** jmp_buf:
|
||||
** eax ebx ecx edx esi edi ebp esp eip
|
||||
** 0 4 8 12 16 20 24 28 32
|
||||
+ **
|
||||
+ ** Intel MCU jmp_buf:
|
||||
+ ** ebx esi edi ebp esp eip
|
||||
+ ** 0 4 8 12 16 20
|
||||
*/
|
||||
|
||||
#include "i386mach.h"
|
||||
@@ -31,6 +35,23 @@
|
||||
|
||||
SYM (setjmp):
|
||||
|
||||
+#ifdef __iamcu__
|
||||
+ /* Store EIP. */
|
||||
+ movl 0(esp),ecx
|
||||
+ movl ecx,20(eax)
|
||||
+
|
||||
+ movl ebx,0 (eax)
|
||||
+ movl esi,4 (eax)
|
||||
+ movl edi,8 (eax)
|
||||
+ movl ebp,12(eax)
|
||||
+
|
||||
+ /* Skip return address, which will be pushed onto stack in
|
||||
+ longjmp, and store SP. */
|
||||
+ leal 4(esp),ecx
|
||||
+ movl ecx,16(eax)
|
||||
+
|
||||
+ xorl eax,eax
|
||||
+#else
|
||||
pushl ebp
|
||||
movl esp,ebp
|
||||
|
||||
@@ -59,9 +80,28 @@ SYM (setjmp):
|
||||
popl edi
|
||||
movl $0,eax
|
||||
leave
|
||||
+#endif
|
||||
ret
|
||||
|
||||
SYM (longjmp):
|
||||
+#ifdef __iamcu__
|
||||
+ /* Check retval. */
|
||||
+ testl edx,edx
|
||||
+ jne 0f
|
||||
+ incl edx
|
||||
+0:
|
||||
+ /* Restore stack first. */
|
||||
+ movl 16(eax),esp
|
||||
+
|
||||
+ /* Put return address on stack. */
|
||||
+ pushl 20(eax)
|
||||
+
|
||||
+ movl 0(eax),ebx
|
||||
+ movl 4(eax),esi
|
||||
+ movl 8(eax),edi
|
||||
+ movl 12(eax),ebp
|
||||
+ movl edx,eax
|
||||
+#else
|
||||
pushl ebp
|
||||
movl esp,ebp
|
||||
|
||||
@@ -87,5 +127,6 @@ SYM (longjmp):
|
||||
movl 16(edi),esi
|
||||
movl 20(edi),edi
|
||||
__STI
|
||||
+#endif
|
||||
|
||||
ret
|
||||
diff --git a/newlib/libc/machine/i386/strchr.S b/newlib/libc/machine/i386/strchr.S
|
||||
index 1d98b81..43ee0fb 100644
|
||||
--- a/newlib/libc/machine/i386/strchr.S
|
||||
+++ b/newlib/libc/machine/i386/strchr.S
|
||||
@@ -15,6 +15,29 @@
|
||||
|
||||
SYM (strchr):
|
||||
|
||||
+#ifdef __iamcu__
|
||||
+ xorl ecx,ecx
|
||||
+ movb dl,cl
|
||||
+
|
||||
+/* loop while (*s && *s++ != c) */
|
||||
+ leal -1(eax),eax
|
||||
+L15:
|
||||
+ incl eax
|
||||
+ movb (eax),dl
|
||||
+ testb dl,dl
|
||||
+ je L14
|
||||
+ cmpb cl,dl
|
||||
+ jne L15
|
||||
+
|
||||
+L14:
|
||||
+/* if (*s == c) return address otherwise return NULL */
|
||||
+ cmpb cl,(eax)
|
||||
+ je L19
|
||||
+ xorl eax,eax
|
||||
+
|
||||
+L19:
|
||||
+ ret
|
||||
+#else
|
||||
pushl ebp
|
||||
movl esp,ebp
|
||||
pushl edi
|
||||
@@ -170,3 +193,5 @@ L27:
|
||||
jmp L9
|
||||
|
||||
#endif /* !__OPTIMIZE_SIZE__ */
|
||||
+
|
||||
+#endif /* __iamcu__ */
|
||||
diff --git a/newlib/libc/machine/i386/strlen.S b/newlib/libc/machine/i386/strlen.S
|
||||
index 0e3cb64..373ea0f 100644
|
||||
--- a/newlib/libc/machine/i386/strlen.S
|
||||
+++ b/newlib/libc/machine/i386/strlen.S
|
||||
@@ -18,9 +18,13 @@ SYM (strlen):
|
||||
pushl ebp
|
||||
movl esp,ebp
|
||||
pushl edi
|
||||
+#ifdef __iamcu__
|
||||
+ movl eax,edx
|
||||
+#else
|
||||
movl 8(ebp),edx
|
||||
+#endif
|
||||
|
||||
-#ifdef __OPTIMIZE_SIZE__
|
||||
+#if defined __OPTIMIZE_SIZE__ || defined __iamcu__
|
||||
cld
|
||||
movl edx,edi
|
||||
movl $4294967295,ecx
|
||||
diff --git a/newlib/libc/stdlib/strtold.c b/newlib/libc/stdlib/strtold.c
|
||||
index a6d415d..1128b74 100644
|
||||
--- a/newlib/libc/stdlib/strtold.c
|
||||
+++ b/newlib/libc/stdlib/strtold.c
|
||||
@@ -35,7 +35,8 @@ POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
#ifdef _HAVE_LONG_DOUBLE
|
||||
|
||||
-#if defined (__x86_64__) || defined (__i386__)
|
||||
+/* Intel MCU has no x87 floating point unit */
|
||||
+#if (defined (__x86_64__) || defined (__i386__)) && !defined (__iamcu__)
|
||||
static const int map[] = {
|
||||
1, /* round to nearest */
|
||||
3, /* round to zero */
|
||||
83
recipes-core/newlib/newlib_2.%.bb
Normal file
83
recipes-core/newlib/newlib_2.%.bb
Normal file
@@ -0,0 +1,83 @@
|
||||
HOMEPAGE = "https://sourceware.org/newlib/"
|
||||
SUMMARY = "C library for embedded systems"
|
||||
DESCRIPTION = "Newlib is a conglomeration of several library parts, all under free software licenses that make them easily usable on embedded products."
|
||||
|
||||
PV = "2.4.0"
|
||||
|
||||
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=fced02ba02d66f274d4847d27e80af74 \
|
||||
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] = "37c07a65c6effdb4822fb6f83067f37e"
|
||||
SRC_URI[sha256sum] = "545b3d235e350d2c61491df8b9f775b1b972f191380db8f52ec0b1c829c52706"
|
||||
SRC_URI += "file://gettimeofday-header-fix.patch"
|
||||
SRC_URI += "file://assert-fiprintf.patch"
|
||||
SRC_URI += "file://iamcu-commit-5d3ad3b.patch"
|
||||
|
||||
S = "${WORKDIR}/newlib-${PV}"
|
||||
|
||||
DEPENDS = "flex-native bison-native m4-native"
|
||||
DEPENDS_remove = "virtual/libc virtual/${TARGET_PREFIX}compilerlibs"
|
||||
PACKAGES = "${PN}"
|
||||
|
||||
# This will determine the name of the folder with libc as well.
|
||||
NEWLIB_HOST = "${TARGET_SYS}"
|
||||
|
||||
TUNE_CCARGS += " -nostdlib "
|
||||
|
||||
CFLAGS += " -DMISSING_SYSCALL_NAMES "
|
||||
|
||||
# Specify any options you want to pass to the configure script using EXTRA_OECONF:
|
||||
EXTRA_OECONF = " --enable-languages=c \
|
||||
--host=${NEWLIB_HOST} \
|
||||
--with-newlib --with-gnu-as --with-gnu-ld -v \
|
||||
--disable-newlib-supplied-syscalls \
|
||||
--disable-newlib-wide-orient \
|
||||
--disable-newlib-fseek-optimization \
|
||||
--enable-newlib-nano-formatted-io \
|
||||
--enable-newlib-nano-malloc \
|
||||
--disable-newlib-fvwrite-in-streamio \
|
||||
--disable-newlib-unbuf-stream-opt --enable-lite-exit \
|
||||
--enable-newlib-global-atexit \
|
||||
--disable-multilib \
|
||||
"
|
||||
|
||||
do_configure () {
|
||||
# If we're being rebuilt due to a dependency change, we need to make sure
|
||||
# everything is clean before we configure and build -- if we haven't previously
|
||||
# built this will fail and be ignored.
|
||||
make distclean || :
|
||||
export CC_FOR_TARGET="${CC}"
|
||||
${S}/configure ${EXTRA_OECONF}
|
||||
}
|
||||
|
||||
do_install () {
|
||||
oe_runmake 'DESTDIR=${D}' install
|
||||
|
||||
# Delete standards.info, configure.info
|
||||
rm -rf ${D}/usr/share/
|
||||
# Place the libraries where gcc can find them
|
||||
# usr/${NEWLIB_HOST}/lib -> usr/lib
|
||||
# usr/${NEWLIB_HOST}/include ->usr/include
|
||||
|
||||
mv -v ${D}/usr/local/${NEWLIB_HOST}/lib* ${D}/usr/lib
|
||||
mv -v ${D}/usr/local/${NEWLIB_HOST}/include* ${D}/usr/include
|
||||
rm -rf ${D}/usr/local/${NEWLIB_HOST}
|
||||
rm -rf ${D}/usr/local
|
||||
}
|
||||
|
||||
INHIBIT_PACKAGE_DEBUG_SPLIT = "1"
|
||||
INHIBIT_PACKAGE_STRIP = "1"
|
||||
|
||||
FILES_${PN} = "/usr/lib /usr/include"
|
||||
|
||||
INSANE_SKIP_${PN} += " staticdev"
|
||||
INSANE_SKIP_${PN}-dev += " staticdev"
|
||||
|
||||
23
recipes-core/newlib/newlib_2.%.bbappend
Normal file
23
recipes-core/newlib/newlib_2.%.bbappend
Normal file
@@ -0,0 +1,23 @@
|
||||
########################################################################
|
||||
#
|
||||
# ARC specific
|
||||
#
|
||||
########################################################################
|
||||
LIC_FILES_CHKSUM_arc = "file://COPYING;md5=59530bdf33659b29e73d4adb9f9f6552 \
|
||||
file://COPYING3.LIB;md5=6a6a8e020838b23406c81b19c1d46df6 \
|
||||
file://COPYING3;md5=d32239bcb673463ab874e80d47fae504 \
|
||||
file://COPYING.LIB;md5=9f604d8a4f8e74f4f5140845a21b6674 \
|
||||
file://COPYING.NEWLIB;md5=fced02ba02d66f274d4847d27e80af74 \
|
||||
file://newlib/libc/posix/COPYRIGHT;md5=103468ff1982be840fdf4ee9f8b51bbf \
|
||||
file://newlib/libc/sys/linux/linuxthreads/LICENSE;md5=73640207fbc79b198c7ffd4ad4d97aa0"
|
||||
|
||||
#Tag arc-2016.03
|
||||
SRCREV_arc = "e4da0f88abe8dd2a0b947bcf7cb8b3736ab94f33"
|
||||
SRC_URI_arc = "git://github.com/foss-for-synopsys-dwc-arc-processors/newlib.git;branch=arc-2.3"
|
||||
SRC_URI_arc += "file://assert-fiprintf.patch"
|
||||
S_arc = "${WORKDIR}/git"
|
||||
|
||||
# ERROR: QA Issue: Architecture did not match (195 to 93)
|
||||
INSANE_SKIP_${PN}_arc += " arch "
|
||||
|
||||
|
||||
3
recipes-devtools/gcc/libgcc_6.%.bbappend
Normal file
3
recipes-devtools/gcc/libgcc_6.%.bbappend
Normal file
@@ -0,0 +1,3 @@
|
||||
EXTRA_OECONF_remove = "--enable_multilib"
|
||||
EXTRA_OECONF_append = " --disable-multilib"
|
||||
|
||||
@@ -1,8 +1,17 @@
|
||||
$(info ZEPHYR_SYSROOT:${ZEPHYR_SYSROOT})
|
||||
|
||||
LIBGCC_DIR = $(shell dirname `$(CC) -print-libgcc-file-name`)
|
||||
$(info LIBGCCDIR:${LIBGCC_DIR} )
|
||||
|
||||
#NEWLIB_DIR = $(shell `$(CC) -print-multi-directory`)
|
||||
#$(info NEWLIB_DIR:${NEWLIB_DIR})
|
||||
|
||||
LIB_INCLUDE_DIR += -L $(LIBGCC_DIR) -L $(ZEPHYR_SYSROOT)/usr/lib/$(NEWLIB_DIR)
|
||||
$(info LIB_INCLUDE_DIR:${LIB_INCLUDE_DIR})
|
||||
|
||||
TOOLCHAIN_CFLAGS = -I$(ZEPHYR_SYSROOT)/usr/include
|
||||
$(info TOOLCHAIN_CFLAGS:${TOOLCHAIN_CFLAGS})
|
||||
|
||||
LIBGCC_DIR = $(shell dirname `$(CC)gcc -print-libgcc-file-name`)
|
||||
LIB_INCLUDE_DIR += -L $(LIBGCC_DIR)
|
||||
#TOOLCHAIN_CFLAGS = -I $(SYSROOT)/usr/include
|
||||
TOOLCHAIN_LIBS = gcc
|
||||
|
||||
export LIB_INCLUDE_DIR CROSS_COMPILE TOOLCHAIN_LIBS
|
||||
#export TOOLCHAIN_CFLAGS
|
||||
export LIB_INCLUDE_DIR CROSS_COMPILE TOOLCHAIN_LIBS TOOLCHAIN_CFLAGS
|
||||
|
||||
@@ -6,11 +6,14 @@ inherit zephyr
|
||||
# filesystem.
|
||||
IMAGE_NO_MANIFEST = "1"
|
||||
|
||||
ZEPHYR_MAKE_ARGS = " V=1 BOARD=${BOARD} CROSS_COMPILE=${CROSS_COMPILE} ZEPHYR_GCC_VARIANT="yocto" ZEPHYR_BASE=${ZEPHYR_BASE} SYSROOT=${STAGING_DIR_TARGET}"
|
||||
ZEPHYR_GCC_VARIANT="yocto"
|
||||
ZEPHYR_SYSROOT="${STAGING_DIR_TARGET}"
|
||||
|
||||
ZEPHYR_MAKE_ARGS = " V=1 BOARD=${BOARD} CROSS_COMPILE=${CROSS_COMPILE} ZEPHYR_GCC_VARIANT=${ZEPHYR_GCC_VARIANT} ZEPHYR_BASE=${ZEPHYR_BASE} ZEPHYR_SYSROOT=${ZEPHYR_SYSROOT}"
|
||||
|
||||
# We always need a toolchain to cross-compile.
|
||||
INHIBIT_DEFAULT_DEPS = "1"
|
||||
DEPENDS += "gcc-cross-${TARGET_ARCH} libgcc"
|
||||
DEPENDS += "gcc-cross-${TARGET_ARCH} libgcc ${TOOLCHAIN_TARGET_TASK}"
|
||||
CROSS_COMPILE = "${STAGING_BINDIR_TOOLCHAIN}/${TARGET_PREFIX}"
|
||||
|
||||
do_configure[noexec] = "1"
|
||||
@@ -25,7 +28,10 @@ python () {
|
||||
d.delVar('CXXFLAGS')
|
||||
d.delVar('LDFLAGS')
|
||||
}
|
||||
|
||||
OE_TERMINAL_EXPORTS += "CROSS_COMPILE"
|
||||
OE_TERMINAL_EXPORTS += "BOARD"
|
||||
OE_TERMINAL_EXPORTS += "ZEPHYR_SRC_DIR"
|
||||
OE_TERMINAL_EXPORTS += "ZEPHYR_BASE"
|
||||
OE_TERMINAL_EXPORTS += "ZEPHYR_SYSROOT"
|
||||
OE_TERMINAL_EXPORTS += "ZEPHYR_GCC_VARIANT"
|
||||
|
||||
Reference in New Issue
Block a user