#!/bin/bash #+-------------------------------------------------------------------------------------------- #|Description: This is shell script used to download a zbarapplication #| and cross compile it. #| Author: GuoWenxue #| ChangeLog: #| 1, Initialize 1.0.0 on 2011.12.26 #+-------------------------------------------------------------------------------------------- set -e PRJ_PATH=`pwd` APP_NAME=zbar-latest APP_PACK=$APP_NAME.tar.bz2 INST_PATH=$PRJ_PATH/../install CROSS=/opt/crosstool/cortex-a7/bin/arm-linux-gnueabi- LYFTP_SRC=ftp://master.iot-yun.club/src/ # arg1 is the packet download address # arg2 is the download packet rename name function download_packet() { if [ $# -lt 1 ] ; then echo "ERROR: $0 without argument for packet download address" exit; fi rename=0 dl_addr=$1 dl_file=`basename $dl_addr` if [ $# -ge 2 ] ; then pack=$2 rename=1 else pack=$dl_file fi if [ -s $pack ] ; then echo "INFO: $pack already exist, skip download it" return 0; fi echo "INFO: Start to download packet $pack now" wget $dl_addr if [ $? != 0 ] ; then echo "ERROR: Download $pack failure, exit now..." exit; fi echo "INFO: Download $pack ok!" if [ $rename != 0 ] ; then mv $dl_file $pack fi return 0; } function decompress_packet() ( echo "+---------------------------------------------+" echo "| Decompress $1 now" echo "+---------------------------------------------+" rv=0; ftype=`file "$1"` case "$ftype" in "$1: Zip archive"*) unzip "$1" ;; "$1: gzip compressed"*) if [ 0 != `expr "$1" : ".*.tar.*" ` ] ; then tar -xzf $1 else gzip -d "$1" fi ;; "$1: bzip2 compressed"*) if [ 0 != `expr "$1" : ".*.tar.*" ` ] ; then tar -xjf $1 else bunzip2 "$1" fi ;; "$1: POSIX tar archive"*) tar -xf "$1" ;; "$1: LZMA compressed data, streamed"*) xz -d $1 && tar -xf `ls *.tar` ;; *) rv=1; echo "$1 is unknow compress format";; esac if [ $rv != 0 ] ; then echo "ERROR: Decompress $1 failure, exit now..." exit 1; fi return $rv; ) export CC=${CROSS}gcc export CXX=${CROSS}g++ export AR=${CROSS}ar export AS=${CROSS}as export LD=${CROSS}ld export NM=${CROSS}nm export RANLIB=${CROSS}ranlib export STRIP=${CROSS}strip if [ -d $INST_PATH ] ; then echo "INFO: $APP_NAME already cross compiled, exit now ..." #exit; fi LIB_ZLIB=zlib-1.2.11 PACK_ZLIB=$LIB_ZLIB.tar.gz if [ ! -f $INST_PATH/lib/libz.so ] ; then download_packet ${LYFTP_SRC}/${PACK_ZLIB} if [ ! -d $LIB_ZLIB ] ; then decompress_packet $PACK_ZLIB if [ $? != 0 ] ; then exit 1; fi fi echo "+------------------------------------------------------------------+" echo "| Build $LIB_ZLIB for $ARCH " echo "| Crosstool: $CROSS" echo "+------------------------------------------------------------------+" cd $LIB_ZLIB ./configure --prefix=$INST_PATH make && make install cd - else echo "+------------------------------------------------------------------+" echo "| $LIB_ZLIB already ready " echo "+------------------------------------------------------------------+" fi LIB_IMGIC=ImageMagick6-6.9.4-0 PACK_IMGIC=$LIB_IMGIC.tar.gz if [ ! -f $INST_PATH/lib/libMagickCore-6.Q16.a ] ; then download_packet ${LYFTP_SRC}/${PACK_IMGIC} if [ ! -d $LIB_IMGIC ] ; then decompress_packet $PACK_IMGIC if [ $? != 0 ] ; then exit 1; fi fi echo "+------------------------------------------------------------------+" echo "| Build $LIB_IMGIC for $ARCH " echo "| Crosstool: $CROSS" echo "+------------------------------------------------------------------+" cd $LIB_IMGIC CFLAGS="-I${INST_PATH}/include -DMAGICKCORE_QUANTUM_DEPTH=16" LDFLAGS=-L${INST_PATH}/lib \ ./configure --host=arm-linux --enable-static --disable-shared --prefix=$INST_PATH \ --without-magick-plus-plus --without-perl --without-x --without-dps --without-xml \ --without-pango --without-freetype --without-png make && make install cd - else echo "+------------------------------------------------------------------+" echo "| $LIB_IMGIC already ready " echo "+------------------------------------------------------------------+" fi # Download source code packet download_packet ${LYFTP_SRC}/zbar-latest.tar.bz2 # Decompress source code packet if [ ! -d $APP_NAME ] ; then decompress_packet $APP_PACK if [ $? != 0 ] ; then exit 1; fi fi echo "+------------------------------------------------------------------+" echo "| Build $APP_NAME for $ARCH " echo "| Crosstool: $CROSS" echo "+------------------------------------------------------------------+" cd $APP_NAME git checkout 8edfa5f8c4d11a54 && rm -rf * && git checkout . autoreconf --install CFLAGS="-DMAGICKCORE_HDRI_ENABLE=1 -DMAGICKCORE_QUANTUM_DEPTH=16" \ ./configure --host=arm-linux --enable-static --enable-shared --prefix=$INST_PATH \ --without-gtk --without-python --without-qt --without-x --without-java \ --with-imagemagick=${INST_PATH}/ --without-graphicsmagick \ MAGICK_CFLAGS=-I${INST_PATH}//include/ImageMagick-6 MAGICK_LIBS="-L${INST_PATH}/lib -lMagickWand-6.Q16 -lMagickCore-6.Q16 -lm -lz -L`pwd`/zbar/.libs/ -lzbar " mkdir -p ./doc/man/ touch ./doc/man/zbarimg.1 touch ./doc/man/zbarcam.1 make all && make install cd -