aboutsummaryrefslogblamecommitdiffstats
path: root/testing/newlib-stage1/APKBUILD
blob: 5167ae73568ba878d403a48b0405c565ebde5732 (plain) (tree)
1
2
3
4
5
6
7
8
9








                                                               
              






                                                                                  
                                                                   




                                   

                                                                       












                                                                               
                                                                              
                              
                                                 































                                                                                              
                                            


































                                                                                      
                                                                          



                                         
                                         

                                             
                                       


                                                                


                                                      

                                 
                                    
                                             
                                    













                       
                                                                                                                                                                  
# Maintainer: Marian Buschsieweke <marian.buschsieweke@ovgu.de>

_pkgbase=newlib
_targets="
	arm-none-eabi
	mips-mti-elf
	msp430-elf
	"
pkgname="$_pkgbase-stage1"
pkgver="3.1.0"
pkgrel=0
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-stage1:$targetnorm $subpackages"
	makedepends="binutils-$target gcc-$target-stage1 $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-}"
	target="${target%-stage1}"
	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="efc4c3ab7153387780d141386bca5d3e20c9d25ae3e6b87cf94c8df9d301ce5926dacdff9bd33aeb9781559d933c3d0ae77f4e5b46120d90792f75dbfde702c7  newlib-3.1.0.tar.gz"