Compare commits
2 Commits
a79d453c78
...
08e372eaf2
| Author | SHA1 | Date | |
|---|---|---|---|
| 08e372eaf2 | |||
| fa0e0243e1 |
@@ -8,9 +8,10 @@ source "$(dirname "$0")/versions.sh"
|
|||||||
TOP="$(pwd)"
|
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"
|
||||||
|
|
||||||
# Запускаем предварительно для того чтобы подтянуть переменные
|
# Запускаем предварительно для того чтобы подтянуть переменные
|
||||||
. ./env.sh --toolchain --register "${INSTALL_DIR}"
|
. ./env.sh --global --path "${INSTALL_DIR}"
|
||||||
|
|
||||||
# Сбрасываем CFLAGS/CXXFLAGS — все флаги уже встроены в CC/CXX
|
# Сбрасываем CFLAGS/CXXFLAGS — все флаги уже встроены в CC/CXX
|
||||||
export CFLAGS=""
|
export CFLAGS=""
|
||||||
@@ -19,7 +20,6 @@ export CXXFLAGS=""
|
|||||||
# Подготавливаем пути к разделам
|
# Подготавливаем пути к разделам
|
||||||
|
|
||||||
LIB_DIR="${TOP}/src/libs"
|
LIB_DIR="${TOP}/src/libs"
|
||||||
SYSROOT_DIR="${SYSROOT}"
|
|
||||||
SYSROOT_ETC_DIR="${SYSROOT_DIR}/etc"
|
SYSROOT_ETC_DIR="${SYSROOT_DIR}/etc"
|
||||||
SYSROOT_USR_DIR="${SYSROOT_DIR}/usr"
|
SYSROOT_USR_DIR="${SYSROOT_DIR}/usr"
|
||||||
BUILD_SRC_DIR="${TOP}/build"
|
BUILD_SRC_DIR="${TOP}/build"
|
||||||
@@ -77,8 +77,8 @@ echo "== Распаковка завершена =="
|
|||||||
# Установка окружения
|
# Установка окружения
|
||||||
# ==================================================================
|
# ==================================================================
|
||||||
|
|
||||||
cd ${TOP}
|
cd "${TOP}"
|
||||||
. ./env.sh --toolchain --register "${INSTALL_DIR}" "rc"
|
. ./env.sh --global --path "${INSTALL_DIR}"
|
||||||
export CFLAGS=""
|
export CFLAGS=""
|
||||||
export CXXFLAGS=""
|
export CXXFLAGS=""
|
||||||
|
|
||||||
@@ -89,8 +89,8 @@ make install
|
|||||||
|
|
||||||
# ==================================================================
|
# ==================================================================
|
||||||
|
|
||||||
cd ${TOP}
|
cd "${TOP}"
|
||||||
. ./env.sh --toolchain --register "${INSTALL_DIR}"
|
. ./env.sh --global --path "${INSTALL_DIR}"
|
||||||
export CFLAGS=""
|
export CFLAGS=""
|
||||||
export CXXFLAGS=""
|
export CXXFLAGS=""
|
||||||
|
|
||||||
@@ -173,5 +173,4 @@ make install
|
|||||||
|
|
||||||
# ==================================================================
|
# ==================================================================
|
||||||
|
|
||||||
cd ${TOP}
|
cd "${TOP}"
|
||||||
. ./env.sh --toolchain --unregister
|
|
||||||
179
env.sh
179
env.sh
@@ -1,145 +1,58 @@
|
|||||||
#!/bin/bash
|
TOP="$(pwd)"
|
||||||
# env.sh — окружение для сборки под arm-uclinuxfdpiceabi (FDPIC, thumb)
|
TOOLCHAIN_PATH=""
|
||||||
#
|
GLOBAL_MODE=0
|
||||||
# Использование:
|
CUSTOM_PATH=""
|
||||||
# . ./env.sh --toolchain --register /path/to/install [arflags]
|
|
||||||
# . ./env.sh --toolchain --unregister
|
|
||||||
|
|
||||||
_env_usage() {
|
while [ $# -gt 0 ]; do
|
||||||
echo "Использование:"
|
case "$1" in
|
||||||
echo " . ./env.sh"
|
--global)
|
||||||
echo " . ./env.sh --toolchain --register /path/to/install [arflags]"
|
GLOBAL_MODE=1
|
||||||
echo " . ./env.sh --toolchain --unregister"
|
shift
|
||||||
}
|
;;
|
||||||
|
--path)
|
||||||
_env_register() {
|
if [ -z "$2" ]; then
|
||||||
local install_root="${1:-}"
|
echo "Ошибка: для --path нужно указать путь"
|
||||||
local arflags_target="${2:-}"
|
return 1 2>/dev/null || exit 1
|
||||||
|
|
||||||
# Если путь не указан — пробуем найти локальную папку тулчейна
|
|
||||||
if [ -z "$install_root" ]; then
|
|
||||||
local default_path="$(pwd)/arm-uclinuxfdpiceabi"
|
|
||||||
if [ -d "$default_path" ]; then
|
|
||||||
install_root="$default_path"
|
|
||||||
echo "Путь не указан, используется: ${default_path}"
|
|
||||||
else
|
|
||||||
echo "Ошибка: не указан путь к тулчейну и папка arm-uclinuxfdpiceabi не найдена"
|
|
||||||
_env_usage
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
fi
|
fi
|
||||||
|
CUSTOM_PATH="$2"
|
||||||
|
shift 2
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
TOP="$(pwd)"
|
if [ -n "${CUSTOM_PATH}" ]; then
|
||||||
TARGET=arm-uclinuxfdpiceabi
|
TOOLCHAIN_PATH="${CUSTOM_PATH}"
|
||||||
TOOLCHAIN=arm-uclinuxfdpiceabi
|
elif [ -d "${TOP}/arm-uclinuxfdpiceabi" ]; then
|
||||||
TOOLCHAIN_PATH="${install_root}/bin"
|
TOOLCHAIN_PATH="${TOP}/arm-uclinuxfdpiceabi"
|
||||||
|
elif [ -d "${TOP}/build/install" ]; then
|
||||||
|
TOOLCHAIN_PATH="${TOP}/build/install"
|
||||||
|
fi
|
||||||
|
|
||||||
SYSROOT="${install_root}/sysroot"
|
if [ -n "${TOOLCHAIN_PATH}" ] && [ -x "${TOOLCHAIN_PATH}/bin/arm-uclinuxfdpiceabi-gcc" ]; then
|
||||||
PREFIX="${SYSROOT}/usr"
|
echo "Найден toolchain: ${TOOLCHAIN_PATH}/bin/arm-uclinuxfdpiceabi-gcc"
|
||||||
|
|
||||||
# Флаги тулчейна
|
|
||||||
CFLAGS_TOOLSET='-O2'
|
CFLAGS_TOOLSET='-O2'
|
||||||
CFLAGS_TARGET='-Os -mthumb'
|
CFLAGS_TARGET='-Os -mthumb'
|
||||||
CXXFLAGS_TARGET=$CFLAGS_TARGET
|
|
||||||
LDFLAGS_TARGET='-Wl,--fdpic'
|
|
||||||
|
|
||||||
# Указание полного пути к компиляторам
|
|
||||||
CC="${TOOLCHAIN_PATH}/${TOOLCHAIN}-gcc ${CFLAGS_TOOLSET} ${CFLAGS_TARGET}"
|
|
||||||
CXX="${TOOLCHAIN_PATH}/${TOOLCHAIN}-g++ ${CFLAGS_TOOLSET} ${CXXFLAGS_TARGET}"
|
|
||||||
CPP="${TOOLCHAIN_PATH}/${TOOLCHAIN}-cpp"
|
|
||||||
LD="${TOOLCHAIN_PATH}/${TOOLCHAIN}-ld"
|
|
||||||
AR="${TOOLCHAIN_PATH}/${TOOLCHAIN}-ar"
|
|
||||||
ARFLAGS="${arflags_target}"
|
|
||||||
AS="${TOOLCHAIN_PATH}/${TOOLCHAIN}-as"
|
|
||||||
NM="${TOOLCHAIN_PATH}/${TOOLCHAIN}-nm"
|
|
||||||
RANLIB="${TOOLCHAIN_PATH}/${TOOLCHAIN}-ranlib"
|
|
||||||
STRIP="${TOOLCHAIN_PATH}/${TOOLCHAIN}-strip"
|
|
||||||
OBJCOPY="${TOOLCHAIN_PATH}/${TOOLCHAIN}-objcopy"
|
|
||||||
OBJDUMP="${TOOLCHAIN_PATH}/${TOOLCHAIN}-objdump"
|
|
||||||
|
|
||||||
# Сохраняем оригинальный PATH (только при первой регистрации)
|
|
||||||
if [ -z "${_ENV_ORIG_PATH:-}" ]; then
|
|
||||||
_ENV_ORIG_PATH="$PATH"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# PATH — toolchain/bin должен быть в начале
|
|
||||||
PATH="${TOOLCHAIN_PATH}:${_ENV_ORIG_PATH}"
|
|
||||||
|
|
||||||
# Экспорт
|
|
||||||
export SYSROOT PREFIX TARGET TOOLCHAIN
|
|
||||||
export CC CXX CPP LD AR ARFLAGS AS NM RANLIB STRIP OBJCOPY OBJDUMP
|
|
||||||
export CFLAGS CXXFLAGS LDFLAGS
|
|
||||||
export CFLAGS_FOR_TARGET CXXFLAGS_FOR_TARGET LDFLAGS_FOR_TARGET
|
|
||||||
export PATH
|
|
||||||
export SUBARCH=armv7-m
|
|
||||||
export SUBMODE=thumb
|
|
||||||
|
|
||||||
echo "Окружение для ${TARGET} (Thumb/FDPIC) активировано"
|
|
||||||
echo " TOOLCHAIN_PATH = $TOOLCHAIN_PATH"
|
|
||||||
echo " CC = $CC"
|
|
||||||
echo " CXX = $CXX"
|
|
||||||
}
|
|
||||||
|
|
||||||
_env_unregister() {
|
|
||||||
# Восстанавливаем PATH
|
|
||||||
if [ -n "${_ENV_ORIG_PATH:-}" ]; then
|
|
||||||
PATH="$_ENV_ORIG_PATH"
|
|
||||||
export PATH
|
|
||||||
unset _ENV_ORIG_PATH
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Снимаем все экспортированные переменные
|
|
||||||
unset SYSROOT PREFIX TARGET TOOLCHAIN
|
|
||||||
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
|
|
||||||
unset TOOLCHAIN_PATH CFLAGS_TOOLSET CFLAGS_TARGET CXXFLAGS_TARGET LDFLAGS_TARGET
|
|
||||||
|
|
||||||
echo "Окружение деактивировано, PATH восстановлен"
|
|
||||||
}
|
|
||||||
|
|
||||||
if [ $# -eq 0 ]; then
|
|
||||||
TOP="$(pwd)"
|
|
||||||
TARGET="arm-uclinuxfdpiceabi"
|
|
||||||
TOOLCHAIN="${TARGET}"
|
|
||||||
TOOLCHAIN_PATH="${TOP}/${TARGET}/bin"
|
|
||||||
CFLAGS_TOOLSET='-O2'
|
|
||||||
CFLAGS_TARGET='-Os -mthumb'
|
|
||||||
|
|
||||||
if [ -z "${_ENV_ORIG_PATH:-}" ]; then
|
|
||||||
_ENV_ORIG_PATH="$PATH"
|
|
||||||
fi
|
|
||||||
|
|
||||||
CFLAGS="${CFLAGS_TOOLSET}"
|
|
||||||
CFLAGS_FOR_TARGET="${CFLAGS_TARGET}"
|
|
||||||
CXXFLAGS_FOR_TARGET="${CFLAGS_TARGET}"
|
|
||||||
PATH="${TOOLCHAIN_PATH}:${_ENV_ORIG_PATH}"
|
|
||||||
|
|
||||||
SUBARCH=armv7-m
|
SUBARCH=armv7-m
|
||||||
SUBMODE=thumb
|
SUBMODE=thumb
|
||||||
|
|
||||||
echo "Окружение по умолчанию активировано"
|
if [ "$GLOBAL_MODE" -eq 1 ]; then
|
||||||
echo " TOP = $TOP"
|
export CFLAGS="${CFLAGS_TOOLSET}"
|
||||||
echo " TARGET = $TARGET"
|
export CFLAGS_FOR_TARGET="${CFLAGS_TARGET}"
|
||||||
return 0 2>/dev/null || exit 0
|
export CXXFLAGS_FOR_TARGET="${CFLAGS_TARGET}"
|
||||||
fi
|
export SUBARCH
|
||||||
|
export SUBMODE
|
||||||
if [ "${1:-}" != "--toolchain" ]; then
|
export PATH="${TOOLCHAIN_PATH}/bin:${PATH}"
|
||||||
_env_usage
|
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
|
return 1 2>/dev/null || exit 1
|
||||||
fi
|
fi
|
||||||
shift
|
|
||||||
|
|
||||||
case "${1:-}" in
|
|
||||||
--register)
|
|
||||||
shift
|
|
||||||
_env_register "$@"
|
|
||||||
;;
|
|
||||||
--unregister)
|
|
||||||
_env_unregister
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
_env_usage
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|||||||
Reference in New Issue
Block a user