Initializing repository
This commit is contained in:
154
build-toolchain.sh
Normal file
154
build-toolchain.sh
Normal file
@@ -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 "== Готово =="
|
||||
|
||||
Reference in New Issue
Block a user