Compare commits
2 Commits
051971f54e
...
96056d2f56
| Author | SHA1 | Date | |
|---|---|---|---|
| 96056d2f56 | |||
| 9168b85705 |
2
.gitignore
vendored
2
.gitignore
vendored
@@ -1 +1,3 @@
|
|||||||
|
build
|
||||||
|
install
|
||||||
*.tar.xz
|
*.tar.xz
|
||||||
@@ -4,6 +4,15 @@ set -e
|
|||||||
TARGET=arm-uclinuxfdpiceabi
|
TARGET=arm-uclinuxfdpiceabi
|
||||||
TOP="$(pwd)"
|
TOP="$(pwd)"
|
||||||
|
|
||||||
|
BUILD_DIR="${TOP}/build"
|
||||||
|
BUILD_SRC_DIR="${BUILD_DIR}/src"
|
||||||
|
|
||||||
|
INSTALL_DIR="${TOP}/install"
|
||||||
|
INSTALL_BIN_DIR="${INSTALL_DIR}/bin"
|
||||||
|
KERNEL_SYSROOT_DIR="${INSTALL_DIR}/sysroot"
|
||||||
|
KERNEL_SYSROOT_USR_DIR="${KERNEL_SYSROOT_DIR}/usr"
|
||||||
|
KERNEL_SYSROOT_USR_INCLUDES_DIR="${KERNEL_SYSROOT_USR_DIR}/include"
|
||||||
|
|
||||||
CFLAGS_TOOLSET='-O2'
|
CFLAGS_TOOLSET='-O2'
|
||||||
CFLAGS_TARGET='-Os -mthumb'
|
CFLAGS_TARGET='-Os -mthumb'
|
||||||
CFLAGS=$CFLAGS_TOOLSET CFLAGS_FOR_TARGET=$CFLAGS_TARGET
|
CFLAGS=$CFLAGS_TOOLSET CFLAGS_FOR_TARGET=$CFLAGS_TARGET
|
||||||
@@ -13,49 +22,59 @@ SUBARCH=armv7-m
|
|||||||
SUBMODE=thumb
|
SUBMODE=thumb
|
||||||
|
|
||||||
echo "== Создание директорий =="
|
echo "== Создание директорий =="
|
||||||
mkdir -p install
|
mkdir -p ${KERNEL_SYSROOT_DIR}
|
||||||
mkdir -p install/sysroot
|
mkdir -p ${BUILD_SRC_DIR}
|
||||||
|
|
||||||
echo "== Распаковка архивов =="
|
#######################################
|
||||||
|
# РАСПАКОВКА В build/src
|
||||||
|
#######################################
|
||||||
|
echo "== Распаковка архивов в build/src =="
|
||||||
for f in *.tar.xz; do
|
for f in *.tar.xz; do
|
||||||
echo " * $f"
|
echo " * $f"
|
||||||
tar -xf "$f"
|
tar -xf "$f" -C ${BUILD_SRC_DIR}
|
||||||
done
|
done
|
||||||
|
|
||||||
###############
|
# Пути на исходники
|
||||||
# BINUTILS
|
SRC_BINUTILS="${BUILD_SRC_DIR}/binutils-2.34"
|
||||||
###############
|
SRC_GCC="${BUILD_SRC_DIR}/gcc-13.4.0"
|
||||||
echo "== Сборка binutils =="
|
SRC_LINUX="${BUILD_SRC_DIR}/linux-4.9.224"
|
||||||
mkdir -p build-binutils
|
SRC_UCLIBC="${BUILD_SRC_DIR}/uClibc-ng-1.0.34"
|
||||||
cd build-binutils
|
|
||||||
|
|
||||||
../binutils-2.34/configure \
|
#######################################
|
||||||
|
# BINUTILS
|
||||||
|
#######################################
|
||||||
|
echo "== Сборка binutils =="
|
||||||
|
|
||||||
|
mkdir -p build/binutils
|
||||||
|
cd build/binutils
|
||||||
|
|
||||||
|
$SRC_BINUTILS/configure \
|
||||||
--target=${TARGET} \
|
--target=${TARGET} \
|
||||||
--prefix=${TOP}/install \
|
--prefix=${INSTALL_DIR} \
|
||||||
--with-sysroot=${TOP}/install/sysroot \
|
--with-sysroot=${KERNEL_SYSROOT_DIR} \
|
||||||
--disable-nls \
|
--disable-nls \
|
||||||
--without-bugurl \
|
--without-bugurl \
|
||||||
--disable-werror
|
--disable-werror
|
||||||
|
|
||||||
make -j12
|
make -j12
|
||||||
make install
|
make install
|
||||||
cd ..
|
cd ../..
|
||||||
|
|
||||||
###############
|
#######################################
|
||||||
# GCC STAGE 1
|
# GCC STAGE 1
|
||||||
###############
|
#######################################
|
||||||
echo "== Сборка GCC Stage 1 =="
|
echo "== Сборка GCC Stage 1 =="
|
||||||
|
|
||||||
cd gcc-13.4.0
|
cd $SRC_GCC
|
||||||
./contrib/download_prerequisites
|
./contrib/download_prerequisites
|
||||||
cd ..
|
cd ../../..
|
||||||
|
|
||||||
mkdir -p build-gcc1
|
mkdir -p build/gcc1
|
||||||
cd build-gcc1
|
cd build/gcc1
|
||||||
|
|
||||||
../gcc-13.4.0/configure \
|
$SRC_GCC/configure \
|
||||||
--target=${TARGET} \
|
--target=${TARGET} \
|
||||||
--prefix=${TOP}/install \
|
--prefix=${INSTALL_DIR} \
|
||||||
--with-arch=${SUBARCH} \
|
--with-arch=${SUBARCH} \
|
||||||
--with-mode=${SUBMODE} \
|
--with-mode=${SUBMODE} \
|
||||||
--without-headers \
|
--without-headers \
|
||||||
@@ -75,45 +94,53 @@ cd build-gcc1
|
|||||||
|
|
||||||
make -j12
|
make -j12
|
||||||
make install
|
make install
|
||||||
cd ..
|
cd ../..
|
||||||
|
|
||||||
###############
|
#######################################
|
||||||
# LINUX HEADERS
|
# LINUX HEADERS
|
||||||
###############
|
#######################################
|
||||||
echo "== Установка заголовков linux =="
|
echo "== Установка заголовков linux =="
|
||||||
|
|
||||||
cd linux-4.9.224
|
mkdir -p build/kernelheader
|
||||||
PATH=${TOP}/install/bin:${PATH} \
|
cd $SRC_LINUX
|
||||||
|
|
||||||
|
PATH=${INSTALL_BIN_DIR}:${PATH} \
|
||||||
make headers_install ARCH=arm \
|
make headers_install ARCH=arm \
|
||||||
INSTALL_HDR_PATH=${TOP}/install/sysroot/usr \
|
INSTALL_HDR_PATH=${KERNEL_SYSROOT_USR_DIR} \
|
||||||
CROSS_COMPILE=${TARGET}- \
|
CROSS_COMPILE=${TARGET}- \
|
||||||
O=${TOP}/build/kernelheader
|
O=${TOP}/build/kernelheader
|
||||||
cd ..
|
|
||||||
|
|
||||||
###############
|
cd ../../..
|
||||||
|
|
||||||
|
#######################################
|
||||||
# UCLIBC
|
# UCLIBC
|
||||||
###############
|
#######################################
|
||||||
echo "== Сборка uClibc =="
|
echo "== Сборка uClibc =="
|
||||||
|
|
||||||
cd uClibc-ng-1.0.34
|
cd $SRC_UCLIBC
|
||||||
# TODO: конфигурировать или вставить .config при необходимости
|
|
||||||
|
# Удаляем старое значение
|
||||||
|
sed -i '/^KERNEL_HEADERS=/d' .config
|
||||||
|
|
||||||
|
# Добавляем новое
|
||||||
|
echo "KERNEL_HEADERS=\"${KERNEL_SYSROOT_USR_INCLUDES_DIR}\"" >> .config
|
||||||
|
|
||||||
PATH=${TOP}/install/bin:${PATH} make all -j12
|
PATH=${TOP}/install/bin:${PATH} make all -j12
|
||||||
PATH=${TOP}/install/bin:${PATH} make PREFIX=${TOP}/install/sysroot install
|
PATH=${TOP}/install/bin:${PATH} make PREFIX=${KERNEL_SYSROOT_DIR} install
|
||||||
cd ..
|
cd ../../..
|
||||||
|
|
||||||
###############
|
#######################################
|
||||||
# GCC FINAL
|
# GCC FINAL
|
||||||
###############
|
#######################################
|
||||||
echo "== Сборка финального GCC =="
|
echo "== Сборка финального GCC =="
|
||||||
|
|
||||||
mkdir -p build-gcc2
|
mkdir -p build/gcc2
|
||||||
cd build-gcc2
|
cd build/gcc2
|
||||||
|
|
||||||
../gcc-13.4.0/configure \
|
$SRC_GCC/configure \
|
||||||
--target=${TARGET} \
|
--target=${TARGET} \
|
||||||
--prefix=${TOP}/install \
|
--prefix=${INSTALL_DIR} \
|
||||||
--with-sysroot=${TOP}/install/sysroot \
|
--with-sysroot=${KERNEL_SYSROOT_DIR} \
|
||||||
--with-arch=${SUBARCH} \
|
--with-arch=${SUBARCH} \
|
||||||
--with-mode=${SUBMODE} \
|
--with-mode=${SUBMODE} \
|
||||||
--enable-languages=c,c++ \
|
--enable-languages=c,c++ \
|
||||||
@@ -127,11 +154,11 @@ cd build-gcc2
|
|||||||
|
|
||||||
make -j12
|
make -j12
|
||||||
make install
|
make install
|
||||||
cd ..
|
cd ../..
|
||||||
|
|
||||||
###############
|
#######################################
|
||||||
# STRIP
|
# STRIP
|
||||||
###############
|
#######################################
|
||||||
echo "== Strip toolchain =="
|
echo "== Strip toolchain =="
|
||||||
|
|
||||||
WDIR=$(mktemp -d)
|
WDIR=$(mktemp -d)
|
||||||
@@ -141,38 +168,26 @@ 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 -type f -exec strip -p {} \; > /dev/null 2>&1
|
||||||
find $WDIR -exec install/bin/${TARGET}-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 .
|
tar -C "$WDIR" --atime-preserve -cJf "toolset-jlv-${SUBARCH}.tar.xz" .
|
||||||
|
|
||||||
echo "== Готово =="
|
echo "== Готово =="
|
||||||
|
|
||||||
###############
|
#######################################
|
||||||
# CLEAR
|
# УПРАВЛЕНИЕ АРХИВАМИ
|
||||||
###############
|
#######################################
|
||||||
echo ""
|
echo ""
|
||||||
echo "=== Управление архивами ==="
|
echo "=== Управление архивами ==="
|
||||||
echo "Собрана тулчейн: toolset-jlv-${SUBARCH}.tgz"
|
echo "Собран тулчейн: toolset-jlv-${SUBARCH}.tar.xz"
|
||||||
|
|
||||||
read -p "Удалить исходные архивы (*.tar.xz)? (y/N): " -n 1 -r
|
read -p "Удалить исходные архивы (*.tar.xz)? (y/N): " -n 1 -r
|
||||||
echo
|
echo
|
||||||
if [[ $REPLY =~ ^[Yy]$ ]]; then
|
[[ $REPLY =~ ^[Yy]$ ]] && rm -f *.tar.xz && echo "Архивы удалены."
|
||||||
echo "Удаление архивов..."
|
|
||||||
rm -f *.tar.xz
|
|
||||||
echo "Архивы удалены."
|
|
||||||
else
|
|
||||||
echo "Архивы сохранены."
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo ""
|
echo ""
|
||||||
echo "=== Очистка временных файлов ==="
|
echo "=== Очистка временных файлов ==="
|
||||||
read -p "Удалить директории сборки (build-*, исходники)? (y/N): " -n 1 -r
|
read -p "Удалить директории сборки (build/src и build/*)? (y/N): " -n 1 -r
|
||||||
echo
|
echo
|
||||||
if [[ $REPLY =~ ^[Yy]$ ]]; then
|
[[ $REPLY =~ ^[Yy]$ ]] && rm -rf build && echo "Временные файлы удалены."
|
||||||
echo "Удаление временных директорий..."
|
|
||||||
rm -rf build-* binutils-* gcc-* linux-* uClibc-*
|
|
||||||
echo "Временные файлы удалены."
|
|
||||||
else
|
|
||||||
echo "Временные файлы сохранены."
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo ""
|
echo ""
|
||||||
echo "== Сборка завершена полностью =="
|
echo "== Сборка завершена полностью =="
|
||||||
Reference in New Issue
Block a user