| | |
| | | # 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 |
| | | echo "" |
| | | echo "ERROR: This shell script must be excuted as root privilege." |
| | | echo "" |
| | | exit 0; |
| | | pr_warn "This shell script must be excuted as root privilege" |
| | | exit; |
| | | fi |
| | | |
| | | function msg_banner() |
| | | { |
| | | echo "" |
| | | echo "+-----------------------------------------------------------------------" |
| | | echo "| $1 " |
| | | echo "+-----------------------------------------------------------------------" |
| | | echo "" |
| | | } |
| | | |
| | | function prepare_instpath() |
| | | { |
| | | if [ -w /apps -a -w /opt ] ; then |
| | | msg_banner "Install path [/apps and /opt] already setup, skip it" |
| | | pr_warn "Install path [/apps and /opt] already setup, skip it" |
| | | return ; |
| | | fi |
| | | |
| | | msg_banner "/apps and /opt not writable, use chmod to give writable permissions" |
| | | pr_info "/apps and /opt not writable, use chmod to give writable permissions" |
| | | |
| | | #QT build will installed to this path |
| | | # QT build will installed to this path |
| | | mkdir -p /apps && chmod 777 /apps |
| | | |
| | | #TFTP server path |
| | | mkdir -p /tftp && chmod 777 /tftp |
| | | |
| | | #crosstool will installed to this path |
| | | # buildroot crosstool will installed to this path |
| | | chmod 777 /opt/ |
| | | } |
| | | |
| | | function install_systools() |
| | | { |
| | | jq --version > /dev/null 2>&1 |
| | | if [ $? == 0 ] ; then |
| | | msg_banner "All system tools already installed, skip it" |
| | | if command -v jq > /dev/null 2>&1 ; then |
| | | pr_warn "All system tools already installed, skip it" |
| | | return 0; |
| | | fi |
| | | |
| | | msg_banner "start apt install system tools(commands)" |
| | | pr_warn "start apt install system tools(commands)" |
| | | |
| | | systools="gawk wget git diffstat unzip texinfo build-essential chrpath socat libncurses-dev flex \ |
| | | libsdl1.2-dev xterm sed cvs subversion coreutils texi2html docbook-utils python-pysqlite2 tree \ |
| | | help2man make gcc g++ desktop-file-utils libgl1-mesa-dev libglu1-mesa-dev mercurial autoconf \ |
| | | automake groff curl lzop asciidoc lib32z1 lib32ncurses-dev libssl-dev autoconf-archive bison \ |
| | | kpartx jq binfmt-support qemu qemu-user-static debootstrap debian-archive-keyring zstd lz4 tmux" |
| | | |
| | | 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_crosstool() |
| | | function install_devtools() |
| | | { |
| | | arm-linux-gnueabihf-gcc -v > /dev/null 2>&1 |
| | | if [ $? == 0 ] ; then |
| | | msg_banner "All development tools already installed, skip it" |
| | | if command -v arm-linux-gnueabihf-gcc > /dev/null 2>&1 ; then |
| | | pr_warn "All development tools already installed, skip it" |
| | | return 0; |
| | | fi |
| | | |
| | | msg_banner "start apt install devlopment tools(commands)" |
| | | 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() |
| | | # NXP document suggest cross compiler from ARM Developer: |
| | | # https://developer.arm.com/downloads/-/arm-gnu-toolchain-downloads |
| | | function install_crosstool() |
| | | { |
| | | BUILDROOT_PATH=/opt/buildroot |
| | | BUILDROOT_NAME=cortexA7 |
| | | 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/ |
| | | |
| | | 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 |
| | | msg_banner "Buildroot already installed to $BUILDROOT_PATH/$BUILDROOT_NAME" |
| | | if [ -d /opt/$ARMTOOL_NAME ] ; then |
| | | pr_info "$ARMTOOL_NAME crosstool already installed, skip it" |
| | | return 0; |
| | | fi |
| | | |
| | | mkdir -p ${BUILDROOT_PATH} |
| | | pr_info "start download cross compiler from ARM Developer" |
| | | |
| | | if [ ! -f $BUILDROOT_TAR ] ; then |
| | | msg_banner "download $BUILDROOT_VER now..." |
| | | wget -c $BUILDROOT_DLADDR |
| | | fi |
| | | if [ ! -s $ARMTOOL_PACK.tar.xz ] ; then |
| | | wget $ARMTOOL_URL/$ARMTOOL_PACK.tar.xz |
| | | fi |
| | | |
| | | msg_banner "install $BUILDROOT_VER to $BUILDROOT_PATH/$BUILDROOT_NAME now..." |
| | | tar -xjf ${BUILDROOT_TAR} -C ${BUILDROOT_PATH} |
| | | tar -xJf $ARMTOOL_PACK.tar.xz -C /opt |
| | | rm -f $ARMTOOL_PACK.tar.xz |
| | | |
| | | $BUILDROOT_PATH/$BUILDROOT_NAME/bin/arm-linux-gcc -v |
| | | mv /opt/$ARMTOOL_PACK /opt/$ARMTOOL_NAME |
| | | |
| | | msg_banner "Cross compiler: $BUILDROOT_PATH/$BUILDROOT_NAME/bin/arm-linux-" |
| | | |
| | | rm -f ${BUILDROOT_TAR} |
| | | /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_crosstool |
| | | install_devtools |
| | | |
| | | install_buildroot |
| | | install_crosstool |
| | | |