From c581c66f74252dc7762dcb8a161a8199476a3d64 Mon Sep 17 00:00:00 2001 From: Egor Tsyganchuk Date: Mon, 16 Feb 2026 14:46:24 +0300 Subject: [PATCH] Refactor build scripts to improve directory structure and enhance file handling --- build-libraries.sh | 18 +++++++--- build-toolchain.sh | 4 +-- download_prerequisites.sh | 70 ++++++++++++++++++++++++--------------- env.sh | 5 +-- 4 files changed, 62 insertions(+), 35 deletions(-) diff --git a/build-libraries.sh b/build-libraries.sh index d28df0d..66eb0cc 100755 --- a/build-libraries.sh +++ b/build-libraries.sh @@ -4,20 +4,24 @@ set -e # Подготавливаем переменные TOP="$(pwd)" -INSTALL_DIR="${TOP}/install" +INSTALL_DIR="${TOP}/build/install" INSTALL_BIN_DIR="${INSTALL_DIR}/bin" # Запускаем предварительно для того чтобы подтянуть переменные . ./env.sh "${INSTALL_BIN_DIR}" +# Сбрасываем CFLAGS/CXXFLAGS — все флаги уже встроены в CC/CXX +export CFLAGS="" +export CXXFLAGS="" + # Подготавливаем пути к разделам -LIB_DIR="${TOP}/lib" +LIB_DIR="${TOP}/src/libs" SYSROOT_DIR="${INSTALL_DIR}${SYSROOT}" SYSROOT_ETC_DIR="${SYSROOT_DIR}/etc" SYSROOT_USR_DIR="${SYSROOT_DIR}/usr" BUILD_SRC_DIR="${TOP}/build" -LIB_BUILD_DIR="${BUILD_SRC_DIR}/lib" +LIB_BUILD_DIR="${BUILD_SRC_DIR}/src/libs" # ================================================================== # Проверка файла окружения @@ -72,7 +76,9 @@ echo "== Распаковка завершена ==" # ================================================================== cd ${TOP} -./env.sh "${INSTALL_BIN_DIR}" "rc" +. ./env.sh "${INSTALL_BIN_DIR}" "rc" +export CFLAGS="" +export CXXFLAGS="" cd "${LIB_BUILD_DIR}/zlib-1.2.13" ./configure --prefix=${SYSROOT_USR_DIR} --libdir=${SYSROOT_USR_DIR}/lib --static @@ -82,7 +88,9 @@ make install # ================================================================== cd ${TOP} -./env.sh "${INSTALL_BIN_DIR}" +. ./env.sh "${INSTALL_BIN_DIR}" +export CFLAGS="" +export CXXFLAGS="" cd "${LIB_BUILD_DIR}/openssl-3.0.13" ./Configure linux-armv4 \ diff --git a/build-toolchain.sh b/build-toolchain.sh index 184b1e9..6245b44 100755 --- a/build-toolchain.sh +++ b/build-toolchain.sh @@ -27,9 +27,9 @@ SUBMODE="thumb" TOP="$(pwd)" CONFIGS_DIR="${TOP}/config" -SRC_DIR="${TOP}/src" +SRC_DIR="${TOP}/src/toolchain" BUILD_DIR="${TOP}/build" -BUILD_SRC_DIR="${BUILD_DIR}/src" +BUILD_SRC_DIR="${BUILD_DIR}/src/toolchain" INSTALL_DIR="${BUILD_DIR}/install" INSTALL_BIN_DIR="${INSTALL_DIR}/bin" diff --git a/download_prerequisites.sh b/download_prerequisites.sh index cdb9766..dfc184a 100755 --- a/download_prerequisites.sh +++ b/download_prerequisites.sh @@ -1,45 +1,63 @@ #!/bin/bash -# Создаем папку src, если она не существует -mkdir -p src +# Создаем папки для исходников +mkdir -p src/toolchain src/libs -# Переходим в папку src -cd src || exit 1 +# Функция загрузки файлов в указанную папку +download_files() { + local target_dir="$1" + shift + local urls=("$@") -# Массив с URL файлов для загрузки -files=( + cd "$target_dir" || exit 1 + + for url in "${urls[@]}"; do + filename=$(basename "$url") + if [ -f "$filename" ]; then + echo "⊘ Пропускаю (уже загружен): $filename" + continue + fi + echo "Загружаю: $filename" + wget -q --show-progress "$url" + + if [ $? -eq 0 ]; then + echo "✓ Успешно: $filename" + else + echo "✗ Ошибка при загрузке: $filename" + fi + done + + cd - > /dev/null +} + +# Исходники тулчейна +toolchain_files=( "https://ftp.gnu.org/gnu/binutils/binutils-2.42.tar.xz" "https://ftp.gnu.org/gnu/gcc/gcc-13.4.0/gcc-13.4.0.tar.xz" "https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-4.9.224.tar.xz" "https://downloads.uclibc-ng.org/releases/1.0.34/uClibc-ng-1.0.34.tar.xz" +) + +# Исходники библиотек +libs_files=( "https://download.savannah.gnu.org/releases/freetype/freetype-2.13.2.tar.gz" "https://github.com/LibVNC/libvncserver/archive/LibVNCServer-0.9.14.tar.gz" "https://www.openssl.org/source/openssl-3.0.13.tar.gz" "https://zlib.net/fossils/zlib-1.2.13.tar.gz" ) -echo "Начинаю загрузку файлов в папку 'src'..." +echo "=== Загрузка исходников тулчейна в 'src/toolchain' ===" +download_files src/toolchain "${toolchain_files[@]}" -# Загружаем каждый файл -for url in "${files[@]}"; do - filename=$(basename "$url") - if [ -f "$filename" ]; then - echo "⊘ Пропускаю (уже загружен): $filename" - continue - fi - echo "Загружаю: $filename" - wget -q --show-progress "$url" - - if [ $? -eq 0 ]; then - echo "✓ Успешно: $filename" - else - echo "✗ Ошибка при загрузке: $filename" - fi -done +echo "" +echo "=== Загрузка исходников библиотек в 'src/libs' ===" +download_files src/libs "${libs_files[@]}" echo "" echo "Загрузка завершена!" -echo "Файлы сохранены в папку: $(pwd)" echo "" -echo "Список загруженных файлов:" -ls -la *.tar.* \ No newline at end of file +echo "Тулчейн (src/toolchain):" +ls -la src/toolchain/*.tar.* 2>/dev/null +echo "" +echo "Библиотеки (src/libs):" +ls -la src/libs/*.tar.* 2>/dev/null \ No newline at end of file diff --git a/env.sh b/env.sh index 862d63b..090e094 100755 --- a/env.sh +++ b/env.sh @@ -24,7 +24,8 @@ CC="${TOOLCHAIN_PATH}/${TOOLCHAIN}-gcc ${CFLAGS_TOOLSET} ${CFLAGS_TARGET}" CXX="${TOOLCHAIN_PATH}/${TOOLCHAIN}-g++ ${CFLAGS_TOOLSET} ${CXXFLAGS_TARGET}" CPP="${TOOLCHAIN_PATH}/${TOOLCHAIN}-cpp" LD="${TOOLCHAIN_PATH}/${TOOLCHAIN}-ld" -AR="${TOOLCHAIN_PATH}/${TOOLCHAIN}-ar ${ARFLAGS_TARGET}" +AR="${TOOLCHAIN_PATH}/${TOOLCHAIN}-ar" +ARFLAGS="${ARFLAGS_TARGET}" AS="${TOOLCHAIN_PATH}/${TOOLCHAIN}-as" NM="${TOOLCHAIN_PATH}/${TOOLCHAIN}-nm" RANLIB="${TOOLCHAIN_PATH}/${TOOLCHAIN}-ranlib" @@ -40,7 +41,7 @@ export SYSROOT export PREFIX export TARGET export TOOLCHAIN -export CC CXX CPP LD AR AS NM RANLIB STRIP OBJCOPY OBJDUMP +export CC CXX CPP LD AR ARFLAGS AS NM RANLIB STRIP OBJCOPY OBJDUMP export CFLAGS CXXFLAGS LDFLAGS export CFLAGS_FOR_TARGET CXXFLAGS_FOR_TARGET LDFLAGS_FOR_TARGET export PATH