diff --git a/build-libraries.sh b/build-libraries.sh index e0fe60a..4a60f74 100755 --- a/build-libraries.sh +++ b/build-libraries.sh @@ -10,7 +10,7 @@ INSTALL_DIR="${TOP}/build/install" INSTALL_BIN_DIR="${INSTALL_DIR}/bin" # Запускаем предварительно для того чтобы подтянуть переменные -. ./env.sh --register "${INSTALL_DIR}" +. ./env.sh --toolchain --register "${INSTALL_DIR}" # Сбрасываем CFLAGS/CXXFLAGS — все флаги уже встроены в CC/CXX export CFLAGS="" @@ -78,7 +78,7 @@ echo "== Распаковка завершена ==" # ================================================================== cd ${TOP} -. ./env.sh --register "${INSTALL_DIR}" "rc" +. ./env.sh --toolchain --register "${INSTALL_DIR}" "rc" export CFLAGS="" export CXXFLAGS="" @@ -90,7 +90,7 @@ make install # ================================================================== cd ${TOP} -. ./env.sh --register "${INSTALL_DIR}" +. ./env.sh --toolchain --register "${INSTALL_DIR}" export CFLAGS="" export CXXFLAGS="" @@ -174,4 +174,4 @@ make install # ================================================================== cd ${TOP} -. ./env.sh --unregister \ No newline at end of file +. ./env.sh --toolchain --unregister \ No newline at end of file diff --git a/env.sh b/env.sh index 97e07cf..03ae492 100755 --- a/env.sh +++ b/env.sh @@ -2,17 +2,14 @@ # env.sh — окружение для сборки под arm-uclinuxfdpiceabi (FDPIC, thumb) # # Использование: -# . ./env.sh [arflags] -# (по умолчанию: --register и путь берётся из текущей директории: ./arm-uclinuxfdpiceabi) -# . ./env.sh --register /path/to/install [arflags] -# . ./env.sh --unregister +# . ./env.sh --toolchain --register /path/to/install [arflags] +# . ./env.sh --toolchain --unregister _env_usage() { echo "Использование:" - echo " . ./env.sh [arflags]" - echo " (по умолчанию: --register, тулчейн в ./arm-uclinuxfdpiceabi)" - echo " . ./env.sh --register /path/to/install [arflags]" - echo " . ./env.sh --unregister" + echo " . ./env.sh" + echo " . ./env.sh --toolchain --register /path/to/install [arflags]" + echo " . ./env.sh --toolchain --unregister" } _env_register() { @@ -102,6 +99,43 @@ _env_unregister() { 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}" + + export TOP TARGET TOOLCHAIN TOOLCHAIN_PATH + export CFLAGS_TOOLSET CFLAGS_TARGET + export CFLAGS CFLAGS_FOR_TARGET CXXFLAGS_FOR_TARGET + export SUBARCH=armv7-m + export SUBMODE=thumb + export PATH + + echo "Окружение по умолчанию активировано" + echo " TOP = $TOP" + echo " TARGET = $TARGET" + echo " PATH = $TOOLCHAIN_PATH:\$PATH" + return 0 2>/dev/null || exit 0 +fi + +if [ "${1:-}" != "--toolchain" ]; then + _env_usage + return 1 2>/dev/null || exit 1 +fi +shift + case "${1:-}" in --register) shift @@ -110,16 +144,7 @@ case "${1:-}" in --unregister) _env_unregister ;; - "") - # Нет аргументов => автоматом register для тулчейна из текущей директории - _env_register "" "" - ;; *) - # Если аргумент не начинается с "--", трактуем как [arflags] для тулчейна из текущей директории - if [[ "$1" != --* ]]; then - _env_register "" "$1" - else - _env_usage - fi + _env_usage ;; esac