diff options
Diffstat (limited to 'meta/recipes-core/newlib')
-rw-r--r-- | meta/recipes-core/newlib/libgloss/fix-rs6000-crt0.patch | 24 | ||||
-rw-r--r-- | meta/recipes-core/newlib/libgloss/fix_makefile_include_arm_h.patch | 30 | ||||
-rw-r--r-- | meta/recipes-core/newlib/libgloss/libgloss-build-without-nostdinc.patch | 30 | ||||
-rw-r--r-- | meta/recipes-core/newlib/libgloss_git.bb (renamed from meta/recipes-core/newlib/libgloss_3.0.0.bb) | 17 | ||||
-rw-r--r-- | meta/recipes-core/newlib/newlib.inc | 29 | ||||
-rw-r--r-- | meta/recipes-core/newlib/newlib_git.bb (renamed from meta/recipes-core/newlib/newlib_3.0.0.bb) | 7 |
6 files changed, 77 insertions, 60 deletions
diff --git a/meta/recipes-core/newlib/libgloss/fix-rs6000-crt0.patch b/meta/recipes-core/newlib/libgloss/fix-rs6000-crt0.patch index c220fb8437..8c29fea8cf 100644 --- a/meta/recipes-core/newlib/libgloss/fix-rs6000-crt0.patch +++ b/meta/recipes-core/newlib/libgloss/fix-rs6000-crt0.patch @@ -5,35 +5,41 @@ name for crt0 in specific, so performing all of them results in an error during do_install, we simply modify the name of the objects so the installation can proceed and leave it to the user to select which object files to use. -Signed-off-by: Alejandro Enedino Hernandez Samaniego <alejandr@xilinx.com> -Index: newlib-3.0.0/libgloss/rs6000/Makefile.in +01/2023: Rebased for libgloss 4.3.0 + +Signed-off-by: Alejandro Enedino Hernandez Samaniego <alejandro@enedino.org> + + +Index: git/libgloss/rs6000/Makefile.in =================================================================== ---- newlib-3.0.0.orig/libgloss/rs6000/Makefile.in -+++ newlib-3.0.0/libgloss/rs6000/Makefile.in -@@ -358,7 +358,7 @@ install-sim: - set -e; for x in ${SIM_CRT0} ${SIM_BSP} ${SIM_SCRIPTS}; do ${INSTALL_DATA} $$x $(DESTDIR)${tooldir}/lib${MULTISUBDIR}/$$x; done +--- git.orig/libgloss/rs6000/Makefile.in ++++ git/libgloss/rs6000/Makefile.in +@@ -362,7 +362,7 @@ install-sim: install-mvme: + ${mkinstalldirs} ${DESTDIR}${tooldir}/lib${MULTISUBDIR} - set -e; for x in ${MVME_CRT0} ${MVME_BSP} ${MVME_SCRIPTS}; do ${INSTALL_DATA} $$x $(DESTDIR)${tooldir}/lib${MULTISUBDIR}/$$x; done + set -e; for x in ${MVME_CRT0} ${MVME_BSP} ${MVME_SCRIPTS}; do ${INSTALL_DATA} $$x $(DESTDIR)${tooldir}/lib${MULTISUBDIR}/mvme-$$x; done install-solaris: - set -e; for x in ${SOLARIS_CRT0} ${SOLARIS_BSP} ${SOLARIS_SCRIPTS}; do ${INSTALL_DATA} $$x $(DESTDIR)${tooldir}/lib${MULTISUBDIR}/$$x; done -@@ -367,15 +367,15 @@ install-linux: - set -e; for x in ${LINUX_CRT0} ${LINUX_BSP} ${LINUX_SCRIPTS}; do ${INSTALL_DATA} $$x $(DESTDIR)${tooldir}/lib${MULTISUBDIR}/$$x; done + ${mkinstalldirs} ${DESTDIR}${tooldir}/lib${MULTISUBDIR} +@@ -374,17 +374,17 @@ install-linux: install-yellowknife: + ${mkinstalldirs} ${DESTDIR}${tooldir}/lib${MULTISUBDIR} - set -e; for x in ${YELLOWKNIFE_CRT0} ${YELLOWKNIFE_BSP}; do ${INSTALL_DATA} $$x $(DESTDIR)${tooldir}/lib${MULTISUBDIR}/$$x; done + set -e; for x in ${YELLOWKNIFE_CRT0} ${YELLOWKNIFE_BSP}; do ${INSTALL_DATA} $$x $(DESTDIR)${tooldir}/lib${MULTISUBDIR}/yellowknife-$$x; done set -e; for x in ${YELLOWKNIFE_SCRIPTS}; do ${INSTALL_DATA} $(srcdir)/$$x $(DESTDIR)${tooldir}/lib${MULTISUBDIR}/$$x; done install-ads: + ${mkinstalldirs} ${DESTDIR}${tooldir}/lib${MULTISUBDIR} - set -e; for x in ${ADS_CRT0} ${ADS_BSP}; do ${INSTALL_DATA} $$x $(DESTDIR)${tooldir}/lib${MULTISUBDIR}/$$x; done + set -e; for x in ${ADS_CRT0} ${ADS_BSP}; do ${INSTALL_DATA} $$x $(DESTDIR)${tooldir}/lib${MULTISUBDIR}/ads-$$x; done set -e; for x in ${ADS_SCRIPTS}; do ${INSTALL_DATA} $(srcdir)/$$x $(DESTDIR)${tooldir}/lib${MULTISUBDIR}/$$x; done install-mbx: + ${mkinstalldirs} ${DESTDIR}${tooldir}/lib${MULTISUBDIR} - set -e; for x in ${MBX_CRT0} ${MBX_BSP}; do ${INSTALL_DATA} $$x $(DESTDIR)${tooldir}/lib${MULTISUBDIR}/$$x; done + set -e; for x in ${MBX_CRT0} ${MBX_BSP}; do ${INSTALL_DATA} $$x $(DESTDIR)${tooldir}/lib${MULTISUBDIR}/mbx-$$x; done set -e; for x in ${MBX_SCRIPTS} ${MBX_SPECS}; do ${INSTALL_DATA} $(srcdir)/$$x $(DESTDIR)${tooldir}/lib${MULTISUBDIR}/$$x; done diff --git a/meta/recipes-core/newlib/libgloss/fix_makefile_include_arm_h.patch b/meta/recipes-core/newlib/libgloss/fix_makefile_include_arm_h.patch deleted file mode 100644 index 7645be7314..0000000000 --- a/meta/recipes-core/newlib/libgloss/fix_makefile_include_arm_h.patch +++ /dev/null @@ -1,30 +0,0 @@ -Upstream-Status: Inappropriate [OE-Specific] - -When trying to build libgloss for an arm target, the build system -complains about missing some include files: - -| fatal error: acle-compiat.h: No such file or directory -| #include "acle-compat.h" -| ^~~~~~~~~~~~~~~ -| compilation terminated. - -These include files come from the newlib source, but since we -are building libgloss separately from newlib, libgloss is unaware -of where they are, this patch fixes the INCLUDES so the build system -can find such files. - -Signed-off-by: Alejandro Enedino Hernandez Samaniego <alejandr@xilinx.com> - -Index: newlib-3.0.0/libgloss/config/default.mh -=================================================================== ---- newlib-3.0.0.orig/libgloss/config/default.mh -+++ newlib-3.0.0/libgloss/config/default.mh -@@ -1,7 +1,7 @@ - NEWLIB_CFLAGS = `if [ -d ${objroot}/newlib ]; then echo -I${objroot}/newlib/targ-include -I${srcroot}/newlib/libc/include; fi` - NEWLIB_LDFLAGS = `if [ -d ${objroot}/newlib ]; then echo -B${objroot}/newlib/ -L${objroot}/newlib/; fi` - --INCLUDES = -I. -I$(srcdir)/.. -+INCLUDES = -I. -I$(srcdir)/.. -I$(srcdir)/../newlib/libc/machine/arm - # Note that when building the library, ${MULTILIB} is not the way multilib - # options are passed; they're passed in $(CFLAGS). - CFLAGS_FOR_TARGET = -O2 -g ${MULTILIB} ${INCLUDES} ${NEWLIB_CFLAGS} diff --git a/meta/recipes-core/newlib/libgloss/libgloss-build-without-nostdinc.patch b/meta/recipes-core/newlib/libgloss/libgloss-build-without-nostdinc.patch new file mode 100644 index 0000000000..2b66155eea --- /dev/null +++ b/meta/recipes-core/newlib/libgloss/libgloss-build-without-nostdinc.patch @@ -0,0 +1,30 @@ +Upstream-Status: Inappropriate [OE-Specific] + +Since commit e0c0ad82 libgloss started passing the -nostdinc to CC. + +They dont want to build against C library headers that are already in +the system to avoid pollution, however, we purposely build libgloss +against the newly built newlib C library, thats why we keep newlib +and libgloss in separate recipes and create a dependency between them. + +This causes an issue where bitbake stops finding newlib headers while +libgloss is being built. + +Do not pass -nostdinc to CC to maintain current behavior of +TCLIBC=newlib + + +Signed-off-by: Alejandro Enedino Hernandez Samaniego <alejandro@enedino.org> +Index: newlib-3.0.0/libgloss/configure +=================================================================== +--- newlib-3.0.0.orig/libgloss/configure ++++ newlib-3.0.0/libgloss/configure +@@ -5106,7 +5106,7 @@ fi + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_compiler_isystem" >&5 + $as_echo "$libc_cv_compiler_isystem" >&6; } +-CC="$CC -nostdinc $libc_cv_compiler_isystem" ++CC="$CC $libc_cv_compiler_isystem" + + host_makefile_frag_path=$host_makefile_frag + diff --git a/meta/recipes-core/newlib/libgloss_3.0.0.bb b/meta/recipes-core/newlib/libgloss_git.bb index c9ed30d988..7e34e33c7a 100644 --- a/meta/recipes-core/newlib/libgloss_3.0.0.bb +++ b/meta/recipes-core/newlib/libgloss_git.bb @@ -2,21 +2,22 @@ require newlib.inc DEPENDS += "newlib" -FILESEXTRAPATHS_prepend := "${THISDIR}/libgloss:" +FILESEXTRAPATHS:prepend := "${THISDIR}/libgloss:" -SRC_URI_append_powerpc = " file://fix-rs6000-crt0.patch" -SRC_URI_append_arm = " file://fix_makefile_include_arm_h.patch" +SRC_URI:append = " file://libgloss-build-without-nostdinc.patch" +SRC_URI:append:powerpc = " file://fix-rs6000-crt0.patch" +SRC_URI:append:powerpc = " file://fix-rs6000-cflags.patch" do_configure() { ${S}/libgloss/configure ${EXTRA_OECONF} } -do_install_prepend() { +do_install:prepend() { # install doesn't create this itself, avoid install error install -d ${D}${prefix}/${TARGET_SYS}/lib } -do_install_append() { +do_install:append() { # Move libs to default directories so they can be picked up later install -d ${D}${libdir} mv -v ${D}${prefix}/${TARGET_SYS}/lib/* ${D}${libdir} @@ -26,8 +27,10 @@ do_install_append() { } # Split packages correctly -FILES_${PN} += "${libdir}/*.ld ${libdir}/*.specs" -FILES_${PN}-dev += "${libdir}/cpu-init/*" +FILES:${PN} += "${libdir}/*.ld ${libdir}/*.specs" +FILES:${PN}-dev += "${libdir}/cpu-init/*" +# RiscV installation moved the syscall header to this location +FILES:${PN}-dev += "${prefix}/${TARGET_SYS}/include/machine/*.h" INHIBIT_PACKAGE_STRIP = "1" INHIBIT_PACKAGE_DEBUG_SPLIT = "1" diff --git a/meta/recipes-core/newlib/newlib.inc b/meta/recipes-core/newlib/newlib.inc index f50e5fed81..6113f5e831 100644 --- a/meta/recipes-core/newlib/newlib.inc +++ b/meta/recipes-core/newlib/newlib.inc @@ -3,30 +3,30 @@ HOMEPAGE = "https://sourceware.org/newlib/" DESCRIPTION = "C library intended for use on embedded systems. 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" +LICENSE = "GPL-2.0-only & LGPL-3.0-only & GPL-3.0-only & LGPL-2.0-only & BSD-2-Clause & BSD-3-Clause & TCL & Apache-2.0-with-LLVM-exception" LIC_FILES_CHKSUM = " \ file://COPYING;md5=59530bdf33659b29e73d4adb9f9f6552 \ file://COPYING3.LIB;md5=6a6a8e020838b23406c81b19c1d46df6 \ file://COPYING3;md5=d32239bcb673463ab874e80d47fae504 \ - file://COPYING.LIBGLOSS;md5=73f5c98779aea7dba4a6c94a74ab0ae2 \ + file://COPYING.LIBGLOSS;md5=c0469b6ebb847a75781066be515f032d \ file://COPYING.LIB;md5=2d5025d4aa3495befef8f17206a5b0a1 \ - file://COPYING.NEWLIB;md5=956a4b1487f7677cdcceeee8f05a21f0 \ + file://COPYING.NEWLIB;md5=4f1a15846ffee91e352418563e1bce27 \ 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] = "81ec873108b8593c586f91ca65963952" -SRC_URI[sha256sum] = "c8566335ee74e5fcaeb8595b4ebd0400c4b043d6acb3263ecb1314f8f5501332" +BASEVER = "4.4.0" +PV = "${BASEVER}+git" +SRC_URI = "git://sourceware.org/git/newlib-cygwin.git;protocol=https;branch=main" +SRCREV="ad11e2587f83d61357a32c61c36d72ea4f39315e" INHIBIT_DEFAULT_DEPS = "1" DEPENDS = "virtual/${TARGET_PREFIX}gcc" -S = "${WORKDIR}/newlib-${PV}" +S = "${WORKDIR}/git" B = "${WORKDIR}/build" ## disable stdlib -TARGET_CC_ARCH_append = " -nostdlib" +TARGET_CC_ARCH:append = " -nostdlib" EXTRA_OECONF = " \ --build=${BUILD_SYS} \ @@ -42,13 +42,20 @@ EXTRA_OECONF = " \ --with-gnu-as \ --with-gnu-ld \ --disable-multilib \ + --disable-newlib-supplied-syscalls \ " do_configure[cleandirs] = "${B}" +# We need a dummy limits.h to pass preprocessor checks +do_configure:append(){ + install -d ${STAGING_INCDIR} + touch ${STAGING_INCDIR}/limits.h +} + do_install() { oe_runmake install DESTDIR='${D}' } -COMPATIBLE_HOST_libc-musl_class-target = "null" -COMPATIBLE_HOST_libc-glibc_class-target = "null" +COMPATIBLE_HOST:libc-musl:class-target = "null" +COMPATIBLE_HOST:libc-glibc:class-target = "null" diff --git a/meta/recipes-core/newlib/newlib_3.0.0.bb b/meta/recipes-core/newlib/newlib_git.bb index db13724eb5..fb922d65d1 100644 --- a/meta/recipes-core/newlib/newlib_3.0.0.bb +++ b/meta/recipes-core/newlib/newlib_git.bb @@ -3,10 +3,11 @@ require newlib.inc PROVIDES += "virtual/libc virtual/libiconv virtual/libintl" do_configure() { - ${S}/configure ${EXTRA_OECONF} + export CC_FOR_TARGET="${CC}" + ${S}/configure ${EXTRA_OECONF} } -do_install_append() { +do_install:append() { # Move include files and libs to default directories so they can be picked up later mv -v ${D}${prefix}/${TARGET_SYS}/lib ${D}${libdir} mv -v ${D}${prefix}/${TARGET_SYS}/include ${D}${includedir} @@ -16,4 +17,4 @@ do_install_append() { } # No rpm package is actually created but -dev depends on it, avoid dnf error -RDEPENDS_${PN}-dev_libc-newlib = "" +DEV_PKG_DEPENDENCY:libc-newlib = "" |