mirror of
https://gitlab.alpinelinux.org/alpine/aports.git
synced 2026-01-17 06:32:36 +01:00
Currently each flavor of newlib depended on all toolchains, e.g. newlib-arm-none-eabi would not only pull in binutils and gcc for the target arm-none-eabi, but all others as well. This commit changes the behavior so that each newlib version only pulls in the corresponding toolchain.
145 lines
4.1 KiB
Plaintext
145 lines
4.1 KiB
Plaintext
# Maintainer: Marian Buschsieweke <marian.buschsieweke@ovgu.de>
|
|
|
|
_pkgbase=newlib
|
|
_targets="
|
|
mips-mti-elf
|
|
msp430-elf
|
|
arm-none-eabi
|
|
"
|
|
pkgname="$_pkgbase"
|
|
pkgver="3.0.0.20180831"
|
|
pkgrel=1
|
|
pkgdesc="A C standard library implementation intended for use on embedded systems"
|
|
url="http://www.sourceware.org/newlib/"
|
|
makedepends="texinfo"
|
|
arch="all"
|
|
license="BSD"
|
|
source="
|
|
ftp://sourceware.org/pub/${_pkgbase}/${_pkgbase}-${pkgver}.tar.gz
|
|
"
|
|
options="!check"
|
|
|
|
for target in $_targets; do
|
|
targetnorm="${target//-/_}"
|
|
subpackages="${_pkgbase}-${target}:${targetnorm} ${subpackages}"
|
|
makedepends="binutils-${target} gcc-${target} ${makedepends}"
|
|
done
|
|
|
|
builddir="$srcdir/$_pkgbase-$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() {
|
|
for target in $_targets; do
|
|
mkdir "${builddir}/build-$target" "${builddir}/build-$target-nano"
|
|
# nano version
|
|
cd "${builddir}/build-$target-nano"
|
|
"$builddir"/configure \
|
|
--target=$target \
|
|
--prefix=/usr/ \
|
|
--infodir=/deleteme/info \
|
|
--mandir=/deleteme/man \
|
|
--htmldir=/deleteme/html \
|
|
--pdfdir=/deleteme/pdf \
|
|
--disable-newlib-supplied-syscalls \
|
|
--disable-nls \
|
|
--disable-newlib-fseek-optimization \
|
|
--disable-newlib-fvwrite-in-streamio \
|
|
--disable-newlib-unbuf-stream-opt \
|
|
--disable-newlib-wide-orient \
|
|
--enable-lite-exit \
|
|
--enable-newlib-global-atexit \
|
|
--enable-newlib-nano-formatted-io \
|
|
--enable-newlib-nano-malloc \
|
|
--enable-newlib-reent-small \
|
|
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-$target"
|
|
"$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
|
|
done
|
|
}
|
|
|
|
package() {
|
|
for target in $_targets; do
|
|
depends="$depends $_pkgbase-$target"
|
|
done
|
|
mkdir -p "$pkgdir"
|
|
}
|
|
|
|
_install_subpkg() {
|
|
pkgdesc="A C standard library implementation intended for ${target}"
|
|
target="${subpkgname#$_pkgbase-}"
|
|
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"
|
|
for file in $(find . -regex ".*\(c\|g\|rdimon\)\.a"); do
|
|
mv "$file" "${file%.a}_nano.a"
|
|
done
|
|
mkdir -p "${subpkgdir}/usr/$target/include/nano"
|
|
mv "${subpkgdir}/usr/$target/include/newlib.h" \
|
|
"${subpkgdir}/usr/$target/include/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
|
|
}
|
|
|
|
sha512sums="c195111ac61458fccbd700345cd8ed7806776b3d16557e9a86fbcdf0ff5f544bff7eb701e84defb3f6b4d6fc00674163fa89aead1b171ed3281470a4f6306d1f newlib-3.0.0.20180831.tar.gz"
|