Files
build-toolchain/build-libraries.sh
Egor Tsyganchuk 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

176 lines
5.7 KiB
Bash
Executable File
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/bin/bash
set -e
source "$(dirname "$0")/versions.sh"
# Подготавливаем переменные
TOP="$(pwd)"
INSTALL_DIR="${TOP}/build/install"
INSTALL_BIN_DIR="${INSTALL_DIR}/bin"
SYSROOT_DIR="${INSTALL_DIR}/sysroot"
# Запускаем предварительно для того чтобы подтянуть переменные
. ./env.sh --global --path "${INSTALL_DIR}"
# Сбрасываем CFLAGS/CXXFLAGS — все флаги уже встроены в CC/CXX
export CFLAGS=""
export CXXFLAGS=""
# Подготавливаем пути к разделам
LIB_DIR="${TOP}/src/libs"
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
# ==================================================================
# Распаковка библиотек
# ==================================================================
echo "== Распаковка библиотек =="
# Создаем каталог для сборки библиотек
mkdir -p "${LIB_BUILD_DIR}"
echo "== Поиск и распаковка архивов в ${LIB_DIR} =="
# Проходимся по *.tar.xz и *.tar.gz
shopt -s nullglob
for archive in "${LIB_DIR}"/*.tar.xz "${LIB_DIR}"/*.tar.gz; do
# Если файлов нет ничего не делаем
[ -e "$archive" ] || continue
fname="$(basename "$archive")"
pkg="${fname%.tar.*}" # имя папки после распаковки
echo "--------------------------------------"
echo "Найден архив: $fname"
echo "Распаковка в: ${LIB_BUILD_DIR}/${pkg}"
echo "--------------------------------------"
mkdir -p "${LIB_BUILD_DIR}/${pkg}"
tar -xf "$archive" -C "${LIB_BUILD_DIR}/${pkg}" --strip-components=1
done
shopt -u nullglob
echo "== Распаковка завершена =="
# ==================================================================
# Установка окружения
# ==================================================================
cd "${TOP}"
. ./env.sh --global --path "${INSTALL_DIR}"
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)
make install
# ==================================================================
cd "${TOP}"
. ./env.sh --global --path "${INSTALL_DIR}"
export CFLAGS=""
export CXXFLAGS=""
cd "${LIB_BUILD_DIR}/openssl-${OPENSSL_VER}"
./Configure linux-armv4 \
--prefix=${SYSROOT_USR_DIR} \
--libdir=${SYSROOT_USR_DIR}/lib \
--openssldir=${SYSROOT_ETC_DIR}/ssl \
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-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
make -j$(nproc) build_libs
make install_sw
# ==================================================================
cd "${LIB_BUILD_DIR}/LibVNCServer-${LIBVNCSERVER_VER}"
rm -rf build
mkdir -p build && cd build
cmake -S .. -B . \
-DBUILD_SHARED_LIBS=OFF \
-DWITH_THREADS=OFF \
-DWITH_TESTS=OFF \
-DWITH_EXAMPLES=OFF \
-DWITH_ZLIB=OFF \
-DWITH_LZO=OFF \
-DWITH_JPEG=OFF \
-DWITH_PNG=OFF \
-DWITH_SDL=OFF \
-DWITH_GTK=OFF \
-DWITH_LIBSSH2=OFF \
-DWITH_GNUTLS=OFF \
-DWITH_GCRYPT=OFF \
-DWITH_FFMPEG=OFF \
-DWITH_TIGHTVNC_FILETRANSFER=OFF \
-WITH_IPv6=ON \
-DWITH_WEBSOCKETS=OFF \
-DWITH_SASL=OFF \
-DWITH_OPENSSL=OFF \
-DOPENSSL_ROOT_DIR="${SYSROOT_USR_DIR}" \
-DOPENSSL_LIBRARIES="${SYSROOT_USR_DIR}/lib/libssl.a;${SYSROOT_USR_DIR}/lib/libcrypto.a" \
-DOPENSSL_INCLUDE_DIR="${SYSROOT_USR_DIR}/include" \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_FIND_ROOT_PATH="${SYSROOT_DIR}" \
-DCMAKE_SYSROOT="${SYSROOT_DIR}" \
-DCMAKE_STAGING_PREFIX="${SYSROOT_USR_DIR}"
make -j$(nproc)
make install
# ==================================================================
cd "${LIB_BUILD_DIR}/freetype-${FREETYPE_VER}"
[ -d "build" ] && rm -rf build
mkdir -p build && cd build
cmake -S .. -B . \
-DCMAKE_BUILD_TYPE=Release \
-DFT_DISABLE_HARFBUZZ=ON \
-DBUILD_SHARED_LIBS=OFF \
-DFT_DISABLE_BROTLI=ON \
-DFT_DISABLE_BZIP2=ON \
-DFT_DISABLE_PNG=ON \
-DFT_DISABLE_DOCS=ON \
-DFT_DISABLE_TESTS=ON \
-DCMAKE_INSTALL_PREFIX="${SYSROOT_USR_DIR}" \
-DCMAKE_FIND_ROOT_PATH="${SYSROOT_DIR}" \
-DCMAKE_SYSROOT="${SYSROOT_DIR}" \
-DCMAKE_STAGING_PREFIX="${SYSROOT_USR_DIR}" \
-DZLIB_LIBRARY="${SYSROOT_USR_DIR}/lib/libz.a" \
-DZLIB_INCLUDE_DIR="${SYSROOT_USR_DIR}/include" \
-DZLIB_USE_STATIC=ON
make -j$(nproc)
make install
# ==================================================================
cd "${TOP}"