#!/bin/bash
|
# This shell script used to setup imx6ull build envrionment
|
#
|
|
# display in yellow
|
function pr_warn() {
|
echo -e "\033[40;33m --W-- $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_warn "This shell script must be excuted as root privilege"
|
exit;
|
fi
|
|
function prepare_instpath()
|
{
|
if [ -w /apps -a -w /opt ] ; then
|
pr_warn "Install path [/apps and /opt] already setup, skip it"
|
return ;
|
fi
|
|
pr_info "/apps and /opt not writable, use chmod to give writable permissions"
|
|
# QT build will installed to this path
|
mkdir -p /apps && chmod 777 /apps
|
|
# buildroot crosstool will installed to this path
|
chmod 777 /opt/
|
}
|
|
function install_systools()
|
{
|
if command -v jq > /dev/null 2>&1 ; then
|
pr_warn "All system tools already installed, skip it"
|
return 0;
|
fi
|
|
pr_warn "start apt install system tools(commands)"
|
|
systools="coreutils jq wget curl tree gawk sed unzip cpio lz4 lzop zstd rsync kmod kpartx tmux \
|
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 \
|
bc git cvs subversion mercurial autoconf autoconf-archive \
|
python2 python3 python3-pip python3-pexpect python3-git python3-jinja2 libsdl1.2-dev \
|
lib32z1 libssl-dev libncurses-dev lib32ncurses-dev libgl1-mesa-dev libglu1-mesa-dev \
|
"
|
|
apt update > /dev/null 2>&1
|
apt install -y $systools
|
}
|
|
function install_devtools()
|
{
|
if command -v arm-linux-gnueabihf-gcc > /dev/null 2>&1 ; then
|
pr_warn "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 gcc-arm-linux-gnueabihf g++-arm-linux-gnueabihf \
|
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
|
ARMTOOL_NAME=gcc-arm-$ARMTOOL_VER
|
ARMTOOL_PACK=${ARMTOOL_NAME}-`uname -p`-arm-none-linux-gnueabihf
|
ARMTOOL_URL=https://developer.arm.com/-/media/Files/downloads/gnu-a/$ARMTOOL_VER/binrel/
|
|
if [ -d /opt/$ARMTOOL_NAME ] ; then
|
pr_info "$ARMTOOL_NAME crosstool already installed, skip it"
|
return 0;
|
fi
|
|
pr_info "start download cross compiler from ARM Developer"
|
|
if [ ! -s $ARMTOOL_PACK.tar.xz ] ; then
|
wget $ARMTOOL_URL/$ARMTOOL_PACK.tar.xz
|
fi
|
|
tar -xJf $ARMTOOL_PACK.tar.xz -C /opt
|
rm -f $ARMTOOL_PACK.tar.xz
|
|
mv /opt/$ARMTOOL_PACK /opt/$ARMTOOL_NAME
|
|
/opt/$ARMTOOL_NAME/bin/arm-none-linux-gnueabihf-gcc -v
|
pr_info "cross compiler installed to \"/opt/$ARMTOOL_NAME\" successfully"
|
}
|
|
echo ""
|
|
prepare_instpath
|
|
install_systools
|
|
install_devtools
|
|
install_crosstool
|