156 lines
5.3 KiB
Bash
156 lines
5.3 KiB
Bash
# Maintainer: Fabien Chouteau <chouteau@adacore.com>
|
|
# Based on mingw-w64-arm-none-eabi-newlib
|
|
|
|
_bootstrap=0
|
|
|
|
_realname=newlib
|
|
_target=riscv64-unknown-elf
|
|
_gccver=13.2.0
|
|
|
|
pkgbase=mingw-w64-${_target}-${_realname}
|
|
pkgname=("${MINGW_PACKAGE_PREFIX}-${_target}-${_realname}")
|
|
pkgver=4.3.0.20230120
|
|
pkgrel=2
|
|
pkgdesc='GNU Tools for RISC-V Embedded Processors - Newlib (mingw-w64)'
|
|
arch=('any')
|
|
mingw_arch=('mingw64' 'ucrt64' 'clang64')
|
|
url="https://sourceware.org/newlib/"
|
|
license=('Various')
|
|
groups=("${MINGW_PACKAGE_PREFIX}-${_target}-toolchain")
|
|
depends=("${MINGW_PACKAGE_PREFIX}-${_target}-binutils")
|
|
makedepends=("${MINGW_PACKAGE_PREFIX}-autotools"
|
|
"${MINGW_PACKAGE_PREFIX}-cc"
|
|
"${MINGW_PACKAGE_PREFIX}-gmp"
|
|
"${MINGW_PACKAGE_PREFIX}-mpc"
|
|
"${MINGW_PACKAGE_PREFIX}-mpfr"
|
|
"${MINGW_PACKAGE_PREFIX}-isl"
|
|
$( (( _bootstrap )) || echo "${MINGW_PACKAGE_PREFIX}-${_target}-gcc"))
|
|
options=('!strip' '!emptydirs')
|
|
source=(
|
|
"https://sourceware.org/pub/newlib/newlib-${pkgver}.tar.gz"
|
|
$( (( !_bootstrap )) || echo "https://ftp.gnu.org/gnu/gcc/gcc-${_gccver}/gcc-${_gccver}.tar.xz")
|
|
)
|
|
sha256sums=(
|
|
'83a62a99af59e38eb9b0c58ed092ee24d700fff43a22c03e433955113ef35150'
|
|
$( (( !_bootstrap )) || echo 'e275e76442a6067341a27f04c5c6b83d8613144004c0413528863dc6b5c743da')
|
|
)
|
|
noextract=("newlib-${pkgver}.tar.gz")
|
|
|
|
prepare() {
|
|
cd ${srcdir}
|
|
# bsdtar doesn't like the symlinks
|
|
tar -xf newlib-${pkgver}.tar.gz
|
|
}
|
|
|
|
# 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() {
|
|
cp -a ${MINGW_PREFIX}/${_target} ${srcdir}/gcc-install-${MSYSTEM}
|
|
|
|
if [[ ${MINGW_PACKAGE_PREFIX} == *-clang-* ]]; then
|
|
CFLAGS+=" -Wno-int-conversion -Wno-array-bounds -Wno-mismatched-tags"
|
|
CXXFLAGS+=" -Wno-int-conversion -Wno-array-bounds -Wno-mismatched-tags"
|
|
fi
|
|
|
|
local _GCC_LDFLAGS="${LDFLAGS} -Wl,--disable-dynamicbase"
|
|
if [ "${CARCH}" = 'x86_64' ]; then
|
|
_GCC_LDFLAGS+=",--image-base=0x400000"
|
|
fi
|
|
../gcc-${_gccver}/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 \
|
|
--with-host-libstdcxx="-static-libgcc -Wl,-Bstatic,-lstdc++,-Bdynamic -lm" \
|
|
--with-sysroot=${MINGW_PREFIX} \
|
|
--with-build-sysroot=${srcdir}/gcc-install-${MSYSTEM} \
|
|
--with-build-time-tools=${MINGW_PREFIX}/${_target}/bin \
|
|
LDFLAGS="${_GCC_LDFLAGS}"
|
|
|
|
make all-gcc
|
|
make DESTDIR=${srcdir}/gcc-install-${MSYSTEM} install-gcc
|
|
}
|
|
|
|
build() {
|
|
if (( _bootstrap )); then
|
|
mkdir -p gcc-install-${MSYSTEM}
|
|
mkdir -p gcc-build-${MSYSTEM} && cd gcc-build-${MSYSTEM}
|
|
_build_gcc
|
|
export PATH="${srcdir}/gcc-install-${MSYSTEM}/bin:${PATH}"
|
|
fi
|
|
|
|
mkdir -p ${srcdir}/build-${MSYSTEM} && cd ${srcdir}/build-${MSYSTEM}
|
|
|
|
../newlib-${pkgver}/configure \
|
|
--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
|
|
|
|
mkdir -p ${srcdir}/nano-build-${MSYSTEM} && cd ${srcdir}/nano-build-${MSYSTEM}
|
|
|
|
../newlib-${pkgver}/configure \
|
|
--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
|
|
}
|
|
|
|
package() {
|
|
cd ${pkgdir}
|
|
|
|
cd ${srcdir}/nano-build-${MSYSTEM}
|
|
|
|
make DESTDIR=${pkgdir} 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}/build-${MSYSTEM}
|
|
|
|
make DESTDIR=${pkgdir} 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 '{}' \;
|
|
|
|
# Avoid conflict with other targets newlib
|
|
mv ${pkgdir}${MINGW_PREFIX}/share/info/porting.info ${pkgdir}${MINGW_PREFIX}/share/info/${_target}-porting.info
|
|
}
|