Files
build-toolchain/build-libraries.sh

116 lines
3.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
# Подготавливаем переменные
TOP="$(pwd)"
INSTALL_DIR="${TOP}/install"
INSTALL_BIN_DIR="${INSTALL_DIR}/bin"
# Запускаем предварительно для того чтобы подтянуть переменные
. ./env.sh "${INSTALL_BIN_DIR}"
# Подготавливаем пути к разделам
LIB_DIR="${TOP}/lib"
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"
# ==================================================================
# Проверка файла окружения
# ==================================================================
# Проверяем существует ли файл
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 "${INSTALL_BIN_DIR}" "rc"
cd "${LIB_BUILD_DIR}/zlib-1.2.13"
./configure --prefix=${SYSROOT_USR_DIR} --libdir=${SYSROOT_USR_DIR}/lib
make -j$(nproc)
make install
# ==================================================================
cd ${TOP}
./env.sh "${INSTALL_BIN_DIR}"
cd "${LIB_BUILD_DIR}/openssl-3.0.13"
./Configure linux-armv4 \
--prefix=${SYSROOT_USR_DIR} \
--libdir=${SYSROOT_USR_DIR}/lib \
--openssldir=${SYSROOT_ETC_DIR}/ssl \
shared no-async no-comp no-idea no-tests no-threads no-asm no-secure-memory no-seed no-weak-ssl-ciphers \
-DNO_FORK -DHAVE_FORK=0
make -j$(nproc) build_libs
make install_dev
# ==================================================================
cd "${LIB_BUILD_DIR}/LibVNCServer-0.9.14"
rm -rf build
mkdir -p build && cd build
cmake -S .. -B . \
-DWITH_THREADS=OFF \
-DWITH_TESTS=OFF \
-DWITH_EXAMPLES=OFF \
-DBUILD_SHARED_LIBS=ON \
-DOPENSSL_ROOT_DIR="${SYSROOT_USR_DIR}" \
-DOPENSSL_LIBRARIES="${SYSROOT_USR_DIR}/lib/libssl.so;${SYSROOT_USR_DIR}/lib/libcrypto.so" \
-DOPENSSL_INCLUDE_DIR="${SYSROOT_USR_DIR}/include" \
-DCMAKE_FIND_ROOT_PATH="${SYSROOT_DIR}" \
-DCMAKE_SYSROOT="${SYSROOT_DIR}" \
-DCMAKE_STAGING_PREFIX="${SYSROOT_USR_DIR}"
make -j${nproc}
make install