Compare commits

...

15 Commits

Author SHA1 Message Date
8267e2e4da Refactor toolchain packaging process by introducing package-toolchain.sh
- Replaced the packaging logic in build-toolchain.sh with a call to the new package-toolchain.sh script for better organization and maintainability.
- Added package-toolchain.sh to handle the stripping and archiving of the toolchain, including necessary checks for the installation directory and environment script.
- Updated README.md to document the addition of package-toolchain.sh for clarity on the build process.
2026-04-06 15:09:07 +03:00
082098c9ec Add libnl support and update prerequisites in build scripts
- Enhanced build-libraries.sh to configure and build libnl version 3.2.0, including checks for required tools like flex and bison.
- Updated download_prerequisites.sh to include the download link for libnl.
- Modified README.md to document the addition of libnl and its dependencies.
- Set LIBNL_VER to 3.2.0 in versions.sh for consistency across scripts.
2026-04-06 14:56:50 +03:00
f7a908f096 Update build-toolchain.sh and README.md for toolchain environment script changes
- Modified build-toolchain.sh to copy env.sh from the scripts directory instead of the top-level directory, ensuring proper organization.
- Updated README.md to reflect the new version of uClibc-ng and clarify the structure of the output archive, including the location of env.sh within the archive.
2026-03-31 18:09:01 +03:00
fa5c892cce Enhance build-libraries.sh and env.sh for improved toolchain configuration
- Updated build-libraries.sh to set up environment variables for the arm-uclinuxfdpiceabi toolchain, including compiler flags and paths.
- Removed the dependency on env.sh for initial environment setup, simplifying the script logic.
- Streamlined the export and unset of environment variables to ensure a clean build environment.
- Adjusted the handling of CFLAGS and related variables for better clarity and consistency in the build process.
2026-03-31 17:20:11 +03:00
1f31c8e0a9 Add OpenSSL patch to include <sys/stat.h> in s_server.c
- Introduced a check in build-libraries.sh to add the <sys/stat.h> include directive to apps/s_server.c if it is missing.
- This patch ensures compatibility with systems that require this header for proper functionality of the OpenSSL s_server application.
2026-03-31 14:07:30 +03:00
08e372eaf2 Refactor build-libraries.sh and env.sh for improved environment setup
- Updated build-libraries.sh to use --global and --path options for environment registration, enhancing clarity and consistency.
- Modified env.sh to support custom paths and improved error handling for the --path argument, streamlining toolchain path resolution.
- Removed redundant SYSROOT_DIR assignments to simplify the script logic.
2026-03-31 13:54:49 +03:00
fa0e0243e1 Refactor env.sh to enhance toolchain path handling and usage instructions
- Simplified toolchain path resolution logic to support custom paths and global mode.
- Improved error handling and user feedback for toolchain detection.
- Streamlined environment variable exports and clarified usage instructions for better user experience.
2026-03-31 13:54:39 +03:00
a79d453c78 Refactor build-libraries.sh to streamline OpenSSL configuration
- Removed several disabled options from the OpenSSL build configuration to simplify the setup process.
- Enhanced clarity by reducing the complexity of the configuration flags used during the build.
2026-03-31 10:25:03 +03:00
a1e8038cd9 Refactor env.sh to streamline environment variable exports
- Removed redundant export statements for environment variables in env.sh.
- Clarified default architecture and mode settings for improved readability.
- Enhanced output messages for better user feedback during environment activation.
2026-03-31 09:31:51 +03:00
fdeb97ee3b Update README.md to include bzip2 installation instructions for Ubuntu/WSL
- Added bzip2 to the list of required tools for building.
- Provided a command snippet for installing the necessary packages, enhancing clarity for users setting up the environment.
2026-03-31 08:43:55 +03:00
d16bb178b0 Update README.md to clarify env.sh usage and toolchain modes
- Added detailed instructions for two modes of operation in env.sh: normal mode and full toolchain mode.
- Updated the deactivation command to reflect changes in the toolchain registration process.
- Revised default CFLAGS for host/toolset builds to enhance clarity and consistency.
2026-03-31 08:24:02 +03:00
b4ad220386 Refactor build-toolchain.sh to improve toolchain archiving process
- Created a dedicated directory for the target toolchain within the temporary working directory.
- Copied the environment script to the working directory for inclusion in the archive.
- Updated the tar command to include the target directory and environment script in the final archive, enhancing organization and clarity.
2026-03-30 20:01:11 +03:00
0ef34c8a10 Enhance build-libraries.sh and env.sh for toolchain integration
- Updated build-libraries.sh to consistently use the --toolchain flag for environment registration and unregistration.
- Modified env.sh to clarify usage instructions and enforce the --toolchain option for environment setup, improving user experience and consistency in toolchain management.
2026-03-30 19:20:40 +03:00
bb72c9b049 Update SYSROOT_DIR assignment in build-libraries.sh and remove --disable-tls from build-toolchain.sh configuration
- Changed SYSROOT_DIR to directly reference SYSROOT for clarity.
- Removed --disable-tls option from GCC build configuration to streamline the build process.
2026-03-30 18:30:16 +03:00
f6111b0bb8 Enhance env.sh to improve toolchain registration logic
- Updated usage instructions to clarify default behavior and options.
- Improved path resolution for toolchain installation, checking for both ./bin and ./arm-uclinuxfdpiceabi directories.
- Added automatic registration when no arguments are provided, streamlining the user experience.
2026-03-30 10:01:14 +03:00
8 changed files with 150 additions and 181 deletions

