Added build-libraries.sh
This commit is contained in:
116
build-libraries.sh
Executable file
116
build-libraries.sh
Executable file
@@ -0,0 +1,116 @@
|
||||
#!/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
|
||||
Reference in New Issue
Block a user