commit e2baec4fa855e83b8679b196f1c429605632484a Author: Egor Tsyganchuk Date: Tue Dec 2 13:27:22 2025 +0300 Initializing repository diff --git a/build-toolchain.sh b/build-toolchain.sh new file mode 100644 index 0000000..1f1d0dc --- /dev/null +++ b/build-toolchain.sh @@ -0,0 +1,154 @@ +#!/bin/bash +set -e + +TARGET=arm-uclinuxfdpiceabi +TOP="$(pwd)" + +CFLAGS_TOOLSET='-O2' +CFLAGS_TARGET='-Os -mthumb' +CFLAGS=$CFLAGS_TOOLSET CFLAGS_FOR_TARGET=$CFLAGS_TARGET +CXXFLAGS_FOR_TARGET=$CFLAGS_TARGET + +SUBARCH=armv7-m +SUBMODE=thumb + +echo "== Создание директорий ==" +mkdir -p install +mkdir -p install/sysroot + +echo "== Распаковка архивов ==" +for f in *.tar.xz; do + echo " * $f" + tar -xf "$f" +done + + +############### +# BINUTILS +############### +echo "== Сборка binutils ==" +mkdir -p build-binutils +cd build-binutils + +../binutils-2.34/configure \ + --target=${TARGET} \ + --prefix=${TOP}/install \ + --with-sysroot=${TOP}/install/sysroot \ + --disable-nls \ + --without-bugurl \ + --disable-werror + +make -j12 +make install +cd .. + +############### +# GCC STAGE1 +############### +echo "== Сборка GCC Stage 1 ==" + +cd gcc-10.1.0 +./contrib/download_prerequisites +cd .. + +mkdir -p build-gcc1 +cd build-gcc1 + +../gcc-10.1.0/configure \ + --target=${TARGET} \ + --prefix=${TOP}/install \ + --with-arch=${SUBARCH} \ + --with-mode=${SUBMODE} \ + --without-headers \ + --with-newlib \ + --disable-shared \ + --disable-threads \ + --disable-libssp \ + --disable-libgomp \ + --disable-libmudflap \ + --enable-languages=c \ + --disable-libquadmath \ + --disable-multilib \ + --without-cloog \ + --without-ppl \ + --disable-nls \ + --disable-libatomic + +make -j12 +make install +cd .. + +############### +# LINUX HEADERS +############### +echo "== Установка заголовков linux ==" + +cd linux-4.9.224 +PATH=${TOP}/install/bin:${PATH} \ +make headers_install ARCH=arm \ + INSTALL_HDR_PATH=${TOP}/install/sysroot/usr \ + CROSS_COMPILE=${TARGET}- \ + O=${TOP}/build/kernelheader +cd .. + +############### +# UCLIBC +############### +echo "== Сборка uClibc ==" + +cd uClibc-ng-1.0.34 +# TODO: конфигурировать или вставить .config при необходимости + +PATH=${TOP}/install/bin:${PATH} make all -j12 +PATH=${TOP}/install/bin:${PATH} make PREFIX=${TOP}/install/sysroot install +cd .. + +############### +# GCC FINAL +############### +echo "== Сборка финального GCC ==" + +mkdir -p build-gcc2 +cd build-gcc2 + +../gcc-10.1.0/configure \ + --target=${TARGET} \ + --prefix=${TOP}/install \ + --with-sysroot=${TOP}/install/sysroot \ + --with-arch=${SUBARCH} \ + --with-mode=${SUBMODE} \ + --enable-languages=c,c++ \ + --enable-threads=posix \ + --enable-fdpic \ + --disable-libstdcxx-pch \ + --disable-multilib \ + --disable-bootstrap \ + --disable-libgomp \ + --disable-libatomic + +make -j12 +make install +cd .. + +############### +# STRIP +############### +echo "== Strip toolchain ==" + +WDIR=$(mktemp -d) +trap "rm -Rf $WDIR" EXIT + +tar -C install --atime-preserve -cf - . | tar --atime-preserve -xf - -C $WDIR +find $WDIR -type f -exec strip -p {} \; > /dev/null 2>&1 +find $WDIR -exec install/bin/${TARGET}-strip -p {} \; > /dev/null 2>&1 + +tar -C $WDIR --atime-preserve -czf toolset-jlv-${SUBARCH}.tgz . + +############### +# CLEAR +############### +echo "== Очистка *.xz ==" +rm -f *.xz + +echo "== Готово ==" +