#!/bin/bash
|
# This shell script used to system tools
|
|
# AArch32 for iMX6ULL and AArch64 for iMX8MP
|
AARCH=AArch32
|
LY_FTPURL=http://main.iot-yun.club:2211
|
|
# display in red
|
function pr_error() {
|
echo -e "\033[40;31m --E-- $1 \033[0m\n"
|
}
|
|
# display in green
|
function pr_info() {
|
echo -e "\033[40;32m --I-- $1 \033[0m\n"
|
}
|
|
if [ `id -u` != 0 ] ; then
|
pr_error "This shell script must be excuted as root privilege"
|
exit;
|
fi
|
|
function install_systools()
|
{
|
if command -v jq > /dev/null 2>&1 ; then
|
pr_info "All system tools already installed, skip it"
|
return 0;
|
fi
|
|
pr_info "start apt install system tools(commands)"
|
|
systools="coreutils jq wget curl tree gawk sed unzip cpio bc lzop zstd rsync kmod kpartx \
|
desktop-file-utils iputils-ping xterm diffstat chrpath asciidoc docbook-utils help2man \
|
build-essential gcc g++ make cmake automake groff socat flex texinfo bison texi2html \
|
git cvs subversion mercurial autoconf autoconf-archive parted dosfstools libtool \
|
python3 python3-pip python3-pexpect python3-git python3-jinja2 \
|
lib32z1 libssl-dev libncurses-dev libgl1-mesa-dev libglu1-mesa-dev libsdl1.2-dev "
|
|
apt update > /dev/null 2>&1
|
apt install -y $systools
|
}
|
|
|
function install_devtools()
|
{
|
if command -v debootstrap > /dev/null 2>&1 ; then
|
pr_info "All development tools already installed, skip it"
|
return 0;
|
fi
|
|
pr_info "start apt install devlopment tools(commands)"
|
|
devtools="u-boot-tools mtd-utils device-tree-compiler binfmt-support \
|
qemu qemu-user-static debootstrap debian-archive-keyring "
|
|
apt install -y $devtools
|
}
|
|
|
# NXP document suggest cross compiler from ARM Developer:
|
# https://developer.arm.com/downloads/-/arm-gnu-toolchain-downloads
|
function install_crosstool()
|
{
|
ARMTOOL_VER=10.3-2021.07
|
|
# install AArch32/AArch64 cross compiler from ARM Developer:
|
|
if [ $AARCH == "AArch64" ] ; then
|
CortexA_PACK=gcc-arm-$ARMTOOL_VER-`uname -p`-aarch64-none-linux-gnu
|
CortexA_NAME=gcc-aarch64-$ARMTOOL_VER
|
CROSS_TOOL=aarch64-none-linux-gnu-
|
else
|
CortexA_PACK=gcc-arm-$ARMTOOL_VER-`uname -p`-arm-none-linux-gnueabihf
|
CortexA_NAME=gcc-aarch32-$ARMTOOL_VER
|
CROSS_TOOL=arm-none-linux-gnueabihf-
|
fi
|
|
CortexA_TAR=$CortexA_PACK.tar.xz
|
CortexA_URL=https://developer.arm.com/-/media/Files/downloads/gnu-a/$ARMTOOL_VER/binrel/
|
|
if [ -d /opt/$CortexA_NAME ] ; then
|
pr_info "$AARCH crosstool $CortexA_NAME installed already, skip it"
|
else
|
pr_info "start download $AARCH cross compiler from ARM Developer"
|
if [ ! -s $CortexA_TAR ] ; then
|
wget $CortexA_URL/$CortexA_TAR
|
fi
|
|
tar -xJf $CortexA_TAR -C /opt
|
rm -f $CortexA_TAR
|
|
mv /opt/$CortexA_PACK /opt/$CortexA_NAME
|
|
/opt/$CortexA_NAME/bin/${CROSS_TOOL}gcc -v
|
pr_info "$AARCH cross compiler installed to \"/opt/$CortexA_NAME\" successfully"
|
fi
|
}
|
|
install_buildroot()
|
{
|
BUILDROOT_VER=gcc-10.4-aarch32-v2023.02
|
BUILDROOT_TAR=buildroot-${BUILDROOT_VER}.tar.xz
|
INST_PATH=/opt/buildroot/
|
|
if [ -d $INST_PATH/$BUILDROOT_VER ] ; then
|
pr_info "Buildroot crosstool $BUILDROOT_VER installed already, skip it"
|
return ;
|
fi
|
|
pr_info "start download buildroot cross compiler from LingYun IoT studio file server"
|
if [ ! -f $BUILDROOT_TAR ] ; then
|
wget $LY_FTPURL/imx/igkboard-6ull/tools/$BUILDROOT_TAR
|
fi
|
|
mkdir -p $INST_PATH
|
|
tar -xJf $BUILDROOT_TAR -C $INST_PATH
|
rm -f $BUILDROOT_TAR
|
|
$INST_PATH/$BUILDROOT_VER/bin/arm-linux-gcc -v
|
|
pr_info "Buildroot cross compiler installed to \"$INST_PATH/$BUILDROOT_VER/\" successfully"
|
}
|
|
echo ""
|
set -e
|
|
install_systools
|
|
install_devtools
|
|
install_crosstool
|
|
install_buildroot
|