100 lines
5.2 KiB
Bash
Executable File
100 lines
5.2 KiB
Bash
Executable File
#!/bin/bash
|
|
# Copyright 2021 The TensorFlow Authors. All Rights Reserved.
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
# you may not use this file except in compliance with the License.
|
|
# You may obtain a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
# See the License for the specific language governing permissions and
|
|
# limitations under the License.
|
|
# ==============================================================================
|
|
|
|
# Download GCC 8.3 based toolchains.
|
|
# Using up-to-date toolchain introduces compatibility issues.
|
|
# https://github.com/tensorflow/tensorflow/issues/59631
|
|
#
|
|
# In Bazel build, we uses GCC 11.3 based toolchains to support FP16 better
|
|
# with XNNPACK. https://github.com/tensorflow/tensorflow/pull/57585
|
|
|
|
set -e
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
cd "$SCRIPT_DIR/../../../.."
|
|
|
|
TOOLCHAINS_DIR=$(realpath tensorflow/lite/tools/cmake/toolchains)
|
|
mkdir -p ${TOOLCHAINS_DIR}
|
|
|
|
case $1 in
|
|
armhf_vfpv3)
|
|
if [[ ! -d "${TOOLCHAINS_DIR}/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf" ]]; then
|
|
curl -LO https://storage.googleapis.com/mirror.tensorflow.org/developer.arm.com/media/Files/downloads/gnu-a/8.3-2019.03/binrel/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf.tar.xz >&2
|
|
tar xvf gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf.tar.xz -C ${TOOLCHAINS_DIR} >&2
|
|
fi
|
|
ARMCC_ROOT=${TOOLCHAINS_DIR}/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf
|
|
echo "ARMCC_FLAGS=\"-march=armv7-a -mfpu=neon-vfpv3 -funsafe-math-optimizations \
|
|
-isystem ${ARMCC_ROOT}/lib/gcc/arm-linux-gnueabihf/8.3.0/include \
|
|
-isystem ${ARMCC_ROOT}/lib/gcc/arm-linux-gnueabihf/8.3.0/include-fixed \
|
|
-isystem ${ARMCC_ROOT}/arm-linux-gnueabihf/include/c++/8.3.0 \
|
|
-isystem ${ARMCC_ROOT}/arm-linux-gnueabihf/libc/usr/include \
|
|
-isystem \"\${CROSSTOOL_PYTHON_INCLUDE_PATH}\" \
|
|
-isystem /usr/include\""
|
|
echo "ARMCC_PREFIX=${ARMCC_ROOT}/bin/arm-linux-gnueabihf-"
|
|
;;
|
|
armhf)
|
|
if [[ ! -d "${TOOLCHAINS_DIR}/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf" ]]; then
|
|
curl -LO https://storage.googleapis.com/mirror.tensorflow.org/developer.arm.com/media/Files/downloads/gnu-a/8.3-2019.03/binrel/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf.tar.xz >&2
|
|
tar xvf gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf.tar.xz -C ${TOOLCHAINS_DIR} >&2
|
|
fi
|
|
ARMCC_ROOT=${TOOLCHAINS_DIR}/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf
|
|
echo "ARMCC_FLAGS=\"-march=armv7-a -mfpu=neon-vfpv4 -funsafe-math-optimizations \
|
|
-isystem ${ARMCC_ROOT}/lib/gcc/arm-linux-gnueabihf/8.3.0/include \
|
|
-isystem ${ARMCC_ROOT}/lib/gcc/arm-linux-gnueabihf/8.3.0/include-fixed \
|
|
-isystem ${ARMCC_ROOT}/arm-linux-gnueabihf/include/c++/8.3.0 \
|
|
-isystem ${ARMCC_ROOT}/arm-linux-gnueabihf/libc/usr/include \
|
|
-isystem \"\${CROSSTOOL_PYTHON_INCLUDE_PATH}\" \
|
|
-isystem /usr/include\""
|
|
echo "ARMCC_PREFIX=${ARMCC_ROOT}/bin/arm-linux-gnueabihf-"
|
|
;;
|
|
aarch64)
|
|
if [[ ! -d "${TOOLCHAINS_DIR}/gcc-arm-8.3-2019.03-x86_64-aarch64-linux-gnu" ]]; then
|
|
curl -LO https://storage.googleapis.com/mirror.tensorflow.org/developer.arm.com/media/Files/downloads/gnu-a/8.3-2019.03/binrel/gcc-arm-8.3-2019.03-x86_64-aarch64-linux-gnu.tar.xz >&2
|
|
tar xvf gcc-arm-8.3-2019.03-x86_64-aarch64-linux-gnu.tar.xz -C ${TOOLCHAINS_DIR} >&2
|
|
fi
|
|
ARMCC_ROOT=${TOOLCHAINS_DIR}/gcc-arm-8.3-2019.03-x86_64-aarch64-linux-gnu
|
|
echo "ARMCC_FLAGS=\"-funsafe-math-optimizations \
|
|
-isystem ${ARMCC_ROOT}/lib/gcc/aarch64-linux-gnu/8.3.0/include \
|
|
-isystem ${ARMCC_ROOT}/lib/gcc/aarch64-linux-gnu/8.3.0/include-fixed \
|
|
-isystem ${ARMCC_ROOT}/aarch64-linux-gnu/include/c++/8.3.0 \
|
|
-isystem ${ARMCC_ROOT}/aarch64-linux-gnu/libc/usr/include \
|
|
-isystem \"\${CROSSTOOL_PYTHON_INCLUDE_PATH}\" \
|
|
-isystem /usr/include\""
|
|
echo "ARMCC_PREFIX=${ARMCC_ROOT}/bin/aarch64-linux-gnu-"
|
|
;;
|
|
rpi0)
|
|
if [[ ! -d "${TOOLCHAINS_DIR}/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf" ]]; then
|
|
curl -LO https://storage.googleapis.com/mirror.tensorflow.org/developer.arm.com/media/Files/downloads/gnu-a/8.3-2019.03/binrel/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf.tar.xz >&2
|
|
tar xvf gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf.tar.xz -C ${TOOLCHAINS_DIR} >&2
|
|
fi
|
|
ARMCC_ROOT=${TOOLCHAINS_DIR}/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf
|
|
echo "ARMCC_FLAGS=\"-march=armv6 -mfpu=vfp -mfloat-abi=hard -funsafe-math-optimizations \
|
|
-isystem ${ARMCC_ROOT}/lib/gcc/arm-linux-gnueabihf/8.3.0/include \
|
|
-isystem ${ARMCC_ROOT}/lib/gcc/arm-linux-gnueabihf/8.3.0/include-fixed \
|
|
-isystem ${ARMCC_ROOT}/arm-linux-gnueabihf/include/c++/8.3.0 \
|
|
-isystem ${ARMCC_ROOT}/arm-linux-gnueabihf/libc/usr/include \
|
|
-isystem \"\${CROSSTOOL_PYTHON_INCLUDE_PATH}\" \
|
|
-isystem /usr/include\""
|
|
echo "ARMCC_PREFIX=${ARMCC_ROOT}/bin/arm-linux-gnueabihf-"
|
|
;;
|
|
*)
|
|
echo "Usage: download_toolchains.sh [armhf|aarch64|rpi0]" >&2
|
|
exit
|
|
;;
|
|
esac
|
|
|
|
echo "download_toolchains.sh completed successfully." >&2
|