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:
@@ -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 =="
|
||||||
@@ -180,3 +175,9 @@ 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
64
env.sh
@@ -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
|
|
||||||
Reference in New Issue
Block a user