View File

@@ -11,7 +11,7 @@
| Binutils | 2.42 | Ассемблер, линковщик, утилиты |
| GCC | 13.4.0 | Компилятор C/C++ |
| Linux (headers) | 4.9.224 | Заголовочные файлы ядра |
| uClibc-ng | 1.0.55 | Стандартная библиотека C |
| uClibc-ng | 1.0.34 | Стандартная библиотека C |
### Дополнительные библиотеки
@@ -21,6 +21,7 @@
| OpenSSL | 3.0.13 | Криптография |
| LibVNCServer | 0.9.14 | VNC-сервер |
| FreeType | 2.13.2 | Рендеринг шрифтов |
| libnl | 3.2.0 | Netlink для Linux |
Все библиотеки собираются статически.
@@ -40,9 +41,19 @@
- gcc (или другой C-компилятор для хоста)
- cmake
- wget
- bzip2
- bison (или yacc)
- flex
- tar
- стандартные утилиты (grep, sed и т.д.)
Для Ubuntu/WSL можно установить минимальный набор так:
```bash
sudo apt update
sudo apt install -y make gcc g++ cmake wget bzip2 bison flex tar sed grep xz-utils
```
## Использование
### 1. Загрузка исходников
@@ -70,30 +81,32 @@
7. Сборка дополнительных библиотек
8. Упаковка результата в архив
На выходе создаётся архив `toolset-jlv-armv7-m-gcc13.4.0-uclibc1.0.55.tar.xz`.
На выходе создаётся архив `toolset-jlv-armv7-m-gcc13.4.0-uclibc1.0.34.tar.xz`. Внутри архива:
### 3. Настройка окружения
- каталог `arm-uclinuxfdpiceabi/` — установленный тулчейн (как после `prefix`);
- файл `env.sh` в том же каталоге, что и `arm-uclinuxfdpiceabi/` (без отдельной папки `scripts`).
Активация переменных окружения для работы с тулчейном:
В репозитории шаблон для упаковки лежит в `scripts/env.sh`, при сборке архива он копируется в корень как `env.sh`.
### 3. Настройка окружения после распаковки архива
Распакуйте архив в удобное место и перейдите в каталог, где лежат `arm-uclinuxfdpiceabi/` и `env.sh`:
```bash
source ./env.sh --register /путь/к/install/bin
tar -xf toolset-jlv-armv7-m-gcc13.4.0-uclibc1.0.34.tar.xz
cdаталог_распаковки>
source ./env.sh
```
Скрипт устанавливает переменные `CC`, `CXX`, `LD`, `AR`, `RANLIB`, `STRIP`, `CFLAGS`, `LDFLAGS`, `SYSROOT` и добавляет путь к тулчейну в `PATH`.
Деактивация:
```bash
source ./env.sh --unregister
```
Скрипт задаёт `TOP` как текущий каталог, добавляет `${TOP}/arm-uclinuxfdpiceabi/bin` в `PATH`, выставляет `CFLAGS` / `CFLAGS_FOR_TARGET` / `CXXFLAGS_FOR_TARGET`, `SUBARCH` и `SUBMODE`.
## Флаги компиляции
| Переменная | Значение | Назначение |
|------------|----------|------------|
| `CFLAGS` | `-Os -mthumb` | Оптимизация по размеру, Thumb-инструкции |
| `LDFLAGS` | `-Wl,--fdpic` | Линковка с поддержкой FDPIC |
| `CFLAGS` | `-O2` | Базовые флаги оптимизации |
| `CFLAGS_FOR_TARGET` | `-Os -mthumb` | Оптимизация по размеру, Thumb для target |
| `LDFLAGS` | `-Wl,--fdpic` | Линковка с поддержкой FDPIC (при полной настройке toolchain) |
## Структура каталогов
@@ -101,16 +114,17 @@ source ./env.sh --unregister
build-toolchain/
├── build-toolchain.sh # Основной скрипт сборки
├── build-libraries.sh # Сборка дополнительных библиотек
├── package-toolchain.sh # Упаковка готового тулчейна
├── download_prerequisites.sh # Загрузка исходников
├── env.sh # Настройка окружения
├── scripts/
│ └── env.sh # Настройка окружения (копируется в архив)
├── config/ # Конфигурации uClibc
│ ├── config-uClibc-ng-1.0.34
│ └── config-uClibc-ng-1.0.55
│ └──
├── src/ # Исходный код (после загрузки)
│ ├── toolchain/ # Архивы компонентов тулчейна
│ └── libs/ # Архивы библиотек
── build/ # Каталог сборки (создаётся автоматически)
└── install/ # Каталог установки (создаётся автоматически)
── build/ # Каталог сборки (создаётся автоматически)
```
## Лицензия

View File

@@ -8,39 +8,48 @@ source "$(dirname "$0")/versions.sh"
TOP="$(pwd)"
INSTALL_DIR="${TOP}/build/install"
INSTALL_BIN_DIR="${INSTALL_DIR}/bin"
SYSROOT_DIR="${INSTALL_DIR}/sysroot"
TARGET="arm-uclinuxfdpiceabi"
TOOLCHAIN="${TARGET}"
TOOLCHAIN_PATH="${INSTALL_DIR}/bin"
CFLAGS_TOOLSET='-O2'
CFLAGS_TARGET='-Os -mthumb'
_ORIG_PATH="$PATH"
# Запускаем предварительно для того чтобы подтянуть переменные
. ./env.sh --register "${INSTALL_DIR}"
# Сбрасываем CFLAGS/CXXFLAGS — все флаги уже встроены в CC/CXX
export SYSROOT="${SYSROOT_DIR}"
export PREFIX="${SYSROOT_DIR}/usr"
export TARGET TOOLCHAIN TOOLCHAIN_PATH
export CC="${TOOLCHAIN_PATH}/${TOOLCHAIN}-gcc ${CFLAGS_TOOLSET} ${CFLAGS_TARGET}"
export CXX="${TOOLCHAIN_PATH}/${TOOLCHAIN}-g++ ${CFLAGS_TOOLSET} ${CFLAGS_TARGET}"
export CPP="${TOOLCHAIN_PATH}/${TOOLCHAIN}-cpp"
export LD="${TOOLCHAIN_PATH}/${TOOLCHAIN}-ld"
export AR="${TOOLCHAIN_PATH}/${TOOLCHAIN}-ar"
# Без флагов (rc) zlib/Makefile вызывает «ar libz.a …» — ar воспринимает имя архива как опции.
export ARFLAGS='rc'
export AS="${TOOLCHAIN_PATH}/${TOOLCHAIN}-as"
export NM="${TOOLCHAIN_PATH}/${TOOLCHAIN}-nm"
export RANLIB="${TOOLCHAIN_PATH}/${TOOLCHAIN}-ranlib"
export STRIP="${TOOLCHAIN_PATH}/${TOOLCHAIN}-strip"
export OBJCOPY="${TOOLCHAIN_PATH}/${TOOLCHAIN}-objcopy"
export OBJDUMP="${TOOLCHAIN_PATH}/${TOOLCHAIN}-objdump"
export CFLAGS=""
export CXXFLAGS=""
export LDFLAGS=""
export CFLAGS_FOR_TARGET="${CFLAGS_TARGET}"
export CXXFLAGS_FOR_TARGET="${CFLAGS_TARGET}"
export LDFLAGS_FOR_TARGET='-Wl,--fdpic'
export SUBARCH=armv7-m
export SUBMODE=thumb
export PATH="${TOOLCHAIN_PATH}:${_ORIG_PATH}"
# Подготавливаем пути к разделам
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}/src/libs"
# ==================================================================
# Проверка файла окружения
# ==================================================================
# Проверяем существует ли файл
if [ ! -f ./env.sh ]; then
echo "Ошибка: файл env.sh не найден"
exit 1
fi
# Проверяем имеет ли файл права на исполнение
if [ ! -x ./env.sh ]; then
echo "env.sh не имеет права на выполнение, добавляю..."
chmod +x ./env.sh || { echo "Не удалось установить права"; exit 1; }
fi
# ==================================================================
# Распаковка библиотек
# ==================================================================
@@ -73,15 +82,6 @@ shopt -u nullglob
echo "== Распаковка завершена =="
# ==================================================================
# Установка окружения
# ==================================================================
cd ${TOP}
. ./env.sh --register "${INSTALL_DIR}" "rc"
export CFLAGS=""
export CXXFLAGS=""
cd "${LIB_BUILD_DIR}/zlib-${ZLIB_VER}"
./configure --prefix=${SYSROOT_USR_DIR} --libdir=${SYSROOT_USR_DIR}/lib --static
make -j$(nproc)
@@ -89,10 +89,35 @@ make install
# ==================================================================
cd ${TOP}
. ./env.sh --register "${INSTALL_DIR}"
export CFLAGS=""
export CXXFLAGS=""
cd "${LIB_BUILD_DIR}/libnl-${LIBNL_VER}"
if ! command -v flex >/dev/null 2>&1; then
echo "Ошибка: для сборки libnl нужен flex (пакет flex)."
exit 1
fi
if ! command -v bison >/dev/null 2>&1; then
echo "Ошибка: для сборки libnl нужен bison (byacc не подходит)."
exit 1
fi
export YACC="bison -y"
export LEX="flex"
./configure \
--host="${TARGET}" \
--prefix="${SYSROOT_USR_DIR}" \
--libdir="${SYSROOT_USR_DIR}/lib" \
--disable-shared \
--enable-static \
--disable-cli
make -j$(nproc)
make install
unset YACC LEX
# ==================================================================
OPENSSL_S_SERVER_FILE="${LIB_BUILD_DIR}/openssl-${OPENSSL_VER}/apps/s_server.c"
if [ -f "${OPENSSL_S_SERVER_FILE}" ] && ! grep -q '^#include <sys/stat.h>$' "${OPENSSL_S_SERVER_FILE}"; then
echo "== Патч OpenSSL: добавляю <sys/stat.h> в apps/s_server.c =="
sed -i '/^#ifndef OPENSSL_NO_SOCK/i #include <sys/stat.h>' "${OPENSSL_S_SERVER_FILE}"
fi
cd "${LIB_BUILD_DIR}/openssl-${OPENSSL_VER}"
./Configure linux-armv4 \
@@ -102,7 +127,7 @@ cd "${LIB_BUILD_DIR}/openssl-${OPENSSL_VER}"
enable-legacy no-mdc2 no-rc5 no-ec2m no-sm2 no-sm4 no-ssl3 \
no-shared no-dso no-async no-comp no-idea no-tests no-threads no-asm no-secure-memory no-seed no-weak-ssl-ciphers \
no-afalgeng no-aria no-async no-bf no-blake2 no-camellia no-capieng no-cast no-chacha no-cms no-cmp no-ct \
no-dgram no-dsa no-dtls no-ecdh no-ecdsa no-engine no-err no-filenames no-gost no-md4 \
no-dgram no-dsa no-dtls no-ecdh no-ecdsa no-engine no-err no-filenames no-gost \
no-ocsp no-pinshared no-poly1305 no-posix-io no-rc2 no-rc4 no-rdrand no-rfc3779 no-rmd160 no-scrypt no-sctp no-siphash \
no-sm3 no-srp no-srtp no-ssl-trace no-ssl3 no-ssl3-method no-ts no-whirlpool enable-ktls \
-DNO_FORK -DHAVE_FORK=0
@@ -173,5 +198,10 @@ make install
# ==================================================================
cd ${TOP}
. ./env.sh --unregister
cd "${TOP}"
export PATH="${_ORIG_PATH}"
unset SYSROOT PREFIX TARGET TOOLCHAIN TOOLCHAIN_PATH
unset CC CXX CPP LD AR ARFLAGS AS NM RANLIB STRIP OBJCOPY OBJDUMP
unset CFLAGS CXXFLAGS LDFLAGS
unset CFLAGS_FOR_TARGET CXXFLAGS_FOR_TARGET LDFLAGS_FOR_TARGET
unset SUBARCH SUBMODE CFLAGS_TOOLSET CFLAGS_TARGET _ORIG_PATH

View File

@@ -125,8 +125,7 @@ mkdir -p "${BUILD_DIR}/gcc1" && cd "${BUILD_DIR}/gcc1"
--without-cloog \
--without-ppl \
--disable-nls \
--disable-libatomic \
--disable-tls
--disable-libatomic
make -j$(nproc) all-gcc
make install-gcc
@@ -197,8 +196,7 @@ mkdir -p "${BUILD_DIR}/gcc2" && cd "${BUILD_DIR}/gcc2"
--disable-multilib \
--disable-bootstrap \
--disable-libgomp \
--disable-libatomic \
--disable-tls
--disable-libatomic
make -j$(nproc)
make install
@@ -213,17 +211,8 @@ cd "${TOP}"
# ==================================================================
# Strip и упаковка
# ==================================================================
echo "== Strip toolchain и упаковка =="
cd "${TOP}"
WDIR=$(mktemp -d)
trap 'rm -rf "$WDIR"' EXIT
cp -a "${INSTALL_DIR}"/* "$WDIR"/
find "$WDIR" -type f -executable -exec strip -p {} \; 2>/dev/null || true
tar -C "$WDIR" --owner=0 --group=0 -cJf "toolset-jlv-${SUBARCH}-gcc${GCC_VER}-uclibc${UCLIBC_VER}.tar.xz" .
echo "Готово: toolset-jlv-${SUBARCH}-gcc${GCC_VER}-uclibc${UCLIBC_VER}.tar.xz"
bash ./package-toolchain.sh "${TARGET}" "${SUBARCH}" "${INSTALL_DIR}"
# ==================================================================
# Очистка

View File

@@ -42,6 +42,7 @@ toolchain_files=(
# Исходники библиотек
libs_files=(
"https://www.infradead.org/~tgr/libnl/files/libnl-${LIBNL_VER}.tar.gz"
"https://download.savannah.gnu.org/releases/freetype/freetype-${FREETYPE_VER}.tar.gz"
"https://github.com/LibVNC/libvncserver/archive/LibVNCServer-${LIBVNCSERVER_VER}.tar.gz"
"https://www.openssl.org/source/openssl-${OPENSSL_VER}.tar.gz"

112
env.sh
View File

@@ -1,112 +0,0 @@
#!/bin/bash
# env.sh — окружение для сборки под arm-uclinuxfdpiceabi (FDPIC, thumb)
#
# Использование:
# . ./env.sh --register /path/to/install [arflags]
# . ./env.sh --unregister
_env_usage() {
echo "Использование:"
echo " . ./env.sh --register /path/to/install [arflags]"
echo " . ./env.sh --unregister"
}
_env_register() {
local install_root="${1:-}"
local arflags_target="${2:-}"
# Если путь не указан — пробуем найти локальную папку тулчейна
if [ -z "$install_root" ]; then
local default_path="$(pwd)/arm-uclinuxfdpiceabi"
if [ -d "$default_path" ]; then
install_root="$default_path"
echo "Путь не указан, используется: ${default_path}"
else
echo "Ошибка: не указан путь к тулчейну и папка arm-uclinuxfdpiceabi не найдена"
_env_usage
return 1
fi
fi
TOP="$(pwd)"
TARGET=arm-uclinuxfdpiceabi
TOOLCHAIN=arm-uclinuxfdpiceabi
TOOLCHAIN_PATH="${install_root}/bin"
SYSROOT="${TOOLCHAIN_ROOT}/sysroot"
PREFIX="${SYSROOT}/usr"
# Флаги тулчейна
CFLAGS_TOOLSET='-O2'
CFLAGS_TARGET='-Os -mthumb'
CXXFLAGS_TARGET=$CFLAGS_TARGET
LDFLAGS_TARGET='-Wl,--fdpic'
# Указание полного пути к компиляторам
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="${arflags_target}"
AS="${TOOLCHAIN_PATH}/${TOOLCHAIN}-as"
NM="${TOOLCHAIN_PATH}/${TOOLCHAIN}-nm"
RANLIB="${TOOLCHAIN_PATH}/${TOOLCHAIN}-ranlib"
STRIP="${TOOLCHAIN_PATH}/${TOOLCHAIN}-strip"
OBJCOPY="${TOOLCHAIN_PATH}/${TOOLCHAIN}-objcopy"
OBJDUMP="${TOOLCHAIN_PATH}/${TOOLCHAIN}-objdump"
# Сохраняем оригинальный PATH (только при первой регистрации)
if [ -z "${_ENV_ORIG_PATH:-}" ]; then
_ENV_ORIG_PATH="$PATH"
fi
# PATH — toolchain/bin должен быть в начале
PATH="${TOOLCHAIN_PATH}:${_ENV_ORIG_PATH}"
# Экспорт
export SYSROOT PREFIX TARGET TOOLCHAIN
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
export SUBARCH=armv7-m
export SUBMODE=thumb
echo "Окружение для ${TARGET} (Thumb/FDPIC) активировано"
echo " TOOLCHAIN_PATH = $TOOLCHAIN_PATH"
echo " CC = $CC"
echo " CXX = $CXX"
}
_env_unregister() {
# Восстанавливаем PATH
if [ -n "${_ENV_ORIG_PATH:-}" ]; then
PATH="$_ENV_ORIG_PATH"
export PATH
unset _ENV_ORIG_PATH
fi
# Снимаем все экспортированные переменные
unset SYSROOT PREFIX TARGET TOOLCHAIN
unset CC CXX CPP LD AR ARFLAGS AS NM RANLIB STRIP OBJCOPY OBJDUMP
unset CFLAGS CXXFLAGS LDFLAGS
unset CFLAGS_FOR_TARGET CXXFLAGS_FOR_TARGET LDFLAGS_FOR_TARGET
unset SUBARCH SUBMODE
unset TOOLCHAIN_PATH CFLAGS_TOOLSET CFLAGS_TARGET CXXFLAGS_TARGET LDFLAGS_TARGET
echo "Окружение деактивировано, PATH восстановлен"
}
case "${1:-}" in
--register)
shift
_env_register "$@"
;;
--unregister)
_env_unregister
;;
*)
_env_usage
;;
esac

36
package-toolchain.sh Normal file
View File

@@ -0,0 +1,36 @@
#!/bin/bash
set -e
source "$(dirname "$0")/versions.sh"
TOP="$(pwd)"
TARGET="${1:-arm-uclinuxfdpiceabi}"
SUBARCH="${2:-armv7-m}"
INSTALL_DIR="${3:-${TOP}/build/install}"
if [ ! -d "${INSTALL_DIR}" ]; then
echo "Ошибка: директория установки не найдена: ${INSTALL_DIR}"
exit 1
fi
if [ ! -f "${TOP}/scripts/env.sh" ]; then
echo "Ошибка: файл окружения не найден: ${TOP}/scripts/env.sh"
exit 1
fi
echo "== Strip toolchain и упаковка =="
WDIR="$(mktemp -d)"
trap 'rm -rf "$WDIR"' EXIT
ARCHIVE_TOOLCHAIN_DIR="${WDIR}/${TARGET}"
mkdir -p "${ARCHIVE_TOOLCHAIN_DIR}"
cp -a "${INSTALL_DIR}"/* "${ARCHIVE_TOOLCHAIN_DIR}/"
cp -a "${TOP}/scripts/env.sh" "${WDIR}/env.sh"
find "${ARCHIVE_TOOLCHAIN_DIR}" -type f -executable -exec strip -p {} \; 2>/dev/null || true
ARCHIVE_NAME="toolset-jlv-${SUBARCH}-gcc${GCC_VER}-uclibc${UCLIBC_VER}.tar.xz"
tar -C "${WDIR}" --owner=0 --group=0 -cJf "${ARCHIVE_NAME}" "${TARGET}" "env.sh"
echo "Готово: ${ARCHIVE_NAME}"

10
scripts/env.sh Executable file
View File

@@ -0,0 +1,10 @@
TOP=`pwd`
TARGET=arm-uclinuxfdpiceabi
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
PATH=${TOP}/${TARGET}/bin:${PATH}

View File

@@ -13,3 +13,4 @@ ZLIB_VER="1.2.13"
OPENSSL_VER="3.0.13"
LIBVNCSERVER_VER="0.9.14"
FREETYPE_VER="2.13.2"
LIBNL_VER="3.2.0"