Subject: [alpine-aports] [PATCH 3/3] testing/newlib-arm-none-eabi: New aport

From: Marian Buschsieweke <[email-masked]>
Date: Mon, 28 May 2018 18:49:30 +0200

A C standard library implementation intended for use on embedded ARM
http://www.sourceware.org/newlib/

Just as gcc-arm-none-eabi, this package is heavily based on Ubuntu's
libnewlib-arm-none-eabi package.
---
 testing/newlib-arm-none-eabi/APKBUILD         | 115 ++++++++++++++++++
 .../fix-include-paths-nano-specs.patch        |  13 ++
 2 files changed, 128 insertions(+)
 create mode 100644 testing/newlib-arm-none-eabi/APKBUILD
 create mode 100644 testing/newlib-arm-none-eabi/fix-include-paths-nano-specs.patch

diff --git a/testing/newlib-arm-none-eabi/APKBUILD b/testing/newlib-arm-none-eabi/APKBUILD
new file mode 100644
index 0000000000..c661d45bb7
--- /dev/null
+++ b/testing/newlib-arm-none-eabi/APKBUILD
@@ -0,0 +1,115 @@
+# Maintainer: Marian Buschsieweke <[email-masked]>
+
+_realname=newlib
+_target="arm-none-eabi"
+pkgname="$_realname-$_target"
+pkgver=2.4.0.20160527
+pkgrel=0
+pkgdesc="A C standard library implementation intended for use on embedded ARM"
+url="http://www.sourceware.org/newlib/"
+makedepends="texinfo"
+depends="gcc-$_target binutils-$_target"
+arch="all"
+license="BSD"
+source="
+	http://archive.ubuntu.com/ubuntu/pool/universe/${_realname:0:1}/${_realname}/${_realname}_${pkgver}.orig.tar.xz
+	fix-include-paths-nano-specs.patch
+	"
+#source="ftp://sourceware.org/pub/${_realname}/${_realname}-${pkgver}.tar.gz"
+options="!check"
+
+builddir="$srcdir/$_realname-$pkgver"
+
+# This package installes two version of the newlib library to remain compatible
+# with projects expecting the GNU ARM Embedded Toolchain [1]. The nano version
+# appends the postix "_nano" to the libaries. The is not an arbitrary choice,
+# it matches the specs in "/usr/arm-none-eabi/lib/nano.specs", which is
+# part of the default newlib installation.
+# [1]: https://launchpad.net/gcc-arm-embedded/
+
+build() {
+	mkdir "${builddir}/build" "${builddir}/build-nano"
+	# nano version
+	cd "${builddir}/build-nano"
+	"$builddir"/configure \
+			--host=$CHOST \
+			--build=$CBUILD \
+			--target=$_target \
+			--prefix=/usr/ \
+			--infodir=/deleteme/info \
+			--mandir=/deleteme/man \
+			--htmldir=/deleteme/html \
+			--pdfdir=/deleteme/pdf \
+			--disable-newlib-supplied-syscalls \
+			--disable-nls \
+			--enable-newlib-reent-small \
+			--disable-newlib-fvwrite-in-streamio \
+			--disable-newlib-fseek-optimization \
+			--disable-newlib-wide-orient \
+			--enable-newlib-nano-malloc \
+			--disable-newlib-unbuf-stream-opt \
+			--enable-lite-exit \
+			--enable-newlib-global-atexit \
+			--enable-newlib-nano-formatted-io \
+			CC_FOR_TARGET="$_target"-gcc \
+			GCC_FOR_TARGET="$_target"-gcc \
+			AR_FOR_TARGET="$_target"-ar \
+			AS_FOR_TARGET="$_target"-as \
+			LD_FOR_TARGET="$_target"-ld \
+			NM_FOR_TARGET="$_target"-nm \
+			OBJDUMP_FOR_TARGET="$_target"-objdump \
+			RANLIB_FOR_TARGET="$_target"-ranlib \
+			READELF_FOR_TARGET="$_target"-readelf \
+			STRIP_FOR_TARGET="$_target"-strip \
+			CFLAGS="-Os -ffunction-sections -fdata-sections -fshort-wchar"
+	make
+
+	# regular version
+	cd "${builddir}/build"
+	"$builddir"/configure \
+			--host=$CHOST \
+			--target=$_target \
+			--prefix=/usr \
+			--infodir=/deleteme/info \
+			--mandir=/deleteme/man \
+			--htmldir=/deleteme/html \
+			--pdfdir=/deleteme/pdf \
+			--disable-newlib-supplied-syscalls \
+			--disable-nls \
+			--enable-newlib-io-long-long \
+			--enable-newlib-register-fini \
+			CC_FOR_TARGET="$_target"-gcc \
+			GCC_FOR_TARGET="$_target"-gcc \
+			AR_FOR_TARGET="$_target"-ar \
+			AS_FOR_TARGET="$_target"-as \
+			LD_FOR_TARGET="$_target"-ld \
+			NM_FOR_TARGET="$_target"-nm \
+			OBJDUMP_FOR_TARGET="$_target"-objdump \
+			RANLIB_FOR_TARGET="$_target"-ranlib \
+			READELF_FOR_TARGET="$_target"-readelf \
+			STRIP_FOR_TARGET="$_target"-strip \
+			CFLAGS="-O2 -ffunction-sections -fdata-sections -pipe"
+	make
+}
+
+package() {
+	# install nano version
+	cd "${builddir}/build-nano"
+	make -j1 DESTDIR="$pkgdir" install
+	# rename nano version libs
+	cd "${pkgdir}/usr/$_target/lib"
+	for file in $(find . -regex ".*\(c\|g\|rdimon\)\.a"); do
+		mv "$file" "${file%.a}_nano.a"
+	done
+	mkdir -p "${pkgdir}/usr/$_target/include/nano"
+	mv "${pkgdir}/usr/$_target/include/newlib.h" \
+	   "${pkgdir}/usr/$_target/include/nano/"
+
+	# install regular version
+	cd "${builddir}/build"
+	make -j1 DESTDIR="$pkgdir" install
+	rm -rf "${pkgdir}/deleteme"
+}
+
+sha512sums="91d07a67a4f0b4ce7774352c50c8906c0051ebe588ed30c2abfdf4105b3bbeb98433c8b61126e5e6c1891b0f5a5462f762383b6fc419ba993a02b2484f46a9cc  newlib_2.4.0.20160527.orig.tar.xz
+6a7daa621088f7a9c75787c73de34ea6e503ba8051e208b2b6dd03498384bda46a81c0572be7846a7a270e4c390aa8d418b55a73587dd9d212fc2f5d123782f3  fix-include-paths-nano-specs.patch"
diff --git a/testing/newlib-arm-none-eabi/fix-include-paths-nano-specs.patch b/testing/newlib-arm-none-eabi/fix-include-paths-nano-specs.patch
new file mode 100644
index 0000000000..f4ea97708f
--- /dev/null
+++ b/testing/newlib-arm-none-eabi/fix-include-paths-nano-specs.patch
@@ -0,0 +1,13 @@
+Index: newlib-2.4.0.20160527/libgloss/arm/elf-nano.specs
+===================================================================
+--- newlib-2.4.0.20160527.orig/libgloss/arm/elf-nano.specs
++++ newlib-2.4.0.20160527/libgloss/arm/elf-nano.specs
+@@ -3,7 +3,7 @@
+ %rename cpp		nano_cpp
+ 
+ *cpp:
+--isystem =/include/newlib-nano %(nano_cpp)
++-isystem /usr/include/newlib/nano %(nano_cpp)
+ 
+ *nano_libc:
+ -lc_nano
-- 
2.17.0

---
Unsubscribe:  [email-masked]
Help:         [email-masked]
---