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.
This commit is contained in:
2026-03-31 17:20:11 +03:00
parent 1f31c8e0a9
commit fa5c892cce
2 changed files with 44 additions and 91 deletions

View File

@@ -9,13 +9,38 @@ TOP="$(pwd)"
INSTALL_DIR="${TOP}/build/install" INSTALL_DIR="${TOP}/build/install"
INSTALL_BIN_DIR="${INSTALL_DIR}/bin" INSTALL_BIN_DIR="${INSTALL_DIR}/bin"
SYSROOT_DIR="${INSTALL_DIR}/sysroot" 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}"
. ./env.sh --global --path "${INSTALL_DIR}" export PREFIX="${SYSROOT_DIR}/usr"
export TARGET TOOLCHAIN TOOLCHAIN_PATH
# Сбрасываем CFLAGS/CXXFLAGS — все флаги уже встроены в CC/CXX 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 CFLAGS=""
export CXXFLAGS="" 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}"
# Подготавливаем пути к разделам # Подготавливаем пути к разделам
@@ -25,22 +50,6 @@ SYSROOT_USR_DIR="${SYSROOT_DIR}/usr"
BUILD_SRC_DIR="${TOP}/build" BUILD_SRC_DIR="${TOP}/build"
LIB_BUILD_DIR="${BUILD_SRC_DIR}/src/libs" 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 "== Распаковка завершена ==" echo "== Распаковка завершена =="
# ==================================================================
# Установка окружения
# ==================================================================
cd "${TOP}"
. ./env.sh --global --path "${INSTALL_DIR}"
export CFLAGS=""
export CXXFLAGS=""
cd "${LIB_BUILD_DIR}/zlib-${ZLIB_VER}" cd "${LIB_BUILD_DIR}/zlib-${ZLIB_VER}"
./configure --prefix=${SYSROOT_USR_DIR} --libdir=${SYSROOT_USR_DIR}/lib --static ./configure --prefix=${SYSROOT_USR_DIR} --libdir=${SYSROOT_USR_DIR}/lib --static
make -j$(nproc) make -j$(nproc)
@@ -89,11 +89,6 @@ make install
# ================================================================== # ==================================================================
cd "${TOP}"
. ./env.sh --global --path "${INSTALL_DIR}"
export CFLAGS=""
export CXXFLAGS=""
OPENSSL_S_SERVER_FILE="${LIB_BUILD_DIR}/openssl-${OPENSSL_VER}/apps/s_server.c" 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 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 ==" echo "== Патч OpenSSL: добавляю <sys/stat.h> в apps/s_server.c =="
@@ -179,4 +174,10 @@ make install
# ================================================================== # ==================================================================
cd "${TOP}" 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

64
env.sh
View File

@@ -1,58 +1,10 @@
TOP="$(pwd)"
TOOLCHAIN_PATH=""
GLOBAL_MODE=0
CUSTOM_PATH=""
while [ $# -gt 0 ]; do TOP=`pwd`
case "$1" in TARGET=arm-uclinuxfdpiceabi
--global) CFLAGS_TOOLSET='-O2'
GLOBAL_MODE=1 CFLAGS_TARGET='-Os -mthumb'
shift CFLAGS=$CFLAGS_TOOLSET CFLAGS_FOR_TARGET=$CFLAGS_TARGET CXXFLAGS_FOR_TARGET=$CFLAGS_TARGET
;; SUBARCH=armv7-m
--path) SUBMODE=thumb
if [ -z "$2" ]; then PATH=${TOP}/${TARGET}/bin:${PATH}
echo "Ошибка: для --path нужно указать путь"
return 1 2>/dev/null || exit 1
fi
CUSTOM_PATH="$2"
shift 2
;;
*)
shift
;;
esac
done
if [ -n "${CUSTOM_PATH}" ]; then
TOOLCHAIN_PATH="${CUSTOM_PATH}"
elif [ -d "${TOP}/arm-uclinuxfdpiceabi" ]; then
TOOLCHAIN_PATH="${TOP}/arm-uclinuxfdpiceabi"
elif [ -d "${TOP}/build/install" ]; then
TOOLCHAIN_PATH="${TOP}/build/install"
fi
if [ -n "${TOOLCHAIN_PATH}" ] && [ -x "${TOOLCHAIN_PATH}/bin/arm-uclinuxfdpiceabi-gcc" ]; then
echo "Найден toolchain: ${TOOLCHAIN_PATH}/bin/arm-uclinuxfdpiceabi-gcc"
CFLAGS_TOOLSET='-O2'
CFLAGS_TARGET='-Os -mthumb'
SUBARCH=armv7-m
SUBMODE=thumb
if [ "$GLOBAL_MODE" -eq 1 ]; then
export CFLAGS="${CFLAGS_TOOLSET}"
export CFLAGS_FOR_TARGET="${CFLAGS_TARGET}"
export CXXFLAGS_FOR_TARGET="${CFLAGS_TARGET}"
export SUBARCH
export SUBMODE
export PATH="${TOOLCHAIN_PATH}/bin:${PATH}"
else
CFLAGS="${CFLAGS_TOOLSET}"
CFLAGS_FOR_TARGET="${CFLAGS_TARGET}"
CXXFLAGS_FOR_TARGET="${CFLAGS_TARGET}"
PATH="${TOOLCHAIN_PATH}/bin:${PATH}"
fi
else
echo "Ошибка: не найден ${TOOLCHAIN_PATH}/bin/arm-uclinuxfdpiceabi-gcc"
return 1 2>/dev/null || exit 1
fi