blob: 8d15ae37f88879f0dbb2e9c6fe3f16afc823e244 [file] [log] [blame]
# Maintainer: Fabien Chouteau <chouteau@adacore.com>
# Based on mingw-w64-arm-none-eabi-newlib
_realname=newlib
_target=riscv64-unknown-elf
_gccver=10.1.0
pkgbase=mingw-w64-${_target}-${_realname}
pkgname=("${MINGW_PACKAGE_PREFIX}-${_target}-${_realname}")
pkgver=3.3.0
pkgrel=2
pkgdesc='GNU Tools for RISC-V Embedded Processors - Newlib (mingw-w64)'
arch=('any')
mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64')
url="https://sourceware.org/newlib/"
license=('Various')
groups=("${MINGW_PACKAGE_PREFIX}-${_target}-toolchain")
depends=("${MINGW_PACKAGE_PREFIX}-${_target}-binutils")
options=('staticlibs' '!strip' '!emptydirs')
source=(
"https://sourceware.org/pub/newlib/newlib-${pkgver}.tar.gz"
"https://ftp.gnu.org/gnu/gcc/gcc-${_gccver}/gcc-${_gccver}.tar.xz"
)
sha256sums=(
'58dd9e3eaedf519360d92d84205c3deef0b3fc286685d1c562e245914ef72c66'
'b6898a23844b656f1b68691c5c012036c2e694ac4b53a8918d4712ad876e7ea2'
)
noextract=("newlib-${pkgver}.tar.gz")
prepare() {
cd ${srcdir}
# bsdtar doesn't like the symlinks
tar -xf newlib-${pkgver}.tar.gz
cd ${srcdir}/gcc-${_gccver}
mkdir gcc-build-${MINGW_CHOST}
mkdir gcc-install-${MINGW_CHOST}
cd ${srcdir}/newlib-${pkgver}
mkdir {newlib,nano}-build-${MINGW_CHOST}
}
# Newlib is required to build GCC, but GCC is also required to compile newlib
# So we must build a minimal GCC first, to avoid the circular dependency
_build_gcc() {
cd ${srcdir}/gcc-${_gccver}/gcc-build-${MINGW_CHOST}
cp -a ${MINGW_PREFIX}/${_target} ${srcdir}/gcc-${_gccver}/gcc-install-${MINGW_CHOST}
local _GCC_LDFLAGS="${LDFLAGS} -Wl,--disable-dynamicbase"
if [ "${CARCH}" = 'x86_64' ]; then
_GCC_LDFLAGS+=",--image-base=0x400000"
fi
../configure \
--build=${MINGW_CHOST} \
--host=${MINGW_CHOST} \
--prefix=/ \
--target=${_target} \
--enable-languages=c \
--disable-nls \
--disable-libssp \
--disable-shared \
--disable-threads \
--disable-libgomp \
--disable-werror \
--disable-lto \
--disable-libffi \
--disable-decimal-float \
--disable-libmudflap \
--disable-libquadmath \
--disable-libstdcxx-pch \
--disable-libsanitizer \
--disable-tls \
--enable-multilib \
--enable-interwork \
--without-headers \
--with-libelf \
--with-newlib \
--enable-multilib \
--with-host-libstdcxx="-static-libgcc -Wl,-Bstatic,-lstdc++,-Bdynamic -lm" \
--with-sysroot=${MINGW_PREFIX} \
--with-build-sysroot=${srcdir}/gcc-${_gccver}/gcc-install-${MINGW_CHOST} \
--with-build-time-tools=${MINGW_PREFIX}/${_target}/bin \
LDFLAGS="${_GCC_LDFLAGS}"
make all-gcc
make DESTDIR=${srcdir}/gcc-${_gccver}/gcc-install-${MINGW_CHOST} install-gcc
}
build() {
_build_gcc
cd ${srcdir}/newlib-${pkgver}/newlib-build-${MINGW_CHOST}
../configure \
PATH="${srcdir}/gcc-${_gccver}/gcc-install-${MINGW_CHOST}/bin:${PATH}" \
--build=${MINGW_CHOST} \
--host=${MINGW_CHOST} \
--target=${_target} \
--prefix=${MINGW_PREFIX} \
--enable-newlib-io-long-double \
--enable-newlib-io-long-long \
--enable-newlib-io-c99-formats \
--enable-newlib-register-fini \
--disable-nls
make PATH="${srcdir}/gcc-${_gccver}/gcc-install-${MINGW_CHOST}/bin:${PATH}"
cd ${srcdir}/newlib-${pkgver}/nano-build-${MINGW_CHOST}
../configure \
PATH="${srcdir}/gcc-${_gccver}/gcc-install-${MINGW_CHOST}/bin:${PATH}" \
--build=${MINGW_CHOST} \
--host=${MINGW_CHOST} \
--target=${_target} \
--prefix=${MINGW_PREFIX} \
--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 \
--disable-newlib-supplied-syscalls \
--disable-nls
make PATH="${srcdir}/gcc-${_gccver}/gcc-install-${MINGW_CHOST}/bin:${PATH}"
}
package() {
cd ${pkgdir}
cd ${srcdir}/newlib-${pkgver}/nano-build-${MINGW_CHOST}
make DESTDIR=${pkgdir} PATH="${srcdir}/gcc-${_gccver}/gcc-install-${MINGW_CHOST}/bin:${PATH}" install
find ${pkgdir} -regex ".*/lib\(c\|g\|rdimon\|gloss\)\.a" -exec rename .a _nano.a '{}' \;
install -Dm644 -t ${pkgdir}${MINGW_PREFIX}/${_target}/include/newlib-nano ${pkgdir}${MINGW_PREFIX}/${_target}/include/newlib.h
cd ${srcdir}/newlib-${pkgver}/newlib-build-${MINGW_CHOST}
make DESTDIR=${pkgdir} PATH="${srcdir}/gcc-${_gccver}/gcc-install-${MINGW_CHOST}/bin:${PATH}" install
find ${pkgdir}${MINGW_PREFIX}/${_target}/lib \( -name "*.a" -or -name "*.o" \) -exec ${_target}-objcopy -R .comment -R .note -R .debug_info -R .debug_aranges -R .debug_pubnames -R .debug_pubtypes -R .debug_abbrev -R .debug_line -R .debug_str -R .debug_ranges -R .debug_loc '{}' \;
}