#!/bin/bash # This shell script used to setup imx6ull build envrionment # LYFTP_PUB=http://wekei-iot.com:2211/imx/igkboard/tools/lintools # 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 \ 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 #sudo update-alternatives --install /usr/bin/arm-linux-gnueabihf-gcc arm-linux-gnueabihf-gcc /usr/bin/arm-linux-gnueabihf-gcc-9 10 } function install_buildroot() { BUILDROOT_PATH=/opt/buildroot BUILDROOT_NAME=cortexA7 BUILDROOT_VER=buildroot-2021.02.7-cortexA7 BUILDROOT_TAR=${BUILDROOT_VER}.tar.bz2 BUILDROOT_DLADDR=${LYFTP_PUB}/$BUILDROOT_TAR if [ -d ${BUILDROOT_PATH}/${BUILDROOT_NAME} ] ; then pr_warn "Buildroot already installed to $BUILDROOT_PATH/$BUILDROOT_NAME" return 0; fi mkdir -p ${BUILDROOT_PATH} if [ ! -f $BUILDROOT_TAR ] ; then pr_info "download $BUILDROOT_VER now..." wget -c $BUILDROOT_DLADDR fi pr_info "install $BUILDROOT_VER to $BUILDROOT_PATH/$BUILDROOT_NAME now..." tar -xjf ${BUILDROOT_TAR} -C ${BUILDROOT_PATH} $BUILDROOT_PATH/$BUILDROOT_NAME/bin/arm-linux-gcc -v pr_info "Cross compiler: $BUILDROOT_PATH/$BUILDROOT_NAME/bin/arm-linux-" rm -f ${BUILDROOT_TAR} } # 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 #install_buildroot