- 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.
207 lines
7.0 KiB
Bash
Executable File
207 lines
7.0 KiB
Bash
Executable File
#!/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"
|
||
TARGET="arm-uclinuxfdpiceabi"
|
||
TOOLCHAIN="${TARGET}"
|
||
TOOLCHAIN_PATH="${INSTALL_DIR}/bin"
|
||
CFLAGS_TOOLSET='-O2'
|
||
CFLAGS_TARGET='-Os -mthumb'
|
||
_ORIG_PATH="$PATH"
|
||
|
||
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_ETC_DIR="${SYSROOT_DIR}/etc"
|
||
SYSROOT_USR_DIR="${SYSROOT_DIR}/usr"
|
||
BUILD_SRC_DIR="${TOP}/build"
|
||
LIB_BUILD_DIR="${BUILD_SRC_DIR}/src/libs"
|
||
|
||
# ==================================================================
|
||
# Распаковка библиотек
|
||
# ==================================================================
|
||
|
||
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 "${LIB_BUILD_DIR}/zlib-${ZLIB_VER}"
|
||
./configure --prefix=${SYSROOT_USR_DIR} --libdir=${SYSROOT_USR_DIR}/lib --static
|
||
make -j$(nproc)
|
||
make install
|
||
|
||
# ==================================================================
|
||
|
||
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 \
|
||
--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}"
|
||
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 |