mirror of
https://gitlab.alpinelinux.org/alpine/aports.git
synced 2025-07-24 19:55:26 +03:00
182 lines
5 KiB
Text
182 lines
5 KiB
Text
# Maintainer: Marian Buschsieweke <marian.buschsieweke@ovgu.de>
|
|
pkgname=newlib
|
|
pkgver=4.3.0.20230120
|
|
pkgrel=0
|
|
pkgdesc="C standard library implementation intended for use on embedded systems"
|
|
url="https://www.sourceware.org/newlib/"
|
|
makedepends="texinfo"
|
|
arch="aarch64 ppc64le x86_64 x86"
|
|
license="GPL-2.0-only AND LGPL-2.1-only AND 0BSD AND BSD-3-Clause AND GPL-3.0-only AND LGPL-3.0-only"
|
|
source="
|
|
https://sourceware.org/pub/newlib/newlib-$pkgver.tar.gz
|
|
"
|
|
options="!check"
|
|
|
|
# classify targets as exotic or mainstream. Only build support for
|
|
# exotic targets on typical developer / CI hardware (x86_86, aarach64).
|
|
_targets_mainstream="
|
|
arm-none-eabi
|
|
riscv-none-elf
|
|
"
|
|
|
|
_targets_exotic="
|
|
msp430-elf
|
|
or1k-elf
|
|
aarch64-none-elf
|
|
"
|
|
|
|
case "$CARCH" in
|
|
x86_64|aarch64)
|
|
# support all targets on typical workstation / notebook / CI servers
|
|
_targets="$_targets_mainstream $_targets_exotic"
|
|
;;
|
|
*)
|
|
# support only mainstream targets on exotic hosts
|
|
_targets="$_targets_mainstream"
|
|
;;
|
|
esac
|
|
|
|
for target in $_targets; do
|
|
targetnorm="${target//-/_}"
|
|
subpackages="newlib-$target:$targetnorm $subpackages"
|
|
# here only makedepends. The depends to binutils-$target and gcc-$target
|
|
# will be set in the subpkg newlib-$target
|
|
makedepends="binutils-$target gcc-$target $makedepends"
|
|
done
|
|
|
|
# secfixes:
|
|
# 4.1.0-r0:
|
|
# - CVE-2021-3420
|
|
|
|
# This package installs two version of the newlib library to remain compatible
|
|
# with projects expecting the GNU ARM Embedded Toolchain [1]. The nano version
|
|
# appends the postfix "_nano" to the libraries. 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() {
|
|
for target in $_targets; do
|
|
mkdir "$builddir/build-$target" "$builddir/build-$target-nano"
|
|
# nano version
|
|
cd "$builddir/build-$target-nano"
|
|
export CFLAGS_FOR_TARGET="-Os -ffunction-sections -fdata-sections -fshort-wchar"
|
|
"$builddir"/configure \
|
|
--target=$target \
|
|
--prefix=/usr/ \
|
|
--infodir=/deleteme/info \
|
|
--mandir=/deleteme/man \
|
|
--htmldir=/deleteme/html \
|
|
--pdfdir=/deleteme/pdf \
|
|
--disable-newlib-fseek-optimization \
|
|
--disable-newlib-fvwrite-in-streamio \
|
|
--disable-newlib-supplied-syscalls \
|
|
--disable-newlib-unbuf-stream-opt \
|
|
--disable-newlib-wide-orient \
|
|
--disable-nls \
|
|
--enable-lite-exit \
|
|
--enable-newlib-global-atexit \
|
|
--enable-newlib-nano-formatted-io \
|
|
--enable-newlib-nano-malloc \
|
|
--enable-newlib-reent-small \
|
|
--enable-newlib-retargetable-locking \
|
|
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
|
|
make
|
|
|
|
# regular version
|
|
cd "$builddir/build-$target"
|
|
export CFLAGS_FOR_TARGET="-O2 -ffunction-sections -fdata-sections"
|
|
"$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-c99-formats \
|
|
--enable-newlib-io-long-long \
|
|
--enable-newlib-register-fini \
|
|
--enable-newlib-retargetable-locking \
|
|
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
|
|
make
|
|
done
|
|
}
|
|
|
|
package() {
|
|
for target in $_targets; do
|
|
depends="$depends newlib-$target"
|
|
done
|
|
mkdir -p "$pkgdir"
|
|
}
|
|
|
|
_install_subpkg() {
|
|
target="${subpkgname#newlib-}"
|
|
pkgdesc="A C standard library implementation intended for $target"
|
|
depends="binutils-$target gcc-$target $depends"
|
|
mkdir -p "$subpkgdir"
|
|
# install nano version
|
|
cd "$builddir/build-$target-nano"
|
|
make -j1 DESTDIR="$subpkgdir" install
|
|
# rename nano version libs
|
|
cd "$subpkgdir/usr/$target/lib"
|
|
find . -regex ".*\(c\|g\|m\|rdimon\|gloss\)\.a" | while read -r _file; do
|
|
mv "$_file" "${_file%%.a}_nano.a"
|
|
done
|
|
mkdir -p "$subpkgdir/usr/$target/include/newlib-nano"
|
|
mv "$subpkgdir/usr/$target/include/newlib.h" \
|
|
"$subpkgdir/usr/$target/include/newlib-nano/"
|
|
|
|
# install regular version
|
|
cd "$builddir/build-$target"
|
|
make -j1 DESTDIR="$subpkgdir" install
|
|
rm -rf "$subpkgdir/deleteme"
|
|
}
|
|
|
|
arm_none_eabi() {
|
|
_install_subpkg
|
|
}
|
|
|
|
mips_mti_elf() {
|
|
_install_subpkg
|
|
}
|
|
|
|
msp430_elf() {
|
|
_install_subpkg
|
|
}
|
|
|
|
or1k_elf() {
|
|
_install_subpkg
|
|
}
|
|
|
|
riscv_none_elf() {
|
|
_install_subpkg
|
|
}
|
|
|
|
aarch64_none_elf() {
|
|
_install_subpkg
|
|
}
|
|
|
|
sha512sums="
|
|
4a06309d36c2255fef8fc8f2d133cafa850f1ed2eddfb27b5d45f5d16af69e0fca829a0b4c9b34af4ed3a28c6fcc929761e0ee823a4229f35c2853d432b5e7ef newlib-4.3.0.20230120.tar.gz
|
|
"
|